V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
datayes2015
V2EX  ›  Python

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

  •  1
     
  •   datayes2015 · 2016-10-11 16:55:20 +08:00 · 4866 次点击
    这是一个创建于 3001 天前的主题,其中的信息可能已经有所发展或是发生改变。
    策略理念:

    从技术分析角度来讲,价量是最重要的两个指标,同时 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 各参数也都确定下来,下面就展示最终的策略回测表现



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

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

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