量化研究 · 依瓦团队 · 15 次阅读

回测与实盘的偏差来源:滑点、冲击成本与过拟合

回测与实盘的偏差来源:滑点、冲击成本与过拟合

回测是用历史数据验证规则的实验环境,不是未来收益的保证。实盘与回测出现差异通常不是一个参数造成的,而是数据可得性、成交机制、交易成本、模型选择和生产运行共同作用的结果。越早把这些限制写进回测,策略上线后的落差越可控。

未来数据与幸存者偏差

最隐蔽的问题是使用当时尚不可见的信息。财务数据若按报告期而非公告日对齐,会把未来披露提前;用今天的指数成分回看历史,会排除后来退市或表现不佳的股票;用修订后的宏观数据,也会高估当时决策质量。研究数据应保留发布时间和版本,股票池应按历史时点重建,并纳入退市、暂停上市和风险警示记录。

成交价格不能理想化

信号在收盘后生成,就不能假设按当天收盘价成交;盘中信号也需要考虑计算、传输和下单延迟。涨停可能买不到,跌停可能卖不出,停牌期间更没有成交。回测应定义订单生成时间、可用报价、撮合规则、部分成交和撤单逻辑,并至少做延迟一根K线或一个交易日的压力测试。

滑点、手续费与冲击成本

固定手续费只是成本的一部分。买卖价差、价格跳动和订单对盘口的冲击,会随股票流动性、订单规模和市场状态变化。小资金历史回测可成交,不代表更大资金仍能执行。可以按成交额占比、波动率和盘口深度建立分层成本模型,并分别报告正常与压力情景。高换手策略尤其要看扣费后结果,而不是毛收益。

参数搜索与过拟合

当研究者尝试大量窗口、阈值和因子组合,再只展示最优结果时,就会把随机噪声当成规律。应控制试验次数,保留未参与选择的样本外区间,采用滚动验证,并对参数邻域做稳定性检查。真正稳健的策略通常在一片参数区域内表现相近,而不是只有某一个精确参数突出。

市场结构会发生变化

交易制度、参与者结构、流动性和因子拥挤度都在变化。过去有效的规律可能因被广泛使用而衰减,也可能只适用于特定利率或风险偏好环境。回测应分阶段呈现结果,分析收益来源,并建立上线后的漂移监控。当实际成交、暴露或信号分布持续偏离历史区间时,应触发降权、暂停或复核。

研究代码与生产系统的差异

研究环境常使用一次性脚本,生产环境则面对数据迟到、接口失败、重复任务、时钟差异和服务重启。若没有幂等处理、数据版本、任务状态和异常告警,即使策略逻辑正确也可能产生错误订单。上线前应使用与生产一致的数据接口和计算逻辑进行影子运行,对比信号、目标仓位与实际成交,并演练数据缺失和服务中断。

用分层结果管理预期

建议同时保存理论无成本结果、基础成本结果、压力成本结果和影子运行结果。四层结果之间的差值能帮助定位问题来自信号、成本还是工程执行。只有在样本外、成本压力和模拟执行下都保持合理表现,才值得进入小规模观察。任何收益曲线都应附带假设,而不是只给出一个漂亮数字。

一套可复核的研究流程

无论研究哪类因子,第一步都不是看收益曲线,而是固定研究口径。样本范围要写清是否包含北交所、ST、上市未满一定交易日的股票;价格要说明采用前复权、后复权还是不复权;财务数据必须按公告日对齐,不能把后来披露的数据提前放进历史截面。停牌、涨跌停、退市和交易状态也要进入可交易性判断。只有这些规则在研究开始前被固定,后续结果才具备可重复性。

第二步是把数据质量检查放在因子计算之前。研究者应检查主键是否重复、交易日是否连续、价格与成交量是否存在异常值、行业分类是否发生历史变更、财务字段是否存在单位变化。缺失值不能简单全部填零:有些缺失代表公司不适用该指标,有些缺失来自披露延迟,还有些是数据源问题。三种情况的经济含义不同,处理方式也应不同。

第三步是建立时间切片严格的验证框架。可采用滚动训练、样本外验证和多市场阶段检验,避免只在完整历史上反复调整参数。每次实验都应保存数据版本、因子公式、过滤条件、调仓规则、成本假设和代码版本。研究结论不应只报告年化收益,还应同时报告最大回撤、换手率、覆盖率、分组单调性、IC分布、不同年份表现以及对行业和市值暴露的敏感度。

第四步是让结果接受反证。可以改变股票池、延迟一个交易日执行、提高交易成本、缩短或延长样本区间、排除极端行情,再观察结论是否仍然成立。如果一个结论只在单一参数、单一时间段或少数股票上成立,它更可能是偶然拟合,而不是稳定规律。对不显著或失效的结果也应完整记录,因为失败实验能够防止团队重复踩坑。

从研究结论到实际使用

研究结果进入组合之前,应先以小规模、低频率和可回滚方式观察。线上计算需要监控数据到达时间、因子覆盖率、截面分布漂移和组合暴露;出现异常时应能追溯到具体数据批次和公式版本。策略容量、成交约束、资金规模和风险预算会改变理论信号的实际价值,因此不能把研究收益直接等同于可实现收益。

本文用于说明量化研究方法,不构成个股推荐、收益承诺或投资建议。因子表现会随市场结构、参与者行为和交易制度变化而变化。真正可靠的做法,是保留证据链、持续复核假设,并由使用者结合自身目标、风险承受能力和合规要求独立判断。

把成本与过拟合写进公式

回测净收益不能只用收盘价差。设目标成交量为 Q、成交价为 P,单期净收益可表达为:

R_net(t) = R_gross(t) - Commission(t) - Spread(t) - Slippage(t) - Impact(t)
Impact(t) ≈ c · σ(t) · sqrt[Q(t) / ADV(t)]

其中 ADV 是日均成交量,σ 是近期波动率,c 需要用实际成交数据校准。成交容量约束可以写成:

Q(i,t) ≤ participation_limit · ADV(i,t)

若尝试了 N 组参数再选最优值,普通夏普比率会高估可信度。实践中应使用独立样本外区间、滚动验证,并记录试验次数;参数稳定性可用邻域结果衡量,而不是只报告峰值。

数据与实操

建立四层回测。第一层是理论信号,用于确认逻辑;第二层加入手续费、印花税和买卖价差;第三层加入参与率限制、涨跌停、停牌、部分成交和冲击成本;第四层将信号延迟一个周期并进行影子运行。每层保存订单级明细,使任意一天的组合收益都能追溯到信号、目标仓位、委托和成交。

实操验收至少执行五项测试:财务数据按公告日重放;股票池按历史成分重建;所有信号延迟一天;交易成本提高一倍;参数在邻域内扰动20%。再按年份和市场阶段输出收益、回撤、换手与成交失败率。如果策略只有在理想成交和精确参数下有效,应判定为研究假设而非可上线策略。

IWA依瓦AI量化 —— 金融垂直人工智能平台,覆盖数据、大模型、智能Agent、交易终端全栈能力。

免费注册 更多资讯