返回金融系统设计
高频与风险科学 · 章节

02 - 统计套利与量化策略

06-hft-risk-science/02-statistical-arbitrage.md

02 - 统计套利与量化策略

定位:给有10年金融经验的架构师/PM讲清楚量化策略的科学基础 目标:理解时间序列分析、配对交易、因子模型、回测科学 前提:你知道什么是收益率、标准差、相关系数,但不需要会测度论


一、核心概念与直觉

1.1 什么是统计套利?

无风险套利:同一个东西在两个地方价格不同 → 低买高卖 → 确定赚钱。 例:A交易所BTC=60000,B交易所BTC=60100 → 在A买在B卖 → 赚100。

统计套利:两个相似的东西价格偏离了历史关系 → 赌它们会回归 → 大概率赚钱。 例:可口可乐和百事可乐股价通常同步。如果可口可乐涨了3%而百事没动 → 做空可口可乐做多百事 → 等价差回归。

关键区别:

无风险套利:100%赚钱(理论上),但机会极少且瞬间消失
统计套利:有概率亏钱,但长期大数定律站在你这边
         → 本质是一个"正期望值"的赌局,重复玩足够多次

1.2 Alpha 与 Beta

你的投资收益 = Beta收益 + Alpha收益 + 噪声

  Beta收益:
    跟着市场涨跌获得的收益
    大盘涨10%,你的组合涨12%,其中10%是Beta
    任何人都能获得(买指数基金就行)
    不值钱

  Alpha收益:
    超越市场的部分
    大盘涨10%,你涨12%,其中2%是Alpha
    极难获得且不可持续(EMH的诅咒)
    非常值钱

量化策略的核心目标:寻找可重复的Alpha

为什么Alpha很难找到?

  • 金融市场的信噪比极低(远低于图像识别、NLP等领域)
  • Alpha一旦被发现就会被套利者竞争消灭
  • 交易成本会吃掉微小的Alpha
  • 过拟合让你以为找到了Alpha实际上没有

1.3 量化策略的本质

量化策略 = 统计信号 + 执行系统 + 风控系统

  统计信号:发现价格中可预测的模式
    → 这是"科学"部分

  执行系统:把信号转化为实际交易
    → 这是"工程"部分

  风控系统:控制亏损在可承受范围内
    → 这是"活下来"的部分

三者缺一不可。信号再好,执行有bug也白搭。
信号和执行都好,没有风控迟早爆仓。

二、时间序列分析基础

2.1 平稳性(Stationarity)

为什么重要?

一个非平稳的时间序列,它的统计特性(均值、方差)会随时间变化。在这样的序列上做预测就像用GPS导航——如果起点在移动,你计算的路线没有意义。

平稳序列:均值和方差不随时间变化
  → 温度在0度附近波动:-2, 1, -1, 3, 0, -3, 2, 1
  → 你可以说"平均温度是0度",这个说法有意义

非平稳序列:均值随时间变化(趋势)
  → 股价:100, 102, 105, 103, 108, 112, 115, 120
  → "平均价格是108"这个说法没什么用
  → 因为明天的价格取决于今天的价格,不是平均价格

直觉类比

  • 平稳序列 = 弹簧上的球:偏离中心后会被拉回来
  • 非平稳序列 = 河上的纸船:随水流走,不会回到起点
  • 差分后的平稳序列 = 纸船的速度:虽然位置在变,但速度在某个范围波动

ADF检验(Augmented Dickey-Fuller)

目的:检验序列是否平稳(是否有单位根)

零假设 H0:序列有单位根 → 非平稳
备择假设 H1:序列没有单位根 → 平稳

做法:
  1. 对序列做回归:ΔY(t) = α + β·Y(t-1) + 滞后项 + ε
  2. 检验 β 是否显著为负
  3. 如果 β 显著为负 → 拒绝H0 → 序列平稳

p-value 解读:
  p < 0.01  → 强烈拒绝H0,序列很可能平稳
  p < 0.05  → 拒绝H0,序列可能平稳
  p > 0.05  → 不能拒绝H0,序列可能非平稳

实际应用:
  股价 → ADF检验 p=0.89 → 非平稳(符合直觉)
  股价收益率 → ADF检验 p=0.001 → 平稳(收益率围绕0波动)
  配对交易的价差 → 需要检验是否平稳 → 平稳才能做均值回复策略

2.2 自相关与偏自相关

自相关函数(ACF):当前值与过去第k期的相关性

ACF图示例:
  相关系数
  1.0 |█
  0.8 |█ █
  0.6 |█ █ █
  0.4 |█ █ █ █
  0.2 |█ █ █ █ █
  0.0 |──█──█──█──█──█──── (虚线=置信区间)
 -0.2 |
      └─────────────────→ 滞后期(k)
       0  1  2  3  4  5

  ACF慢慢衰减 → 可能是AR过程
  ACF突然截断 → 可能是MA过程

偏自相关函数(PACF):去掉中间期影响后,当前值与第k期的"净"相关性

PACF图示例:
  相关系数
  1.0 |█
  0.5 |█ █
  0.0 |──█──█──█──█──█──── (虚线=置信区间)
 -0.5 |
      └─────────────────→ 滞后期(k)
       0  1  2  3  4  5

  PACF在第p期截断 → AR(p)模型

实际用法:通过看ACF和PACF图来确定ARIMA模型的阶数。

2.3 ARIMA模型

ARIMA(p, d, q) 是时间序列预测的"瑞士军刀"。

三个组件:

  AR(p) — 自回归:
    Y(t) = c + φ₁·Y(t-1) + φ₂·Y(t-2) + ... + φₚ·Y(t-p) + ε(t)
    直觉:今天的价格 = 过去p天价格的加权平均 + 噪声
    例:AR(1) → 今天的价格主要由昨天的价格决定

  I(d) — 差分:
    对序列做d次差分使其变平稳
    一阶差分:ΔY(t) = Y(t) - Y(t-1) = 收益率
    大多数金融序列 d=1 就够了

  MA(q) — 移动平均:
    Y(t) = μ + ε(t) + θ₁·ε(t-1) + θ₂·ε(t-2) + ... + θq·ε(t-q)
    直觉:今天的价格受过去q天的"意外冲击"影响
    例:MA(1) → 昨天的意外涨跌会影响今天

建模流程(Box-Jenkins方法)

  Step 1: 平稳性检验
    → ADF检验
    → 不平稳则差分 (d=1 或 d=2)

  Step 2: 模型识别
    → 看ACF → 确定q (MA阶数)
    → 看PACF → 确定p (AR阶数)

  Step 3: 参数估计
    → 最大似然估计(MLE)

  Step 4: 诊断检验
    → 残差是否为白噪声?(Ljung-Box检验)
    → 如果不是 → 回到Step 2调整

  Step 5: 预测
    → 但注意:金融时间序列的ARIMA预测效果通常不好
    → 因为信噪比太低

对架构师的实际意义:ARIMA本身在高频交易中用得不多(太慢、预测力太弱),但它的思想(平稳性、差分、自相关)是所有时间序列分析的基础。你设计的回测系统需要支持这些操作。

2.4 GARCH模型(波动率聚集)

核心现象:金融市场的波动率不是常数,而是"聚集"的。

波动率聚集现象:

  日收益率序列:
  +0.5%, -0.3%, +0.2%, -0.1%,    ← 平静期:波动小
  +3.2%, -2.8%, +4.1%, -3.5%,    ← 剧烈期:波动大
  +2.1%, -1.9%, +0.8%, -0.5%,    ← 衰减期:波动逐渐减小
  +0.3%, -0.2%, +0.1%, -0.4%     ← 恢复平静

  直觉:大波动后面跟大波动,小波动后面跟小波动
  像地震的余震:主震后会有一系列小余震

GARCH(1,1)模型

收益率:r(t) = μ + ε(t),其中 ε(t) = σ(t)·z(t),z(t)~N(0,1)

波动率方程:
  σ²(t) = ω + α·ε²(t-1) + β·σ²(t-1)

  ω:基准波动率水平(长期平均)
  α:昨天的冲击对今天波动率的影响(ARCH项)
  β:昨天的波动率对今天波动率的影响(GARCH项)

  α + β < 1:波动率会回归长期均值(稳定)
  α + β 接近 1:波动率持续性很强(高波动会持续很久)

典型参数值(美股日数据):
  ω = 0.00001
  α = 0.08   ← 昨天的冲击影响8%
  β = 0.91   ← 昨天的波动率影响91%
  α+β = 0.99  ← 接近1,说明波动率持续性很强

