第109章 量化的宏图(3/6)
底层代码跑得快,只是基础性能的胜利。
它绝不是他在这个吃人不吐骨头的资本市场里的胜负手。
量化交易,真正的生死劫,在回测这两个字上。
而江临做回测的第一条铁律,正是从那个被他亲手捅破统计量混用漏洞的平台baseline 上,用别人的血泪教训换来的。
不许骗自己。
在这个行业里,他见过太多美得令人窒息的回测曲线了。
那个平台的官方baseline,把训练集和测试集放在一起做标准化,让未来的信息悄悄渗进了过去,回测曲线漂亮得能骗过一屋子人。
所以江临给自己定的规矩是,任何一个交易信号的生成,在模拟系统走到历史的某一时刻t时,它所能调用的,能看到的数据,只能是t时刻及 t时刻之前真实存在且已经发生的数据。
哪怕是t+1毫秒的未来数字,也绝对不许有一丝一毫漏进当前状态机的计算内存里。
除了未来函数,商品期货市场还有一处专门坑杀无数量化新兵的天然陷阱。
主力合约的换月。
因为期货合约是有交割期的,资金会随着交割月的临近,从旧的合约大规模迁徙到几个月后的新合约上。
于是,今天市场上成交量最大,被称为主力的合约,和上个月初的那个主力,在物理层面根本就不是同一张合约。
因为仓储成本,季节性供需差异和无风险利率的存在,新旧合约之间天然存在着巨大的价格落差。
当代码简单粗暴地将它们拼接在一起形成一根连续的历史 K 线时,图表上会不可避免地出现一个几百点的巨大跳空缺口。
江临知道有多少自信满满的新手,就是在这个其实在现实交易中根本不存在的拼接缺口上,触发了虚假的暴利信号,最终在实盘的绞肉机里死无全尸。
他花了两天时间,亲手写了一套严密的复权与合约平滑过渡算法去抹平这个陷阱。
基础的坑填平后,接下来的,才是真正考验人性的摩擦成本。
交易从来不是在真空的黑板上解方程。
每一笔买卖,交易所和期货公司都要抽走手续费。
当你看到盘口有一个心仪的价格想要吃掉时,因为你的网速和系统延迟,真实成交的价格往往会比你看到的差几个跳动点,这就是滑点。
而当你的资金量稍微大一点,你的一笔市价单砸下去,会直接吃透前几档的挂单,把你自己的成本推高,这就是冲击成本。
绝大多数业余散户和半吊子量化研究员的回测,都是在一个没有摩擦,没有阻力的完美乌托邦里无本万利地赚钱。
一到实盘,光是这些看不见的细微损耗,就足以像行军蚁一样,把账面上那点微薄的理论利润啃食得干干净净,甚至让你倒欠一屁股债。
江临没有丝毫的手软。
每个品种单独建表:最小变动价位、合约乘数、交易所手续费、期货公司加收部分、平今差异、主力合约平均盘口厚度、开盘前三分钟与收盘前五分钟的异常滑点。
然后,再把这些所有可能的摩擦损耗,按照偏悲观的口径,化作一个个惩罚因子,加进回测引擎的代价函数里。
双边最高档手续费,至少一到两跳的滑点惩罚,极端行情下的流动性折扣……
所有的摩擦参数加完之后,重新按下回测按钮。
几秒钟后,屏幕上那条原本还算平滑向上的收益曲线,仿佛被人当头重重地敲了一记闷棍,肉眼可见地塌陷下去了一大截。
坡度变得平缓,回撤的坑洞变得深邃,整体看起来像是一条崎岖不平的破旧山路。
看着这条变得无比丑陋的曲线,江临不仅没有沮丧,反而长长松了一口气。
丑,就对了。
丑,才是这个残酷市场的本来面目。
丑,才是真的。
其实,在这个阶段,只要他愿意,凭借他的数学直觉和mpS引擎强大的算力,他完全可以回过头去,在策略库里加入几十个复杂的非线性参数。
本章未完,请翻下一页继续阅读.........