Skip to content

06 · 量化策略与回测

面向软件公司与工程师团队的量化策略研发指南。前几篇教交易者「怎么看盘、怎么下单」,本篇讲的是工程师视角下的「怎么把一套交易逻辑变成可验证、可上线、可监控的代码系统」。

免责声明:本站全部内容仅用于学习与研究,不构成任何投资建议。市场有风险,投资需谨慎。


一、量化交易的完整流程

从想法到规模化资金,一条标准的量化研发流水线:

text
数据 → 因子/信号 → 策略逻辑 → 回测 → 参数优化 → 模拟盘 → 小资金实盘 → 规模化
阶段核心产出工程师要回答的问题常见时长
数据清洗后的行情/订单/资金库数据全不全?对齐没对齐?有没有幸存者偏差?1–4 周
因子/信号可计算的候选特征因子是否有效?与收益的相关性是否稳定?2–6 周
策略逻辑可回测的策略代码买卖规则、仓位、**止损**是否可量化描述?1–3 周
回测绩效报告剔除各种偏差后还有没有 alpha?2–8 周
参数优化稳健的参数区间参数在样本外还成立吗?会不会过拟合?1–4 周
模拟盘模拟交易记录实盘延迟/撮合下策略是否依旧成立?4–12 周
小资金实盘真实成交记录滑点、容量、执行是否符合预期?4 周起
规模化加资金/加品种容量上限在哪?收益是否随规模衰减?持续

关键认知:每个阶段都可能回流到前一个阶段。小资金实盘发现滑点吃掉 80% 收益,就要回到执行层面重做;这不可怕,可怕的是跳过阶段直接上大资金。


二、策略类型全景

策略原理常见标的难度容量
CTA 趋势跟踪跟随价格趋势,截断亏损、让利润奔跑商品期货、股指、加密货币★★
均值回归价格偏离均值后回归,赚反转的钱股票、ETF、加密现货★★
统计套利相关标的价差偏离后回归,市场中性股票对、ETF 篮子★★★
跨期/跨品种套利同品种不同月份、或相关品种间的价差商品期货★★★
期现套利期货与现货价差收敛,赚基差股指期货+ETF、商品期货+现货★★★
做市同时挂买挂卖,赚买卖价差与返佣期权、加密合约、活跃股票★★★★小(拼速度)
高频 T0日内多次进出,赚微价差/盘口波动可 T+0 的品种(期货、加密、港股)★★★★★极小
事件驱动基于公告、宏观、新闻、链上数据交易股票、加密★★★

2.1 CTA 趋势跟踪

原理:趋势一旦形成会持续一段时间,顺势开仓、用止损截断亏损、让利润奔跑。典型信号是均线交叉、唐奇安通道突破(Donchian)、动量突破。

  • 常见标的:商品期货(螺纹、铁矿、PTA)、股指期货、BTC 等大波动品种。
  • 难度:★★。逻辑简单,但胜率低(约 30–40%)、盈亏比高,考验的是回撤期能否坚持执行。
  • 容量:大。以中低频为主,单策略可容纳千万级到亿级资金。

2.2 均值回归

原理:价格短时间偏离均值(如均线、布林带)后大概率回归。典型信号是布林带突破反向、RSI 超买超卖。

  • 常见标的:流动性好的股票、ETF、加密现货。
  • 难度:★★。难在「偏离多久回归」不可控,横盘震荡行情好做,单边行情里是接飞刀。
  • 容量:中。交易频率高于 CTA,单笔容量有限,靠频次取胜。

2.3 统计套利

原理:找到协整关系的资产对(如两个走势高度相关的股票),价差扩大到阈值时做空高的、做多低的,价差收敛后平仓。持有期通常数天到数周,市场中性(几乎不承担大盘涨跌风险)。

  • 常见标的:同行业股票对、ETF 与成分股、永续合约与期货。
  • 难度:★★★。需要扎实的统计功底(协整检验、卡尔曼滤波),且价差关系会失效,需要动态监控。
  • 容量:中。中性策略容量与市场上可配对的标的数量强相关。

2.4 跨期/跨品种套利

原理:跨期——同一品种不同到期月合约(如螺纹 01 与 05)价差偏离合理区间时,买低卖高,等价差回归。跨品种——相关品种(如豆粕与豆油、热卷与螺纹)强弱关系错位时做强弱对冲

  • 常见标的:商品期货为主。
  • 难度:★★★。价差的「合理区间」随供需、库存、持仓结构变化,静态区间容易失效。
  • 容量:中。

2.5 期现套利