实际应用

1. 动态VaR计算:
   传统VaR用固定波动率 → 低估风险
   GARCH VaR用时变波动率 → 波动大时自动放大VaR

2. 期权定价:
   BS公式假设波动率恒定 → 现实中波动率在变
   GARCH提供时变波动率 → 期权定价更准确

3. 风控系统设计:
   波动率突增 → 自动调小仓位/调宽止损
   波动率平静 → 可以适当加大仓位

三、配对交易(Pairs Trading)

3.1 核心思想

找两个"注定在一起"的资产:
  → 它们可能是同行业的竞争对手(可口可乐 vs 百事)
  → 它们可能是同一资产的不同形态(原油 vs 原油ETF)
  → 它们可能有经济逻辑上的联系(黄金 vs 金矿股)

当它们的价差偏离历史均值时:
  → 做空涨得多的 + 做多涨得少的
  → 等价差回归均值后平仓
  → 赚取价差回归的利润

为什么有效? 因为两个相关资产的价差偏离通常是临时性的(噪声或短期事件),长期会被市场力量拉回来。

3.2 相关性 ≠ 协整(经典误区)

这是量化交易中最常见的误区之一。

相关性(Correlation):
  两个序列的变化方向一致
  例:可口可乐涨1%,百事也涨1%
  → 相关系数高(比如0.85)

协整(Cointegration):
  两个序列的线性组合是平稳的
  例:可口可乐价格 - 1.2 × 百事价格 = 在某个均值附近波动
  → 价差是平稳的,会回归均值

区别:
  两个都涨的序列可以高度相关但不协整
  例:A股票从10涨到100,B股票从10涨到200
  → 相关系数 ≈ 0.99(都在涨)
  → 但 A - 0.5B 并不平稳(价差越来越大)
  → 做配对交易会亏死

只有协整的配对才适合做配对交易!

3.3 协整检验:Engle-Granger两步法

Step 1:对两个价格序列做回归

  Price_A(t) = α + β · Price_B(t) + ε(t)

  得到残差 ε(t) = Price_A(t) - α - β · Price_B(t)

  直觉:ε(t)就是两个资产的"价差"(经过β调整后)

Step 2:对残差做ADF检验

  如果残差是平稳的 → 两个序列协整 → 可以做配对交易
  如果残差不平稳 → 不协整 → 不能做配对交易

示例(Python伪代码):
  from statsmodels.tsa.stattools import coint

  # 直接检验两个序列是否协整
  score, p_value, _ = coint(price_A, price_B)

  if p_value < 0.05:
      print("协整!可以做配对交易")
  else:
      print("不协整,放弃")

Johansen检验:当你想同时检验多个序列(3个以上)的协整关系时使用。Engle-Granger只能检验两个序列。

3.4 交易策略

构建价差序列:
  Spread(t) = Price_A(t) - β · Price_B(t)
  其中 β 来自协整回归

标准化为Z-Score:
  Z(t) = (Spread(t) - Mean) / Std

  其中 Mean 和 Std 使用滚动窗口计算(例如60天)

交易信号:
  Z > +2.0  → 开仓:做空A,做多B(价差太大,赌它回归)
  Z < -2.0  → 开仓:做多A,做空B(价差太小,赌它回归)
  |Z| < 0.5 → 平仓:价差回归到均值附近,获利了结
  |Z| > 3.0 → 止损:模型可能失效了,赶紧跑

图示:
  Z-Score
  +3.0 |─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─   止损线
       |
  +2.0 |─────────────────────────────   开仓线(做空价差)
       |         ╱╲        ╱╲
  +0.5 |────────╱──╲──────╱──╲───────   平仓线
   0.0 |───╱──╱────╲────╱────╲──╱───   均值
  -0.5 |──╱────────╲──╱──────╲╱─────   平仓线
       | ╱           ╲╱
  -2.0 |─────────────────────────────   开仓线(做多价差)
       |
  -3.0 |─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─   止损线
       └────────────────────────────→ 时间

3.5 半衰期(Half-life)

为什么重要? 半衰期告诉你价差回归均值需要多长时间,直接决定了策略是否可行。

OU过程(Ornstein-Uhlenbeck):
  dS = θ·(μ - S)·dt + σ·dW

  θ = 均值回复速度
  μ = 长期均值
  σ = 波动率

