halo 的技术博客

返回

A 股春节休市九天。这九天里,港股开了大半,美股全开,原油和美债一天没停。全球风险定价照常进行,而 A 股持仓者被锁在场外,一个动作都做不了

等到开市那天早上,所有积压的信息在集合竞价的几分钟里一次性砸进价格。这就是假期缺口。

问题不在于「跳空存在」——这是显然的。问题在于两个更具体的东西:第一,跳空能被休市期间的外盘信息解释到什么程度?第二,如果能解释,这个可预测性是不是可交易的?

12 年模拟给出的答案很不对称:第一个问题的答案是「几乎完全能」(R² = 0.968),第二个问题的答案是「基本不能,而且原因不是交易成本」

假期长度与跳空幅度

一、先把日历错位造出来#

这个研究的全部信息来源就是「两个市场的休市日不重合」。日历建模错了,后面全是空转。

A 股和港股的错位有三种形态:A 股独有的长假(春节、国庆、五一)、港股独有的假期(复活节、圣诞、佛诞、耶稣受难日)、双方都休但长度不同(春节港股只休三天,A 股休八九天)。

a_holiday = np.zeros(DAYS, dtype=bool)
for lo, hi in [(30, 38), (120, 125), (273, 281), (0, 3)]:   # 春节/五一/国庆/元旦
    a_holiday |= (doy >= lo) & (doy < hi)

h_holiday = np.zeros(DAYS, dtype=bool)
for lo, hi in [(95, 99), (358, 362), (0, 2), (135, 137), (183, 185)]:
    h_holiday |= (doy >= lo) & (doy < hi)
h_holiday |= (doy >= 30) & (doy < 33)      # 农历新年港股只休 3 天
h_holiday |= (doy >= 273) & (doy < 275)    # 国庆港股只休 1 天

a_open = weekday & (~a_holiday)
h_open = weekday & (~h_holiday)
python

12 年 4380 个日历日里:A 股交易 2924 天,港股 2966 天,A 股休而港股开 145 天,港股休而 A 股开 103 天。

那 145 天就是本文的全部研究对象。

二、积压机制:跳空不是凭空产生的#

全球风险因子 g 每个日历日都在动,不管谁休市。A 股休市时,它对这个因子的暴露没有消失,只是记在账上没有结算

pending += beta * acc          # acc = 休市期间积压的全球因子
release_open = PASS_OPEN * pending    # 开盘集合竞价释放一部分
pending -= release_open
release_intra = DECAY * pending       # 盘中继续消化
pending -= release_intra
python

PASS_OPEN = 0.62 表示开盘瞬间反应掉 62%,剩下的在盘中和后续几天慢慢消化。这个参数是整篇文章的命门,第六节会专门拆它。

我还在长假期间注入了随机事件冲击——真实世界里长假常伴随政策发布或外部冲击(12 年里触发了 12 次)。这不是为了让结果好看,而是因为如果长假期间的因子波动和平时完全一样,那”长假风险更大”就只是天数问题,没有独立内容

三、结果一:跳空随休市长度单调放大#

休市类型样本数平均绝对跳空跳空标准差平均休市日历天
隔夜231536.1bp45.2bp1.0
周末56262.8bp78.4bp3.0
小长假1790.4bp104.6bp5.2
春节/国庆30122.4bp146.9bp9.5

春节国庆后的首日跳空是普通隔夜的 3.4 倍。

但真正值得看的是方差比。长假跳空方差是隔夜的 6.12 倍,而按积压日历天数线性外推(7.98 天 / 1.39 天)只预期 5.74 倍

超出的那部分(6.12 vs 5.74)不是天数造成的,是长假期间事件冲击的额外贡献。如果只按「休市天数越多、方差越大」的随机游走直觉,会低估长假风险约 6.6%。这个差距不大,但它说明假期风险有一个不可归因于时间的成分。

四、结果二:跳空几乎完全由外盘信息决定#

把长假后首日的市场跳空,对休市期间港股累计收益做回归(封面右图):

斜率 0.543,t = 5.50,R² = 0.402,n = 47

斜率显著小于 1,说明 A 股开盘不会把外盘涨跌一比一抄过来——部分因为不完全传导,部分因为开盘只释放了 62%。

更彻底的分解是直接用「积压的全球因子 × 平均 beta × 开盘吸收比例」去解释跳空:

跳空分解与可交易性

中间那张图:总跳空标准差 55.4bp,积压因子能解释掉 54.4bp,残差只剩 9.97bp,R² = 0.968

这个 0.968 是本文最重要的数字,而且它是个坏消息。

它意味着假期跳空里 96.8% 是会计恒等式——A 股欠了几天全球因子的暴露,开市第一天把账结了。这不是市场失灵,不是定价错误,是”停牌期间风险照常累积”这个事实的必然结果。能被会计恒等式解释的东西,不构成 alpha。

五、三个必须排除的替代解释#

R² = 0.968 这么高,第一反应应该是「我是不是把答案偷偷喂进去了」。三个对照:

识别检验

(a)安慰剂:把休市期间港股收益随机打乱 400 次重跑回归。打乱后 t 均值 -0.059,|t| 的 95 分位只有 1.93,400 次里没有一次达到真实的 5.50(超出比例 0.0%)

(b)伪未来对照:用下一段假期的港股收益去解释本次跳空。如果引擎存在时间对齐错误,这个也会显著。实测 t = 0.99,R² = 0.021——不显著,时间对齐正确。

(c)纯净引擎对照:保留同一套日历错位,但让开盘跳空变成与外盘无关的独立噪音。港股收益仍然可观测且非退化,回归照样能跑。实测 t = 1.18——引擎不制造假信号。

