用 Python 架构的策略探讨:价量结合+动量反转

2016-10-11 16:55:20 +08:00
 datayes2015
策略理念:

从技术分析角度来讲,价量是最重要的两个指标,同时 momentum/reverse 是最通用也是最经典的分析法,

本策略试图将这两者结合起来。

策略思路:

价量结合:以每日成交量为权重,计算过去 N 天的加权收盘价,可以看出计算的加权价格可以理解为过去 N 里的平均成交价,也可以理解为筹码最集中的地段

动量反转:对比今天的收盘价和上述计算的加权平均价,我们假定当收盘价向上突破加权价一定比例时有继续上涨的趋势,但当突破到很大程度时会出现反转;当收盘价向下突破加权价一定比例时会有继续下跌的趋势,但跌到一定程度时会发生反转。

策略频率:

不建议经常换仓,所以定性为周度策略, refresh_rate = 5

改进点:

样本股扩容,考虑扩展到中证 800 或者更多

仓位的资金分配,当样本股扩容后,如何根据信号分配好资金

遇到 07 年和当前的大跌情况时要采取些措施,考虑止损或者进一步改进策略信号

策略信号: https://uqer.io/community/share/55b1f886f9f06c91f918c5d1




接下来进行参数分析: https://uqer.io/community/share/55b1f886f9f06c91f918c5d1 ,在上述五个参数( window,positive1,positive2,negative1,negative2 )中,最重要的可能是 window ,因为 window 的长短对加权平均价影响很大,这就直接影响了 signal 的大小,那么其余的四个参数也应该作相应的调整。

下面: https://uqer.io/community/share/55b1f886f9f06c91f918c5d1 就不同 window 的情况做一下统计分析,统计不同 window 下,所有 signal 均值、标准差,看看变化规律。

对于不同 window 的选取也比较一般化,由于周度策略,那么历史数据应该是过去一个月、两个月、、、半年。

从上面: https://uqer.io/community/share/55b1f886f9f06c91f918c5d1 可以看出,从 06 年至今来看,股市整体还是上涨的,所以 signal 的均值都为正,但也都接近 0 ;而方差则随着窗口期的变大而变大,毕竟半年的行情和一个月行情比起来,不确定性会更多。

接下来,以此为参考来确定其余的四个参数

当 signal 位于( negative1 , positive1 ),我们不作任何操作,一方面是避免操作频繁,另一方面,收盘价和加权平均价相差较小时,也并没有包含任何趋势或者反转的信息

当 signal 向上突破 positive1 时,就表明有趋势产生,但是当 signal 达到 positive2 时,就认为会产生反转; negative 的情况也是一致的

根据上述计算的 signal 的均值和方差,来确定 positive2 和 negative2 ,取置信区间为 1.5 倍标准差作为参考(置信度大概为 85%)

根据上述结果来确定各种情况下的合适参数,但不失一般性, positive 和 negative 要保证对称性,而且尽量取整(避免过度优化)

最后的参数结果在如下的 params 中展示

从上面的结果可以看出,策略本身可能更偏短线,在预测未来一周走势上,短期的 momentum/reverse 可能更有效。

结合实际,当 window=20 时,表明用过去一个月的数据来预测未来一周的数据,这一点也是非常合理的

所以,将 window 确定为 20 ,另外 4 各参数也都确定下来,下面就展示最终的策略回测表现



至此,基于最开始策略思路的一个简单版策略实现了,从上图看,收益表现还行,但是波动太大,而且熊市不抗跌。。。。

正如开篇提到的改进部分,还有很多部分需要去完善,而这些也都是在实盘中需要考虑到的

暂时写到这吧,后续有更新版本再与大家共享,同时,也希望大家多提意见,一起把这个策略做的更完善~
4820 次点击
所在节点    Python
15 条回复
chendd
2016-10-11 17:38:17 +08:00
是做量化投资吗?最近也想学学。
datayes2015
2016-10-11 19:09:03 +08:00
@chendd 恩恩,亲具体想学哪方面呢?
chendd
2016-10-11 19:16:02 +08:00
@datayes2015 就是如何逐步建立稳定的策略, python 看过廖雪峰的基础教程。
datayes2015
2016-10-12 10:43:35 +08:00
@chendd 现在分两种,自上而下,先有金融想法在构建策略
自下而上 通过寻找数据中的联系去构建策略。
如果您采用上一种,不管是基本面量化或是技术指标组合现在都有人在用。
下一种比较强调算法和工程能力,最常见就是形态识别跟预测。
社区有很多例子开源的例子呐,您可以在基础上进行改进、细化。
zhy0216
2016-10-12 11:57:48 +08:00
@datayes2015 这个策略有什么地方可以个人跑么? 不是指模拟.
datayes2015
2016-10-12 13:37:48 +08:00
@zhy0216 您说的模拟是指回测还是模拟交易?
huangfs
2016-10-12 13:40:02 +08:00
求教量化如何入门?
datayes2015
2016-10-12 14:41:54 +08:00
@huangfs 我马上会发一篇技术指标常用策略的帖子,亲有空的话可以戳一下哦。
datayes2015
2016-10-12 14:55:18 +08:00
Loker
2016-10-13 18:16:34 +08:00
有入门课程吗?
datayes2015
2016-10-14 15:44:28 +08:00
@Loker 有的,这里面都是新手专栏:) https://uqer.io/community/list/tutorial/default_rank_time/-1/1
suntxy
2016-10-14 20:36:37 +08:00
周度策略 调仓频率太低,遇到系统性风险/熊市开始阶段往往很难控制回撤,我想这是最大回撤有 62%的原因。 如果要控制波动(最大回撤),个人觉得还是应该把调仓频率提高,想办法提高止盈/止损参数的精度 。
另一个办法可能是加入仓位判断因素进去 - - 不要玩满仓梭哈 应该也可以控制回撤。
datayes2015
2016-10-20 17:17:31 +08:00
@suntxy 感谢亲,给我提供了那么好的思路哈
ethego
2016-10-21 10:39:18 +08:00
做量化交易的人私下也会自己用量化交易玩一下吗?
datayes2015
2016-10-21 18:13:45 +08:00
@ethego 会的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/311947

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX