V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
thinkingmind
V2EX  ›  推广

来自 WorldQuant 的 101 个 Alpha

  •  
  •   thinkingmind · 2016-12-09 12:12:58 +08:00 · 5776 次点击
    这是一个创建于 2910 天前的主题,其中的信息可能已经有所发展或是发生改变。

    2015 年底World Quant发表了论文《 101 Formulaic Alpha 》,论文中给出了 101 个现实中的 alpha 。

    原文 pdf : https://arxiv.org/pdf/1601.00991.pdf

    —— We emphasize that the 101 alphas we present here are not “ toy ” alphas but real-life trading alphas used in production. In fact, 80 of these alphas are in production as of this writing. 其中强调 80%都仍在使用(当然,这个信着先吧....)。

    论文中还科普了一下 alpha 的简单分类,也就回答了一下收益能解释关联程度等一些问题,其中这些 alpha 是可以做空使用的,但是在大 A 股方面做空需要比较复杂,这里只实现做多的一面,然后阶级止损。

    在 Appendix A :分为了两部分

       A.1 是 101 个 alpha 的计算公式和使用的函数的定义和解释,其中一部分的函数解释:
    

    rank(x) 是一个排名的函数

    abs(x) , logx), sign(x)都是按照命名定义的函数分别是绝对值,对数还有信号函数

    delay(x,d) 在 d days 以前的 x 的值

    delta(x,d) 今天的 x 值减去 d 天以前 x 的值

    correlation(x,y,d) 在过去长度为 d 天, x 和 y 的相关性

    covariance(x,y,d) 在过去长度为 d 天, x 和 y 的协方差

    ts_min(x,d), ts_max(x,d) 时间序列函数, d 天内的最小值和最大值

    ts_argmax(x,d), ts_argmin(x,d)是计算 ts_min(x,d), ts_max(x,d)发生在哪一天

        A.2.部分是描述了我们需要输入的一些数据,大部分跟名字相关。
    

    returns 每日收盘之后的收益

    open , close , high , low , volume 对应是开盘价,收盘价,最高价和最低价还有成交量。

    vwap 成交量加权平均价

    cap 市值

    adv(d) d 天的平均成交额

    还有部分的工业指数(这是美国市场方面的)

    我们使用了其中的单因子 alpha 2 来对 399968 创业成长成份股进行了回测(我们自己添加了阶级止损的方法),然后收益率是很可观的。

    alpha2 :(-1*correlation(rank(delta(log(volume),2)),rank(((close-open)/open)),6))

    嗯...就是用-1 去乘一个 6 天的相关系数

    相关系数的 x是成交量的 rank(delta(log(volume),2)) 也就是当天成交量的对数和 2 天前的成交量对数的差值的排名~

    相关系数的 y就是 rank(((close-open)/open)),收盘价减去开盘价的差去除以开盘价的一个排名~

         (我知道这很拗口而且也神难懂,所以我们就有了文末的亮点~)
    

    代码方面:

    alpha :

    每天初始化:

    买卖:

    最后收益图:

    亮点:

    我们Ricequant 已经把其中的 60 个 Alpha 写成了一个 demo,我们已经把 alpha 都写进去了,每一个 alpha 都可以独立使用,但是我们鼓励大家去使用这些 Alpha 去做一个组合。 比如说:

    alpha 1 和 alpha 40 去做一个组合,经过各自的回测,我希望看看在 alpha 1 与 alpha 40 的权重比设置为 30%和 70%的情况,会是怎么样的呢?

    对 alpha 值进行计算获得一个新的 alpha 也是可以的。

    使用方法: 在 before trading 中设置 alpha_use=alpha.alpha002()的时候更改后面数字的部分就可以使用不同的 alpha ,但是注意不同的 alpha 返回的数值可能是 NaN 或者是负数,要另作处理呢。

    有基础的同学如果使用多因子的话,就要自己手动去增加多个 alpha_use 然后去计算结果根据自己的方法去回测啦~

    第 1 条附言  ·  2016-12-09 20:11:06 +08:00
    策略源码和一键克隆,还请到策略原帖: https://www.ricequant.com/community/topic/2129
    1 条回复    2016-12-09 12:31:46 +08:00
    thinkingmind
        1
    thinkingmind  
    OP
       2016-12-09 12:31:46 +08:00
    策略源码和一键克隆,还请到策略原帖: https://www.ricequant.com/community/topic/2129
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3649 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:01 · PVG 13:01 · LAX 21:01 · JFK 00:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.