第一章:回测与自动化执行的核心思想

回测的七大陷阱

① 前视偏差 (Look-ahead Bias)
错误:回测中用了"当天的最高价"来决定"当天"是否买入。但实盘中,你收盘前根本不知道今天最高价是多少。
唯一解法:让回测程序和实盘程序共用同一套代码,只是喂的数据不同(回测喂历史数据,实盘喂实时数据)。这样代码里就不可能用了"未来信息"。
② 数据窥探偏差 (Data-snooping Bias)
本质:参数越多、模型越复杂,就越容易"拟合"过去数据中随机出现的假模式,这些模式未来不会重现。
最简单的解药——线性模型。 Chan 给出一个极端但有效的做法:所有因子的权重相等(而非用优化算法去拟合),直接把各因子归一化成 Z-score,然后等权相加。丹尼尔·卡尼曼在《思考,快与慢》中也说:"给所有预测变量赋相等权重的公式往往更优,因为它们不受采样误差的影响。"
最终验证:没有任何测试比得上拿真金白银小仓位实盘跑(walk-forward test)。实盘夏普率能达到回测的一半,多数人就该偷笑了。
③ 股票拆分与股息调整
问题:1拆2后股价砍半,但你的持股数量翻倍,总市值不变。如果历史价格没做"后向调整"(把拆股前的价格除以2),回测中看到股价"暴跌"就会错误触发买入信号。
实操:不仅回测要调整,实盘时也要在除权日前把历史数据做相应调整。可以用 earnings.com 查询拆分和股息信息。
④ 幸存者偏差 (Survivorship Bias)
最危险的陷阱之一。 如果数据库里只有"活到今天"的股票,你的回测会完美避开所有退市股。一个"买昨天跌最狠的股票"的策略,实盘里大概率买到破产股亏光,但回测中你买的都是"曾经跌惨但后来活下来"的股票,收益完美。
对策略类型的影响:对纯多头均值回归策略伤害最大(收益被虚高);对纯空头策略反而压低回测收益(退市股做空本该大赚但数据里没有);对多空策略有所抵消但仍有虚高。
数据来源:csidata.com、kibot.com、tickdata.com、crsp.com 提供无幸存者偏差的数据。
⑤ 主交易所 vs 合并行情价格
关键区别:你看到的"收盘价"可能是任意一个交易场所(NYSE、纳斯达克、暗池等)最后一笔成交价。但你的市价收盘单(MOC)只会路由到主交易所。IBM 的 MOC 单去 NYSE,SPY 的去 NYSE Arca,微软的去纳斯达克。如果回测用了合并行情数据,一个在暗池上以异常价格成交的小单可能触发你回测中的"下单"——但你在主交易所根本复现不了那个价格。
结论:依赖开盘收盘信号的策略,必须用主交易所的历史价格来回测。
⑥ 期货连续合约的价格缺口
核心问题:期货有到期日,你不能永远持有"同一个合约"。当你从近月合约"展期"到远月合约时,两个价格之间可能有巨大缺口。如果不做后向调整,回测中展期当天会出现假的盈亏。
但调整方式有讲究:
价格后向调整:修正了盈亏计算,但收益率计算会出错,而且调整到很早期价格可能变负数。
收益率后向调整:修正了收益率计算,但盈亏计算会出错。
选哪个?如果你的策略看的是价格差(如价差套利),必须用价格后向调整;如果看的是价格比率,必须用收益率后向调整。
⑦ 做空约束与融券限制
做空不是想空就能空。如果某只股票"难借到"(hard to borrow),你不仅可能要付高昂的融券利息,甚至根本借不到。2008年雷曼兄弟倒闭后,SEC 直接禁止了所有金融股的做空。如果你的回测大举做空金融股获得漂亮收益,这根本无法在实盘中复现。
实操建议:小盘股的做空约束远大于大盘股,其空头回测收益要打很大折扣。

第二章:均值回归与协整策略

判断一个序列是不是均值回归

ADF 检验(Augmented Dickey-Fuller)

它的逻辑直白:如果价格均值回归,那么当前价位就能预测下一步往哪走——高于均值就该往下,低于均值就该往上。把这个想法写成线性模型:

把今天的价格变化 Δy(t),对昨天的价格水平 y(t−1) 做回归,得到系数 λ

  • 如果 λ = 0:下一步变化跟当前价位无关 → 随机游走,不能交易。
  • 如果 λ < 0 且足够负:当前价位越高,下一步越往下压 → 均值回归。

Hurst 指数与方差比检验

这是”平稳性视角”的工具,衡量价格扩散的速度。定义 log 价格在时间间隔 τ 内的方差:

这个 H 就是 Hurst 指数,它像一个”性格指标”:

H < 0.5
均值回归
越接近0越强
H = 0.5
几何随机游走
(无法交易)
H > 0.5
趋势
越接近1越强

判断回归一次要多久

半衰期(Half-life) 告诉你价格回归一半距离需要多长时间。

数学上,忽略漂移和滞后项后,方程 2.1 就变成了随机微积分里的 Ornstein-Uhlenbeck(OU)均值回归过程,可以解析求出价格的期望值随时间指数衰减回到 −μ/λ,衰减的半衰期是:

λ 的三种情况,直接决定要不要做这个序列
λ > 0 根本不回归,别浪费时间写均值回归策略。
λ ≈ 0 半衰期极长,回归太慢,单位时间完成的往返交易太少,不赚钱。
λ 足够负 半衰期短,回归快,适合做。半衰期还直接告诉你该用多长的 look-back。

半衰期最实用的价值:它给策略参数提供了一个”天然时间尺度”。比如半衰期是20天,你就不该用5天的窗口去算移动均线或标准差。作者建议把 look-back 设成半衰期的一个小倍数,往往就接近最优——这样你就不用对窗口参数做暴力优化,避免了过拟合。

协整:自己”制造”均值回归序列

现成的平稳资产很少,但我们不必受限于此——可以把几个本身不平稳的价格序列,按合适的比例组合成一个市值平稳(均值回归)的组合。能这样组合的序列,就叫协整(cointegrating)

最常见的就是两个资产的配对交易(pairs trading):做多一个、做空另一个。但协整可以推广到三个甚至更多资产。

CADF 检验(仅限两个资产)

Engle-Granger 的思路:先用线性回归在两个序列间拟合出最优对冲比率,按这个比率组成组合(残差),再对这个组合序列跑 ADF 检验。

CADF 的大坑:顺序相关。把 EWA 当自变量、还是把 EWC 当自变量,会得到不同的对冲比率(而且不是简单的倒数关系)。很多情况下只有一个顺序能得到真正平稳的组合。所以实操中要两个顺序都试,选 t 统计量最负(最显著)的那个。

Johansen 检验(任意数量资产,顺序无关)

要处理三个以上资产,就要用 Johansen 检验。它把方程 2.1 推广成矩阵形式(价格变成向量 Y,系数 λ 变成矩阵 Λ),然后通过对 Λ 做特征向量分解,求出一个叫”秩 r”的数:

秩 r = 能形成的独立平稳组合的个数。n 个序列里:r=0 表示完全没有协整关系;r 越大,可独立构造的均值回归组合越多。Johansen 用 Trace 统计量Eigen 统计量两种方式逐级检验 r≤0, r≤1, … 能否被拒绝。

Johansen 相比 CADF 的两个关键优势:

① 顺序无关
跑一次就给出所有独立协整关系,不用像 CADF 那样换着顺序试。EWA-EWC 跑出来 r=2,正对应 CADF 里换顺序得到的两个不同对冲比率。
② 直接给出对冲比率
分解出的特征向量就是各资产的权重(份额)。特征值最大的那个特征向量,对应最强、半衰期最短的协整关系,优先选它建组合。

第三章:实施均值回归策略

均值回归(Mean Reversion)的物理学隐喻就像拉伸的弹簧:当价格偏离其历史均值过远时,它倾向于向均值产生一股拉力(回归)。在量化实操中,我们通常寻找具有平稳性(Stationary)或协整性(Cointegrated)的资产组合(如经典的配对交易),将其价格合成一条围绕固定均值上下波动的平稳曲线。

配对交易的信号选择:价差、对数价差与比例

构建配对交易(Pair Trading)最核心的一步是如何合成“交易信号”。文献中对比了三种最经典的方法:

价格价差 (Price Spread)

y = y1 - h * y2

对冲比例 h 的含义:持有的股票数量(股数)比例。
实操特点:最简单直接。只需在建仓时按比例买入/卖出对应股数,持仓期间无需频繁调整。

对数价差 (Log Price Spread)

log(q) = h1*log(y1) + h2*log(y2)

对冲比例 h 的含义:分配的资金权重(百分比)
实操特点:在价格波动巨大时更科学。但由于价格变化会导致资金权重偏离,需要频繁每日调仓(Rebalancing),交易成本较高。

价格比例 (Price Ratio)

Ratio = y1 / y2

对冲比例 h 的含义:非协整情况下的替代方案。
实操特点:适合不具备长期协整关系但短期回归的配对。当两只股票价格成倍增长(如 10:5 涨到 100:50),比例仍为 2,避免了绝对价差失效。外汇交易(Cross Rates)天然使用此模式。


布林带策略 (Bollinger Bands)

线性均值回归策略(如按偏离程度线性按比例加仓)在现实中是无法执行的,因为价格有可能在彻底回归前出现无限偏离,导致交易员爆仓。

更务实的方法是使用布林带(Bollinger Bands)。我们将偏离度标准化为 Z-Score(即:(当前价差 - 移动平均价差) / 移动标准差),并设定具体的进出场界限。

布林带(Bollinger Bands)均值回归交易逻辑

上轨 (+entryZscore)
做空价差 (Short)
均值线 (exitZscore = 0)
平仓离场 (Exit)
下轨 (-entryZscore)
做多价差 (Long)

当价格偏移度(Z-Score)突破设定的标准差阈值时进场,回归至均值(Z-Score = 0)时离场。避免了线性策略无限占用资金的问题。


分批建仓与一次性建仓

分批建仓 (Scaling-in)

随着价格偏离均值越来越远,逐步增加持仓权重(例如在 1, 2, 3 倍标准差处分批买入)。
实操现实:如果价格未完全回归到均值,只做小幅微调,频繁分批平仓依然能锁定微小利润;在实操中能有效降低大额订单的市场冲击成本 (Market Impact)。最适合应用于波动率变动的实际市场。

一次性建仓 (All-in)

寻找一个最优的偏离度阈值(如 2 倍标准差),价格一旦触及,直接投入全部预定资金。
学术结论:在假设波动率和反转概率恒定的简易数学模型下,一次性建仓在历史回测中的平均期望收益永远优于分批建仓。

卡尔曼滤波 (Kalman Filter)

传统的滚动窗口对冲比例(如用过去 20 天数据计算 OLS 斜率)存在**“滑窗死穴”**:当窗口最老的一根 K 线被剔除、或者新一根 K 线进来时,计算出的对冲比例容易产生剧烈、非自然的跳跃。

卡尔曼滤波(Kalman Filter) 是一种没有滞后性、无需历史窗口的动态估计算法。它可以被形象地理解为“智能雷达追踪仪”:

🧠 卡尔曼滤波:告别“滑窗死穴”的动态对冲利器

卡尔曼滤波不需要存储历史窗口数据,它采用“预测-更新”的递归机制。

第一步:状态预测 (State Prediction)
基于昨天的对冲比例 $\beta_{t-1}$,预测今天的对冲比例。我们假定它与昨天大致相同,但允许带有微小的过程噪声 $V_w$。
第二步:观测更新 (Measurement Update)
观察今天真实的价格 $y_t$,计算预测误差 $e_t$,并结合卡尔曼增益 (Kalman Gain) 平滑修正对冲比例。

实战增益:卡尔曼滤波在更新对冲比例 $\beta$ 的同时,副产品是直接输出 spread 的动态均值(拦截项)和预测误差标准差 $\sqrt{Q}$。这使得我们无需设定任何滑窗长度,就能天然构建出完美的自适应布林带策略!

第四章:股票与ETF的均值回归

