← 返回模块
4.5.1.4beta 可读 · 未来付费校验通过内容版本 2026-05-28

从回测到仿真交易:部署交接

4.5.1 · 回测方法论 · 量化全流程

某周四 早上,上海 某 量化 私募 的 投决会。L1-L3 全部 走 完 的 5 日 动量 策略 摆 在 Confluence 上:事件驱动 引擎、十 项 真实性 清单 全 绿、deflated Sharpe 0.8、PBO 0.35。研究员 问 投资 总监:「什么时候 上 实盘?」投资 总监 不 回答 这 个 问题。她 连 问 四 个 反 问 题。十 节 回测 读出 报告 在 哪?仿真 交易 的 关 卡 标准 是 什么?四 条 kill switch 是 哪 些、触 发 后 由 谁 签 字 恢复?每 日 回测 vs 实盘 对账 报告 落在 哪 里? 这 四 个 工件 不 齐,510300 一手 都 不 准 下——不在 100 块 账户 上,不在 100 亿 账户 上。回测 是 预测。它 是 证据——证明 策略 可能 work。「可能 在 回测 里 work」与「在 生产 里 work」之间 的 距离 叫 部署 阶梯(deployment ladder),而 部署 阶梯 就 由 这 四 个 工件 构成。本课 教 全 部 四 个——它们 是 本 模块 的 压 轴,也 是 把 工 作 交 给 4.6.3 实 盘 交易 与 运 营 的 桥。

回测 读出 报告——十 节,顺序 固定

第 一 个 工件。信誉级 回测 产出 的 不 是 一 个 夏普 数字、不 是 一 张 PnL 曲线、不 是 一 个 git commit,而 是 一 份 读出 报告(readout report)。读出 报告 是 投决会 签 字 看 的、合 规 部 门 在 境外 营销 规则(Rule 206(4)-1,2022 年 11 月 生 效)或 AMAC 业绩 展示 自律 规则(CN)下 归 档 的、风控 部 门 在 三 个 月 后 kill switch 触发 时 翻 出来 的。十 节 必备 内容,按 顺序:

1.  PnL curve                            — 累计 收益 时间序列,叠加 benchmark(510300 沪深300 ETF)
2.  Sharpe ratio with confidence interval — 点 估计 + 95% CI(bootstrap 或 asymptotic formula)
3.  max drawdown                          — peak-to-trough loss % + 回补 天 数
4.  deflated Sharpe                       — 来自 L3;多重 检验 修正 后 的 夏普
5.  PBO                                   — 来自 L3;组合 交叉 验证 给 出 的 过 拟 合 概率
6.  turnover                              — 日均 换手率
7.  capacity estimate                     — 收益 衰减 < 50% 时 的 最大 总 AUM
8.  factor exposure breakdown             — 在 4.3 因子模型(中证 / 巨潮 / Wind 因子库)上 的 回归
9.  parameter-sensitivity heatmap         — 参数 网格 邻 域 上 的 夏普 热 图
10. reproducibility metadata              — git commit、数据 快照 ID、随机 种子、run-id

读出 报告 是 投决会 看 的 内部 信誉 文件, 是 境外 营销 规则 (US) / AMAC 业绩 展示 自律 规则 (CN) 下 的 合规 工件。一 个 文件,两 个 受众。