原理:期货价格高于现货(正基差)时,买入现货/ETF、做空期货,交割或基差收敛时平仓,赚取确定性较高的价差。股指期现套利(IF/IC + ETF)是最经典版本。

  • 常见标的:股指期货+现货 ETF、商品期货+现货仓单。
  • 难度:★★★。资金占用大、要处理分红除息、期现标的跟踪误差等细节。
  • 容量:大,但机会出现频率低、单次收益薄。

2.6 做市

原理:同时在买卖两侧挂单,吃对手单赚买卖价差,配合交易所做市返佣(maker 手续费减免甚至返点)。核心是管理库存风险——报价被吃掉后不能囤方向性敞口。

  • 常见标的:期权(最经典)、加密合约、不活跃股票。
  • 难度:★★★★。拼的是报价模型、库存管理和低延迟,散户和初创团队很难与头部做市商竞争。
  • 容量:小。单标的容量有限,靠多标的摊开。

2.7 高频 T0

原理:日内高频进出,赚微小的盘口价差、队列优势或大单拆分带来的冲击成本收益。持仓时间以秒到分钟计,收益高度依赖延迟(毫秒甚至微秒级)。

  • 常见标的:期货、加密合约、港股(T+0 且可做空)。
  • 难度:★★★★★。硬件(FPGA、同机房托管)、网络、系统调优缺一不可。
  • 容量:极小,且头部效应极端。

2.8 事件驱动

原理:基于财报、分红、宏观数据、政策、链上大额转账等事件预判价格反应。可以人工触发(事件发生后人工确认),也可以全自动化(数据流触发信号)。

  • 常见标的:股票(财报季)、加密(监管/链上事件)、商品(库存/天气报告)。
  • 难度:★★★。难点在数据获取与清洗,事件类数据的噪音极大。
  • 容量:大。事件驱动+中低频,是容量最大的类别之一。

三、因子体系

因子是策略的「原料」:一个可计算的、对标的未来收益有预测能力的历史数据特征。

3.1 常见因子类别

类别代表因子逻辑
动量因子N 日收益率、移动平均乖离强者恒强,追涨杀跌的机构化表达
反转因子N 日累计涨幅的相反数短期涨多了会回调,跌多了会反弹
波动率因子已实现波动率、ATR、BVOL低波品种往往有风险溢价
量价因子成交量放大倍数、量价背离、换手率量在价先,量价配合确认信号
期限结构因子期货远近月价差(升水/贴水)展期收益与市场情绪
另类因子舆情情绪、资金流、链上指标信息不对称的补偿

3.2 因子研究与评价指标

因子研究的标准流程:提出假设 → 计算因子 → 分层回测 → 评价 → 合成 → 实盘跟踪

核心评价指标:

指标定义经验参考
IC(信息系数)因子值与下一期收益的秩相关系数(Spearman),IC
IR(信息比率)IC 均值 / IC 标准差,衡量因子稳定性IR > 0.3 较好,> 0.5 优秀
分层单调性按因子分 5–10 层,各层收益是否单调排列单调则因子逻辑自洽
换手率因子调仓比例过高则交易成本吃掉 alpha
容量因子在全市场按流动性排序可容纳的资金越小众的因子容量越小

一个因子的「死亡率」很高:初筛 100 个因子,经过 IC 稳定性、分层单调性、扣除成本、样本外检验后,能留下的通常不超过 5 个。


四、回测框架选型

框架语言优势劣势适合谁
vn.pyPython国内生态成熟,内置 CTA/套利/期权模板,直接对接国内期货柜台学习曲线陡,部分功能绑定自家架构国内期货/股票团队
backtraderPython轻量易上手,文档与社区资料多,回测->模拟盘切换简单性能一般(纯 Python 循环),大数据量回测慢个人/小团队做中低频
自研框架任意完全可控,可按需做撮合模拟、并行回测、参数扫描开发周期长,要自造轮子且易埋 bug有工程实力的团队,且计划规模化
其他Python/Rvectorbt、QuantConnect(云端)、Zipline、qlib(微软)各有特定取向视需求选用

选型建议:

  • 起步阶段用 backtrader 或 vn.py 快速验证想法,不要一上来就自研
  • 自研的前提是:已有 backtest 引擎瓶颈(如参数扫描太慢、撮合模型不真实)、团队有 2 人以上的专职回测工程资源。
  • 回测引擎的撮合模型比框架名气更重要:用「下一根 K 线开盘价撮合」还是「盘口逐笔撮合」,结果差异巨大。