1. 为什么配对交易股票(Stock Pairs)这么难?

配对交易(Pairs Trading)的初衷是寻找两个走势高度相关的资产(例如可口可乐与百事可乐),买入落后者、做空领跑者,赚取两者的价差收敛。但在实际股票市场中,这种方法非常脆弱。

股票配对(Stock Pairs)

痛点:高单体风险
即使同属一个行业(如苹果 vs 经典黑莓),个股的基本面和管理层决策也可能瞬间分化,导致历史上的协整关系在实盘中彻底失效,一去不回头。

ETF 配对(ETF Pairs)

优势:宏观经济绑定
ETF 代表一篮子股票。宏观经济体或整个行业的走势变化缓慢(如澳大利亚 ETF EWA vs 加拿大 ETF EWC),其协整关系更具生命力。

此外,股票配对还面临严重的做空限制(Short-sale Constraints)。如果做空了一只很难借到的股票(Hard-to-borrow),一旦它由于突发利好飙升,出借人会强行召回,逼你在最差的价格“斩仓”买回,导致严重的空头挤压(Short Squeeze)。同时,由于高频交易和暗盘的普及,现在个股盘口显示的“最佳买卖报价”(NBBO)数量极小。如果你直接用市价单进场,会承受巨大的滑点(Slippage)。


2. ETF 三因子套利(Triplets)

既然 ETF 相比个股更稳定,那是否可以高枕无忧?答案是否定的。即使是看似完美的商品与其生产商的配对,也会被隐藏的宏观因素打碎。

这揭示了一个量化研究的重要思想:当一个策略失效时,应该去探寻其背后的经济学因果。提出假设并引入新的解释变量(如能源成本),往往能够将失效的双因子配对升级为成功的三因子(Triplet)套利组合。


3. 日内均值回归:跳空买入模型(Buy-on-Gap)

学术界常说股票长期走势是几何随机游走,但在日内超短线维度,由于投资者的情绪波动,均值回归效应会阶段性变得极其强烈。典型代表就是“跳空买入模型(Buy-on-Gap)”。

该模型的运作逻辑非常直观:在市场开盘时,筛选出开盘价比前一日最低价还要低一个标准差的股票。这些股票往往承受了开盘时的恐慌性抛盘,大概率跌过头了。然而,为了避免买到真正基本面变坏的股票,模型加入了一个关键的动量过滤器:限制股票的开盘价必须高于其 20 日均线

通过这一限制,我们能确保该股票长期趋势依然向上,开盘的暴跌仅仅是临时的流动性踩踏(容易修复),而不是公司基本面暴雷(会继续阴跌)。最后,我们在开盘买入跌幅最大的 10 只,并在收盘时无条件全部平仓。


4. 截面均值回归(Cross-Sectional Mean Reversion)

在均值回归中,除了时间维度,还有空间(截面)维度。

时间序列回归 (Time Series)

核心:单个资产与自己历史的价格进行比较。当价格偏离其历史均值时进行反向操作。

截面回归 (Cross-Sectional)

核心:资产与同时期一篮子资产的平均收益进行比较。跑得太快的被做空,掉队的被做多。

著名的 Khandani & Lo (2007) 线性多空模型 就是截面回归的经典。其数学思想非常纯粹:每天收盘前计算整个标普 500 指数中所有个股的平均收益率。如果个股今天的收益率高于平均收益率,就在开盘分配做空权重;如果低于平均收益率,就分配做多权重。由于每只股票的权重都减去了市场均值,整个组合每天开盘时都保持绝对的美元中性。这种简单到没有任何参数的线性模型,在 2008 年金融海啸中不仅没有亏损,反而取得了 30% 的年化收益。

第五章:外汇与期货的均值回归

实操避坑:报价货币对齐(Quote Currency Alignment)

在进行协整测试(如 Johansen 测试)或计算投资组合收益时,有一个初学者极易忽略的致命陷阱:必须确保所有参与计算的货币对,其“报价货币(Quote Currency)”完全一致

核心避坑 为什么不能直接对 AUD.USD 和 USD.CAD 进行协整?
❌ 错误示范:未对齐

同时交易 AUD/USDUSD/CAD

  • AUD/USD 波动 1 点 = 1 美元价值变化
  • USD/CAD 波动 1 点 = 1 加元价值变化
单位不统一!Johansen 算出的权重将毫无物理意义,回测完全失真。
<div style="flex: 1; background-color: #ffffff; border: 1px solid #f1f5f9; border-radius: 6px; padding: 12px; box-shadow: 0 1px 3px rgba(0,0,0,0.02);">
  <div style="color: #16a34a; font-weight: bold; font-size: 14px; margin-bottom: 6px;">    正确示范:统一报价</div>
  <p style="font-size: 13px; color: #334155; line-height: 1.5; margin: 0 0 8px 0;">交易 <strong>AUD/USD</strong> 与 <strong>CAD/USD</strong></p>
  <ul style="font-size: 12px; color: #475569; padding-left: 16px; margin: 0; line-height: 1.4;">
    <li style="margin-bottom: 4px;">AUD/USD 波动 1 点 = 1 美元价值变化</li>
    <li>CAD/USD 波动 1 点 = 1 <strong>美元</strong>价值变化</li>
  </ul>
  <div style="background-color: rgba(22, 163, 74, 0.05); color: #15803d; font-size: 11px; padding: 6px; border-radius: 4px; margin-top: 8px;">
    单位统一为美元!计算出的对冲比例(Hedge Ratio)代表真实的资金权重。
  </div>
</div>

隔夜展期利息(Rollover Interests / Swap)

外汇交易是买入一种货币同时卖出另一种货币,因此持仓过夜(美东时间下午 5:00 以后)会产生利息差。

  • 若你持有的货币利息高于你卖出的货币,你将获得利息(贷方利息);反之,你需要支付利息(借方利息)。

期货期限结构:现货收益、展期收益与均值回归

期货与现货最大的区别在于:期货有到期日。不同到期日的期货合约价格不同。这种价格与时间的关系被称为期限结构(Term Structure)

期货的整体收益可以拆解为两部分:

展期收益(又称 Roll Yield)是由于期货价格随时间向现货价格收敛而产生的。理解它是进行期货均值回归的核心。

📊 期货期限结构双形态对比
升水 / 期货溢价 (Contango) 常见于 VX / 农产品

远期合约价格 高于 近期合约价格。随着时间流逝,期货合约价格会“下滑”向现货靠拢。

展期收益 (Roll Return): 负值 (Negative)
💡 警示: 即使你长期看好现货价格,做多此类期货也会因为负的展期收益不断“流血”亏损。
<!-- Backwardation Box -->
<div style="flex: 1; background-color: #ffffff; border: 1px solid #e2e8f0; border-radius: 6px; padding: 12px; display: flex; flex-direction: column; justify-content: space-between;">
  <div>
    <div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px;">
      <span style="font-size: 15px; font-weight: bold; color: #16a34a;">贴水 / 现货溢价 (Backwardation)</span>
      <span style="background-color: rgba(22, 163, 74, 0.1); color: #16a34a; padding: 2px 6px; border-radius: 4px; font-size: 11px;">常见于能源紧张期</span>
    </div>
    <p style="font-size: 12px; color: #475569; line-height: 1.5; margin: 0 0 10px 0;">
      远期合约价格 <strong>低于</strong> 近期合约价格。随着时间流逝,期货合约价格会“向上”向现货靠拢。
    </p>
  </div>
  <div>
    <div style="border-left: 3px solid #16a34a; padding-left: 8px; margin-bottom: 8px; font-size: 11px; color: #334155;">
      <strong>展期收益 (Roll Return):</strong> <span style="color: #16a34a; font-weight: bold;">正值 (Positive)</span>
    </div>
    <div style="font-size: 11px; color: #64748b; background-color: #f8fafc; padding: 6px; border-radius: 4px;">
      💡 <strong>盈利点:</strong> 做多此类合约,即使现货价格一动不动,你也能赚取合约价格向上收敛的利润。
    </div>
  </div>
</div>

期货日历价差交易(Calendar Spread)

既然单边交易期货会受到展期收益的干扰,我们可以利用日历价差来实现均值回归:同时做多一个远期合约,做空一个近期合约(反之亦然)。

虽然两边交易的是同一种商品,但因为它们到期时间不同,它们对展期收益(记为 )的敏感度也不同。我们可以通过量化模型来估计这个 其中 是期货价, 是现货价, 是距离到期的时间。

在实操中,我们可以对 的历史数值进行 ADF 检验。以原油(CL)为例,其12个月日历价差的 展现出强烈的平稳性,半衰期约为36天。

期货跨品种价差(Intermarket Spreads)

跨品种价差寻找的是两个不同但高度相关商品的期货之间的均值回归。

第六章:日内动量策略

二、 动量策略的分类与成因

在量化领域,动量并不是玄学,它有着严谨的学术分类和四大物理成因。

1. 动量的两大分类

  • 时间序列动量(Time Series Momentum / 绝对动量):只跟自己的过去比。如果某只股票过去 12 个月是涨的,那么预测它未来 1 个月还会涨。
  • 横截面动量(Cross-Sectional Momentum / 相对动量):在一群资产里“选美”。比如标普 500 指数里,买入过去一年涨幅前 10% 的强势股,做空跌幅前 10% 的弱势股。
📊 动量类型与四大成因全景图
📌 动量两大类型
1. 时间序列(TS): 单一资产“自我惯性”(趋势跟踪)。
2. 横截面(CS): 资产群体“强者恒强”(多空强弱配对)。
<!-- 右侧:成因 -->
<div style="flex: 1; min-width: 250px; background-color: #ffffff; border: 1px solid #f1f5f9; border-radius: 8px; padding: 15px; box-shadow: 0 1px 3px rgba(0,0,0,0.02);">
  <div style="font-size: 14px; font-weight: 600; color: #16a34a; margin-bottom: 10px;">💡 动量的四大物理成因</div>
  <div style="font-size: 13px; color: #334155; line-height: 1.5;">
    🔍 <strong style="color: #0f172a;">展期收益持续性:</strong> 期货特有的升贴水惯性。<br>
    📢 <strong style="color: #0f172a;">信息渐进扩散:</strong> 市场对新消息反应慢半拍。<br>
    🔥 <strong style="color: #0f172a;">基金被迫买卖:</strong> 基民申赎引发的“火线抛售”。<br>
    🤖 <strong style="color: #0f172a;">高频交易操纵:</strong> 算法推波助澜造成的短期趋势。
  </div>
</div>

三、 如何测试时间序列动量(谨防重叠数据陷阱)

要想开发一个动量策略,首先要验证数据中是否存在“过去收益与未来收益的正相关性”。作者提到,我们需要计算相关系数(Correlation Coefficient)及其显著性检验(p-value)

1. 寻找最佳时间窗口

我们需要寻找两个参数:

  • 回溯期(Look-back Period):看过去多久的行情(如 250 天)。
  • 持有期(Holding Period):买入后持有多久(如 25 天)。

2. 实操核心警示:重叠数据陷阱(Overlapping Data Trap)

这是量化新手最容易犯的错误。假设你每天都计算“过去 250 天的收益率”和“未来 25 天的收益率”,相邻两天的两组数据之间有 99% 的数据是重复的。这会导致样本之间不独立,计算出来的相关系数会严重失真,产生“虚假繁荣”。

解决方案: 必须使用**非重叠(Non-overlapping)**的数据点。

  • 如果 回溯期 持有期(如回溯 60 天,持有 10 天),下一次取样必须向后移动 回溯期(60天)
  • 如果 回溯期 持有期(如回溯 10 天,持有 60 天),下一次取样必须向后移动 持有期(60天)
📍 非重叠数据取样示意(以 回溯期 > 持有期 为例)
数据对 1:
回溯期 (例如 60 天)
持有期 (10天)
数据对 2:
回溯期 (向后平移 60 天)
持有期 (10天)
*注:若使用重叠数据计算相关性,极易带来过拟合与虚假的显著性检验。

四、 提取商品期货的展期收益(Roll Return Arbitrage)

这是文中非常高级且实用的一个交易逻辑。