第 1 节(PnL 曲线)把 累计 收益 与 benchmark(CN 用 510300)画 在 一张 图 上。读者 两 秒 看 完 然 后 问:曲线 是 稳 步 增长,还是 在 某 一 段 暴 涨 之 后 平 趴?第 2 节(Sharpe 含 CI)用 渐进 公式 SE(Sharpe) ≈ sqrt((1 + Sharpe² / 2) / T) 与 95% 区间 Sharpe ± 1.96 × SE(Sharpe) 算 头条 数 字 的 不 确定 性;Jobson-Korkie 1981 + Memmel 2003 的 小样本 修正 是 标准 改进,引 用 在 学术 文献 与 mlfinlab 包 里。第 3 节(max drawdown)报告 最大 peak-to-trough 跌幅 与 回 补 天 数;前 5 大 历史 drawdown 的 多 drawdown 图 与 头条 数字 并 列。第 4、5 节(deflated Sharpe + PBO)就 是 L3 的 交付物 原 样。第 6 节(turnover)是 日均 换手率;日 换手 超 100% 是 容量 + 成本 的 双 黄 灯。第 7 节(capacity estimate)由 把 AUM 从 小 到 大 步 进 重 跑 回测、按 较 大 单 量 调 整 volume-participation cap,算 出 收益 较 baseline 衰减 > 50% 的 总 AUM。第 8 节(factor exposure)把 策略 日 收益 对 因子 模型(中 证 / 巨 潮 / Wind / Axioma APT 中国 因子)回归;一只 「动量」策略 居然 30% 收益 来自 价值 暴露 是 重 大 警示——策略 不 是 研究员 以 为 的 那 个。第 9 节(parameter-sensitivity heatmap)画 参数 网格 邻 域 上 的 夏普 热 图;稳健 策略 热 图 光 滑、最 佳 格 在 平 台 上;过 拟 合 策略 热 图 在 一 格 上 尖 锐 突 起、邻 居 远 弱 于 它。第 10 节(reproducibility metadata)是 git commit、数据 快照 ID、随机 种子、run-id——与 4.2.1 L4 相同 的 工件。读出 报告 必 须 能 从 metadata 一 条 命令 重新 生 成。

SE(Sharpe)1+Sharpe2/2T,95% CI: Sharpe±1.96SE(Sharpe)\text{SE(Sharpe)} \approx \sqrt{\frac{1 + \text{Sharpe}^2 / 2}{T}}, \qquad 95\% \text{ CI: } \text{Sharpe} \pm 1.96 \cdot \text{SE(Sharpe)}

Formula Explorer

\text{SE(Sharpe)} \approx \sqrt{\frac{1 + \text{Sharpe}^2 / 2}{T}}

读出 报告 第 2 节 置信区间 用 的 夏普 标准 误 渐进 公式。95% CI 等于 Sharpe ± 1.96 × SE(Sharpe)。Jobson-Korkie 1981 / Memmel 2003 给 小样本(T 小 于 ~250)下 的 修正。

四 阶段 部署 阶梯

第 二 个 工件。每 一 只 量化 私募 / 公募 量化 部 门 的 策略 都 按 这 个 严格 顺序 走 完 四 个 阶段:

1. backtest               — offline; gate: ten-section readout, PBO < 0.5, deflated Sharpe > 0.5
2. paper trading          — live data, simulated capital; duration 1-3 months; gate: paper Sharpe within 30% of backtest deflated Sharpe, same sign of cumulative return, no signal-pipeline errors
3. shadow trading         — live execution, small real capital ~1% of allocated size; duration 1-3 months; gate: realized Sharpe within 30% of backtest deflated Sharpe, no anomalous fills, kill switches verified
4. full live deployment   — allocated size, kill switches active, continuous reconciliation

策略 不 能 跳 关;每 一 只 策略 都 按 顺序 走 完 四 个 阶段、每 一 关 都 有 签 字 的 关 卡 标准。从 回测 完 到 完 整 实 盘 的 典型 时 间 线 是 3-6 个 月,明 汯 / 幻 方 / 灵 均 / 衍 复 这 一 档 私募 的 节 奏;公募 量化 部 门(天 弘 / 富 国 / 华 夏 / 嘉实)由 于 投决会 流程 + 风控 部 门 + 基 金 合 同 约束 通常 更 慢。

backtest -> paper trade (1-3 months) -> shadow trade (1-3 months) -> full deployment
total wall-clock: 3-7 months

压 缩 时 间 线(跳 关 或 缩 短 阶段)不 是 敏 捷 美 德,是 治 理 红 旗。

第 2 阶段(paper trading / 仿 真 交易)把 策略 完 整 跑 在 firm 内 部 的 仿 真 系 统 上,接 入 Wind / 通 联 / 同 花 顺 / Bloomberg 的 实 时 行 情。策略 算 信 号、构 组合、生 单——但 成 交 用 L2 fill model 参数(next-bar-open、10% cap、5-10 bps 滑 点)模 拟。时 长 1-3 月。目 的:核 对 实 时 数 据 管 道 与 回 测 数 据 管 道 一致;抓 实 现 bug(实 时 信 号 与 回 测 信 号 可 能 因 数 据 供 应 商 字段 命 名 或 时 间 戳 处 理 微 差 而 不 同);在 押 真 钱 之 前 验证 运 营 stack(行 情 网 关、信 号 服 务、组 合 服 务)。

