(七)程序化交易模型止损的种类
来来,各位程序化爱好者,初四了,该工作了。可不是我乱讲,真的好多同学很敬业。大年初一,就有同学学课程要源码;前天,群里激烈讨论网格和趋势跟踪模型组合问题;昨天,在群里还激烈的讨论技术问题;今天,刚吃完中饭准备出去玩,看朋友圈,已经有同学在上班了。
做的好同学自有他的道理。
继续喵哥之前的连载原创文章,该第七章了。
止损的对交易的重要性毋庸置疑。那么止损还分种类吗?不就是亏损达到了预定的水平就平仓呀。话是这么说,仔细研究还是分好几种的。根据什么标准预定?怎么平仓?
7.1 固定百分比止损
其实这种方法挺常用的。即亏损达到开仓价的一定百分比就平仓。比如1%,当价格从开仓的位置开始,反向运动1%就认亏出局。具体比例设置多少合适,一方面取决于个人的心理承受水平,一方面取决于模型运行的周期,以及波动率水平。首先是心理承受水平,划定一个上限,然后根据模型运行的周期特点,进行适当的调整。比如心理承受上限是5%,再看运行周期,如果是日线系统,设置5%的亏损可能是适合的,1%就太小了,正常的波动都能打掉止损。如果是运行在5分钟,1%的止损还算合理的范围。程序化的好处是,可以对历史数据进行测试,在较优的区间里面选择参数。
固定百分比止损方法的好处是,只要选择好了,就不用动了,程序实现相对简单。
7.2 固定金额止损
这种方法其实还挺符合心理特征的,即亏损多少钱心理上就有点承受不了了。根据网传的交易原则,每次交易,亏损的金额要控制在中金额的2%以内,那么就可以根据总金额,开仓手数以及合约乘数算出来止损位置。比如,投入本金5万,每次亏损不能超过2000元(当然你可以即使投入20万,每次也不想亏损超过2000元),假设做螺纹开仓2手,那么每手可以亏损1000元,即100跳,根据开仓价格即可得出止损价位。假设做焦炭,也是开2手,每手可以亏损1000元,即20跳,根据开仓价格即可得出止损价位。
这种方法对程序化实现来数也是相对简单的,合约乘数固定,手数固定,止损价位很好计算。
7.3 波动率止损
这种方法是最为合理的方法之一。即根据ATR倍数来止损,求ATR的长度不应该太小。开仓价格反向运动N倍的ATR就止损。这种方法不固定金额,不固定比例,而是固定波动率的倍数。如果行情波动很大,绝对止损值就相对大,如果行情波动很小,绝对止损值就相对小。为什么这种方法更合理呢?在一定波动率的行情里,行情反向运动与波动率相当的幅度是合理的,而且根据波动率的大小自动的改变止损幅度,不容易被合理的震荡洗出来。如果固定百分比,比如1%,在波动率很小的时候,1%的止损可能太大了,而在波动非常大的行情里面,1%很小,非常容易就被洗掉了。
7.4技术指标止损
这种方法其实也很常用,即当某个或者某些技术指标出现反向条件时平仓,例如,价格收在10日均线下方就多单止损,MACD红柱变绿柱多单止损,KDJ死叉多单止损等。
我个人其实不建议单独使用,主要是因为止损的幅度实在是不确定,不利于程序化风险的量化计算。例如收盘价破10日均线止损,收盘价格距离10日线的距离是不确定的,遇到暴跌的时候,可能距离非常的大,损失就会比较大。波动率比较大的时候,满足技术指标止损的位置,距离开仓价格,往往也比较大。
7.5 多种方法混合使用
即以上多种方法混合使用,这样的好处是即有最坏情况的保险,也有随机应变的处理。具体就看个人喜好了。
说完了止损种类,再说一个具体实现方面的细节,即是价格碰到止损价位就止损,还是K线收盘价破止损价位才止损。其实两种方法都可以,看个人对风险的看法和把握。对风险需要较为精确的量化的模型(有时候无法精确量化,比如大跳空直接杀破止损价位),建议价格碰到止损线立即止损。还有一点,如果是大周期K运行,建议碰到止损价位就止损,如果等到K线收盘破止损价再平仓,可能损失已经非常大。具体多大周期叫大周期,我个人觉得,大于15分钟周期的K,都比较大了。现在的期货行情波动越来越剧烈,15分钟的波动幅度会相当惊人。