1. 什么是展期收益?

期货价格由“现货价格(Spot)”和“持有成本(如仓储、利息等)”决定。随着合约临近到期,期货价格必须向现货价格收敛。

  • 现货溢价(Backwardation / 贴水):期货价 现货价。随着时间推移,期货价格会逐渐上涨收敛于现货。此时,展期收益为
  • 期货溢价(Contango / 升水):期货价 现货价。随着时间推移,期货价格会逐渐下跌收敛于现货。此时,展期收益为

由于商品市场的供求关系(如原油库存)在一段时间内是稳定的,升贴水的状态(即展期收益的正负号)具有极强的惯性。这就是期货动量的最主要来源。

2. 套利实操:期货 vs ETF

如果我们不想承受商品现货价格波动的风险,只想安稳地赚取这个“展期收益”,该怎么做?

⚠️ 实操避坑指南(Caveats):

  1. 实物持有成本(Financing Cost):作者提到,你想通过买入黄金 ETF(GLD)同时做空黄金期货(GC)来套利。虽然理论上能稳赚 1.9% 的展期收益,但持有 GLD 存在资金占用利息和管理费,会直接将这笔收益蚕食殆尽
  2. 寻找无实物存储负担的代理(Proxies):由于石油有巨大的仓储成本,无法直接买现货,所以业界常用股票型 ETF(如能源板块 ETF:XLE)作为现货的近似代理,与石油期货(或 USO)进行套利。

五、 横截面动量的催化剂:新闻舆情与基金踩踏

在股票市场中,没有期货那样的展期收益,动量又是怎么来的?文中提到了两个非常现代化的量化因子。

1. 新闻舆情因子(News Sentiment Score)

由于人类分析、接受新信息是需要时间的(即信息渐进扩散),一大利好消息公布后,股价往往不会一步涨到位,而是会像波浪一样持续上涨几天甚至几周。

  • 量化实现:利用自然语言处理(NLP)技术,给新闻媒体报道、财报文本等进行实时打分(积极/消极),买入舆情分数骤增的股票,做空负面舆情缠身的股票。

2. 基金被迫买卖(Mutual Fund Fire Sale)

当散户大量赎回某只共同基金时,基金经理手里没有现金,被迫在市场上斩仓卖出其持有的股票。这种由于流动性危机造成的“火线抛售”(Fire Sale),会对相关股票造成巨大的非理性下跌压力,进而形成向下的动量。

  • 量化套利(Front-running):通过预测基金的赎回流向,我们可以在他们不得不被迫抛售之前,提前做空这些股票(跑在机构前面),从而获利。

第七章:日内动量策略

二、 策略一:开盘缺口策略(Opening Gap Strategy)

1. 原理与逻辑

当市场在休市期间积累了大量未消化的新闻或情绪时,开盘价会与前一日收盘价产生巨大的“跳空缺口(Gap)”。

  • 均值回归策略(常用于股票)认为跳空是情绪过热,开盘后应“反向”做空或做多以等待缺口弥补。
  • 动量缺口策略(更适用于期货和外汇)则认为,巨大的跳空一旦突破了前一日的最高/最低价,就会触发大量在该价格区间上方或下方布置的止损单(Stop Orders)。这些止损单(多头止损平仓变成主动卖单,空头止损平仓变成主动买单)被强行触发后,会像多米诺骨牌一样,把价格推向更极端的方向,形成日内强趋势。

多米诺骨牌效应(Stop-loss Cascading)

1. 隔夜利好催化
开盘大幅向上跳空
2. 突破前日高点
触发空头止损买单
3. 价格加速推高
动量追随者买入入场
4. 日内收盘平仓
锁定日内趋势利润

2. 规则设计与数学表达

该策略不主观预测,而是通过量化指标来衡量缺口的“不寻常度”。

  • 波动率基准:计算过去 90 天收盘到收盘回报率的移动标准差()。
  • 买入信号:若今日开盘价 ,做多。
  • 卖出信号:若今日开盘价 ,做空。
  • 平仓规则:持有至当天收盘(Close)强行平仓。

3. 实操注意与 ⚠️ Caveat

  • 品种选择极其重要:该策略在外汇(如 GBPUSD)和股指期货(如欧洲 STOXX 50 期货 FSTX)上表现优异,但在普通个股上容易失效(个股常呈现均值回归特性)。
  • 定义外汇的“开收盘”:外汇是 24 小时交易,没有天然的开收盘。作者建议人为定义:将美东时间下午 5:00 定为“收盘”,美东时间上午 5:00(伦敦开盘)定为“开盘”,利用这段时间的跳空来捕捉伦敦和纽约重合时段的强劲趋势。

三、 策略二:盈余公告漂移策略(PEAD)

1. 原理与逻辑

盈余公告后漂移(Post-Earnings Announcement Drift, PEAD) 是金融学术界最著名的异常现象之一。当公司发布财报时,即便财报大超预期,股价也不会在开盘一瞬间涨到合理估值,而是会在接下来的数天甚至数周内像波浪一样持续向该方向“漂移”。这是因为市场参与者对新信息的消化存在“反应不足(Under-reaction)”。

书中提出的日内 PEAD 策略非常优雅,它不试图去解读财报好坏,而是让市场用资金投票:

  1. 寻找事件:筛选在昨天收盘后(AMC)或今天开盘前(BMO)发布财报的股票。
  2. 观察反应:计算该股今天的开盘价相对于昨天收盘价的跳空幅度。
  3. 入场与出场:如果跳空高开幅度显著,说明市场认为财报超预期,开盘立即做多;如果大幅低开,则做空。日内收盘时必须平仓

2. 量化阈值

利用股票过去 90 天“前日收盘到今日开盘(Close-to-Open)”回报率的标准差作为惊喜阀值。

  • ,开盘做多。
  • ,开盘做空。

3. 实操注意与 ⚠️ Caveat

  • 漂移周期的缩短:历史上 PEAD 效应可以持续数周。但在如今高频与量化资金挤压下,超额收益已被极大地压缩,目前该效应几乎只能维持在开盘后的几个小时内(即日内),隔夜持仓往往会带来负回报。
  • 幸存者偏差与时间对齐:必须极其精确地筛选发布财报的时间,剔除那些在交易时间内公布财报的股票,确保你的交易信号在开盘时已经沉淀完毕。