第 3 阶段(shadow trading / 影子 交易)把 小 额 真 钱——典型 10-100 万 RMB 起、上 限 通 常 与 即 将 配 资 的 1% 同 量 级——放 在 firm 主 经 纪 商(中 信 / 国 泰 君 安 / 招 商 / 中 信 建 投 / 华 泰)的 一 个 试 单 账户 里。真 成 交、真 成 本、真 借 券、真 滑 点。时 长 1-3 月。目 的:小 规模 真 钱 测 试——核 对 真 成 交 与 paper-trade 成 交 一致;核 对 真 成 本 与 成 本 模 型 一致;核 对 实 现 PnL 与 回 测 预 测 PnL 在 对 账 容 差 之 内。kill switch 在 生 产 里 用 可 控 小 扰 动 测 试。

第 4 阶段(full live deployment)与 firm 的 OMS / EMS 集 成、要 风 控 总 监 签 字、启 动 持 续 回 测 vs 实 盘 对 账。CN 投决会 等 价 物 通 常 是 投 资 决 策 委 员 会 / 投 决 会。

回测 vs 实盘 对 账——四 维 偏 差 分 解

第 三 个 工件。把 回 测 预 测 PnL 与 实 盘 实 现 PnL 连 起 来 的 每 日 报 告。每 一 天,策略 跑 一 次 回 测 模 式(用 当 日 真 实 行 情、按 模 型 设 定 的 规 模 + L2 fill model + cost model)产 出 回 测 预 测 PnL;实 盘 系 统 产 出 实 现 PnL。差 距 分 解 为 四 个 加 性 分 量:

1. signal-decay gap   — 实盘 信号 与 回测 信号 不一致;alpha 衰减
2. execution gap      — 实盘 成交 与 回测 成交 不一致;slippage / impact / partial fill / latency
3. cost gap           — 实盘 成本 与 回测 成本 不一致;佣金 / 价差 / 借券 / 印花税
4. universe gap       — 实盘 股票池 与 回测 股票池 不一致;corporate actions / 停牌 / 指数 调整

# 分 解 恒 等 式:
gap = realized_PnL - backtest_predicted_PnL = signal_decay_gap + execution_gap + cost_gap + universe_gap

# 阈 值:
# 单 分 量 月 度 持 续 > 30 bps/月 触 发 模型 评 审
# 累 计 月 度 > 100 bps/月 触 发 kill switch

signal-decay gap:实 盘 信号 值 与 回 测 信号 值 不 一致——alpha 衰 减(市 场 把 信号 套 走 了)。算 法:在 实 盘 当 日 用 回 测 数 据 源 重 跑 信号,与 实 盘 信号 输 出 比 较。正 的 signal-decay gap(实 盘 PnL < 回 测 PnL)意 味 alpha 衰 减;负 的 意 味 策略 变 强(罕 见,通 常 是 数 据 质 量 伪 影)。CN 量化 alpha 在 2021-2024 衰 减 显 著(AUM 上 涨 拖 累 + 监 管 对 量 化 交 易 的 新 政 + 市 场 风 格 切 换),signal-decay 分 量 通 常 是 最 大 的 那 个 gap。

execution gap:实 盘 成 交 与 回 测 成 交 不 一致——滑 点、市 场 冲 击、部 分 成 交、延 时。算 法:把 实 盘 订 单 重 跑 进 回 测 fill simulator,与 实 际 成 交 价 比 较。CFFEX 股指 期 货 对 冲(IF / IC / IM)有 与 现 货 篮子 不 同 的 execution gap;集 合 竞 价 / 涨 跌 停 板 / 试 盘 信 号 都 会 出 一 些 特殊 滑 点 形 态。