半衰期 = ln(2) / θ

含义:
  半衰期 = 5天  → 价差偏离后,大约5天回归一半
  半衰期 = 30天 → 价差偏离后,大约30天回归一半
  半衰期 = 200天 → 太慢了,不实用

实际经验:
  半衰期 < 5天    → 太短,交易成本吃掉利润
  半衰期 5-30天   → 最佳区间
  半衰期 30-60天  → 可以做,但资金占用高
  半衰期 > 60天   → 不建议做,周期太长风险太大

Python估算半衰期

import numpy as np
from statsmodels.regression.linear_model import OLS

spread = ...  # 价差序列
spread_lag = spread.shift(1)
delta_spread = spread - spread_lag

# 回归:ΔSpread = α + θ·Spread(-1)
model = OLS(delta_spread.dropna(), spread_lag.dropna()).fit()
theta = -model.params[0]  # 注意负号
half_life = np.log(2) / theta

print(f"半衰期:{half_life:.1f} 天")

3.6 配对交易的风险

风险描述应对
协整断裂两个资产的长期关系改变了定期重新检验协整、设止损
均值漂移价差的均值本身在变化使用滚动窗口计算均值
执行风险一条腿成交了另一条腿没有限价单 + 滑点容忍
融资成本做空需要借券成本纳入成本计算
流动性风险某只股票突然流动性枯竭选择流动性好的标的
黑天鹅某只股票退市/被收购分散多个配对

真实案例: 2007年8月的"量化地震"——大量配对交易策略同时止损,导致价差进一步扩大,引发更多止损,形成负反馈循环。多家量化基金单周亏损超过20%。教训:策略拥挤本身是一个巨大的系统性风险。


四、因子模型

4.1 从CAPM到多因子

CAPM (1960s):
  R = Rf + β · (Rm - Rf)

  股票收益 = 无风险利率 + β × 市场风险溢价

  只有一个因子:市场风险
  → 太简单,现实中很多异象解释不了

Fama-French三因子 (1993):
  R = Rf + β₁·(Rm-Rf) + β₂·SMB + β₃·HML

  新增两个因子:
  SMB (Small Minus Big):小盘股跑赢大盘股的超额收益
  HML (High Minus Low):高B/P跑赢低B/P的超额收益

  → 能解释更多的收益差异

Fama-French五因子 (2015):
  R = Rf + β₁·(Rm-Rf) + β₂·SMB + β₃·HML + β₄·RMW + β₅·CMA

  又新增两个:
  RMW (Robust Minus Weak):高盈利跑赢低盈利
  CMA (Conservative Minus Aggressive):低投资跑赢高投资

直觉理解

因子 = 系统性的收益来源

  市场因子:你承担了市场涨跌的风险 → 获得风险补偿
  规模因子:小公司风险更高 → 历史上获得了额外回报
  价值因子:低估值公司风险更高 → 历史上获得了额外回报
  盈利因子:高盈利公司更稳定 → 获得质量溢价
  投资因子:保守投资的公司更稳健 → 获得低风险溢价

Alpha = 用因子模型解释不了的部分
     = 你的"真本事"

4.2 常用Alpha因子

因子类别因子名逻辑衰减速度
动量12个月动量过去赢家继续赢(行为偏差)
反转短期反转(5天)过度反应后回调
波动率低波动率低波动股票风险调整后收益更高
流动性非流动性溢价不流动的股票给更高回报
质量ROE/毛利率高质量公司长期表现好
情绪新闻情绪NLP分析新闻/社交媒体
资金流机构买入聪明钱的方向

4.3 因子评价指标

IC (Information Coefficient):
  = 因子值与未来收益的相关系数
  IC = Corr(Factor, Future_Return)

  |IC| > 0.05 → 有一定预测力
  |IC| > 0.10 → 很好的因子
  |IC| > 0.15 → 非常强的因子(很罕见)

IR (Information Ratio):
  = IC的均值 / IC的标准差
  = Mean(IC) / Std(IC)

  IR > 0.5 → 可用的因子
  IR > 1.0 → 优秀的因子

直觉:
  IC衡量"一次预测有多准"
  IR衡量"预测的稳定性"
  → 你宁愿要一个IC=0.03但IR=1.0的因子
     也不要一个IC=0.10但IR=0.3的因子
  → 因为稳定性比单次准确度更重要