四、 策略三:杠杆 ETF 调仓动量策略(Leveraged ETF Strategy)

这是本书中最精妙、最具套利逻辑的日内动量策略。

1. 原理与逻辑

杠杆 ETF(如 3 倍看多房地产 DRN,或 3 倍看多纳指 TQQQ)为了维持每日恒定的杠杆倍数(例如 3 倍),必须在每天临近收盘时进行调仓。这种“为了维持杠杆而被迫进行的交易”会产生一种顺势而为的自我实现效应

数学演示(为什么上涨会迫使杠杆 ETF 在尾盘买入?)

设一个 2 倍杠杆 ETF 的初始状态:

  • 净资产(Equity) = $100
  • 持有资产总名义价值(Asset) = $200 (杠杆率 = 2.0x)
  • 负债(Debt) = $100

假设今天市场大涨 10%:

  • 资产价值 变为 200 \times (1 + 10\%) = \220$
  • 负债 保持 $100 不变
  • 最新净资产 = 100 = $120
  • 当前的实际杠杆率 = 资产 / 净资产 = 120 = 1.83x (低于法定的 2 倍!)

为了在收盘前将杠杆拉回 2.0x

  • 目标资产总额 应为 净资产 120 \times 2 = \240$
  • 必须买入的资产数额 = 目标资产 220 = $20

杠杆 ETF 每日调仓的正反馈环

市场日内上涨 ➔ 杠杆 ETF 实际杠杆率被动降低 ➔ 基金经理必须在尾盘大举买入底层股票以推高杠杆 ➔ 尾盘买盘进一步推高市场价格(动量延续)。

相反,若日内大跌,杠杆 ETF 会被迫在尾盘大举砸盘卖出,导致跌幅进一步加深。

2. 交易规则

利用这一确定性极高的被迫买卖行为:

  • 做多:如果市场从前一日收盘到收盘前 15 分钟累计涨幅 ,买入对应的 3 倍杠杆 ETF。
  • 做空:如果跌幅 ,做空对应的 3 倍杠杆 ETF。
  • 平仓:在临近收盘(最后 1~2 分钟)或收盘时平仓。

3. 实操注意与 ⚠️ Caveat

  • 市场容量(AUM)依赖性:该策略的盈利能力高度取决于当前市场上杠杆 ETF 的资产管理总规模(AUM)。当杠杆 ETF 的 AUM 极高时,其尾盘调仓对市场的冲击力(Impact)最大,产生的收盘动量也最强;若 AUM 萎缩,该效应会减弱。

五、 策略四:高频微观结构与订单簿动量

在微秒和毫秒级别,动量由限价订单簿(Limit Order Book)的微观不平衡和交易者的心理博弈驱动。

高频战术名称核心运作机制(How it works)主要的实操陷阱(⚠️ Caveat)
比例交易
(Ratio Trade)
在订单簿中,当买盘一档(Bid Size)远大于卖盘一档(Ask Size)时,立即“加入买盘排队”。成交后,由于大买盘支撑,价格大概率向上跳动一档(Tick),随后在卖盘一档获利平仓。仅适用于订单分配采用按比例分配(Pro-rata)而非时间优先(FIFO)的市商制市场(如欧洲美元期货)。
排队套利/跳价
(Ticking)
当买卖价差(Spread)大于 2 个 Tick 时,在“最佳买价 + 1 Tick”的位置抢先挂单,成交后立刻在“最佳卖价 - 1 Tick”挂单卖出,赚取微小差价。可能遭遇“钓鱼诱骗”。原本挂大单的交易员可能瞬间撤单,将你套牢在高位。
动量点火
(Flipping / Ignition)
在买盘挂出极大的虚假买单制造“买压滚滚”的假象,同时挂出小额卖单。散户由于害怕错失机会抢购卖单,完成你的小额出货。出货后,你瞬间撤销大额买单,并在低位重新接回。监管红线!这属于“幌骗(Spoofing)”,在许多国家属于非法操纵市场行为。另外,你的虚假买单可能随时被别人一笔砸穿强行成交。
扫损猎杀
(Stop Hunting)
市场在关键整数关口或公认的阻力位/支撑位附近集聚了海量止损单。高频多头利用资金优势在临近位置故意推一把,击穿该价位,引发止损盘雪崩式涌出,顺势赚取波段暴利。需要极高的订单流敏锐度,否则容易在支撑位假突破(Spring)时被市场反噬。

关键概念:订单流(Order Flow)

在高频动量领域,真正的“圣杯”是订单流(Order Flow)

  • 定义:订单流指带有方向性质的成交量。
  • 算法:如果一笔交易是在**卖一价(Ask)成交的,说明买方是主动的(市场单),订单流记为正(+);如果在买一价(Bid)**成交,说明卖方是主动的,订单流记为负(-)。
  • 用法:大型知情交易者(Informed Traders,如掌握内幕或极致研究的对冲基金)在获得消息后具有极强的紧迫感,他们会使用**市价单(Market Orders)**直接吞噬盘口。因此,订单流在极短时间内持续呈现正值,是价格即将向上发生突破的最强前瞻指标。

第八章:风险管理

最佳杠杆与凯利公式 (Kelly Formula)

在零杠杆下,交易者不承担任何风险,但也无法获得任何收益;而如果杠杆过高,一旦遭遇不利波动,资金可能瞬间归零(-100% 回撤)。在这两个极端之间,存在一个能让长期复合增长率最大化的最佳杠杆

在超额收益呈高斯分布(正态分布)的理论假设下,经典的**凯利公式(Kelly Formula)**给出了单策略最优杠杆率 的优雅解: 其中 是超额收益均值, 是超额收益的方差。

凯利公式与杠杆选择区间 (Kelly Curve)

