ARTICLE · 1122095
自研量化软件分享(七):如何构建回测引擎
群里发来一张回测截图。净值曲线又直又陡,配一句话:这策略,成了。
你没吭声。不是不信,是见过太多次:同一条规则,换个软件回放,结果差出一截。
回测这个东西,诚实与否差得远了。常见的偷懒口子有三个:判定用了今天收盘才知道的数据,却按今天的收盘价成交——等于提前一天看见了明天;委托假装笔笔都成交,停牌的、跌停卖不掉的,全当不存在;收益从扣费前开始算,佣金印花税一概不管。截图不会告诉你,它路过了其中几个。
我写的量化工具里,管这块的是回测引擎。定位一句话:拿历史行情把规则逐日重放一遍,同时把成绩单上骗人的口子堵住。
亮点三个:不偷看,不假装,讲人话。
先说不偷看。引擎定死了同一条时序契约:判定用前一交易日的收盘数据,成交落在当天收盘;止损止盈是收盘检查触发的,触发之后要等下一个交易日收盘才执行。成交历史里每一笔都印着「防前视」字样,点开就知道这笔单是按哪天的数据拍的板。

再说不假装。撮合这层放了真实行情的几道约束:停牌买不进,一字涨停买不进,收盘跌停卖不出;该卖的那天卖不掉,这笔挂单会留着,顺延到下一个能卖的日子再试。小资金调仓凑不满一手的,不成交,但事件照样留痕——账上看得见它想过、没做成。费用走逐笔精算:佣金按笔收、有起收门槛,印花税只在卖出端计,再加上过户费和滑点假设。同一套规则,费怎么扣是可调档的,简单档按固定比例,精细档逐项累加,两档差出来的点数,足够让勉强过关的规则现出原形。

后说讲人话。放完一遍,成绩单给你六档:年化收益、回撤、夏普、卡玛、年化换手、年化成本。每张卡里嵌着一段「怎么看」:比如卡玛,年化收益除以回撤,大于 1 算及格,大于 3 算优秀。回撤说通俗点,就是净值从高点摔到谷底的那一下,摔多狠它直说。年化折算统一按 244 个交易日,一个口径全项目共用,不许各页自己发挥。

净值曲线画双线:一条你的,一条基准的,基准默认沪深300。同一段行情你扛过来了没有,上下瞄一眼就有数。还有个省事操作:一键回测,给所有在服务的策略按同一段区间批量跑;区间选短了,页面会实话提示「指标可能失真」,不硬算给你看。

成交账本长什么样:给你看一段演示样例——某条虚构规则重放三年,47 笔成交,一行一笔,日期、方向、股数、价格、金额、费用都在。价格记的是当天真实行情价,跟你那时打开行情软件看到的对得上。演示环境虚构样例,不挂任何个股。
留个问题:你见过的回测曲线,夸张到什么程度?说说场景就行,不用报票。下一篇去拆策略簿:规则挂上账之后,怎么被四盏灯盯着。
关注公众号「方块量化」,下一篇接着拆。
内容仅为工具功能与工程学习记录,画面数据均为演示环境样例,不构成投资建议。市场有风险,决策请谨慎。