4.4 因子衰减

Alpha因子的生命周期:

  发现期          繁荣期        衰减期        消亡期
  ────→───→──────→──────→───────→──────→──────→
  学术论文        基金采用       拥挤          Alpha=0
  发现异象        赚钱          竞争加剧      成为Beta
                              收益下降

例:
  动量因子:1990s发现 → 2000s大量采用 → 2010s衰减
  低波动率:2000s发现 → 2010s被ETF产品化 → 溢价缩小

教训:
  没有永恒的Alpha
  找到Alpha → 验证 → 执行 → 赚一段时间 → 然后找下一个
  这就是量化交易的本质:永远在寻找新的信号

五、回测科学(避坑指南)

这一节可能是整篇笔记中最重要的部分。回测做不好,前面所有的模型都是空中楼阁。

5.1 常见陷阱

陷阱1:过拟合(Overfitting)

你有100个参数的策略,在历史数据上完美拟合。
  → 样本内Sharpe = 5.0 (太好了!)
  → 样本外Sharpe = -0.5 (亏钱了!)

原因:策略不是在学规律,而是在记忆噪声。

类比:
  一个学生把所有考试题的答案都背下来了
  → 做原题得满分
  → 换一套新题就不会了
  → 这不叫"学会了",这叫"背答案"

如何识别:
  → 参数太多相对于数据量
  → 样本内和样本外表现差距巨大
  → 策略对参数微调非常敏感(参数改1%收益变50%)

陷阱2:前视偏差(Look-ahead Bias)

你用了"未来才知道"的信息来做决策。

错误示例:
  → 用当天收盘价决定当天是否交易(你在收盘前不知道收盘价)
  → 用年报数据在发布日之前就纳入模型(年报还没公布呢)
  → 用调整后的价格回测(拆股调整是事后才做的)

更隐蔽的前视偏差:
  → 选择表现最好的参数组合 → 你怎么知道哪个最好?因为你看了未来
  → 只选择了存活的股票 → 你怎么知道哪些股票退市了?因为你看了未来

陷阱3:存活偏差(Survivorship Bias)

你的股票池只包含"现在还在"的股票。

问题:
  → 2010年你的宇宙有500只股票
  → 其中50只在2015年退市了(通常是因为业绩差/破产)
  → 你用2025年的股票列表回测2010年
  → 自动排除了那50只表现差的股票
  → 策略看起来比实际好

影响:
  美国股市:存活偏差每年大约高估1-2%的收益率
  → 你以为年化15%的策略实际上可能只有13%

陷阱4:数据窥探(Data Snooping)

你尝试了1000种策略组合,其中50种"显著"盈利。

问题:
  → 1000次尝试,5%显著性水平
  → 预期有 1000 × 5% = 50 种"看起来显著"
  → 但这50种可能全是假的!(多重检验问题)

类比:
  → 你扔100次硬币,发现第37-42次连续出正面
  → "哇,从第37次开始买入的策略太好了!"
  → 这不是策略,这是随机

对策:
  → Bonferroni校正:显著性水平 / 尝试次数
  → 但这太保守,实际中用更温和的方法

5.2 科学的回测方法

Walk-Forward Analysis(滚动窗口验证)

传统回测:
  训练集(5年)──────── → 测试集(1年)
  ↑ 用这个训练           ↑ 用这个测试

Walk-Forward:
  ┌──训练──┐┌测试┐
  │Year1-3 ││ Y4 │ → 记录Y4表现
  └────────┘└────┘
     ┌──训练──┐┌测试┐
     │Year2-4 ││ Y5 │ → 记录Y5表现
     └────────┘└────┘
        ┌──训练──┐┌测试┐
        │Year3-5 ││ Y6 │ → 记录Y6表现
        └────────┘└────┘

  最终表现 = Y4 + Y5 + Y6 的汇总
  → 每次都是用"过去"训练、"未来"测试
  → 模拟真实的策略运行方式

蒙特卡洛置换检验

目的:检验策略收益是否真的来自信号,而不是随机

方法:
  1. 打乱信号的时间顺序(保留其他不变)
  2. 用打乱后的信号重新运行策略
  3. 重复1000次
  4. 看原始策略的收益在1000个随机收益中排第几

  如果原始策略排在前5% → 策略显著
  如果原始策略排在中间 → 策略不显著(你的"信号"其实是噪声)