0 杠杆 半凯利 (实操安全区) 全凯利 (理论最优) 毁灭区 (杠杆过高)
<!-- Description Grid -->
<div style="display: flex; gap: 10px; flex-wrap: wrap;">
  <div style="flex: 1; min-width: 140px; background: rgba(59, 130, 246, 0.05); padding: 8px; border-radius: 4px; border: 1px solid #bfdbfe;">
    <strong style="color: #2563eb;">① 全凯利杠杆 ($f^*$)</strong>
    <p style="margin: 4px 0 0 0; font-size: 12px; color: #475569;">理论上能实现资金最大化的复合增速。但它对均值和波动的估算误差极其敏感。一旦高估均值,最终极易导致爆仓(资金归零)。</p>
  </div>
  <div style="flex: 1; min-width: 140px; background: rgba(34, 197, 94, 0.05); padding: 8px; border-radius: 4px; border: 1px solid #bbf7d0;">
    <strong style="color: #16a34a;">② 半凯利杠杆 (Half-Kelly)</strong>
    <p style="margin: 4px 0 0 0; font-size: 12px; color: #475569;">实操中最稳健的选择(即使用全凯利的一半)。它仅牺牲了少部分复合增长率,但大幅降低了回撤,且对参数估算误差容忍度极高。</p>
  </div>
</div>

实操注意点与 Monte Carlo 优化

现实中的资产收益分布通常呈现“肥尾、偏度”等非高斯特征。为了寻找更实际的最佳杠杆,我们可以使用蒙特卡洛(Monte Carlo)模拟:通过**皮尔逊系统(Pearson System)**拟合历史收益率的前四阶矩(均值、标准差、偏度、峰度)来生成大量模拟序列,然后利用数值优化寻找最优杠杆,这比死套公式要安全得多。

% 蒙特卡洛模拟优化杠杆率 (MATLAB 示例)
% ret 为历史日收益率向量
 
% 1. 提取前四阶矩,并使用皮尔逊系统生成 100,000 个模拟收益率
moments = {mean(ret), std(ret), skewness(ret), kurtosis(ret)};
[ret_sim, type] = pearsrnd(moments{:}, 100000, 1);
 
% 2. 定义复合增长率的计算函数(最大化复合增长率等价于最大化对数收益均值)
g = @(f, R) sum(log(1 + f * R)) / length(R);
 
% 3. 数值寻找使负增长率最小(即增长率最大)的最优杠杆 f
minusGsim = @(f) -g(f, ret_sim);
optimalF = fminbnd(minusGsim, 0, 24); % 在 0 到 24 之间寻找最优杠杆

恒定杠杆的“反直觉”操作与量化踩踏

无论是使用凯利公式还是数值优化,其核心前提都是必须在交易过程中维持恒定的杠杆率。这一机制看似平淡无奇,但实际操作起来却极其反直觉:

当策略亏损时,你的净资产减少了,为了维持恒定杠杆,你必须主动在低位卖出资产(割肉);而当策略盈利时,你必须主动加仓。

恒定杠杆动态调整演示(以 5 倍杠杆为例)

👉 初始状态
• 净资产 (Equity): $100K
• 目标杠杆: 5倍
• 持仓市值: $500K
<!-- Step 2 -->
<div style="flex: 1; min-width: 200px; background-color: #fef2f2; border: 1px solid #fee2e2; border-radius: 6px; padding: 12px; box-shadow: 0 1px 3px rgba(0,0,0,0.05);">
  <div style="font-weight: bold; color: #dc2626; font-size: 14px; margin-bottom: 6px;">📉 亏损发生 (亏损 $10K)</div>
  <div style="font-size: 13px; color: #334155; line-height: 1.5;">
    • 剩余净资产: <span style="font-weight: 600; color: #0f172a;">$90K</span><br>
    • 此时持仓市值: <span style="font-weight: 600; color: #dc2626;">$490K</span> (杠杆飙升至 5.44倍)<br>
    • 5倍标的目标市值: <span style="font-weight: 600; color: #0f172a;">$450K</span><br>
    <div style="margin-top: 4px; padding: 4px; background-color: rgba(220, 38, 38, 0.08); border-radius: 4px; color: #b91c1c; font-weight: 600; font-size: 11px;">⚠️ 必须强制卖出 $40K 资产!</div>
  </div>
</div>

<!-- Step 3 -->
<div style="flex: 1; min-width: 200px; background-color: #f0fdf4; border: 1px solid #dcfce7; border-radius: 6px; padding: 12px; box-shadow: 0 1px 3px rgba(0,0,0,0.05);">
  <div style="font-weight: bold; color: #16a34a; font-size: 14px; margin-bottom: 6px;">📈 盈利发生 (次日赚 $20K)</div>
  <div style="font-size: 13px; color: #334155; line-height: 1.5;">
    • 新净资产 ($90K+$20K): <span style="font-weight: 600; color: #0f172a;">$110K</span><br>
    • 此时持仓市值: <span style="font-weight: 600; color: #16a34a;">$470K</span> (杠杆降至 4.27倍)<br>
    • 5倍标的目标市值: <span style="font-weight: 600; color: #0f172a;">$550K</span><br>
    <div style="margin-top: 4px; padding: 4px; background-color: rgba(22, 163, 74, 0.08); border-radius: 4px; color: #15803d; font-weight: 600; font-size: 11px;">🚀 必须强制加仓 $80K 资产!</div>
  </div>
</div>

量化踩踏(Contagion Risk): 这种“亏损就得被迫卖出”的机制,是引发量化踩踏和流动性危机的主要诱因。如果许多量化基金持有相似的投资组合,一旦某家基金由于其他不相关策略而受损,它就会在所有资产中被迫平仓。这会引发大跌,导致其他持有相同标的的基金也发生亏损,进而被迫清仓,形成恶性循环。这种自保性的“风险管理”,最终演变成了全行业的毁灭性踩踏。

最大杠杆约束下的配置陷阱

多策略配置时,若券商给出了极低的最大杠杆约束 (其远低于各策略的凯利杠杆之和),直接按比例等量缩减所有策略的杠杆是不划算的

最大杠杆约束下的配置对比 (限制最大杠杆 = 2)

