halo 的技术博客

返回

一句话版本#

把采样间隔从 30 分钟压缩到 5 秒,两个真实相关系数 0.7 的资产,测出来的相关系数会一路跌到 0.08。市场没有变,变的是你的估计器——Epps 效应是高频协方差估计里最著名的系统性偏差,主因不是玄学,是异步交易 + previous-tick 对齐的机械后果。


问题:更多数据,更差的估计#

直觉上,数据频率越高、样本越多,统计估计应该越准。方差估计大体如此(在微观结构噪声出现之前)。但相关系数在高频下发生了诡异的事情:T. W. Epps 在 1979 年用美股数据首次记录——股票间收益相关系数随采样间隔缩短而单调衰减,间隔足够短时趋近于零。

这不是历史奇闻。今天任何做统计套利、高频对冲或日内风险管理的人,第一次用 tick 数据算相关矩阵时都会撞上它:日线上相关 0.8 的两只股票,1 分钟线上可能只剩 0.4,10 秒线上接近 0。如果你直接把高频相关矩阵喂进组合优化器,它会认为你的组合分散化程度远好于实际——这是会亏真钱的偏差。

受控实验:把真相关钉死在 0.7#

模拟的好处是真值已知。构造如下:

  • 两个资产的潜在有效价格是相关布朗运动,ρtrue=0.7\rho_{true} = 0.7,以 0.1 秒步长生成一个 6.5 小时交易日;
  • 异步交易:资产 A 活跃(泊松到达,平均 3 秒一笔成交),资产 B 清淡(平均 15 秒一笔)——只有成交时刻才能观测到价格;
  • 微观结构噪声:每笔观测价格叠加独立噪声(模拟买卖价跳动);
  • 用行业标准的 previous-tick 插值把两个资产对齐到间隔为 hh 的公共网格,算收益相关;
  • 重复 40 个交易日取均值。
def prev_tick_sample(t_obs, p_obs, grid):
    """previous-tick:取网格点之前最近一笔成交价"""
    idx = np.searchsorted(t_obs, grid, side="right") - 1
    return p_obs[np.maximum(idx, 0)]

def realized_corr(t1, p1, t2, p2, h):
    grid = np.arange(h, T, h)
    r1 = np.diff(prev_tick_sample(t1, p1, grid))
    r2 = np.diff(prev_tick_sample(t2, p2, grid))
    return np.corrcoef(r1, r2)[0, 1]
python

Epps 衰减曲线

结果是一条教科书级的 Epps 曲线:

采样间隔5s10s30s60s5min10min30min
测得相关0.080.160.350.490.640.690.69

真实相关 0.7,5 秒采样只测出 0.08——丢掉了 89% 的相关性。10 分钟以上才基本收敛到真值。整条曲线上没有任何一点「市场结构」发生变化,衰减完全是估计器的伪影。

机制:旧价格不携带新信息#

为什么会这样?看一眼两个资产的实际观测就明白了:

异步交易示意

资产 B 平均 15 秒才成交一笔。在 5 秒网格上,B 的「最新价」大部分时间是几秒甚至十几秒前的旧价。previous-tick 对齐制造了这样的配对:A 的收益反映了刚刚到达的共同信息,B 的收益是零(价格没更新)或反映的是上一个区间的信息。新信息对旧价格,乘积的期望被机械稀释。

数学上可以精确表述:若资产 B 在长度为 hh 的区间内没有成交,其测得收益为 0,该区间对协方差的贡献为 0,但对 B 的方差贡献也异常(收益挤压到有成交的区间)。hh 越小,「空区间」占比越高,相关系数越向零收缩。衰减的特征时间尺度就是清淡资产的平均成交间隔——这解释了为什么流动性差的股票对 Epps 效应更严重。

分解实验:异步是主犯,噪声是帮凶#

把两个机制拆开验证。对照组让两个资产在相同时刻被观测(消除异步)且无噪声;实验组只保留异步、去掉噪声;完整组两者都有:

机制分解

三条曲线的证词非常清楚:

  • 同步观测组在所有频率下都测得 ≈0.7——连 5 秒采样都是 0.700。这证明高频本身无罪,衰减 100% 来自观测机制;
  • 纯异步组在 5 秒处测得 0.15:异步交易独立解释了大部分衰减;
  • 异步+噪声组进一步压到 0.08:微观结构噪声给两个收益序列各自注入不相关的方差,把相关系数的分母吹大——经典的 attenuation bias。

传导到组合风险:分散化幻觉#

相关系数低估不是学术洁癖,它直接进入组合波动公式 σp2=wΣw\sigma_p^2 = w'\Sigma w。用不同频率估计的相关系数计算两资产等权组合的年化波动(真实波动率 20%/25%):

组合风险影响

  • 用 h=10s 的相关估计(0.16):组合年化波动 17.2%
  • 用 h=30min 的估计(0.69):20.7%
  • 真值(ρ=0.7):20.8%

