halo 的技术博客

返回

有一个让很多投资者意外的发现:股票的上涨,主要发生在你睡着的时候。

把一天的收益拆开看,它由两段拼成——「前一天收盘 → 当天开盘」叫隔夜段,「当天开盘 → 当天收盘」叫盘中段。大量实证研究(从 1990 年代的「stocks go up at night」到近年的跨国样本)指出:权益溢价几乎全部来自隔夜段,盘中段长期接近 0、甚至微负。换句话说,你白天盯盘折腾的那段,很多时候是在给隔夜的涨幅「拖后腿」。

本文用一段 30 年、约 7560 个交易日的合成日度数据,把这件事拆得干干净净,并附上真实计算的净值与统计。所有数字和配图都由文末代码生成。

一、用对数收益把一天切成两半#

对数收益的好处是可加性:一天的总收益等于隔夜段加盘中段。

rtotal,t=(logPtopenlogPt1close)+(logPtcloselogPtopen)r_{\text{total},t}=( \log P^{\text{open}}_t-\log P^{\text{close}}_{t-1})+( \log P^{\text{close}}_t-\log P^{\text{open}}_t)

第一项就是隔夜收益(前收 → 今开),第二项是盘中收益(今开 → 今收)。我们分别给两段不同的漂移与波动,复现文献里的 Stylized Fact:

  • 隔夜段:正漂移 μo+0.00030/\mu_o\approx+0.00030/ 日;桥接周末的那段隔夜(周五收盘 → 周一开盘)额外 +0.00150(这就是著名的「周末效应」);波动 σo=0.5%/\sigma_o=0.5\%/ 日。
  • 盘中段:微负漂移 μi0.00003/\mu_i\approx-0.00003/ 日;波动 σi=0.6%/\sigma_i=0.6\%/ 日。
import numpy as np

def simulate(n_days=7560, seed=20260712):
    rng = np.random.default_rng(seed)
    # 连续工作日:第 k 天星期 = k%5 (0=周一 ... 4=周五)
    weekday = np.arange(n_days) % 5
    mu_o = np.full(n_days, 0.00030)
    mu_o[weekday == 0] += 0.00150        # 周末效应:周一隔夜显著更高
    mu_i = np.full(n_days, -0.00003)      # 盘中微负漂移
    r_o = rng.normal(mu_o, 0.005, n_days)   # 隔夜收益
    r_i = rng.normal(mu_i, 0.006, n_days)   # 盘中收益
    return r_o, r_i, r_o + r_i, weekday
python

然后定义三种「持有方式」的净值:只持隔夜(收盘买、开盘卖)、只持盘中(开盘买、收盘卖)、全程买入持有。

二、三类净值:隔夜吃下几乎所有溢价#

把三类净值画在对数轴上(初始都 = 1):

三类净值:隔夜-only / 盘中-only / 买入持有

结果一目了然:隔夜-only 的曲线几乎和买入持有重合,盘中-only 则是一条趴在地上的平线。这不是偶然——因为总收益 = 隔夜 + 盘中,而盘中段长期在 0 附近,所以总溢价基本就是隔夜溢价。

真实统计(30 年、7560 日):

持有方式年化收益年化波动Sharpe最大回撤
隔夜-only15.84%8.02%1.87−9.98%
盘中-only−0.18%9.59%0.03−38.69%
买入持有(全时段)15.62%12.55%1.22−20.45%

注意一个反直觉的点:隔夜-only 的年化收益(15.84%)甚至略高于买入持有(15.62%),因为它避开了盘中那段微负、高波动的拖累;同时它的波动(8.02%)远低于全时段的 12.55%,于是 Sharpe 从 1.22 跳到 1.87,最大回撤从 −20.45% 收窄到 −9.98%。用更低的波动,拿到了几乎相同的收益——这正是隔夜效应的吸引力。

三、分布错位:两段均值的鸿沟#

把每天的隔夜收益和盘中收益各画一张直方图:

隔夜 vs 盘中 日收益分布

隔夜分布整条右移、均值落在 0 之上;盘中分布均值压在 0 之下。两段均值明显错位——你白天看到的价格上蹦下跳,平均下来几乎不创造收益,真正的风险补偿在收盘到开盘那段「你不在场」的时间里发生。