cost gap:实 盘 成 本 与 回 测 成 本 不 一致——印花税 0.1% 卖方(2023 减 半 至 0.05%)+ 过户费 万分之 0.5 双 边 是 确 定 项;变 动 项 是 价差(按 流动 性 档 位)+ 融券 利率(8-9% 年化 典型,涨 跌 停 板 时 段 可 突 飙)+ 主 经 纪 商 融 资 利 率。把 实 盘 佣金 + 价差 + 冲 击 + 借 券 合 起 与 L2 10 bps 占 位 比 较。

universe gap:实 盘 可 交易 股票池 与 回 测 投 影 股票池 不 一致——ST 戴 帽(特别 处理)、停牌(重大 公告 期 间 3-6 月 都 有)、复 牌(恢复 交易 后 一 字 涨 / 跌 停)、借 壳 / 重 组 / 退市 整 理 期、IPO 加 入 沪深300 / 创 业 板 / 科 创 板。

参考 对 账 函 数:

def reconcile_backtest_vs_live(backtest_pnl, live_pnl, decomposition_inputs):
    # decomposition_inputs: dict with live_signal, backtest_signal, live_fills, backtest_simulator_fills,
    # live_costs, backtest_placeholder_costs, live_universe, backtest_universe
    signal_decay_gap = compute_signal_decay_gap(
        decomposition_inputs["live_signal"], decomposition_inputs["backtest_signal"])
    execution_gap = compute_execution_gap(
        decomposition_inputs["live_fills"], decomposition_inputs["backtest_simulator_fills"])
    cost_gap = compute_cost_gap(
        decomposition_inputs["live_costs"], decomposition_inputs["backtest_placeholder_costs"])
    universe_gap = compute_universe_gap(
        decomposition_inputs["live_universe"], decomposition_inputs["backtest_universe"])
    gap_total = signal_decay_gap + execution_gap + cost_gap + universe_gap
    tolerance = 0.0005  # 5 bps
    assert abs(gap_total - (live_pnl - backtest_pnl)) < tolerance, \
        f"reconciliation residual {abs(gap_total - (live_pnl - backtest_pnl))} exceeds tolerance"
    return {
        "signal_decay_gap": signal_decay_gap,
        "execution_gap": execution_gap,
        "cost_gap": cost_gap,
        "universe_gap": universe_gap,
    }

单 分 量 持 续 > 30 bps/月 触 发 模型 评 审——模 型 团队 调 查 gap 是否 反 映 策略 边 际 的 结 构 性 变 化、还 是 执 行 stack 的 变 化、还 是 成 本 景 观 的 变 化、还 是 股 票 池 的 变 化;评 审 可 能 给 出 重 调 参 / 影 子 / kill 的 建 议。累 计 > 100 bps/月 触 发 kill switch 激 活——策略 暂 停,等 评 审。

四 条 经典 kill switch 政 策

第 四 个 工件。每 一 条 kill switch 三 个 必 备 字段:数 值 阈值halt 动 作who-resumes-what 协议。没 有 文 档 的 kill switch 不 存在——一 个 没 有 文 档 阈值 的 开 关 按 定义 就 是 「随 意」,而 随 意 halt 是 治 理 失 败、不 是 kill switch。

1. per-strategy max-drawdown trigger
   threshold        : realized drawdown from peak > 5%
   halt action      : full halt
   who-resumes-what : 投决会 评 审 + 模 型 团队 根 因 分 析

2. per-day max-loss trigger
   threshold        : realized loss in single day > 1% of NAV
   halt action      : 当日 full halt(持仓 隔夜)
   who-resumes-what : 次日 auto-resume,除非 连续 第 二 天 则 升 级 到 投决会

3. backtest-vs-live Sharpe divergence trigger
   threshold        : realized 20-day rolling Sharpe < 0 while backtest predicted > 1
   halt action      : full halt
   who-resumes-what : 模型 团队 读 对账 分 解;signal-decay -> downsize/kill,ops -> fix + 1 月 影子

4. external regime trigger
   threshold        : 沪深300 20-day realized volatility > 30%
   halt action      : 减 gross 50%
   who-resumes-what : 指标 < 阈值 持续 5 日 auto-resume 到 full gross

