【维克】线性回归入门:用一条线预测未来 年化20%量化笔记 · 第34篇WHY 为什么你需要理解这条最简单的线一个让我重新认识简单的时刻2019年底我刚转做量化不到半年满脑子都是复杂的模型——LSTM、强化学习、图神经网络觉得自己不整点高大上的东西就配不上量化两个字。有天晚上一个做了十五年量化策略的老前辈跟我说了句话你知道我每天开盘前要跑的第一个模型是什么吗线性回归。不是因为它复杂恰恰是因为它简单到能告诉你——市场此刻到底在干什么。我当时不以为然觉得这是老一辈的技术审美。直到三个月后我的深度学习策略在实盘里连续回撤8%而这个前辈的线性回归模型稳稳地跑着。我复盘了两边的信号才发现他的线性回归模型在第3天就发出了减仓信号因为关键变量的回归系数开始翻转。而我的LSTM还在学习——等到它识别出风险时回撤已经发生了。这件事彻底改变了我对简单模型的态度。线性回归不是一根幼稚的线它是所有统计建模的起点是理解市场结构的窗口更是你在被复杂模型晃晕时拉你回地面的那条绳索。线性回归到底是什么用一句话说清楚想象你有一堆散点图——横轴是某个指标比如过去20天的波动率纵轴是你关心的结果比如下个月的收益率。你的问题是这两个变量之间有没有一条最优的直线能最好地描述它们的关系线性回归做的事情就是在所有可能的直线中找到那根和所有数据点距离总和最小的线。数学上表示为Y β₀ β₁X ε•Y你要预测的东西因变量比如下月收益率•X你用来预测的东西自变量比如过去20天波动率•β₀截距当X0时Y的值•β₁斜率回归系数X每变动1单位Y平均变动多少•ε残差误差项模型无法解释的部分就这么简单。但别被这个简单骗了——整个统计学大厦从这个公式开始。为什么线性回归在量化交易里如此重要三个核心理由1. 它是所有复杂模型的地基逻辑回归、岭回归、LASSO、主成分分析、甚至神经网络——它们的底层逻辑都建立在最小二乘法之上。不理解线性回归你学后续模型就是空中楼阁。2. 它是你验证因子有效性的第一把尺子在量化里当你发现一个新因子比如市盈率倒数、动量排名第一个要回答的问题是这个因子和收益率之间有没有显著的线性关系答案就在回归系数 β₁ 的大小和显著性里。3. 它是你理解市场结构的透视镜用线性回归你可以•估算一只股票的Beta系数它和市场涨跌的敏感度•判断一个因子在不同市场状态下是否稳定•发现变量之间是否有趋势性的关联简单但强大。这就是线性回归的价值。HOW 怎么理解和使用线性回归第一步理解最优是怎么算出来的线性回归的核心算法叫最小二乘法Ordinary Least Squares, OLS。它的思路非常直觉1.先随便画一条线比如 Y X2.计算每个数据点到这条线的垂直距离也就是残差3.把所有残差平方后加总平方是为了让正负误差不互相抵消4.调整线的参数让残差平方和最小最终找到的那条线就是最优拟合线。用一个具体的例子感受一下假设你有5天的数据横轴是当日成交量万手纵轴是收盘价涨幅%日成交量X涨幅Y11001.221501.83800.542002.351201.0用OLS拟合出来的回归方程可能是Y -0.3 0.013X意思是•截距β₀ -0.3成交量为0时理论上预期涨幅为-0.3%•斜率β₁ 0.013成交量每增加1万手涨幅平均增加0.013%这条线不是完美的——有些天实际涨幅偏离了线但它是最不可能偏离的那条线。第二步读懂两个关键数字拟合出一条线之后你要重点关注两个统计量① 回归系数 β₁ 及其显著性β₁ 告诉你方向和力度•β₁ 0正相关X增大Y也增大•β₁ 0负相关X增大Y减小•β₁ ≈ 0几乎没有线性关系但更重要的是这个系数靠不靠谱这就是t统计量和p值的作用•p值 0.05系数在统计上显著这个关系大概率不是碰巧的•p值 0.05系数不显著不能排除是噪声一个常见的错误只看β₁的正负和大小不看显著性。系数看起来再漂亮如果p值大于0.05你就不能说这个变量真的有用。② R²决定系数R²衡量的是回归线解释了多少数据的变化范围0到1。•R² 0.8模型能解释80%的因变量变动拟合得很好•R² 0.2只能解释20%大部分变动在残差里•R² 0.01几乎没解释什么这条线和取均值差不多在金融数据中R²普遍偏低。别被吓到——在股票收益率预测中R² 0.05解释5%的变动的模型就已经很有用了。因为金融数据噪声极大能解释5%的信号乘以足够大的资金量和交易频率就是真金白银。我见过太多新手拿R²0.3的模型沾沾自喜但那通常是在低噪声的合成数据上跑出来的。在真实的A股日频数据里R²能到0.08就已经是值得深挖的信号了。第三步用Python跑你的第一个线性回归来写几行代码感受一下。假设我们用的是量化中经典的Fama-French因子分析场景// pythonimport numpy as npimport statsmodels.api as sm# 模拟数据过去20日动量X vs 下月收益率Ynp.random.seed(42)n 252 * 5 # 5年的日频数据momentum np.random.normal(0.001, 0.02, n) # 动量因子returns 0.05 * momentum np.random.normal(0, 0.01, n) # 收益率 0.05*动量 噪声# 线性回归X sm.add_constant(momentum) # 添加截距项model sm.OLS(returns, X).fit()# 查看结果print(model.summary())运行后你会看到一份详细的统计报告重点关注看什么在哪看判断标准回归系数方向coef 列正/负系数是否显著P\t\模型解释力R-squared金融数据中 0.03 就值得关注标准误std err越小越精确实操建议把上面的代码保存成一个脚本换不同的因子反复跑建立对什么样的回归结果算好、什么算差的直觉。第四步线性回归在量化中的5个经典应用场景场景1Beta系数估算个股收益率 α β × 市场收益率 εβ就是这只股票相对于大盘的敏感度。β1.3意味着大盘涨1%该股平均涨1.3%。这是CAPM模型的核心也是所有风险模型的基础。场景2因子收益分析你构建了一个低市盈率因子想知道它到底有没有用因子组合收益 α β × 因子暴露 ε如果β显著为正说明因子有超额收益。α截距如果显著为正说明因子在控制了暴露之后还有纯Alpha。场景3配对交易的价差建模两只相关股票的价格走势股票A价格 β₀ β₁ × 股票B价格 ε当实际价差偏离回归预测值超过2倍标准差时可以做均值回归交易——做空贵的、做多便宜的。场景4趋势线的量化定义你画了一条趋势线量化不靠眼睛画。用线性回归拟合收盘价收盘价 β₀ β₁ × 时间 εβ₁ 0 且显著上升趋势成立β₁ ≈ 0 或不显著没有趋势别强行画线了场景5残差Alpha这是最被低估的用法。回归模型解释不了的部分残差ε本身可能就是信号如果一只股票的实际表现持续好于回归模型的预测残差持续为正它可能在被低估。反之亦然。这种回归残差策略在学术文献中有大量验证。第五步理解线性回归的前提假设以及违反时会怎样线性回归不是万能的。它有4个关键假设违反任何一个结果都不可信假设含义违反后果金融数据常见问题线性关系X和Y真的是线性关系模型拟合差预测不准金融变量经常是非线性的独立性残差之间互不影响标准误被低估t检验失效收益率有序列相关性同方差性残差的波动率稳定标准误不可靠波动率聚集是金融数据的典型特征正态性残差近似正态分布极端值影响大金融残差常有厚尾我的建议先跑回归看结果再逐步检查假设。不用一开始就纠结假设是否完美满足——金融数据永远不完美关键是你清楚模型的局限在哪里。WHAT 线性回归能给你什么预期成果完成本篇学习后你应该能够1.理解线性回归的数学本质OLS最小二乘法如何找到最优拟合线以及为什么它是最优的2.正确解读回归输出β系数的方向与显著性、R²的含义、t统计量和p值的判断3.识别关键假设线性回归的4个前提假设以及金融数据中哪些假设经常被违反4.写出第一个回归模型用Python和statsmodels完成一次完整的因子分析5.建立简单模型优先的思维习惯在追求复杂之前先用最简单的模型建立基准☐用statsmodels跑一次线性回归打印summary逐行理解每个统计量☐选一个你感兴趣的因子比如5日动量、20日波动率对A股某个行业的指数做单因子回归☐观察R²值——如果不到0.05想一想是这个因子真的没用还是金融数据噪声太大☐改变回归的时间窗口比如从5年改成1年观察β系数是否稳定——不稳定的话这个因子可能不够可靠☐画一张散点图回归线的可视化图直观感受一下拟合是什么练习☐用线性回归估算你持仓中3只股票的Beta值和你的直觉感受对比一下☐试着用回归残差构建一个简单的做空高估/做多低估策略☐读一篇Fama French的原始论文看看他们怎么用线性回归拆解股票收益的来源可量化的产出指标目标代码脚本数量≥ 1个可复用的线性回归分析模板因子分析次数≥ 3个不同因子的回归结果对比Beta估算≥ 3只股票的β值计算完成可视化图表≥ 1张散点回归线残差的综合图最后想说的话很多人觉得线性回归太简单了不屑于学。但我想告诉你在量化交易里能把简单模型用到极致的人比那些只会堆砌复杂模型的人走得更远。巴菲特说过一句类似的话——我宁可用一个简单的价格买到一个好公司也不想用复杂的方法做一笔模糊的交易。量化也一样。先用线性回归建立你的基准线知道简单模型能做到什么程度再决定是否需要更复杂的工具。下一篇文章我们要把这条线从一个变量扩展到多个变量——多元回归分析。因为真实世界里影响收益率的从来不只有一个因素。一条线只是开始。但这条线你会用很久很久。下一篇预告第35篇《【维克】多元回归分析当一个变量不够用时》