halo 的技术博客

返回

一句话版本#

Beta 不是常数,而传统 60 日滚动回归要一个月才能发现它变了;已实现 Beta 用 5 分钟日内数据把估计窗口压缩到一天——代价是你必须直面 Epps 效应这只高频世界的拦路虎。


一、问题:你的 Beta 早就不是那个 Beta 了#

市场中性策略、指数增强、股指期货对冲——所有这些业务的第一个输入都是 Beta:个股(或组合)对市场的系统性暴露。

教科书做法是滚动 OLS:取过去 60 个交易日的日频收益,回归

ri,t=α+βrm,t+εtr_{i,t} = \alpha + \beta \, r_{m,t} + \varepsilon_t

取斜率。这个做法有一个被广泛忽视的结构性问题:窗口内每个观测等权。假设某公司今天宣布重大并购,它的商业模式、杠杆率、与宏观的关联从今天起彻底变了——真实 Beta 当天跳变。但 60 日 OLS 里,今天的观测只占 1/60 的权重。估计值要花大约一个月才爬到新水平,这期间你的”市场中性”组合一直带着裸露的方向敞口。

已实现 Beta(Realized Beta)的思路来自已实现波动率文献(Andersen, Bollerslev, Diebold & Wu, 2005/2006):别用 60 天的日频数据,用 1 天的日内数据

二、定义:一天就够#

把交易日切成 M 个 5 分钟 bar,个股与市场的 5 分钟收益分别为 ri,jr_{i,j}rm,jr_{m,j}j=1,,Mj = 1, \dots, M)。当日已实现 Beta 定义为:

β^tRB=j=1Mri,jrm,jj=1Mrm,j2=已实现协方差已实现市场方差\hat\beta_t^{RB} = \frac{\sum_{j=1}^{M} r_{i,j} \, r_{m,j}}{\sum_{j=1}^{M} r_{m,j}^2} = \frac{\text{已实现协方差}}{\text{已实现市场方差}}

这就是”用日内 bar 当样本点的单日回归斜率”(不带截距——日内均值在 5 分钟尺度上可忽略)。理论支撑很硬:在连续半鞅框架下,当采样间隔趋于零,已实现协方差依概率收敛到积分协方差,已实现 Beta 收敛到当日的真实积分 Beta——不需要任何参数模型,不需要假设 Beta 服从什么过程。

A 股一天 4 小时连续竞价 = 48 个 5 分钟 bar。48 个样本点估一个斜率,单日估计当然有噪声,实践中再做 22 日平滑:

β^tRB,22=s=t21tRCovss=t21tRVars\hat\beta_t^{RB,22} = \frac{\sum_{s=t-21}^{t} RCov_s}{\sum_{s=t-21}^{t} RVar_s}

注意是分子分母分别求和再相除,不是对 22 个日度 Beta 取均值——前者等价于把 22 天的 bar 合并做一次大回归,统计性质更好(低方差日的噪声 Beta 不会等权污染均值)。

import numpy as np

def realized_beta(ri_intraday, rm_intraday, smooth=22):
    """ri_intraday, rm_intraday: (T, M) 日内 5 分钟收益矩阵
    返回: 日度已实现 Beta 与 smooth 日平滑版本"""
    rcov = (ri_intraday * rm_intraday).sum(axis=1)   # 每日已实现协方差
    rvar = (rm_intraday ** 2).sum(axis=1)            # 每日已实现市场方差
    rb_daily = rcov / rvar

    # 平滑:分子分母分别滚动求和
    kernel = np.ones(smooth)
    rb_smooth = (np.convolve(rcov, kernel, "full")[:len(rcov)] /
                 np.convolve(rvar, kernel, "full")[:len(rvar)])
    rb_smooth[:smooth-1] = np.nan
    return rb_daily, rb_smooth
python

三、模拟实验:跳变响应速度对比#

构造一个受控实验:真实 Beta 围绕 1.0 缓慢随机游走,第 250 个交易日发生事件(想象一次并购公告),Beta 跳升 0.9 后以 80 日半衰期缓慢回落。个股 5 分钟收益 = 真实 Beta × 市场收益 + 特质噪声。

三个估计器同台:日度已实现 Beta(原始)、22 日平滑已实现 Beta、60 日滚动 OLS(日频收益)。

已实现 Beta vs 滚动 OLS 的跳变响应

三个观察:

  1. 日度已实现 Beta(蓝色细线)当天就捕捉到跳变——它围绕真值波动,噪声不小,但中心位置是对的。跳变信息在数据里第一天就存在,问题只是信噪比。
  2. 22 日平滑版(红线)约 20 个交易日完全贴合新水平——平滑窗口就是它的响应时滞,这是你自己选的、透明的权衡。
  3. 60 日 OLS(橙色虚线)落后一倍以上——而且它的路径形状是被旧样本稀释出来的假渐变,你无法从估计值区分”Beta 在缓慢漂移”和”Beta 早就跳完了、是我的窗口在稀释”。

这个区别在风险管理上是本质性的:滚动 OLS 的滞后不是噪声,是结构性偏差——它在 Beta 上升期间系统性低估暴露,正是你最需要准确对冲的时候。

四、Epps 效应:高频世界的拦路虎#

到这里你可能想:既然频率越高信息越多,为什么不用 1 分钟、tick 级数据?

