在程序化交易中,一个策略首先要经过历史测试,通过考察测试的结果来对这个策略做进一步的评估。在测试当中,有一些程序化交易新手可能会把手续费设置得偏低、不加滑点,或者直接用主力连续合约进行测试,这些都是刚开始学习程序化时比较容易犯的错误。还有一些程序化交易者,刚学习程序化的时候,在测试的时候,习惯每个品种只用1手去测试,笔者个人认为,这也是程序化交易中的一大误区。
我们知道,由于期货的价格会不断变化,同一个品种、不同价格,每一手所代表的价值量也不同。比如在2015年底的时候,螺纹钢主力合约曾经达到过1618的相对低价,近期,螺纹钢主力合约曾经达到过4016的相对高价,很明显,价格在1618时的1手螺纹钢和价格在4016时的1手螺纹钢,对应的价值量相差非常大,如果在1618的价格附近出现交易信号时交易1手,在4016的价格附近出现交易信号时也交易1手,带来的账户权益波动相差是非常大的。
在不同期货品种之间,比如每一手的保证金相对较低的玉米,当前主力合约的价格在1700元左右,如果按10%的保证金比例,每一手需要1700元的保证金。每一手的保证金相对较高的焦炭,近期主力合约曾经达到2500的相对高价,如果按10%的保证金比例,每一手需要25000元的保证金。很多程序化交易者做多品种组合交易,其中的一个目的是为了对冲风险,如果每个品种都只交易1手,不同价值量的品种之间是不能达到对冲的效果的。
因此,笔者个人认为,按照同等的价值量计算每次开仓的手数,以此来初步测试某个策略,是相对比较合理的方式。以下是对前一篇程序化研究文章中的随机指数策略(点击查看《程序化研究之随机指数策略:经典、简单、普适!》),分别用同等的价值量计算每次开仓的手数(按照10万本金的4倍杠杆,即40万价值量计算手数)和每个品种每次都只开仓1手的测试曲线图。
32个活跃的国内商品期货,按照等价值量计算开仓手数

32个活跃的国内商品期货,每个品种每次都只开仓1手

螺纹钢-等价值量

螺纹钢-1手

焦炭-等价值量

焦炭-1手

动力煤-等价值量

动力煤-1手

总结:通过以上的对比可以看到,多品种组合交易时,按照等价值量计算开仓手数的资金曲线,比每个品种每次只开仓1手的资金曲线要明显平滑不少,因为各个品种之间能较好地形成组合、对冲的效果。对于单个品种而言,单个资金曲线的差异直观上看并不大,如果按照同等价值量计算开仓手数,在品种价格上涨时,手数会减少,在品种价格下跌时,手数会增加,因此品种价格波动相同的幅度时,两者的账户权益波动也是基本相同的。因此,笔者个人认为,按照同等的价值量计算每次开仓的手数,以此来初步测试某个策略,是相对比较合理的方式。
笔者水平有限,本文仅供程序化初学者或想学习程序化的交易者参考,部分观念可能带有一定的主观性和局限性,如果有不同意见或其他疑问,或者想要了解程序化的哪一块内容,欢迎大家在文章下方留言,笔者会尽可能地为大家解答。
感兴趣的读者,可以加微信:QHYM777,或扫描下方二维码,领取更多程序化交易策略源码,以及加入程序化学习交流群。
.png)
七禾网www.7hcn.com研究中心研究员 傅旭鹏
风险提示:投资有风险,本报告仅是个人观点,仅供参考,不构成投资建议。
七禾网研究中心合作、咨询电话:0571-88212938