高频已实现 Beta:用日内数据估计时变系统性暴露
「你的 Beta 不是一个数,是一条会跳的曲线。」传统 60 日滚动 OLS 估计 Beta 有一个结构性死穴:窗口内每个观测等权,Beta 真的变了要一个月才能在估计里显形。已实现 Beta 把已实现波动率的思路搬到协方差上——用 5 分钟日内收益,单日就能算出一个 Beta 估计(日内协方差 / 日内市场方差),无需任何模型假设,跳变当天就能看到。Python 模拟完整验证三层结构:事件日 Beta 从 1.0 跳到 1.9,22 日平滑已实现 Beta 约 20 个交易日贴近真值,60 日 OLS 落后一倍时间且路径被旧样本稀释;但高频不是免费午餐——Epps 效应让非同步交易在 5 分钟频率把 Beta 从 1.2 低估到 0.54,偏差随采样间隔拉长单调消失,最优频率是偏差与方差的权衡(20-40 分钟附近),盲目用最高频数据是这个领域最常见的错误;对冲误差是估计器的终极裁判:模拟中已实现 Beta 对冲的残余年化波动 10.1%,优于滚动 OLS 的 10.6% 与静态 Beta 的 11.1%——差距看似小,但对冲组合的方差改善会直接进入市场中性策略的 Sharpe 分母。落地约束诚实列出:A 股 5 分钟数据可得但 T+1 限制对冲调仓、开盘集合竞价段需剔除、真实市场的微观结构噪声比模拟更毒(中高阶)。
一句话版本#
Beta 不是常数,而传统 60 日滚动回归要一个月才能发现它变了;已实现 Beta 用 5 分钟日内数据把估计窗口压缩到一天——代价是你必须直面 Epps 效应这只高频世界的拦路虎。
一、问题:你的 Beta 早就不是那个 Beta 了#
市场中性策略、指数增强、股指期货对冲——所有这些业务的第一个输入都是 Beta:个股(或组合)对市场的系统性暴露。
教科书做法是滚动 OLS:取过去 60 个交易日的日频收益,回归
取斜率。这个做法有一个被广泛忽视的结构性问题:窗口内每个观测等权。假设某公司今天宣布重大并购,它的商业模式、杠杆率、与宏观的关联从今天起彻底变了——真实 Beta 当天跳变。但 60 日 OLS 里,今天的观测只占 1/60 的权重。估计值要花大约一个月才爬到新水平,这期间你的”市场中性”组合一直带着裸露的方向敞口。
已实现 Beta(Realized Beta)的思路来自已实现波动率文献(Andersen, Bollerslev, Diebold & Wu, 2005/2006):别用 60 天的日频数据,用 1 天的日内数据。
二、定义:一天就够#
把交易日切成 M 个 5 分钟 bar,个股与市场的 5 分钟收益分别为 和 ()。当日已实现 Beta 定义为:
这就是”用日内 bar 当样本点的单日回归斜率”(不带截距——日内均值在 5 分钟尺度上可忽略)。理论支撑很硬:在连续半鞅框架下,当采样间隔趋于零,已实现协方差依概率收敛到积分协方差,已实现 Beta 收敛到当日的真实积分 Beta——不需要任何参数模型,不需要假设 Beta 服从什么过程。
A 股一天 4 小时连续竞价 = 48 个 5 分钟 bar。48 个样本点估一个斜率,单日估计当然有噪声,实践中再做 22 日平滑:
注意是分子分母分别求和再相除,不是对 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_smoothpython三、模拟实验:跳变响应速度对比#
构造一个受控实验:真实 Beta 围绕 1.0 缓慢随机游走,第 250 个交易日发生事件(想象一次并购公告),Beta 跳升 0.9 后以 80 日半衰期缓慢回落。个股 5 分钟收益 = 真实 Beta × 市场收益 + 特质噪声。
三个估计器同台:日度已实现 Beta(原始)、22 日平滑已实现 Beta、60 日滚动 OLS(日频收益)。

三个观察:
- 日度已实现 Beta(蓝色细线)当天就捕捉到跳变——它围绕真值波动,噪声不小,但中心位置是对的。跳变信息在数据里第一天就存在,问题只是信噪比。
- 22 日平滑版(红线)约 20 个交易日完全贴合新水平——平滑窗口就是它的响应时滞,这是你自己选的、透明的权衡。
- 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:

5 分钟频率测得的 Beta 只有 0.54——低估了一半以上。拉长到 20 分钟恢复到 0.92,80 分钟 1.12,日频 1.16(配合 20 日窗口)。偏差随采样间隔拉长单调消失,因为滞后响应被越来越粗的 bar “包”进了同一个区间。
但间隔拉长的代价是样本点变少、估计方差上升。这是一个经典的偏差-方差权衡:

MSE 最低点出现在中间频率(本组参数下 20-40 分钟)。盲目用最高频数据是这个领域最常见的错误——对流动性好的大盘股,15-30 分钟采样通常是安全区;对小盘股,Epps 偏差更重,要么用更长间隔,要么上专门的修正估计器(Hayashi-Yoshida 估计器直接对非同步成交建模;预平均法压制微观结构噪声——两者都超出本文范围,但你至少要知道它们存在的原因)。
五、终极裁判:对冲误差#
Beta 估计器孰优孰劣,不该看谁的曲线好看,该看拿它去对冲,残余风险谁小。规则:每天用昨天的 Beta 估计对冲今天的市场暴露,统计残差 的年化波动。

模拟结果:静态全样本 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 日滚动 OLS | 22 日已实现 Beta |
|---|---|---|
| 数据需求 | 日频收益 | 5 分钟日内收益 |
| 跳变响应 | ~60 日(被窗口稀释) | ~22 日(平滑窗口,可调) |
| 单日估计 | 不可能 | 可以(48 个 bar) |
| 主要偏差源 | 窗口滞后 | Epps 效应(可通过采样间隔控制) |
| 对冲残余波动(模拟) | 10.6% | 10.1% |
已实现 Beta 不是免费升级——它把”窗口滞后”这个问题换成了”Epps 偏差 + 微观结构噪声”这组新问题。但新问题有透明的控制手段(采样间隔、平滑窗口、开盘段处理),而旧问题的滞后是结构性的、无法用同一套数据修复的。对任何需要动态管理市场暴露的策略,这笔交换是值得的。
下一步的自然延伸:已实现 Beta 只告诉你过去的暴露,期权市场还藏着一个前瞻性的 Beta——从期权隐含波动率里反推的隐含 Beta,那是另一篇文章的主题。
免责声明:本文为教学演示,全部数值来自受控模拟实验,不构成投资建议。实盘应用前请在真实高频数据上验证 Epps 偏差的实际形态与幅度。