❌ 传统做法:按比例等缩 (Suboptimal)
• 策略 1 杠杆: 从 4.4 ➔ 0.95
• 策略 2 杠杆: 从 4.9 ➔ 1.05
• 最终复合增长率 $g$: 0.82
⚠ 弊端:两个策略的杠杆都被压得极低,无法发挥各自的复利效能。
<!-- Method B -->
<div style="flex: 1; min-width: 200px; background: #dcfce7; border: 1px solid #bbf7d0; border-radius: 6px; padding: 12px;">
  <div style="font-weight: bold; color: #16a34a; font-size: 13px; margin-bottom: 6px;">✅ 最优做法:聚焦最强策略 (Optimal Growth)</div>
  <div style="color: #14532d; line-height: 1.5;">
    • 策略 1 杠杆: 直接砍到 <span style="font-weight: 600;">0</span> (不投)<br>
    • 策略 2 杠杆: 满额拉满到 <span style="font-weight: 600;">2.00</span><br>
    • 最终复合增长率 $g$: <span style="font-size: 14px; font-weight: bold; color: #15803d;">0.96</span><br>
    <span style="font-size: 11px; color: #166534; display: block; margin-top: 4px;">🚀 秘诀:当外部约束极紧时,将全部额度集中投资在最优策略上反而能获得最大回报。</span>
  </div>
</div>

限制最大回撤:CPPI 账户隔离机制

当面临“账户最大回撤不能超过 ”的强约束时,最优雅的解决方案是恒定比例投资组合保险(CPPI)

CPPI 机制运作流程 (最大限制回撤 = $D$)

总账户资金 (100%)
最高只允许承受 $D$ 亏损
🔴 交易子账户 (占比 $D$)

在这个子账户中,运行理论计算的满额凯利杠杆 $f$。一旦亏损殆尽,立刻停止交易。

🟢 现金保险库 (占比 $1-D$)

纯现金闲置,锁死不参与交易,绝对不用于补贴亏损中的交易子账户。

<!-- Rule card -->
<div style="background-color: rgba(234, 88, 12, 0.05); border: 1px solid #fed7aa; padding: 10px; border-radius: 6px; font-size: 12px; color: #ea580c; line-height: 1.4;">
  <strong>⚙️ 动态重置机制:</strong><br>
  • <strong>盈利时:</strong> 当总净值创历史新高时,把赚到的部分按比例提款到“现金库”,锁定利润。<br>
  • <strong>亏损时:</strong> 两个账户绝对隔离,任由交易子账户缩水,不捞人,直到把交易仓位自动缩减至极小。
</div>

实操 Caveat: CPPI 和普通止损一样,无法防范隔夜跳空(Gaps)和停牌风险。如果标的在非交易时间发生灾难性暴跌,开盘后交易子账户的亏损可能瞬间穿仓,吞噬掉现金保险库的额度。对此,可以通过购买虚值期权(Out-of-the-money Options)来进行尾部风险对冲。


止损的艺术:均值回归 vs 趋势跟踪

止损的使用在不同类型的交易策略中有着完全相反的内在逻辑。

两种核心策略的止损逻辑对比

📈 趋势动量策略 (Momentum)
  • 逻辑契合: 核心法则是“追涨杀跌”。如果多头持仓发生亏损,说明原有的上升趋势可能已经反转。
  • 直接执行: 触发止损即代表交易假设被推翻,应该立刻斩仓甚至反向做空。
<!-- Mean Reversion -->
<div style="flex: 1; min-width: 220px; background: #ffffff; border: 1px solid #e2e8f0; border-radius: 6px; padding: 12px;">
  <div style="font-weight: bold; color: #d97706; font-size: 14px; margin-bottom: 8px; border-bottom: 1px solid #f1f5f9; padding-bottom: 4px;">📉 均值回归策略 (Mean Reversion)</div>
  <ul style="margin: 0; padding-left: 18px; font-size: 12px; color: #334155; line-height: 1.6;">
    <li><strong>逻辑冲突:</strong> 回归的假设是“价格偏离后终会拉回”。越下跌越应当买入,强行止损往往会导致“割肉在最底部”。</li>
    <li><strong>实操妥协:</strong> 如果直接在回测中加止损,策略表现(Sharpe、APR)几乎百分之百会变差。</li>
  </ul>
</div>

实操金律:应对机制转换 (Regime Change)

虽然在历史回测中,“均值回归”加入止损会拉低绩效,但实操中不能不设止损。因为现实中会发生“机制转换(Regime Change)”——原本均值回归的资产突然在黑天鹅事件中演变成了不可逆转的单边趋势。

折中方案: 在实操中,应当把均值回归策略的止损线设在稍大于历史回测的最大日内回撤(Max Intraday Drawdown)的位置。这样在常态化交易中永远不会触发止损(保留了历史阿尔法),但一旦遭遇黑天鹅导致的单边趋势,它能在最后关头强制清仓,挽救整个账户。


领先风险指标 (Leading Risk Indicators)

前置性风险指标旨在提前预测未来的高风险时段,实现主动性避险(暂停交易或缩减仓位),而不仅仅是等亏损发生了再被动清仓。

  • VIX 指数: 市场隐含波动率。但注意,高 VIX 并不对所有策略都是坏事(有些策略如 Buy-on-Gap 在高波动下表现更好,但像 Eurex 缺口策略在高 VIX 下会严重亏损)。
  • TED 利差(TED Spread): 3个月 LIBOR 与 3个月国债利率的差额,用于衡量银行违约和信贷市场的紧张度,相比散户主导的股市,具有更强的专业预测性。
  • 高风险代理资产: 高收益债 ETF(如 HYG)、新兴市场货币(如墨西哥比索 MXN)、或者反映风险情绪的特殊 ETF(如 ONN、OFF)。
  • 高频订单流(Order Flow): 在极短的时间尺度下,大笔负向订单流的涌入可以作为风险在价格大跌前蔓延的超短期领先指标。

实操 Caveat: 由于历史上的金融恐慌或信用危机相对罕见,导致可用样本过少。在测试和寻找各种“领先避险指标”时,极其容易陷入**数据过拟合(Data-Snooping Bias)**的陷阱。切忌把历史偶合的避险指标当作放之四海而皆准的真理。