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
thinkingmind OP 策略源码和一键克隆,还请到策略原帖: https://www.ricequant.com/community/topic/2129
|