多资产/多时期外样本验证

空间维度:
  策略在美股有效 → 检验在欧洲/亚洲是否也有效
  如果也有效 → 更可能是真信号

时间维度:
  策略在2010-2020有效 → 检验在2000-2010是否也有效
  如果也有效 → 更可能是真信号

如果一个策略只在某个特定市场的特定时期有效
  → 大概率是过拟合

5.3 关键评价指标

Sharpe Ratio:
  SR = (Return - Rf) / Std(Return)

  SR < 0.5  → 不值得交易
  SR 0.5-1  → 一般
  SR 1-2    → 好
  SR 2-3    → 非常好
  SR > 3    → 你很可能有bug或数据问题

  注意:Sharpe Ratio的统计检验
  → SR=1.0,你需要至少4年的数据才能在5%水平上显著
  → SR=0.5,你需要至少16年的数据
  → 这就是为什么短期回测的高SR不可信

Maximum Drawdown(最大回撤):
  从峰值到谷底的最大跌幅
  → 告诉你最坏情况下会亏多少
  → 基金投资人最关心的指标

Calmar Ratio:
  = Annual Return / Max Drawdown
  → 衡量"每承受1%的最大风险能获得多少年化收益"
  → Calmar > 1 是好策略的基本要求

换手率(Turnover):
  → 策略每天换多少仓位
  → 高换手 = 高交易成本
  → 很多回测很好的策略一旦考虑交易成本就不赚钱了

容量(Capacity):
  → 策略能承载多少资金
  → 很多高Sharpe的策略容量只有几百万美元
  → 资金量翻倍 → 市场冲击翻倍 → 收益大幅下降

六、工程落地要点

6.1 回测系统架构

两种主流架构:

  事件驱动(Event-Driven):
  ┌─────────┐   ┌──────┐   ┌──────┐   ┌──────┐
  │数据源    │──→│策略   │──→│执行   │──→│组合   │
  │(每个tick)│   │(信号) │   │(订单) │   │(持仓) │
  └─────────┘   └──────┘   └──────┘   └──────┘
  优点:更接近实盘逻辑,容易切换到实盘
  缺点:慢(Python每个tick都要处理)

  向量化(Vectorized):
  ┌───────────────────┐
  │   全部数据加载到矩阵  │
  │   信号 = f(价格矩阵)  │  ← NumPy/Pandas一次性计算
  │   收益 = 信号 × 收益率 │
  └───────────────────┘
  优点:快(利用NumPy向量化,比事件驱动快100倍)
  缺点:难以模拟复杂的执行逻辑(滑点、部分成交等)

实际方案:
  研究阶段 → 向量化(快速迭代)
  验证阶段 → 事件驱动(精确模拟)
  实盘阶段 → C++/Rust重写(性能)

6.2 策略研发平台设计

核心组件:

  ┌─────────────────────────────────────┐
  │           策略研发平台               │
  ├──────────┬──────────┬───────────────┤
  │ 数据管理  │ 策略框架  │ 分析工具      │
  │          │          │              │
  │ 行情存储  │ 回测引擎  │ 绩效分析      │
  │ 因子库    │ 参数优化  │ 风险归因      │
  │ 事件库    │ 信号生成  │ 可视化       │
  │ 基本面    │ 组合构建  │ 报告生成      │
  └──────────┴──────────┴───────────────┘

技术选型:
  数据存储:时序数据库(InfluxDB/QuestDB) + 列存(Parquet)
  计算框架:Python(研究) + C++/Rust(实盘)
  因子计算:NumPy/Pandas + 增量计算引擎
  可视化:Plotly/Dash

6.3 从研究到实盘

研究环境                    实盘环境
──────────                 ──────────
Python                     C++/Rust/Java
分钟级延迟可接受              微秒级延迟
历史数据                    实时数据流
完美执行假设                 真实滑点/部分成交
无风控约束                   严格风控
单机运行                    分布式/高可用

最大的坑:研究和实盘的差距
  → 研究中假设的"完美执行"在实盘中不存在
  → 策略在研究中年化20%,实盘可能只有8%
  → 差距来自:交易成本、滑点、延迟、部分成交

七、常见误区

误区1:"历史回测好 = 未来一定赚"

