halo 的技术博客

返回

一句话版本#

把一个交易日切成 13 个半小时区间,用前面每个区间的收益去预测最后半小时:绝大多数区间毫无预测力,但第一个半小时(含隔夜)和倒数第二个半小时两个例外稳定显著——这就是 Gao, Han, Li & Zhou (2018) 在 SPY 上发现的日内动量(intraday momentum):早盘的方向,会在尾盘再现一次。


问题:日内收益不该有结构#

有效市场的零假设很干净:把交易日切成 13 个半小时区间 r1,r2,,r13r_1, r_2, \dots, r_{13}(美股 9:30-16:00,r1r_1 含隔夜跳空),任何一段的收益都不该预测另一段。日间动量(12 个月赢家继续赢)和短期反转(上周输家本周赢)都是月频周频现象,日内这个尺度上,直觉认为微观结构噪声会淹没一切。

Gao-Han-Li-Zhou 用 SPY 1993-2013 的半小时数据打破了这个直觉:r1r_1r13r_{13} 的预测回归 t 值超过 6,r12r_{12} 也显著,两者合起来样本外 R² 达到 2.6%——对日内预测来说是巨大的数字。之后这个模式在全球股指 ETF、国债期货、外汇、商品上被反复复现。尾盘不是随机游走的最后一段,它是全天信息的一次「复读」。

受控模拟:把效应种进去,再完整测出来#

用受控模拟复现全套证据链。生成机制:

  • 每天 13 个半小时收益,日级波动率有聚集(模拟 GARCH 状态);
  • r1r_1 波动放大 1.8 倍(隔夜信息堆积),r13r_{13} 放大 1.1 倍(收盘流动性事件)——匹配真实市场 U 形日内波动;
  • 植入效应r13=0.094r1+0.122r12+εr_{13} = 0.094 \cdot r_1 + 0.122 \cdot r_{12} + \varepsilon,其余区间互相独立;
  • 2500 个交易日(约 10 年)。

证据一:13 个区间的预测力扫描#

对每个 jj,跑 r13=α+βjrj+εr_{13} = \alpha + \beta_j r_j + \varepsilon

for j in range(12):
    x = R[:, j]
    beta = np.cov(x, r13)[0, 1] / np.var(x)
    resid = r13 - beta * x
    se = np.sqrt(np.var(resid) / (n_days * np.var(x)))
    print(f"r{j+1}: beta={beta:.4f}, t={beta/se:.2f}")
python

各区间预测 t 统计量

区间r1r_1r2r_2r11r_{11}r12r_{12}
t 统计量7.43全部在 ±1.7 以内4.39

结构和原论文完全一致:只有开盘半小时和倒数第二个半小时显著,中间十个区间干净地不显著。这个「哑铃形」不是巧合——r1r_1 是全天信息含量最高的区间(消化了 17.5 小时的隔夜信息),r12r_{12} 是尾盘资金流的先导。中间的 r2r_2r11r_{11} 主要是噪声换手,不携带方向信息。

证据二:条件期望的单调性#

比回归 t 值更直观的检验:按 r1r_1 把所有交易日分成五组,看每组的尾盘平均收益:

条件收益

分组Q1(最跌)Q2Q3Q4Q5(最涨)
E[r13r_{13}](bp)−26.5−14.2−6.2+22.6+29.4

从 Q1 到 Q5 严格单调,跨度 56 个基点。这排除了「效应只由几个极端日贡献」的担忧——量效关系是连续的:早盘跌得越狠,尾盘平均跌得越多;早盘涨得越猛,尾盘延续越强。中间组接近零,意味着早盘方向不明的日子尾盘也没有可预测性——信号有自知之明,这是好信号的特征

证据三:策略化——每天只交易 30 分钟#

最朴素的策略化:15:30 看今天 r1r_1 的符号,同向持仓最后半小时,收盘平仓。每天暴露市场风险仅 30 分钟:

策略净值