(第一版这个对照我写成了「让港股与 A 股同步休市」,结果休市期间港股收益恒为 0,回归子方差为零直接抛 LinAlgError: Singular matrix。程序崩溃反而是好事——如果我给了它一个非零常数,回归会静默返回一个无意义的斜率,而我可能就那么信了。)

(d)横截面 beta 单调性(右图):如果机制是”积压的全球因子暴露”,那 beta 越高的股票跳空应该越大。五个 beta 分位的长假跳空标准差:80.4 → 115.5 → 136.4 → 156.8 → 202.3bp,严格单调。长假/隔夜比值也单调:1.62 → 1.95 → 2.04 → 2.13 → 2.25

任何”整体市场在跳”的说法都解释不了这个单调性。

六、可交易性:结论悬在一个不可观测参数上#

到这里,可预测性是扎实的。那能不能交易?

策略很直接:长假后第一天,按休市期间港股方向,开盘价买入/卖空,收盘平仓,赚开盘没消化完的那部分。

单边成本平均单次胜率t 值年化 Sharpe
0bp23.22bp80.9%3.961.14
5bp13.22bp74.5%2.250.65
15bp-6.78bp46.8%-1.16-0.33

47 次交易,5bp 成本下勉强活着,15bp 就死了。盈亏平衡在 11.6bp 单边附近。

但成本不是真正的问题。真正的问题在右图。

整个策略的存活完全取决于「开盘集合竞价吸收了多少信息」这个我无法观测的参数:

开盘吸收比例盘中可捕获t 值扣 5bp 后
30%40.12bp3.8530.12bp
50%28.39bp3.8018.39bp
62%(基准)21.30bp3.7111.30bp
80%10.60bp3.230.60bp
95%1.62bp0.93-8.38bp
100%-1.39bp-0.87-11.39bp

如果开盘集合竞价是有效的——也就是它一次性把积压信息定价完毕——那么盘中什么都不剩,策略精确归零。

这不是参数敏感性问题,是结论的定性性质由一个自由参数决定。我设 0.62,得到”有 21bp 可赚”;设 0.95,得到”没得赚”。两个都是我编的。

而且有理由认为真实值偏高:假期跳空是所有人都知道会发生、方向也大致知道的事件。集合竞价撮合的正是这批想在开盘就调整仓位的订单。一个全市场预期到的信息,很难在开盘后还留 20bp 在桌上。

所以诚实的结论是:这个策略在我的模拟里能赚钱,但它能赚钱的唯一原因是我假设了开盘定价不充分。这个假设我没有证据。

七、那这个研究还剩什么价值#

作为交易策略,基本没有。作为风险管理输入,价值明确。

其一,长假前的仓位是一个真实的风险敞口,且可以量化。 春节前满仓,等于对九天全球风险签了一张无法对冲的空白支票。跳空标准差 146.9bp 就是这张支票的面额,beta 1.5 的股票要按 202bp 算。这个数字在假期前就能算出来,不需要预测方向。

其二,方差按天数外推会低估。 6.12 倍实测 vs 5.74 倍线性预期。长假的风险不只是”天数多”,还有事件密度。做 VaR 时用 √t 缩放会系统性偏低。

其三,跳空方向的可预测性对减仓决策仍然有用。 就算你赚不到 21bp,休市期间港股大跌这个信息也能告诉你”明天开盘大概率低开”,从而决定是开盘就砍还是等反弹。判断方向和赚取价差是两回事,前者的门槛低得多。

八、这个研究没有覆盖的#

合成市场不是真实市场。 传导系数、开盘吸收比例、事件强度全是我设的。真实的陆股通还有额度限制、汇率波动、南北向资金行为差异,本文一概没建模。

47 个样本太少。 12 年只有 47 次长假后首日。所有长假结论都建立在这 47 个点上,t = 5.50 看着漂亮,但换一个 12 年窗口会抖得很厉害。真实研究应该用更长历史或更多市场对。

A/H 价差被忽略了。 我假设 A 股和 H 股共享同一个全球因子、只是本地噪音不同。真实的 A/H 溢价长期存在且波动巨大,两地对同一家公司的定价差异本身就是一个独立的、比假期缺口大得多的现象。

没有建模开盘流动性。 长假后首日的集合竞价深度、涨跌停触发、以及”所有人都想在开盘调仓”造成的冲击成本,全部没算。这些只会让实际可捕获收益低于 21bp,不会更高。

收尾#

三句话:

跳空是真的,而且可以精确解释。 长假后首日跳空 122bp,是隔夜的 3.4 倍;对休市期间外盘信息回归 t = 5.50;用积压全球因子分解 R² = 0.968,四个对照全部通过。

但 0.968 这个数字本身就是判决书。 能被会计恒等式解释掉 96.8% 的现象,剩下的 3.2% 才是 alpha 候选,而它的标准差只有 9.97bp——比交易成本还小。一个现象越是能被完美解释,它作为交易机会的价值就越低,这两件事是同一枚硬币。

最后,任何依赖”开盘定价不充分”的策略,都应该先问一句这个假设从哪来。 本文的 21bp 可捕获收益,全部来自我随手写下的 PASS_OPEN = 0.62。把它改成 0.95,策略就死了,而 0.95 对于一个全市场都预期到的事件来说,恐怕比 0.62 更接近现实。

陆股通假期缺口:内外盘休市错位带来的跳空风险
https://blog.halo26812.eu.org/blog/stock-connect-holiday-gap
Author halo
Published at 2026年7月31日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