五、回测核心指标

指标公式/定义说明
年化收益率(期末权益/期初权益)^(252/交易天数) − 1复利口径,回测期短于一年时外推失真
夏普比率(年化收益 − 无风险利率) / 年化波动率每承担一单位波动获得多少超额收益,>1 良好,>2 优秀
最大回撤任意时点从净值峰值的最大跌幅:max(峰点净值 − 谷点净值) / 峰点净值衡量最坏情况亏多少,比收益更值得关注
卡玛比率年化收益 / 最大回撤收益与「最痛时刻」的性价比,>1 良好
胜率盈利交易笔数 / 总交易笔数高胜率≠好策略,要与盈亏比合看
盈亏比平均盈利 / 平均亏损趋势策略通常胜率低、盈亏比高
换手率交易量 / 持仓量(或成交金额/账户权益)决定手续费与滑点成本占比
收益/回撤曲线时间序列可视化看回撤发生在什么时候、和什么市场状态有关

看一份回测报告的顺序:先看最大回撤回撤持续时长,再看年化收益和夏普,最后看胜率盈亏比。一个年化 100% 但最大回撤 60% 的策略,实盘里绝大多数人会中途放弃。


六、回测陷阱清单

陷阱通俗解释具体例子
未来函数回测用了当时还拿不到的数据用「当天收盘后才公布的」成交量数据参与当天收盘价下单
前视偏差用全样本统计出的参数去回测每一个历史点用 2015–2025 全部数据算出的最佳均线周期,回测 2018 年行情
幸存者偏差只保留现在还活着的标的股票池只放当前成分股,退市股和当年暴雷股全被剔除,收益虚高
过拟合参数被调到恰好拟合历史噪音策略有 12 个参数,逐个网格搜索到「历史完美」,实盘一塌糊涂

💀 回测收益不等于实盘收益

回测收益 ≠ 实盘收益。 回测是在已知的历史上重复行走,天然低估滑点、高估容量、遗漏各种现实约束;经过参数优化的策略还叠加了过拟合风险。经验值:模拟盘年化 30% 的策略,扣掉真实滑点手续费后大概率只剩 10–20%;如果模拟盘收益本来就只有 10%,别上实盘。

| 未计手续费滑点 | 忽略或低估交易成本 | 高频策略按 0 手续费回测,实盘手续费+滑点吃掉全部利润 | | 流动性不足假设 | 回测假设想买多少都能成交 | 日成交量 10 万的股票,回测里每天买 5 万手 | | 区间偏见 | 回测区间恰好是策略的「好天气」 | 只在 2020–2021 牛市回测趋势策略,忽略 2018 和 2022 的震荡熊市 | | 时间/时区错误 | 数据对齐出错 | 用未复权价格、不同时区的 K 线混用 | | 涨跌停/T+1 忽略 | 回测可以完成实盘根本做不到的动作 | A 股策略当日买当日卖,忽略 T+1 限制 |

自查方法:把每个交易日的信号日志打印出来,随机抽几天人工核对「当时真的能拿到这些数据吗?当时真的能以这个价格成交吗?」


七、参数优化与过拟合防范

7.1 三种常见做法

做法说明风险
网格搜索遍历参数组合找收益最高点高(基本必过拟合)
样本外测试前 70% 调参,后 30% 冻结验证中(样本外只验证一次,需足够长)
滚动窗口(Walk-forward)滚动:前窗调参→后窗验证→窗口前移,全程用「过去数据」决策低(最接近实盘节奏)

7.2 降低过拟合的实操建议

  • 减少参数数量:参数每多一个,过拟合风险指数上升;能用 2 个参数解决的策略,别用 5 个。

⚠️ 样本外测试只能测一次

样本外测试不重复——样本外区间只能测一次,反复「测完再调」等于把样本外变成样本内。 参数必须「平坦」:最优参数周围的表现应是缓慢变化的;如果参数从 19 变到 21 绩效暴跌,说明是噪音拟合。

  • 参数必须「平坦」:最优参数周围的表现应是缓慢变化的;如果参数从 19 变到 21 绩效暴跌,说明是噪音拟合。
  • 样本外测试不重复:样本外区间只能测一次,反复「测完再调」等于把样本外变成样本内。
  • 约束 + 惩罚:把收益约束在合理范围(如年化收益超 100% 的因子直接标记可疑),并对高换手、极端持仓惩罚。
  • 多区间、多品种验证:2015、2018、2022 的熊市样本必须有;同一逻辑在不同品种上都成立,可信度大增。

八、模拟盘与实盘差距

