会变动的系数
回归给每个系数一个数,仿佛这种关系从不改变。但一只股票的市场贝塔确实会变:随着业务、杠杆和市场情绪而变。滚动回归在最近 w 个观测的移动窗口上重新拟合同一个模型,给出系数的时间序列。在 statsmodels 中是 RollingOLS(y, X, window=w).fit();其 params 属性是一个 DataFrame,每个日期一行、每个系数一列,前 w-1 行是 NaN,因为窗口还没填满。窗口长度是一种权衡:短窗口反应快但噪声大,长窗口平滑但迟钝。只有一个回归变量和常数时,斜率有不需要任何回归的闭式:y 与 x 的滚动协方差除以 x 的滚动方差,用 .rolling(w).cov(...) 和 .rolling(w).var() 计算。
Apple 在 2000 年 2 月到 2026 年 8 月之间有 319 个月度收益。全样本市场贝塔为 1.31。60 个月滚动贝塔讲的是另一个故事:2008 年 9 月为 2.51,2015 年 4 月降到 0.75,样本末为 1.04,途中标准差为 0.31。没有哪一个数字能描述这些。两条路径,RollingOLS 与滚动协方差除以滚动方差,一致到 10⁻¹⁴,这是检验你是否理解库在做什么的好办法。会变动的系数也是一种警告:使用上一个十年贝塔的风险模型,可能是在对冲一家已不复存在的公司。
- 滚动就是重新拟合:同一模型、移动窗口、每个日期一组系数。
- 用 pandas 核对库:只有一个回归变量时,斜率就是滚动协方差除以滚动方差。
- 单一贝塔掩盖了故事:滚动贝塔的范围显示全样本数字有多误导。
实验:评分内容
- 滚动贝塔25 分
- 手算同一个贝塔20 分
- 两条路径之间的差距10 分
- 最低与最高贝塔15 分
- Apple 研究30 分