策略年化收益Sharpe最大回撤胜率
尾盘动量 sign(r1r_1r13r_{13}47.7%1.99−27.4%55.2%
始终做多尾盘2.6%0.11−58.7%50.5%
全天持有14.3%0.19−92.5%50.0%

三个对照读法:

  • 对比「始终做多尾盘」(Sharpe 0.11):策略的全部超额来自方向切换,不是做多偏差。这个对照组必须做——很多「尾盘策略」的收益其实只是尾盘的无条件漂移;
  • 胜率只有 55.2%:日内动量是弱信号高频率的典型形态,单日毫无把握,2500 天累积才显出统计优势;
  • 回撤 −27%:Sharpe 2.0 不等于平滑——波动聚集让策略在高波动段连错,模拟里最深回撤发生在波动状态最高的区段,与原论文「效应在高波动日更强、但策略回撤也更集中」的发现一致。

机制:为什么尾盘会复读早盘#

三条被文献反复验证的腿:

1. 隔夜信息消化不完(infrequent rebalancing)。 Bogousslavsky (2016) 的理论:部分机构不是每半小时都调仓,很多只在开盘和收盘两个流动性高峰行动。开盘时段对隔夜信息的第一轮定价由快钱完成,慢钱(共同基金、养老金)把同方向的单子留到收盘前流动性最好的时段执行——同一份信息被交易两次

2. 日内趋势交易者的尾盘平仓。 日内 CTA 和趋势账户按当天方向持仓、收盘前强制平仓离场。注意这条腿的符号:他们平仓的方向与趋势相反,理论上是负贡献——但他们的存在放大了 r12r_{12} 的信息含量:倒数第二个半小时的方向部分反映了这批资金的仓位压力。

3. 被动基金的收盘再平衡。 杠杆 ETF 是最机械的一环:2 倍多头 ETF 在标的上涨的日子必须在收盘前买入追加敞口(当日涨 x%,需增仓约 2x%),下跌日必须卖出——方向永远与当天趋势相同,这是写在产品说明书里的正反馈流。杠杆 ETF 规模越大的市场,尾盘动量越强,这个截面证据是机制的直接确认。

两盆冷水#

冷水一:成本敏感性——日频翻仓的宿命#

策略每天进出各一次,成本按天累积。单边成本扫描:

成本敏感性

单边成本0bp1bp2bp3bp5bp8bp10bp
Sharpe1.991.781.571.360.940.31−0.11

5bp 砍半,10bp 归零。 SPY 这种点差 1bp 以内的品种能活,换成点差 5bp 的个股或小 ETF 直接死亡。日内动量是典型的「毛利肥、净利薄」策略:单次期望收益只有十几个基点,任何成本项都是大分母。评估这类策略时,不含成本的 Sharpe 是营销数字,不是研究结论

冷水二:对照世界的假信号基线#

γ1=γ12=0\gamma_1 = \gamma_{12} = 0(彻底关掉效应)的世界重新模拟一遍,同样的策略跑出来 Sharpe 0.30——不是零。来源是有限样本噪声:2500 天里 sign(r1r_1) 和 r13r_{13} 碰巧的相关不会精确为零,波动聚集又让「碰巧」的方差变大。

这个数字是重要的基线:如果你在真实数据上测出 Sharpe 0.4 的尾盘策略,先别写 PPT——它和无效应世界的抽样噪声只有一步之遥。原论文的效应之所以可信,是因为 t>6 的回归显著性 + 20 年样本 + 全球市场复现 + 明确机制,四者缺一不可。单市场单样本的尾盘发现,默认当噪声处理。

A 股场景注记#

  • 14:57 的闸门:A 股 14:57-15:00 是收盘集合竞价,连续交易在 14:57 截止。「最后半小时」实际是 14:30-14:57 的 27 分钟 + 一次集合竞价,策略出场只能在 14:57 前挂单或参与竞价,执行不确定性高于美股的连续收盘;
  • T+1 斩断多头腿的日内闭环:今天尾盘买的股票明天才能卖——尾盘动量的多头腿变成「尾盘进、次日开盘出」,隔夜跳空风险混入,信号纯度下降。可用工具:股指期货(T+0)、ETF(T+0 品种);
  • 尾盘的 A 股特色资金流:打板资金的尾盘封板行为让涨幅居前个股的 r12r13r_{12} \to r_{13} 传导显著强于美股,但这个信号极度拥挤且受监管关注(尾盘拉抬是重点监控行为),研究可以做,实盘另说;
  • 机制强度不同:A 股杠杆 ETF 规模小,第三条腿(再平衡流)弱;但散户占比高,第一条腿(信息消化慢)可能更强。机制组合不同,效应的参数需要本地重估而不是照搬美股结论。

与前文的连接#

本系列在时间尺度上一路下沉:《Epps 效应》和《领先滞后估计》处理秒级的跨资产结构,本篇回到半小时尺度的单资产时间结构。共同的方法论:受控模拟先行(真值已知才能校准检验力)、对照组必须做(无效应世界的 Sharpe 0.30 就是本篇的「同步观测对照组」)、机制没讲清楚的显著性默认是过拟合


本文实验基于受控模拟,参数标定参考 Gao, Han, Li & Zhou (2018, JFE) 在 SPY 上的公开结果。真实市场的效应强度随年代衰减(2013 年后 SPY 上的日内动量明显变弱),任何实盘应用需用近期数据重估并全程扣减真实成本。

日内动量之尾盘效应:最后半小时的可预测性
https://blog.halo26812.eu.org/blog/intraday-momentum-last30min
Author halo
Published at 2026年7月30日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