维度模拟盘假设实盘现实对策
滑点常按固定点数或 0 计算冲击成本随单量非线性上升按「盘口深度 × 单量」建模冲击成本
容量无限制单笔过大导致价格移动用 ATS(成交量参与率)约束单笔量
延迟立即成交网络+柜台+行情延迟 10ms–1s记录信号时间与成交时间差
撮合差异简化撮合模型排队、部分成交、涨跌停买不进用逐笔/盘口撮合模型重放
情绪连亏时不敢开仓、盈利时放大仓位纪律 + 自动化 + 风控前置
数据完整无噪音断流、错价、复权变化数据校验与断流告警
成本手续费固定交易所返佣/大额折扣存在,真实成本更复杂按真实账户费率回填

经验值:模拟盘年化 30% 的策略,扣掉真实滑点手续费后大概率只剩 10–20%;如果模拟盘收益本来就只有 10%,别上实盘。

💀 模拟盘年化 30% 扣掉真实滑点手续费大概率只剩 10-20%

模拟盘年化 30% 的策略,扣掉真实滑点手续费后大概率只剩 10–20%;如果模拟盘收益本来就只有 10%,别上实盘。 模拟盘到实盘的鸿沟不在策略本身,而在滑点、容量、延迟、撮合差异、情绪——这五件事任何一件做不到位都会吃掉你的收益。


九、执行算法

策略决定「买什么、买多少」,执行算法决定「怎么买」。

算法原理适用场景
TWAP(时间加权平均价)将大单按时间均匀拆分无显著日内规律、要求低调的日常建仓
VWAP(成交量加权平均价)按历史成交量分布拆分单量流动性分布不均的品种(如股票开盘/收盘放量)
冰山单(Iceberg)只暴露一部分订单量,剩余隐藏流动性薄、不想暴露意图的品种
IS / 到达价格(Implementation Shortfall)在冲击成本与机会成本间做最优化,尽快成交大单、事件驱动、对时效敏感的场景

执行质量量化:把「实际成交均价」与「信号时刻的 VWAP」比较,偏离部分就是执行成本;以这个差值(slippage capture)作为执行算法的考核指标。


十、实盘监控

10.1 策略健康度

指标告警阈值(示例)含义
持仓偏离偏离目标仓位 > 20%撤单/失败过多导致仓位漂移
单笔滑点连续 N 笔滑点超基准 2 倍流动性突变或算法失效
策略净值偏离回测基准连续 2 周偏离 > 3 个标准差市场结构变化或实现有 bug
成交率低于 80%挂单策略失效
订单超时超过 X 秒未回报网络或柜台异常

10.2 日度复盘

  • 自动生成每日报告:策略净值、收益归因(因子贡献拆分)、成交明细、滑点统计、异常事件列表。
  • 人工复核:回看当天最有争议的 3 笔交易——「当时信号对不对?执行有没有问题?」

10.3 异常告警

  • 分层告警:微信/短信(严重)→ 邮件/IM 群(一般)→ 周报(例行)。
  • 必须有的硬告警:资金异常、持仓与风控规则冲突、连续 N 笔撤单、行情断流、程序崩溃。
  • 告警要带上下文(策略名、品种、数值、时间),否则半夜醒来看不懂告警内容。

十一、回测平台与研究的工程化

  • 参数与结果版本管理:每个回测记录参数、数据版本、代码版本,用 Git 与实验管理表(或 MLflow 类工具)保证「结果可复现」。
  • 并行回测:参数扫描天然可并行,多核/集群并行是自研平台的标配能力。
  • 数据版本化:行情数据改了重算会导致回测结果漂移,数据打版本号,回测结果与数据版本绑定。
  • 信号日志:实盘信号全量落库,事后复盘「策略没发信号 vs 系统没执行」一目了然。

⚠️ 风险提示

回测收益 ≠ 实盘收益。回测是在已知的历史上重复行走,天然低估滑点、高估容量、遗漏各种现实约束;经过参数优化的策略还叠加了过拟合风险。量化交易依然面临策略失效、流动性枯竭、系统故障、极端行情等多重风险,**杠杆**放大收益的同时同比例放大亏损。建议:模拟盘至少 3 个月再上小资金实盘;小资金实盘稳定 3 个月以上再考虑加资金;任何策略上线前都要有「停止条件」(如回撤达到 X% 即停用该策略)。本文所有策略描述仅用于学习研究,不构成任何投资建议。

相关阅读

仅供学习与研究,不构成任何投资建议。市场有风险,投资需谨慎。