开关 1 阈值 中 频 策略 典型 > 5%,高 频 / 市 场 中 性 策略 典型 > 3%。5% 阈值 在 2015 股 灾、2016 熔 断、2018 trade war、2020 疫 情、2022 房 地 产 + 疫 情 都 触 发 过;每 家 私募 的 研 究 笔记 都 会 记 录 哪 些 策略 度 过 每 个 事件。

开关 2 是 日内 熔 断。单 日 NAV 亏 损 > 1% 当 日 halt 不 再 下 单,持 仓 不 强 平。连 续 两 日 触 发 自 动 升 级 到 投决会——连 触 在 任 何 健 全 流 程 下 都 统计 罕 见,是 结 构 性 问 题 的 诊 断。

开关 3 是 模型 验 证 熔 断。实 盘 20 日 滚 动 Sharpe < 0 而 回 测 预 测 > 1 意 味 实 盘 PnL 与 回 测 预 测 PnL 已 经 解 耦——要 么 alpha 死 了(对 账 报 告 中 signal-decay 分 量 占 优),要 么 运 营 stack 坏 了(执 行 / 成 本 / 股 票 池 分 量 占 优)。模 型 团队 评 审 读 四 维 分 解、按 路 由 走。

开关 4 是 宏 观 熔 断。2015 股 灾、2018 trade war、2020 疫 情、2022 疫 情 + 房 地 产 双 杀 期 间 沪深300 20 日 实 现 波 动 率 全 部 > 30%;阈值 校 准 来 抓 这 些 regime。减 gross 50%(而 非 full halt)是 保 守 默 认;高 杠 杆 策略 通 常 整 体 halt。auto-resume 规 则(指 标 < 阈值 持 续 5 日 重 回 full gross)防 止 来 回 拉 扯。

CN 涨 跌 停 板 制 度 在 重 涨 跌 停 板 集 中 日 是 隐 性 regime trigger——涨 跌 停 板 集 中 是 regime shift 的 诊 断 之 一。

一 份 示 例 kill-switch 配 置 文件:

kill_switches:
  - name: per_strategy_max_drawdown_trigger
    threshold: realized_drawdown_from_peak > 0.05
    halt_action: full_halt
    who_resumes_what: 投决会_评审
  - name: per_day_max_loss_trigger
    threshold: daily_realized_loss > 0.01 * NAV
    halt_action: 当日_full_halt
    who_resumes_what: 次日_auto_resume_除非_连续两日
  - name: backtest_vs_live_sharpe_divergence_trigger
    threshold: rolling_20d_Sharpe < 0 AND backtest_predicted_20d_Sharpe > 1
    halt_action: full_halt
    who_resumes_what: 模型团队_评审_对账分解
  - name: external_regime_trigger
    threshold: 沪深300_20d_realized_volatility > 0.30
    halt_action: 减_gross_50pct
    who_resumes_what: 指标_5日低于阈值_auto_resume

CN 合 规 框 架:私募 基 金 在 营 销 材 料 引 用 历 史 回测 必须 符 合 AMAC 业绩 展示 自律 规则——回测 必 须 明 确 标 注 「历 史 回测 业 绩」、附 风险 披 露、披 露 方 法 论 + 参数 网格。公募 量化 基 金 进 一 步 受 CSRC 信息披露 管理 办法 与 证券 投资 基金 销售 适用性 指引 约束。投资 者 适当 性 管理 限 制 高 波 动 / 高 杠 杆 策略 的 零 售 投 资 者 准 入。读出 报告 服 务 合规 归 档。

Exercise

Exercise

你 已 完 成 5 日 动量 策略 在 510300 沪深300 ETF 上 2014-01-01 到 2023-12-31 的 L1+L2+L3 交付物。回测 读出 给 出:头条 Sharpe ~2.5、deflated Sharpe ~0.8、PBO ~0.35、max drawdown ~12%、turnover ~20% 日。做 四 个 计算 并 报告 结果。

(i) 装 配 十 节 回测 读出 报告——按 顺序 列 出 十 节,每 一 节 给 一 行 与 你 策略 相符 的 内容(例:第 7 节 capacity estimate:5-20 亿 RMB 在 cn-region)。

(ii) 给 部 署 阶 梯 四 个 阶 段(backtestpaper tradingshadow tradingfull live deployment)每 一 个 写 出 关 卡 标 准;用 本课 的 经典 阈 值,并 说 明 你 的 策略 在 L1+L2+L3 交付物 基 础 上 是 否 过 关(backtest 关 应 过;后 三 个 等 实 盘 跑 完)。