高频估计把组合波动低估了 3.6 个百分点——优化器看到的是一个不存在的分散化收益,会因此加杠杆或加集中度。放大到几十上百个资产的日内风险模型,整个相关矩阵被系统性压向单位阵,组合层面的低估更严重。用 tick 级数据算的 VaR 在压力日集体失效,Epps 效应是被点名次数最多的元凶之一。

Hayashi-Yoshida:不对齐,直接配对#

既然祸根是「强行对齐到公共网格」,Hayashi 和 Yoshida(2005)的方案是干脆不要网格:对两个资产各自的逐笔收益,只要时间区间有重叠就把乘积加进协方差

X,Y^HY=ijΔXiΔYj1{(ti1,ti](sj1,sj]}\widehat{\langle X, Y \rangle}_{HY} = \sum_{i}\sum_{j} \Delta X_i \, \Delta Y_j \, \mathbf{1}\{(t_{i-1}, t_i] \cap (s_{j-1}, s_j] \neq \emptyset\}

def hayashi_yoshida(t1, p1, t2, p2):
    r1, r2 = np.diff(p1), np.diff(p2)
    cov, j0 = 0.0, 0
    for i in range(len(r1)):
        while j0 < len(r2) and t2[j0 + 1] <= t1[i]:
            j0 += 1                      # 跳过完全在左侧的区间
        j = j0
        while j < len(r2) and t2[j] < t1[i + 1]:
            cov += r1[i] * r2[j]         # 区间重叠即配对
            j += 1
    return cov / np.sqrt(np.sum(r1**2) * np.sum(r2**2))
python

无噪声的异步数据上,HY 是无偏的——这是它的定理保证。但我们的实验给出了一个必须诚实交代的结果:在带微观结构噪声的数据上,HY 测得 0.29 ± 0.003,还不如 5 分钟 previous-tick 的 0.64。

原因:HY 用了每一笔逐笔收益,而逐笔收益里噪声方差占比最高(信号方差 \propto 时间长度,噪声方差不随之缩小),attenuation bias 被推到最大。HY 修异步不修噪声——它的正确使用场景是先做预平均(pre-averaging)压噪声、或用于成交稀疏但报价干净的资产对。「换个高级估计量就万事大吉」是对这类工具最常见的误用。

实操清单#

  1. 配对交易/统计套利:相关性和协整参数估计用 5-15 分钟采样——这是我们曲线上偏差已经收敛(0.64-0.69 vs 0.70)而样本量仍可观的甜蜜点。用日线嫌样本少,用秒级是自残。
  2. 检查你的清淡腿:Epps 衰减的时间尺度由更不活跃的那条腿决定。配对里有一只日均成交笔数低的小票,安全采样间隔要按它的平均成交间隔放大 10 倍以上。
  3. 高频风险模型:要么用低频相关 + 高频波动率拼接(相关性本来就比波动率稳定),要么上 pre-averaging HY / 多尺度估计量,绝不裸用 tick 级样本相关。
  4. 诊断习惯:对任何资产对画一条「相关系数 vs 采样间隔」曲线。曲线平坦说明频率选择自由;曲线还在爬升说明你当前频率仍在偏差区。这张图五分钟就能画完,能避免整个策略建立在被稀释的相关矩阵上。

A 股注记#

A 股的 Epps 效应有三个本土加重项:一是午间休市——跨午休的「收益」跨越 90 分钟真实世界时间,与日内 5 分钟收益混在一起会扭曲相关估计,必须把上下午分段处理;二是涨跌停——停板期间价格被冻结但信息仍在到达,配对资产一只停板一只正常交易时,测得相关会瞬间崩向零,这不是 Epps 但会和 Epps 叠加,停板日应整体剔除;三是集合竞价开盘价与连续竞价首笔之间的跳跃不是连续交易产生的,计算高频相关时首个区间应丢弃。有利的一面:A 股主板股票日内成交连续性普遍好于美股小票,对沪深 300 成份股,5 分钟采样的 Epps 残余偏差通常已经可以忽略。


系列定位:信息驱动采样系列(成交量时钟 → 美元 Bar → 失衡 Bar → Run Bar)解决的是单资产的采样时钟问题;本文是多资产版本的同一课题——当两个资产各有各的交易时钟,任何公共网格都是对至少一方的扭曲。下一步的自然延伸是用美元时间共同采样(common volume clock)重估高频相关。

参考文献:Epps, T. W. (1979). Comovements in stock prices in the very short run. JASA 74(366); Hayashi, T., Yoshida, N. (2005). On covariance estimation of non-synchronously observed diffusion processes. Bernoulli 11(2); Zhang, L. (2011). Estimating covariation: Epps effect, microstructure noise. Journal of Econometrics 160(1).

Epps 效应:高频下相关系数为何随采样频率衰减
https://blog.halo26812.eu.org/blog/epps-effect-highfreq
Author halo
Published at 2026年7月30日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