代码 对冲策略_趋势策略中的参数优化

趋势策略的回测与对冲型的不大一样,关键区别在于趋势策略一般是路径依赖的,而对冲型的策略则不是。

比如普通的双均线趋势策略,金叉之后做多,此后仓位一直保持,直到两根均线又交汇为止。路径依赖的意思是说,过去的金叉所带来的多头仓位会持续一段时间。

而对冲类型的策略不是这样的。比如对品种日线数据的多空进行排序后,做多一部分,做空一部分,计算所得作为第二天的仓位,然后第二天又重新计算,或者其他周期的策略。每一期的持仓只依赖于上一期的数据,因此这是类似于动态规划那种无后效性的特征。这种策略的回测可以用矩阵计算直接算出,比如“每天每只股票收益率*仓位变化”再相加就是每天的投资组合收益率,这是可以直接矩阵计算的,还可以借助GPU。

这种股票对冲的策略要优化也容易,比如加一些约束条件,让每天股票仓位变化不要太大,减少交易成本等等,本质上类似于lasso,还可以套用一些牛逼一点的数值计算方法如ADMM加速求解。

但趋势型策略不大一样,由于它是路径依赖的,不存在这种高速求解的方法,不管怎么样都得逐根K线过一遍。

这也同时影响了参数优化。比如两个参数,每个参数10组数值,就是一共100组数值,这个优化问题本质上是因为求解的函数是计算量比较大的,而且无法像连续优化那类问题一样求导,所以似乎并没有太好的办法。

当然,遗传算法是可以的,但总感觉遗传算法有点伪科学的味道。其实我自己也没有太好的办法,或者可以通过其它方面来提速,比如:

1.保存好大量中间结果。很多策略涉及到技术指标的迭代计算,如果回测的时候逐个行情进行,速度难免太慢。可以事先一次性计算好,先保存起来,等最后回测的时候直接调用。

2.向量化计算。很多软件追求回测、优化、实盘用一套代码,这样必须逐个行情进行,因为实盘是这样的,其实对回测优化来说真没必要。回测的时候完全可以用向量化的方法计算各个指标,提高速度。

3.用C/C++写循环部分。涉及到逐根K线的回测,实在没法向量化加速的,可以考虑直接用C/C++写关键部分,提高速度。

4.多核并行。这类计算不是矩阵计算,GPU没啥用,只能用更多CPU,多核并行加速。

其实趋势策略本质上没啥太复杂的地方,能加速就加速,提高研究效率。比如每天收到最新的数据后自动计算好各类因子值,这样优化起来速度也快得多,否则用那些逐个行情回测的python框架来回测,层次太低,严重影响工作效率。当然,你故意让电脑算半个小时自己可以有时间与同行交流的除外。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值