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

简单的利用 Logistic 训练的因子模型 年化超额 alpha 超过 20%

  •  
  •   datayes2015 · 2016-09-19 16:41:06 +08:00 · 6127 次点击
    这是一个创建于 2972 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这个模型的思路就是利用历史月度数据建立分类器,选取了大概 20 个因子(继续加也没问题),然后以月度收益大于 25%的作为强势股+1 小于-10%的为弱势股-1 (这里用绝对强度而不是相对强度) 用得到的数据用 Logistic 模型训练,每过一期就把每个月的数据直接加到训练集里面,当然用滚动窗口训练也没问题(懒得做) 我也尝试过用 svm 分类,但是实际上效果并不好,据我做机器学习的同学表示, svm 在特征不够好的情况下 表现确实是还不如 logistic 模型的,这种二分类而因子模型本身不太可能做到样本外 80%以上的 AUC ,那太夸张了,所以似乎是 logistic 会好点,决策树我没试过 或者用 adaboost 或者随机森林什么的

    当然模型还是有一点我想了很多办法也没法改进的问题:
    1.首先,模型在市场风格急剧变化的情况下表现较差 在这里 牛熊变化的关口表现不好 波动性大 15 年股灾的的时候回测有差不多 45% 我本来想加个择时控制仓位的因子进去,但是怎么也选不好
    2.对 1 里面的问题我还有一个思路,如果用随机梯度递减的算法是不是能较快反应出市场变化呢?不过这样的话训练集似乎太少了
    3.可能会有点过拟合,但是并不会很明显,我改变参数回测了好几次,夏普比率都在 1 左右,最低也有 0.8 4.机器学习方法的通病就是逻辑性的不足,这里虽然是线性模型,也有一定这样的问题

    总之这个模型还算稳定,基本上每年都可以获得超额收益,大家可以一起讨论改进

    完整高清源代码请移步: https://uqer.io/community/share/5763ad63228e5b8199a55ebc
    最大年化收益率高达 34.2%!

    23 条回复    2016-10-19 18:51:15 +08:00
    ytmsdy
        1
    ytmsdy  
       2016-09-19 16:44:09 +08:00
    如果能控制回撤那就更好了。
    menc
        2
    menc  
       2016-09-19 16:53:50 +08:00   ❤️ 4
    1. 单纯 LR 在 time series 数据上有这样的效果,我是不信的
    2. “机器学习方法的通病就是逻辑性的不足”这句话槽点满满, LR 的可解释性是足够的
    3. 选取的因素中有很多相关度高的特征,造成过拟合几乎是必然的,然而还是有这样的收益,效果简直让人发指。
    4. 这代码 LR 的路子比较野,没有 normalization ,也没有 split ,特征维度 20 ,建议仔细打一下特征权重看一下。
    bugmenein
        3
    bugmenein  
       2016-09-19 17:29:37 +08:00
    网站挂了
    skydiver
        4
    skydiver  
       2016-09-19 18:32:18 +08:00
    交易成本是多少
    panins
        5
    panins  
       2016-09-19 22:00:41 +08:00
    请问数据源是来自于哪里?
    alexapollo
        6
    alexapollo  
       2016-09-19 23:24:54 +08:00   ❤️ 2
    夏普比在 3 以下的模型大多直接用于实战都有一些问题,建议还是直接交易试试吧
    datayes2015
        7
    datayes2015  
    OP
       2016-09-20 14:52:54 +08:00
    datayes2015
        8
    datayes2015  
    OP
       2016-09-20 14:53:12 +08:00
    @alexapollo 蟹蟹亲的建议
    datayes2015
        9
    datayes2015  
    OP
       2016-09-20 14:53:53 +08:00
    @panins 来自于通联数据
    xiaoyu9527
        10
    xiaoyu9527  
       2016-09-20 15:23:13 +08:00
    好牛逼呀
    ycge234
        11
    ycge234  
       2016-09-20 17:24:41 +08:00
    这算是新风口吗··现在开始流行炒这个?
    server
        12
    server  
       2016-09-20 17:59:38 +08:00
    这广告牛逼
    kimboqi
        13
    kimboqi  
       2016-09-20 18:06:34 +08:00
    抽取的特征还是太少了, 楼主应该看看市面上的一些普通策略,就拿简单的小市值策略来说, 策略涉及到的特征不多基本都是股票的基本特征比如总市值,市盈率再利用移动平均线做好止损,简简单的策略年化收益就能上百。当然我一直相信只要特征够多,用机器学习的方法来预测还是有效的。
    myrual
        14
    myrual  
       2016-09-21 17:30:25 +08:00
    这都年化 30%还不卖房卖地卖车进去干?
    skyworker
        15
    skyworker  
       2016-09-23 11:39:40 +08:00
    @myrual 太宏观的模型, 碰到一次大跌,就把棺材本都陪进去了.
    myrual
        16
    myrual  
       2016-09-23 13:00:18 +08:00   ❤️ 1
    @skyworker 自动交易应该是有止损设计的吧。 @datayes2015
    datayes2015
        17
    datayes2015  
    OP
       2016-09-26 15:26:37 +08:00
    @myrual 是的
    icylord
        18
    icylord  
       2016-09-26 19:04:15 +08:00
    能剔除 2015 年的牛市数据再看看收益吗?
    grindsgears
        19
    grindsgears  
       2016-10-19 17:08:16 +08:00
    哎,。。。。。又是一个
    你的策略基本就是复制基准的基础上稍微优化下,
    1. 如果你是 15 年 6 月这个系统开始 run ,,,几个月,你会失去信心, 或者,根本不可能有人投钱给你
    2 ,你们的通病都是没有考虑过, 停牌, 流动性不够等等的问题, 说白了,就是拿一段数据意淫而已。随便找一段随机的 ohlc 的数据,我可以弄两个 strategy ,一个收益曲线向上,一个曲线向下, lol 。
    3. 优矿的数据精度完全不够。 tick 数据应该没有, orderbook 更不可能有, 涨停的你买不进,跌的时候你跑不掉,。
    4. 总而言之,这些都是纸上谈兵, 建议你们都不要浪费时间了, 和真正的策略距离很远,。 你更多的是要考虑股票之间的 correlation 。股票和基准的 beta 率,你策略的资金容量, gross captial exposure ,等等等等等等等等。

    那种梦想找到一个策略然后赚钱,几乎不要考虑了,


    目前主流的基本一下几种
    1 ,基于 orderbook 的 marketmaking
    2 ,基于 spread 和 correlation 的 arbitrage
    3. 那些 beautiful mind guys 的各种模型
    即使是这样,大部分也是多策略同步运行的, 比如,一个追涨或者追跌的策略,在震荡的时候被杀到爆,, 你想避免,重点是,你怎么知道什么时候震荡结束? 或者什么时候开始

    真心不要浪费时间了

    最后告诉你, 中国股票不是这么做的, 一个只可以做多的市场,在熊市随便什么策略都挂。
    topdown 一直 bottom up 下来, 找到板块, 做多最强的, 最空最多的, 同时用 vix 的 option 对冲大波动风险。
    中国股票,可以试试建立一个类似 50etf+500etf 的 portfolio ,用 a50 。 fxi 之类的对冲, 应该还有点机会
    这一行,比的不是谁活得好,是比谁活的长,。 lol

    说话比较直接,不要介意,,,
    祝你好运
    aksoft
        20
    aksoft  
       2016-10-19 17:13:19 +08:00
    楼上是老 nb...
    lixuda
        21
    lixuda  
       2016-10-19 17:27:15 +08:00
    @grindsgears 完全同意
    xieyingli
        22
    xieyingli  
       2016-10-19 17:35:04 +08:00
    @grindsgears 哈哈哈,好有道理,感谢今天把这个帖子挖出来。
    grindsgears
        23
    grindsgears  
       2016-10-19 18:51:15 +08:00 via iPhone
    打错一个字。 是做多那个板块最强的股票同时做空同板块最弱的股票
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2882 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 02:36 · PVG 10:36 · LAX 18:36 · JFK 21:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.