(iii) 配 置 四 条 经典 kill switch,每 一 条 三 个 必 备 字段(numerical thresholdhalt actionwho-resumes-what protocol)适 用 于 deflated Sharpe ~0.8 的 只 做 多 动量 策略——用 5% / 1% / Sharpe-divergence / regime 阈值,地 区 regime 指 标 用 沪深300 20-day realized volatility > 30% for cn-region。

(iv) 设 计 一 页 周 度 paper-trade 对 账 报告 模 板,四 维 偏 差 分 解(signal-decay gapexecution gapcost gapuniverse gap),并 标 出 单 分 量 评 审 阈值(> 30 bps/月)与 累 计 kill switch 阈值(> 100 bps/月)。

把 四 个 答案 报告 成 一 份 结 构 化 交付物。

提示
capacity 对 沪深300 universe 上 多 头 动量 典型 5-20 亿 RMB。backtest 关 用 PBO 小于 0.5 与 deflated Sharpe 大于 0.5,本案 都 满 足。
提示
每 一 维 分 量 一 行:当 周 bps、滚 动 4 周 bps、状态 标 志(clean / review / kill);kill 阈值 在 月 度 累 计 数 字 上。

收 束 规 则——以 及 通 向 4.6.3 的 前 视

回测 是 预 测——它 是 证据;部署 阶 梯 把 证据 变 成 实 盘 业 绩 记 录;读出 报告 + 对 账 报告 + kill switch 是 把 研 究 项 目 与 部 署 策略 区 分 开 的 三 个 工件。这 就 是 4.5.1 整 个 模块 的 收 束 纪 律 规 则。

实 盘 交 易 运 营 栈 本身——OMS / EMS 架 构、FIX 协 议、交 易 所 连 接、延 时 SLO、行 情 网 关、kill switch 在 交易 系 统 代 码 里 的 实 现——是 4.6.3 的 主 题(实 盘 交 易 与 运 营);本课 命 名 了 政 策工件,4.6.3 教 工程。业 绩 测 算 与 归 因 层(Brinson 归 因、因子 归 因 PnL、GIPS 合规 报告)是 4.6.2;本 课 对 账 报 告 借 用 4.6.2 的 日 PnL 分 解 框 架 但 更 偏 运 营 而 非 分 析。把 L2 的 10 bps 占 位 翻 成 真 实 单 笔 交易成本 的 模 型 是 4.5.2(交易 成本 与 市场 冲击);降 低 execution gap 分 量 的 执 行 算 法(TWAP / VWAP / IS / POV / Almgren-Chriss)是 4.5.3。风 险 侧——在险价值(VaR)、压力测试 场 景、均值方差优化 用 于 组 合 层——在 4.4 里。全 程 中 你 见 到 了 夏普比率 置 信 区 间、最大回撤 kill 阈值、Alpha 衰减 诊 断、因子模型 回 归;都 继 续 用。前 行。

Components covered

  • Inline-code listing of the TEN required sections of the backtest readout report (PnL curve ... reproducibility metadata).
  • Inline-code listing of the FOUR-stage deployment ladder (backtest, paper trading, shadow trading, full live deployment) with gate criteria.
  • Inline-code listing of the FOUR gap-decomposition components (signal-decay gap, execution gap, cost gap, universe gap) with thresholds.
  • Inline-code listing of the FOUR canonical kill-switch policies with the three required documentation fields each.
  • Fenced math + text block — Sharpe-ratio standard-error formula with the Jobson-Korkie-Memmel citation.
  • Fenced ```python code block — the reconcile_backtest_vs_live reference function.
  • Fenced ```yaml code block — sample kill-switch configuration file with four entries.
  • Inline-code listing of the typical 3-7 month end-to-end deployment timeline.
  • Exercise — four sub-task deliverables (i)/(ii)/(iii)/(iv) on 510300 沪深300 ETF 2014-01-01 to 2023-12-31.
  • Two progressive Hints kept short.
  • FormulaExplorer — the Sharpe-ratio standard-error formula.