四、隔夜持有策略:同样收益、更低波动#

把「隔夜持有」(收盘买、次日开盘卖,循环)和「买入持有」放在一起,标注关键指标:

隔夜持有 vs 买入持有

隔夜持有用更平滑的净值曲线拿到了和买入持有相当的终值,却把回撤砍掉一半多。代价是它的换手率是「每天一买一卖」——这恰好引出下一节的陷阱。

五、按星期几拆开:周末效应浮出水面#

把隔夜与盘中的平均收益按星期几拆开:

按星期几:隔夜与盘中的平均收益

周一的隔夜柱明显最高——因为它覆盖了从周五收盘到周一开盘的整个周末,额外的正漂移把这根柱顶了起来;而盘中段全周都贴着 0 微负。这就是「周末效应」在拆解视角下的样子。

📌 全样本里,总收益的 98.1% 来自隔夜段。这个数字直观地说明了:权益风险溢价,是「闭市时段」的溢价,不是「交易时段」的溢价。

六、真实陷阱(直接拿来用会吃亏)#

  1. 合成 ≠ 真实行情:本文信号是干净、平稳、无跳空的。真实隔夜段有跳空风险(盘后出利空,开盘直接低开,隔夜多头一朝腰斩);盘中段也不是纯噪声,而是动量与反转的混合,结构比这里复杂得多。
  2. 做空约束让你赚不到盘中段:如果你认同「盘中微负」,理论上该做空盘中——但 A 股 T+1、涨跌停、融券难,盘中做空基本不可行;美股虽可,盘前盘后流动性薄、滑点大。
  3. 交易成本会吞噬隔夜溢价:隔夜-only 是「每天买卖一次」,年换手约 252 次。哪怕每次成本仅 5bps,一年也吃掉约 2.5%——足以把 15.84% 的年化削掉一大块。隔夜策略对成本极度敏感
  4. 盘前盘后流动性薄:隔夜段的价格形成发生在集合竞价与盘前盘后,买卖价差远大于连续交易时段,回测里的「开盘价」在实盘往往拿不到。
  5. 这是美股 Stylized Fact,A 股未必成立:A 股的 T+1、涨跌停、散户结构,会让隔夜/盘中的收益结构明显不同,不能直接套用本文结论。
  6. 幸存者 / 指数偏差:用指数(如 SPX)算出来的「隔夜溢价」掩盖了个股差异;小市值、低流动性股票的隔夜跳空更凶,结论对个股未必友好。
  7. 相关性 ≠ 因果:隔夜溢价背后有信息消化节奏、机构盘前调仓、波动率时序等解释,但「历史上隔夜涨」不等于「明天隔夜必然涨」,regime 切换会让它阶段性失效。

七、结论与用法#

把一天拆成隔夜与盘中后,一个清晰的事实浮现:权益溢价主要发生在闭市时段,盘中交易更多是波动而非收益的来源。在本文 30 年合成样本里,隔夜-only 拿到 15.84% 年化、Sharpe 1.87、回撤仅 −9.98%,而盘中-only 几乎零收益、回撤却高达 −38.69%,总收益的 98.1% 来自隔夜。

但「只做隔夜」不是无脑圣杯——它每天换手、对成本敏感、踩在盘前流动性上、且做空盘中段在 A 股不可行。更务实的用法是:

  • 把它当风险层:在回撤控制里,认识到「盘中波动是净消耗」,可用波动率目标把总波动钉低,间接多持隔夜、少持盘中;
  • 当择时信号:隔夜段强弱本身可做成市场情绪 / 风险偏好的代理变量;
  • 做成本压力测试:任何策略都要先问「我的 alpha 是来自隔夜还是盘中?」来自盘中的 alpha 会被换手成本狠狠惩罚。

记住:隔夜效应揭示的是收益的时间结构,不是一条能直接印钱的指令。看清它在哪段、为什么、以及成本如何反噬,才算真的用明白了。


完整可复现代码(含数据合成、三类净值、四张配图与全部统计)已随本文生成脚本一并运行,所有数字均来自该脚本的真实输出。

隔夜效应与盘中效应:把一天的收益拆成『收盘到开盘』和『开盘到收盘』
https://blog.halo26812.eu.org/blog/overnight-intraday-anomaly
Author halo
Published at 2026年7月12日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