作为参照,标普500指数长期夏普比率约为0.4至0.5,伯克希尔·哈撒韦长期夏普比率约为0.75。夏普比率超过1通常已经具备一定质量,超过1.5或2可以进入进一步审查范围。超过3,则需要先寻找异常来源。
选择量化交易策略、量化选股系统、自动交易程序或第三方策略供应商时,不能只看累计收益率。需要同时审查数据、逻辑、回测、风险、交易成本、执行环境和参数稳定性。
量化交易不是一条收益曲线。它是一组输入数据、决策规则、订单约束和资金管理参数的组合。任何一个环节失真,最终结果都会失真。
先确认选择的对象是什么
“量化交易”不是单一产品。
有些对象是公开策略。可以阅读规则,复现回测。
有些对象是交易软件。软件提供数据、接口和执行功能,但不提供策略本身。
有些对象是策略信号。系统输出买入、卖出或调仓指令,实际成交由使用者完成。
还有些对象是全自动交易系统。系统连接券商、期货公司或交易所接口,自动完成信号计算、下单、撤单和风险控制。
这些对象的审查重点不同。把软件功能当成策略能力,把历史信号当成实盘收益,都会造成判断错误。
可以先按以下维度拆分:
| 对象 | 核心审查内容 | 常见误判 |
|---|---|---|
| 量化策略 | 交易逻辑、数据来源、参数、适用市场 | 只看历史收益 |
| 回测系统 | 撮合模型、复权方式、滑点、手续费、数据完整性 | 把回测结果当作实盘结果 |
| 自动交易程序 | 接口稳定性、订单状态管理、断线恢复、风控 | 只检查信号,不检查执行 |
| 第三方策略 | 资金曲线、账户记录、策略透明度、费用结构 | 把营销页面当作审计材料 |
| 量化选股模型 | 因子定义、样本外表现、换手率、容量 | 忽略因子拥挤和交易成本 |
| 期货量化系统 | 杠杆、保证金、合约切换、夜盘、强平规则 | 只观察收益率,不观察爆仓路径 |
第一步不是问收益率是多少。
第一步是确认系统到底提供什么。
如果对方无法清楚说明策略属于趋势跟踪、均值回归、统计套利、因子投资、跨品种套利还是机器学习模型,后续指标没有解释基础。
看收益。更要看收益的生成方式
累计收益率只有一个维度。它无法说明收益来自哪里。
同样的年化收益,可能来自完全不同的风险结构:
- 高频换手,依赖极低延迟和低滑点;
- 长周期趋势,依赖少数几个大盈利交易;
- 均值回归,依赖价格持续回到历史分布;
- 杠杆放大,依赖保证金长期稳定;
- 期权卖方,依赖大量小盈利覆盖少数极端亏损;
- 因子暴露,依赖某个风险溢价持续存在。
这些结构不能用同一个标准简单比较。
夏普比率不能单独使用
夏普比率衡量单位风险下的超额收益。计算时通常使用策略收益与无风险收益之间的差值,再除以收益波动率。
它适合做初筛。不适合做结论。
夏普比率存在几个结构性问题。
第一,收益分布不一定接近正态分布。
股票、期货、期权和高频策略经常具有厚尾分布。极端收益的发生概率高于正态分布假设。此时,标准差不能完整描述风险。
第二,收益序列可能存在自相关。
部分高频策略、平滑估值策略和低频估值策略会产生收益平滑。波动率被压低,夏普比率被抬高。收益曲线看起来稳定,不代表真实风险消失。
第三,夏普比率对时间区间敏感。
只选择有利周期,指标会显著改善。趋势策略在单边行情中通常表现较好。在震荡行情中可能反复止损。均值回归策略则相反。
第四,夏普比率无法直接表达流动性风险和极端亏损。
两个策略可能拥有相同的夏普比率。一个最大回撤为12%。另一个最大回撤为28%,但平时波动更小。两者的资金承受要求不同。
因此,使用夏普比率时,至少同时查看:
- 计算区间;
- 收益频率;
- 是否扣除手续费;
- 是否包含滑点;
- 是否使用杠杆;
- 是否采用平滑价格;
- 样本内与样本外是否分开;
- 极端交易日对结果的贡献;
- 是否存在收益集中在少数交易上的情况。
夏普比率是筛选器,不是证明书。高数值只能触发审计,不能替代审计。
最大回撤决定资金能否继续运行
最大回撤是净值从历史最高点下降到后续最低点的最大跌幅。
它比累计收益更接近交易系统的生存约束。
历史最大回撤控制在20%以内,通常更容易被资金管理系统承受。超过30%,风险等级会明显提高。对于使用杠杆的期货系统,实际可承受回撤可能低于回测显示的数值。
需要检查的不只是最大回撤数值,还包括回撤的时间结构:
1. 回撤发生了几次。
一次极端回撤和连续多次小回撤,对执行纪律的影响不同。
2. 回撤持续了多久。
回撤时间越长,资金占用越久。策略可能在恢复前就被停止。
3. 恢复用了多长时间。
从高点回到高点的时间,通常比单次下跌幅度更能说明策略的资金效率。
4. 回撤是否集中在某种行情。
如果所有亏损都来自震荡、跳空或流动性收缩,系统暴露的风险来源比较明确。
5. 回撤是否经过杠杆放大。
低波动不等于低风险。仓位放大后,普通波动也可能触发强平。
6. 回测是否包含未成交订单。
如果系统假设所有信号都能按照理论价格成交,回撤通常会被低估。
可以把净值曲线按峰值分段。不要只读取最终最大回撤。观察每个周期的峰值、谷值、恢复时间和交易数量。这样才能判断回撤是随机波动,还是策略逻辑已经失效。
获利因子要和胜率、盈亏比一起看
获利因子等于总盈利金额除以总亏损金额。
获利因子大于1,表示历史上总盈利超过总亏损。低于1,表示策略长期处于负收益结构。超过1.5,通常说明盈亏结构较为稳定。
但获利因子仍然不能独立判断策略质量。
例如:
- 胜率很高,但单次亏损远大于单次盈利;
- 胜率很低,但少数盈利交易覆盖全部亏损;
- 盈利集中在一两个异常行情阶段;
- 大量交易金额很小,少数交易决定最终结果;
- 回测没有计入手续费和滑点。
需要同时拆解:
- 胜率;
- 平均盈利;
- 平均亏损;
- 最大单笔盈利;
- 最大单笔亏损;
- 连续盈利次数;
- 连续亏损次数;
- 盈利交易占总利润的比例;
- 前10笔交易对总收益的贡献;
- 多空交易的收益差异;
- 不同标的之间的收益分布。
一个策略如果总收益主要来自少数几笔交易,不能直接判定为坏策略。但必须明确它属于右偏收益结构。此类系统依赖尾部盈利。回撤恢复时间通常更长。资金规模也不能随意扩大。
检查回测。先拆穿不真实的成交假设
回测不是录像。
它是根据历史数据和交易规则生成的模拟路径。模拟路径由数据频率、撮合方式、订单类型、交易成本和资金约束共同决定。
如果这些条件没有被明确写入回测,结果就不完整。
数据频率决定结果的上限
日线回测只能知道一天的开盘、最高、最低和收盘。无法知道盘中价格的真实顺序。
如果同一根日线同时触发止损和止盈,系统必须定义哪个订单先成交。若没有定义,回测引擎可能按照固定规则处理。这种固定规则未必符合真实交易。
分钟级策略需要更细的数据。高频策略需要逐笔成交、盘口深度、撤单行为和时间戳同步。没有这些数据,就不能把结果称为高精度回测。
需要检查:
- 数据是否包含停牌、缺失和异常价格;
- 复权方式是否适合策略;
- 合约换月是否连续;
- 退市标的是否保留;
- 股票池是否存在幸存者偏差;
- 指数成分股是否使用历史时点成分;
- 财务数据是否按实际发布日期进入系统;
- 行情时间与财务时间是否发生错位;
- 数据供应商是否更改历史数据;
- 节假日和交易时段是否处理正确。
量化选股系统尤其容易出现股票池偏差。只用当前仍然存在的股票回测,会把退市样本排除。结果通常比真实历史选择更好。
前视偏差会直接污染结果
前视偏差是指策略在某个历史时点使用了当时尚未公开或尚未形成的信息。
常见情况包括:
- 使用当天收盘价计算信号,并假设当天收盘成交;
- 使用财报公布后的数据回填到财报期初;
- 用未来成分股构建历史指数;
- 使用完整历史区间计算标准化参数;
- 用后验修正后的数据代替实时可获得数据;
- 用未来最高价或最低价判断止损路径;
- 先看到整根K线,再在这根K线中选择最有利的成交点。
处理方式不复杂。将数据切成时间序列。每个时点只能读取此前已经可获得的信息。
在程序层面,特征、标签和成交价格必须明确错位。信号生成时间、订单提交时间、订单成交时间必须分别记录。不能把三个时间点合并成一个时间戳。
数据窥视不是只有一种形式
数据窥视不仅是直接读取未来数据。
它还包括反复试验后选择最优结果。
例如,研究者测试了数百组移动平均周期、止损比例和过滤条件,最后只展示表现最好的一组。即使每一组测试都没有直接读取未来数据,最终选择过程仍然使用了样本外信息。
这种结果会产生选择偏差。
需要保存完整实验记录:
- 测试过多少组参数;
- 每组参数的收益、回撤和交易数量;
- 参数选择依据是什么;
- 样本外区间是否在选择前被锁定;
- 是否存在中途更改规则;
- 是否删除表现较差的交易品种;
- 是否根据回测结果调整股票池;
- 是否重复使用同一段历史数据。
如果无法获得这些信息,策略的有效性只能按照较低可信度处理。
过拟合通常表现为参数尖峰
过拟合的核心不是参数多,而是参数对历史噪声过度敏感。
假设移动平均线周期设为20时,策略表现优秀。周期改为19或21后,夏普比率和净值大幅下降。这是危险信号。
稳定策略通常存在一个相对宽的参数高原。参数在一定范围内变化,结果仍然接近。参数高原不代表策略一定有效,但至少说明策略没有完全依赖某一个精确数值。
可以制作参数敏感性矩阵。横轴设置短周期参数。纵轴设置长周期参数。每个单元格记录夏普比率、最大回撤、获利因子和交易数量。
观察重点不是最高点。
观察以下区域是否同时稳定:
- 收益为正;
- 夏普比率没有剧烈波动;
- 最大回撤处于可接受范围;
- 获利因子高于1;
- 交易数量足够;
- 多个相邻参数组合表现接近。
如果只有一个小区域异常突出,其余区域快速恶化,优先怀疑过拟合。
可迁移的策略通常不是参数最漂亮,而是参数改变后仍然不会立即崩溃。
把样本外测试做成独立流程
完整历史数据不能全部用于调参。
至少需要划分:
- 样本内区间:用于构建规则和初始参数;
- 验证区间:用于比较候选模型;
- 样本外区间:用于最终检验;
- 滚动测试区间:用于观察模型在不同时间段的重新适应能力。
样本外数据必须在策略定型前保持隔离。否则,它不再是样本外数据。
滚动回测比单次切分更接近实际
单次划分容易受到某个时间段的偶然影响。
滚动回测可以模拟实际运行过程:
1. 使用过去一段时间训练或估计参数;
2. 在下一段时间执行;
3. 时间窗口向前移动;
4. 重新估计参数;
5. 重复执行。
这样可以观察策略是否依赖某个固定市场阶段。
对于机器学习量化模型,还需要防止标签泄漏。训练样本、验证样本和测试样本必须按时间排列。随机打乱后再切分,可能把未来样本分配到训练集。模型会获得不应获得的信息。
机器学习模型还要检查:
- 特征是否在交易时点可获得;
- 缺失值填充是否使用未来统计量;
- 标准化均值和方差是否只由训练集计算;
- 标签窗口是否与样本切分重叠;
- 模型复杂度是否超过样本量;
- 训练结果是否依赖某个随机种子;
- 不同市场、行业和时间段是否仍然有效。
神经网络、梯度提升树和其他复杂模型都可能产生高拟合。模型复杂度越高,解释难度越大。解释难度越大,审计成本越高。
交易成本决定回测收益能否落地
未经手续费、滑点和流动性冲击处理的回测,只能说明理论信号曾经存在。
不能说明交易可执行。
手续费不是固定小数点问题
交易成本包括多个部分:
- 佣金;
- 交易所费用;
- 印花税或相关税费;
- 期货手续费;
- 资金利息;
- 融资融券成本;
- 借券费用;
- 展期成本;
- 数据和交易接口费用;
- 资金划转和托管成本。
策略换手率越高,成本对结果的影响越大。
低频趋势策略可能主要受滑点和跳空影响。高频均值回归策略可能在扣除成本后完全失去正收益。期货跨期套利还要加入合约价差、换月、保证金和流动性变化。
滑点需要建模,不是随意填写
滑点与以下变量有关:
- 订单方向;
- 订单规模;
- 买卖价差;
- 盘口深度;
- 波动率;
- 交易时段;
- 标的流动性;
- 市场冲击;
- 订单类型;
- 信号到下单之间的延迟。
固定滑点模型可以作为初筛。不能作为高频系统的最终证明。
如果策略收益的一半来自每次极小的价格优势,那么滑点参数改变一点,结果就可能从盈利变为亏损。此时需要进行成本压力测试。
可以分别测试:
- 基准手续费与滑点;
- 成本增加50%;
- 成本增加100%;
- 成交量减少;
- 订单延迟一个或多个周期;
- 只成交部分订单;
- 极端行情中滑点扩大;
- 开盘、收盘和夜盘使用不同成本。
如果成本稍微上升,净值曲线就大幅恶化,说明策略的边际优势很薄。
流动性决定策略容量
回测金额很小,不代表资金规模可以无限增加。
策略容量取决于:
- 标的日均成交额;
- 盘口深度;
- 单笔订单占市场成交量的比例;
- 同类策略是否同时交易;
- 进出场是否集中;
- 极端行情中的可成交数量;
- 资金规模扩大后对价格的冲击。
股票策略需要观察单只股票的成交额和换手率。期货策略需要观察主力合约、近月合约、夜盘流动性和涨跌停板约束。
一个在小资金下有效的策略,规模扩大后可能出现三种变化:
1. 成交价格恶化;
2. 订单无法完整成交;
3. 交易行为本身改变市场价格。
因此,策略报告中应说明资金规模、单笔订单规模、成交比例和容量假设。没有这些信息,收益率不具备完整含义。
检查策略逻辑。每个规则都要能被执行
一套可审查的量化策略,应当把决策过程写成明确规则。
至少需要知道:
- 交易标的是什么;
- 数据周期是什么;
- 信号何时生成;
- 何时提交订单;
- 使用市价还是限价;
- 订单未成交如何处理;
- 止损和止盈如何执行;
- 是否允许加仓;
- 是否允许反向开仓;
- 资金如何分配;
- 单一标的最大仓位是多少;
- 组合总杠杆是多少;
- 断线后如何恢复;
- 交易所拒单后如何处理;
- 系统如何防止重复下单。
如果规则只能用一句含糊的描述概括,例如“根据多因子判断行情方向”,这不是策略说明。它只是营销摘要。
趋势跟踪要检查信号滞后
趋势跟踪通常使用移动平均线、突破、波动率过滤或价格通道。
它的收益来源通常集中在少数趋势段。震荡阶段会连续止损。选择时应检查:
- 趋势周期是否过度优化;
- 突破价格采用收盘价还是盘中价格;
- 信号产生后何时成交;
- 跳空是否导致实际入场价格偏离;
- 交易成本是否覆盖频繁止损;
- 不同品种之间是否存在高度相关;
- 盈利是否主要来自单一品种或单一年份。
趋势策略的高收益年份不能直接外推。市场长期没有趋势时,回撤可能持续较长时间。
均值回归要检查尾部风险
均值回归依赖价格偏离后回到某个统计中心。
这个统计中心可能是移动平均线、价差均值、协整关系或历史分布的中位数。关键问题是:价格偏离是否只是暂时现象。
需要检查:
- 均值窗口是否稳定;
- 偏离阈值如何确定;
- 极端行情是否会持续偏离;
- 是否存在止损;
- 是否使用摊平或加仓;
- 单方向仓位是否存在上限;
- 价差关系是否经过结构变化检验;
- 回测中是否包含跳空和流动性收缩。
均值回归策略常见问题是小盈利很多,大亏损很少但足以覆盖前期利润。仅看胜率会得出错误结论。
套利交易要检查关系是否真实存在
统计套利不是无风险套利。
配对交易、跨期套利和跨品种套利都依赖价差关系。关系可能暂时存在,也可能在制度、行业、利率、交割规则或资金结构变化后消失。
检查内容包括:
- 价差是否具有稳定的统计性质;
- 协整关系是否在多个时间段成立;
- 价差回归速度是否发生变化;
- 开仓和退出条件是否对参数敏感;
- 两条腿是否都能成交;
- 对冲比例是否需要动态调整;
- 保证金和资金占用是否计入;
- 交易所规则变化是否影响套利空间;
- 两个市场的交易时间是否一致;
- 一条腿成交而另一条腿未成交时如何处理。
如果套利收益依赖极小价差,低延迟和订单管理就是策略的一部分。不能把执行程序与交易逻辑分开评价。
因子投资要检查因子定义与换手
常见因子包括价值、质量、动量、规模、波动率和流动性。
量化选股模型需要明确因子的计算方式。不能只使用因子名称。
例如,同样叫动量,可以使用过去一段时间的累计收益,也可以排除最近一个月的反转影响。不同定义会形成不同策略。
需要检查:
- 因子数据的发布日期;
- 财务指标使用报告期还是公告期;
- 极端值如何处理;
- 是否进行行业中性化;
- 是否进行市值中性化;
- 缺失数据如何填充;
- 调仓频率;
- 股票池范围;
- 组合权重;
- 单只股票权重上限;
- 换手率和交易成本;
- 因子收益是否集中在少数行业。
因子回测还要注意因子拥挤。一个历史上有效的因子,可能因为大量资金使用而出现收益下降。历史平均收益不是未来保证。
查看实盘记录。回测和账户必须分开
第三方策略提供的实盘曲线,至少要区分三种情况:
1. 模拟账户;
2. 纸面交易;
3. 真实账户。
三者不能混用。
真实账户记录需要关注:
- 是否有完整净值曲线;
- 是否包含所有交易日;
- 是否能对应成交明细;
- 是否扣除全部费用;
- 是否存在资金转入和转出;
- 是否发生过策略中断;
- 是否出现人工干预;
- 是否更换过参数;
- 是否更换过交易标的;
- 是否存在多个账户只展示最好的一个;
- 是否存在回测与实盘并行但口径不同。
如果只提供一张收益截图,无法完成审查。
实盘偏差需要逐项解释
回测净值和实盘净值出现偏差并不一定说明策略失效。
合理偏差可能来自:
- 实际成交价格不同;
- 部分订单没有成交;
- 交易成本高于模型假设;
- 数据延迟;
- 交易接口中断;
- 交易规则限制;
- 资金规模不同;
- 实盘仓位没有完全复制;
- 风控系统主动降低仓位。
但偏差必须可解释。
可以计算以下指标:
- 回测收益与实盘收益的差值;
- 回测回撤与实盘回撤的差值;
- 信号一致率;
- 订单成交率;
- 平均成交延迟;
- 平均滑点;
- 实际换手率;
- 交易成本占毛利润比例;
- 实盘与回测的相关性。
如果实盘收益长期低于回测,且无法定位原因,应降低对策略的信任等级。
检查自动交易系统的工程质量
量化策略正确,不代表自动交易系统可靠。
实盘系统至少包含数据层、策略层、组合层、执行层、风控层和监控层。任何一层发生错误,都可能造成非策略性亏损。
数据层
数据层负责接收行情、整理时间戳、处理缺失值和生成特征。
需要确认:
- 行情断流是否检测;
- 时间戳是否统一;
- 重复数据如何处理;
- 异常价格是否过滤;
- 交易日历是否更新;
- 合约到期和换月是否自动识别;
- 复权数据与实时数据是否使用不同口径;
- 数据恢复后是否补齐缺口。
实时数据断流时,系统不能继续使用旧价格生成新订单。否则,策略会在错误状态下运行。
策略层
策略层负责生成信号。
需要记录:
- 输入特征;
- 计算时间;
- 信号值;
- 信号版本;
- 参数版本;
- 触发原因;
- 是否被风控拦截。
每一次下单都应能追溯到具体信号。没有日志,就无法复盘。
执行层
执行层负责把目标仓位转换为订单。
需要处理:
- 订单提交;
- 订单确认;
- 部分成交;
- 撤单;
- 拒单;
- 重复回报;
- 网络超时;
- 订单状态不同步;
- 账户实际持仓与系统记录不一致。
最危险的错误不是没有信号,而是系统重复下单。
如果下单请求超时,程序不能直接假定订单失败。订单可能已经送达交易接口,只是回报延迟。此时再次提交,可能造成重复仓位。
风控层
风控规则应独立于策略逻辑。
至少设置:
- 单笔最大下单量;
- 单品种最大仓位;
- 组合最大杠杆;
- 单日最大亏损;
- 最大回撤触发阈值;
- 单品种异常波动限制;
- 账户保证金警戒线;
- 数据断流停止交易;
- 接口异常停止交易;
- 连续拒单停止交易;
- 净持仓偏离目标时的处理方式。
风控不能只依赖止损。
止损订单在跳空、涨跌停、流动性枯竭或接口异常时可能无法按预期成交。组合级别的仓位限制更基础。先限制损失规模,再处理交易方向。
监控层
自动系统必须有运行状态监控。
建议监控:
- 行情最后更新时间;
- 策略进程状态;
- 账户净值;
- 实际仓位;
- 目标仓位;
- 未成交订单;
- 订单延迟;
- 实际滑点;
- 保证金比例;
- 接口连接状态;
- 系统日志错误;
- 日内亏损;
- 当前回撤。
监控不是附加功能。它是交易系统的一部分。
用一套审查顺序减少误判
选择量化交易策略时,最有效的方式不是同时看所有资料。应该按风险顺序审查。
第一步,确认策略对象和交易市场。
明确是股票、期货、期权、外汇、数字资产,还是多市场组合。明确使用现货、融资、保证金或杠杆。不同市场的成本和强平机制不同。
第二步,要求完整收益曲线。
不要只看最终收益。要求按日或按月的净值、回撤、交易记录和费用口径。曲线必须能够说明收益发生的时间。
第三步,拆解收益来源。
检查收益来自哪些标的、哪些方向、哪些时间段和哪些交易。确认是否存在单一行情依赖。
第四步,检查回测口径。
确认数据来源、数据时点、复权方式、合约连续方式、成交价、手续费、滑点和流动性限制。
第五步,做参数敏感性分析。
观察参数高原。拒绝只展示最优参数的结果。
第六步,进行样本外和滚动测试。
样本外数据必须独立。滚动测试需要覆盖不同市场阶段。
第七步,加入成本压力测试。
至少测试手续费、滑点、延迟和成交比例变化。高频策略还需要测试盘口深度和部分成交。
第八步,检查实盘记录。
确认账户真实性、资金进出、人工干预、策略版本和回测实盘偏差。
第九步,检查工程系统。
确认断线恢复、订单状态管理、重复下单保护、风控和日志是否存在。
第十步,确定资金上限。
即使策略通过前九步,也不能直接满仓运行。先使用可承受损失的资金,观察实盘偏差和执行稳定性。资金规模需要随着成交质量和风险数据逐步调整。
一张表判断主要风险
| 检查项 | 可接受表现 | 高风险表现 |
|---|---|---|
| 夏普比率 | 在多个时间段保持合理水平 | 长期高于3,且缺乏完整解释 |
| 最大回撤 | 回撤幅度可承受,恢复时间明确 | 超过30%,或回撤后无法恢复 |
| 获利因子 | 大于1.5,且收益分布不集中 | 接近1,或主要利润来自少数交易 |
| 参数稳定性 | 相邻参数结果接近 | 只有单一参数组合表现突出 |
| 样本外表现 | 样本外仍保持正向结构 | 样本外立即失效 |
| 手续费处理 | 规则明确,包含实际成本 | 未计手续费或成本过于理想化 |
| 滑点处理 | 按标的和流动性建模 | 使用固定极小滑点 |
| 流动性 | 订单规模与市场成交量匹配 | 回测规模远高于真实可成交量 |
| 数据时点 | 所有信息按当时可获得时间进入 | 财报、成分股或价格存在前视 |
| 实盘记录 | 有完整账户和成交明细 | 只有截图或宣传曲线 |
| 自动执行 | 有订单状态机和异常恢复 | 只有简单下单脚本 |
| 风控 | 有组合级仓位和损失限制 | 依赖人工盯盘或单一止损 |
| 费用结构 | 收费方式、分成和成本透明 | 只强调收益,不说明费用 |
| 策略容量 | 有资金规模与成交冲击分析 | 默认任何规模都能复制 |
常见的几个错误判断
只比较累计收益率
累计收益率不包含时间成本、回撤、杠杆和流动性信息。
年化收益相同的两个策略,可能一个经历10%的回撤,另一个经历40%的回撤。资金使用体验完全不同。后者还可能在达到最终收益前被强制停止。
只看胜率
胜率高不等于盈亏结构健康。
如果胜率为80%,平均盈利为1,平均亏损为8,期望值仍然可能为负。胜率必须与平均盈亏、连续亏损和尾部损失一起观察。
只看回测时间长度
回测时间长不等于回测真实。
一段20年的回测,如果使用了未来数据、当前成分股或理想成交价,仍然无效。时间长度只能增加样本数量,不能修复数据错误。
只看策略名称
“人工智能”“机器学习”“高频”“套利”都不是质量证明。
名称不包含可验证的统计信息。真正需要查看的是特征、标签、训练流程、成交规则、风险约束和样本外结果。
认为自动化等于低风险
自动化减少人工操作,不会自动减少市场风险。
自动系统可能提高执行速度,也可能更快地累积错误仓位。低延迟只有在数据、订单和风控都正确时才有价值。
把第三方平台的历史曲线当成自己的结果
平台展示的曲线可能使用不同起始资金、不同成交规模和不同风险参数。跟随者的成交时间、滑点和资金容量都可能不同。
历史曲线只能作为待审查材料。不能作为收益承诺。
参数优化应该遵守什么原则
参数优化的目标不是找到历史收益最高的组合。
目标是找到在合理参数范围内仍然有效的区域。
可以使用以下方法:
- 先定义参数范围,再进行搜索;
- 记录所有测试结果,不只保留最优结果;
- 使用样本内、验证集和样本外分离;
- 对参数进行局部扰动;
- 对手续费和滑点进行压力测试;
- 对不同市场阶段进行分段测试;
- 对交易标的进行留一测试;
- 对随机扰动后的价格进行稳健性测试;
- 控制模型复杂度;
- 限制自由参数数量;
- 避免为了修复单笔交易而修改整体规则。
如果策略依赖大量阈值,每个阈值都需要统计解释。没有解释的自由参数越多,过拟合空间越大。
对于移动平均、波动率窗口和突破周期,优先寻找高原区域。对于机器学习模型,优先控制特征数量、模型深度和训练轮数。对于组合优化,限制权重约束和换手约束,防止优化结果变成极端集中组合。
选择后仍然需要持续验证
量化系统不是一次验收后永久有效。
市场结构会变化。交易成本会变化。流动性会变化。参与者结构会变化。策略原有的统计关系可能衰减。
实盘运行后,需要持续记录:
- 实盘夏普比率;
- 实盘最大回撤;
- 实盘获利因子;
- 实盘换手率;
- 实盘滑点;
- 信号命中率;
- 订单成交率;
- 回测与实盘偏差;
- 不同品种的收益贡献;
- 不同时间段的表现;
- 风控触发次数;
- 系统异常次数。
还需要预先定义停用条件。例如:
- 实际最大回撤超过历史压力区间;
- 实盘滑点持续高于模型假设;
- 成交率持续下降;
- 样本外收益结构消失;
- 因子暴露发生明显变化;
- 组合相关性显著上升;
- 接口故障造成仓位无法恢复;
- 策略收益完全依赖单一标的或单一市场阶段。
停用条件必须在亏损发生前写入规则。亏损之后再临时修改标准,会产生事后解释。
最后看风险能否被承受
选择量化交易,本质上不是选择收益率最高的模型。
而是选择一套数据来源清楚、交易逻辑可复现、回测口径真实、成本可以解释、参数具有稳定性、实盘能够执行的系统。
夏普比率大于1,只能说明风险调整后收益达到初步筛选标准。大于1.5或2,仍然需要检查样本外和交易成本。长期高于3,优先排查过拟合、数据窥视和杠杆。
最大回撤控制在20%以内,通常更容易管理。超过30%,必须重新评估资金规模、保证金和强平路径。
获利因子大于1.5,可以作为较健康的盈亏结构参考。但它必须与胜率、平均盈亏、尾部损失和交易分布结合。
回测没有手续费、滑点、延迟和流动性模型,就不能直接映射到实盘。
参数没有高原,只有尖峰,说明模型可能记住了历史噪声。
自动交易系统没有订单状态管理、异常恢复和独立风控,策略本身再好也无法抵消工程风险。
最终判断应建立在可复现的数据和可执行的约束上。不要预测策略未来一定盈利。只评估它在什么条件下可能失效,以及失效时损失是否仍然可控。
Related reading: 量化交易的区别与判断标准 and 量化策略回测指标的虚与实:如何看穿超高收益率背后的陷阱.
