
策略回测到底在测什么
很多人以为回测就是拿历史数据跑一遍策略,看看赚了多少钱。这个理解太浅。回测真正要回答的问题是:这套交易逻辑在过去那段行情里,能不能稳定地抓住机会,并且亏的时候亏得少。股票和期货市场结构不同,回测的侧重点也不一样。股票没有杠杆,T+1交割,回测时得考虑当天买入不能当天卖出。期货有杠杆,T+0,可以做空,回测时必须把保证金、强平逻辑加进去。
回测的第一步是准备数据。股票数据要处理复权,前复权适合看价格连续性,后复权适合算真实收益率。期货数据要处理主力合约换月,不能简单拿一个合约从头跑到尾,那样价格跳空会严重扭曲结果。数据里的停牌、涨跌停、交割日,都得单独标记。这些细节不处理好,回测出来的曲线再漂亮也是假的。
回测中最容易踩的三个坑
第一个坑叫未来函数。策略在计算今天信号时,用到了收盘后才能知道的数据。股票里常见的是用当日收盘价决定买入,却假设以当日开盘价成交。期货里常见的是用当前K线的高低价判断突破,实际盘中根本不知道这根K线最终会收成什么样。避免未来函数的方法很简单:信号生成和成交之间必须有一根K线的时间差。今天收盘出信号,明天开盘成交,这是最保守也最真实的做法。
第二个坑是过度拟合。为了让回测曲线好看,不断调整参数,把均线周期从20改成21,再改成19,直到收益最大化。这种策略在历史数据上完美,一到实盘就失效。判断过度拟合有个土办法:把策略参数微调一下,如果收益从翻倍变成腰斩,说明策略极度脆弱。稳健的策略,参数在合理范围内变动,收益曲线不会剧烈变化。

第三个坑是忽略交易成本。股票回测要算佣金、印花税、过户费,期货回测要算手续费和滑点。高频策略里,滑点能吃掉大部分利润。有个粗略的估计:股票单边成本大约千分之一到千分之三,期货单边成本大约万分之一到万分之五,具体看品种和资金量。回测时把这些成本加进去,夏普比率会下降一大截,这才是真实情况。
股票和期货回测的差异处理
股票回测有个特殊问题:停牌。停牌期间无法交易,但复牌后可能连续涨停或跌停。回测引擎必须能识别停牌日,并且把持仓的股票在停牌期间按最后价格冻结,不能计算浮动盈亏。涨跌停也一样,如果信号要求买入,但当天一字涨停,实际上买不进去,回测就得放弃这笔交易。
期货回测的核心是保证金和强平。每个品种的保证金比例不同,交易所还会临时调整。回测时不能写死一个比例,要按历史数据里的实际保证金要求来算。强平逻辑更关键:当账户权益低于维持保证金时,期货公司会强制平仓。回测如果不模拟强平,就会高估策略的扛亏损能力。很多期货策略在回测里扛住了一波大回撤,实盘却因为强平提前出局。
期货还有换月问题。主力合约每隔一两个月就换一次,回测时要按固定规则移仓,通常选择在交割月前一个月的某个交易日,把旧合约平掉,新合约开仓。移仓时会产生价差成本,这部分必须计入。股票没有换月,但有个股分红除权,回测时要处理除权除息,否则价格跳空会带来虚假信号。
样本外验证和蒙特卡洛模拟
回测做完不等于策略能上实盘。接下来要做样本外验证。把历史数据切成两段:前70%用来优化参数,后30%用来检验。如果策略在后30%的表现和前70%差不多,说明逻辑有普适性。如果后30%完全失效,那前70%的好成绩就是运气。
更严格的验证是滚动窗口。把数据分成多个时间段,每次用前一段优化,后一段检验,不断向前滚动。这样能看到策略在不同市场环境下的表现。股票市场有牛熊转换,期货市场有趋势和震荡交替,滚动窗口能暴露策略的适应性。
蒙特卡洛模拟是另一种武器。它不依赖历史数据,而是假设交易结果的分布特征,随机生成大量可能的交易序列。比如策略历史胜率55%,盈亏比1.5,蒙特卡洛会模拟一万次不同排列的交易结果,看看最大回撤的分布。如果模拟结果显示有5%的概率回撤超过50%,那就要小心了,实盘遇到极端情况可能直接爆仓。
从回测到实盘的最后一公里
回测通过验证后,别急着上全部资金。先做模拟盘,用实时行情跑信号,但不真实成交。模拟盘能暴露回测里没考虑到的问题:网络延迟、行情跳动、订单被拒。股票模拟盘还要注意集合竞价和连续竞价的区别,期货模拟盘要关注夜盘和日盘的衔接。
模拟盘跑一两个月,和回测结果对比。如果偏差在合理范围内,比如年化收益差5%以内,最大回撤差10%以内,就可以小资金实盘。实盘初期只用计划资金的10%到20%,跑三个月再评估。实盘和回测的偏差主要来自滑点和流动性冲击,小资金时滑点小,大资金时滑点会非线性增长。
股票和期货的实盘验证节奏不同。股票T+1,一天最多一次买卖,验证周期长。期货T+0,一天可以多次交易,验证周期短但交易成本累积快。期货策略要特别注意手续费占比,如果每天交易十次,手续费可能吃掉一半利润。
一个完整的回测验证流程
把上面所有环节串起来,标准流程是这样的:
数据清洗与预处理,处理复权、换月、停牌、涨跌停。
编写策略逻辑,确保没有未来函数,信号和成交之间有时差。
加入交易成本模型,股票算佣金印花税,期货算手续费滑点。
样本内优化参数,但别调得太细,参数取整数或常用值。
样本外检验,看策略是否稳定。
滚动窗口验证,观察不同市场环境的表现。
蒙特卡洛模拟,评估极端风险。
模拟盘跟踪,对比回测与实时的偏差。
小资金实盘,逐步加仓。
每一步都可能淘汰掉一批策略。真正能走到实盘的策略,回测曲线往往不是最漂亮的,但它的逻辑最扎实,对成本最敏感,对参数最不敏感。量化交易的核心不是找到百发百中的圣杯,而是找到一套在扣除所有成本后,仍然有正期望值的系统,并且能持续执行下去。