过拟合是最大的敌人。一个在历史数据上Sharpe=3.0的策略,很可能只是对历史噪声的完美记忆。越是复杂的策略、越多的参数、越高的历史表现,越需要警惕。

经验法则:如果你的策略在回测中表现"好得难以置信",那它很可能确实不可信。

误区2:"Sharpe 3.0的策略太好了"

在你相信一个SR=3.0的策略之前,先检查:

  • 数据期间够长吗?(至少3-5年)
  • 交易成本算了吗?(包括滑点和冲击)
  • 有前视偏差吗?(你是不是偷看了未来?)
  • 试了多少个策略?(有没有数据窥探?)
  • 策略容量多大?(能放多少钱?)

大多数宣称SR>2的公开策略,在上述调整后会降到1以下。

误区3:"机器学习一定比传统方法好"

金融时间序列有一个根本问题:信噪比极低

图像识别:信噪比高
  → 猫就是猫,特征明显
  → 深度学习效果远超传统方法

金融预测:信噪比极低
  → 收益率中99%是噪声,1%是信号
  → 复杂模型更容易过拟合噪声
  → 简单的线性模型可能比神经网络更好

正确姿势:
  → 先用简单模型建立基线
  → ML用于特征工程(构造因子)而非直接预测
  → 严格的外样本验证
  → 控制模型复杂度

八、DeFi中的统计套利

8.1 跨DEX套利

传统配对交易 → DeFi版本

同一个Token在不同DEX价格不同:
  Uniswap V3:ETH = $3000.50
  SushiSwap:  ETH = $3001.20

  → 在Uniswap买,在Sushi卖,赚$0.70(减去Gas费)
  → 这更接近无风险套利而非统计套利

更像统计套利的DeFi策略:
  → 两个相关Token的价差交易(如stETH vs ETH)
  → 跨链同一Token的价差
  → LP位置的动态调整

8.2 DeFi的特殊挑战

传统市场的优势          DeFi不具备的
──────────────        ──────────────
亚毫秒执行              12秒区块时间
订单可以取消             链上交易不可逆
私密交易                 所有交易公开(被MEV前跑)
稳定的费率               Gas费波动剧烈

九、延伸阅读

必读书籍

  • 《Advances in Financial Machine Learning》 — Marcos Lopez de Prado

    • 量化策略的"现代圣经"
    • 重点章节:回测过拟合、特征重要性、元标签
    • 适合有编程基础的读者
  • 《Algorithmic Trading》 — Ernest Chan

    • 实战导向,代码丰富(Python/MATLAB)
    • 配对交易、均值回复、动量策略
  • 《Quantitative Trading》 — Ernest Chan

    • 入门级,适合非量化背景的读者
    • 从开户到策略上线的完整流程

经典论文

  • Fama & French (1993) — "Common Risk Factors in the Returns on Stocks and Bonds"

    • 三因子模型的原始论文
  • Engle & Granger (1987) — "Co-Integration and Error Correction"

    • 协整检验方法,诺贝尔奖论文
  • Lopez de Prado (2018) — "The 10 Reasons Most Machine Learning Funds Fail"

    • 机器学习在金融中失败的原因

在线资源

  • QuantConnect / Zipline — 开源回测框架
  • Quantopian Lecture Series — YouTube免费课程
  • AQR Research Papers — 因子投资的前沿研究

十、本章小结

概念一句话总结
统计套利用统计方法寻找可重复的价格偏离,赚大数定律的钱
平稳性时间序列分析的前提,非平稳序列的预测没有意义
协整配对交易的基础,不是相关性!价差平稳才能做
半衰期价差回归速度,5-30天最适合配对交易
因子模型收益的系统性来源,Alpha=因子解释不了的超额收益
过拟合量化策略的头号杀手,复杂模型更容易中招
数据窥探试太多策略总有看起来好的,但可能全是假阳性
Walk-Forward科学的回测方法,模拟真实的策略运行方式

对架构师的核心启示

  1. 回测系统需要支持事件驱动向量化两种模式
  2. 因子库是量化平台的核心资产,要设计好因子的计算、存储、版本管理
  3. 研究到实盘的鸿沟是最大的工程挑战——需要严格的一致性保证
  4. 策略评估不能只看收益,要看统计显著性——这决定了评估模块的设计
  5. DeFi的统计套利面临独特的约束(区块时间、MEV、Gas费),需要专门的架构适配