因为Epps 效应(Epps, 1979):当采样间隔缩短,资产间测得的相关性(以及 Beta)系统性向零收缩。机制主要有两个:

  • 非同步交易:个股与指数成分股的成交时刻不对齐。市场在 10:00:00 动了,某只流动性一般的股票 10:03 才有下一笔成交把这个信息打进价格。在 5 分钟网格上,市场收益进了这个 bar,个股响应掉进下个 bar——同期协方差被打散到滞后项里,同期 Beta 被低估。
  • 微观结构噪声:买卖价差弹跳给个股收益叠加了一层与市场无关的伪波动,进一步稀释测得的相关。

模拟里给个股加上滞后响应结构(当期只吸收 45% 的市场信息,其余分布在后 3 个 bar),真实 Beta 设为 1.2:

Epps 效应:采样频率与 Beta 估计

5 分钟频率测得的 Beta 只有 0.54——低估了一半以上。拉长到 20 分钟恢复到 0.92,80 分钟 1.12,日频 1.16(配合 20 日窗口)。偏差随采样间隔拉长单调消失,因为滞后响应被越来越粗的 bar “包”进了同一个区间。

但间隔拉长的代价是样本点变少、估计方差上升。这是一个经典的偏差-方差权衡:

偏差-方差权衡

MSE 最低点出现在中间频率(本组参数下 20-40 分钟)。盲目用最高频数据是这个领域最常见的错误——对流动性好的大盘股,15-30 分钟采样通常是安全区;对小盘股,Epps 偏差更重,要么用更长间隔,要么上专门的修正估计器(Hayashi-Yoshida 估计器直接对非同步成交建模;预平均法压制微观结构噪声——两者都超出本文范围,但你至少要知道它们存在的原因)。

五、终极裁判:对冲误差#

Beta 估计器孰优孰劣,不该看谁的曲线好看,该看拿它去对冲,残余风险谁小。规则:每天用昨天的 Beta 估计对冲今天的市场暴露,统计残差 et=ri,tβ^t1rm,te_t = r_{i,t} - \hat\beta_{t-1} r_{m,t} 的年化波动。

对冲误差对比

模拟结果:静态全样本 Beta 残余波动 11.1%,60 日滚动 OLS 10.6%,22 日已实现 Beta 10.1%

三点解读:

  • 排序符合信息含量:已实现 Beta 用了日内信息且响应快,赢;静态 Beta 完全忽略时变,输。
  • 差距看似温和,含金量不低。残余波动直接是市场中性策略 Sharpe 的分母;对一个用 3 倍杠杆跑的中性组合,0.5 个百分点的残余波动差异会被杠杆同步放大。
  • 残余波动的下界是特质波动(本模拟约 10%)——任何估计器都不可能低于它。已实现 Beta 的 10.1% 已经非常接近理论下界,说明它把”可对冲的部分”几乎榨干了。

顺带一提:这个”对冲误差裁判”框架同样适用于你自己的任何 Beta 改进方案(收缩估计、状态空间模型、机器学习预测),比在论文里比较 MSE 诚实得多——因为它自动惩罚了滞后。

六、工程细节与已知坑#

开盘段必须剔除或单独处理。 集合竞价后的第一个 bar 包含隔夜信息的集中释放,其方差是日内正常 bar 的数倍,且个股与指数的开盘时点对齐质量差。常见做法:丢弃 9:30-9:35 的 bar,或把隔夜收益单独作为一个”bar”并降权。

隔夜 Beta ≠ 日内 Beta。 文献反复发现隔夜时段的 Beta 系统性高于日内(隔夜信息以公共宏观新闻为主,日内混入大量特质流动性噪声)。如果你的对冲要覆盖隔夜敞口,只用日内 bar 算的 Beta 会有系统偏差——需要把隔夜收益纳入或分段建模。

A 股特有约束:5 分钟 K 线数据可得性好(本站常用的数据接口即可),但 T+1 意味着”每天按新 Beta 调仓”在现货腿上受限,实践中对冲调整走股指期货腿;午间休市把日内切成两段,跨午休的 bar 不要直接拼接。

指数选择:对沪深 300 成分股用 300 指数、中小票用中证 500/1000,用错基准指数造成的 Beta 偏差往往大于估计方法之间的差异。

七、总结#

维度60 日滚动 OLS22 日已实现 Beta
数据需求日频收益5 分钟日内收益
跳变响应~60 日(被窗口稀释)~22 日(平滑窗口,可调)
单日估计不可能可以(48 个 bar)
主要偏差源窗口滞后Epps 效应(可通过采样间隔控制)
对冲残余波动(模拟)10.6%10.1%

已实现 Beta 不是免费升级——它把”窗口滞后”这个问题换成了”Epps 偏差 + 微观结构噪声”这组新问题。但新问题有透明的控制手段(采样间隔、平滑窗口、开盘段处理),而旧问题的滞后是结构性的、无法用同一套数据修复的。对任何需要动态管理市场暴露的策略,这笔交换是值得的。

下一步的自然延伸:已实现 Beta 只告诉你过去的暴露,期权市场还藏着一个前瞻性的 Beta——从期权隐含波动率里反推的隐含 Beta,那是另一篇文章的主题。


免责声明:本文为教学演示,全部数值来自受控模拟实验,不构成投资建议。实盘应用前请在真实高频数据上验证 Epps 偏差的实际形态与幅度。

高频已实现 Beta:用日内数据估计时变系统性暴露
https://blog.halo26812.eu.org/blog/realized-beta-highfreq
Author halo
Published at 2026年7月29日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