楼主: Jazzlues
5836 2

[交易策略] 【史上最详细】WorldQuant Alpha 101 因子 #001 研究 [推广有奖]

  • 6关注
  • 0粉丝

svip1

本科生

46%

还不是VIP/贵宾

-

威望
0
论坛币
1286 个
通用积分
0.1000
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
544 点
帖子
10
精华
0
在线时间
183 小时
注册时间
2014-3-24
最后登录
2024-9-14

楼主
Jazzlues 发表于 2017-8-11 11:07:33 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

微信图片_20170810160208.jpg



文章来源:量化策略研究专栏 | DigQuant 专业量化研究社区

文章传送门:WorldQuant Alpha 101 因子#001 解释与研究


本系列由点宽DigQuant量化人才俱乐部独家发布

点宽 DigQuant 量化人才俱乐部招募计划详情(点击标题查看)


未标题-2.png




Alpha #001 因子

➢ 公式:


➢ 公用函数说明:

1、rank(x)

含义:股票的排名。输入值向量x 为股票向量,若输入值含nan,则nan 不参与排名,输出为股票对应排名的boolean 值(排名所占总位数的百分比)。

例如:

输入值:x=[3,7,5,9,12,2];

计算过程:按向量x 的元素大小排序,小的值排在前面,序号从0 开始,则 x 元素对应排序排名为:r=[1,3,2,4,5,0];

输出值:对应排名的 Boolean 值为y=r/5= [0.2 , 0.6 , 0.4 , 0.8 ,1,0]


2、Ts_ ArgMax(x,d)

含义:找出前d 天的向量x 值最大的值,并返回其索引。

例如:

d=5 , x=[5,8,9,3,2],对应索引号为L=[5,4,3,2,1],其中,索引号为5 代表过去第5 天,索引号为1 代表过去第1 天。因为x 中最大的元素为9,则索引号为3,即过去第3 天。


3、SignedPower (x, t)=Sign(x).*(Abs(x).^t)

含义:保持向量x 的正负特性,将x 进行t 次幂处理使其差异放大。

其中,Sign(x)为符号函数,表示:如果x>0,就返回 1,如果x<0,则返回-1,如果x=0,则返回 0.

Abs(x)为绝对值函数,进行非负数处理。


4、stddev(x,n)

求前 n 个 x 值的标准差。


➢ 公用变量说明:

1、returns :表示收益率,又称回报率,输入n+1 行收盘价close,输出n 行收益率returns。式子为:



2、close :表示收盘价。



➢ 公式解析:

根据alpha#001 公式,我们根据公式的运算顺序解析:


1、x1= (returns<0?stddev(returns,20) : close)

结构:判断语句。当returns . 0成立,则返回stddev(returns,20);否则,返回close 。逻辑:判断每日回报率returns ,如果小于0,则返回前20 天的回报率的标准差,否则返回收盘价。

解析:当日回报率是由当天收盘价与前一天收盘价得到的。returns 大于0时,收盘价相对昨天上升,此时,返回当前收盘价进行接下来的运算;反之,返回前20 天的回报率的标准差进行接下来的运算。


2、x2=SignedPower(x1,2)

结构:x2=SignedPower (x1,2)=Sign(x1).*(Abs(x1).^2),

逻辑:对x1进行保留正负号的平方处理,其中x1为 1中返回值。

解析:将x1经过此运算得到x2,运算前后对比之后你会发现x2的值与对应的x1的值符号不变,但对应的值都放大了,我们将此操作称为差异放大。为什么要放大?我们根据x1值进行分析:x1对应的值为收盘价和前 20天的回报率的标准差两种。将其差异放大之后变成x2,此时,收盘价的平方普遍大于前 20天的回报率的标准差。这就是我们进行差异放大处理需要达到的效果。


3、x3=Ts _ ArgMax(x2,5)

结构:x3=Ts _ ArgMax(x2,5) =find(Max(x2,5)),

逻辑:即从过去 5个值x2找出最大值,返回其对应索引。其中,x2为 2中返回值。

解析:x2值为收盘价或前 20天的回报率的标准差进行差异放大后的值,对其进行取最大值的意义在于找出过去5 天里最大的收盘价或者前20 天的回报率的标准差。结合前面分析我们知道,returns>0时,x2才为收盘价;反之,x2为前20 天的回报率的标准差。

因此,过去 5 天里面x2值有可能包含以下三种情况:①全部为收盘价、②全部为前20 天的回报率的标准差、③一部分为收盘价,一部分为前20 天的回报率的标准差。而x2是进行差异化放大的值,放大后满足:收盘价的平方普遍大于前20天的回报率的标准差。因此,过去 5天里只要存在一天满足returns>0,一般最大值就为收盘价。

根据前面对Ts_ ArgMax(x2,5)说明,我们知道对过去 5天里找出收盘价或前20 天的回报率的标准差的最大值的意义在于:根据均值回归的规律,涨得太多了,就会向平均值移动下跌;跌得太多了,就会向平均值移动上升。本策略主要利用跌得太久,就会反弹上升原理以及“波动性”原理,即总是认为其价格在一定范围内上下波动,即在最高点下跌一定程度,就会反弹回原来的最高点。根据这个原理,我们可以得到:

1)对某股票过去5 天里取最大的收盘价的索引,作为其权重值。即收盘价最大值离当前越久,说明收盘最大值之后相对收盘最大值那天来说股价在下降,而当前离最大值那天越久,下降时间越长,从而股价反弹越明显;

2)而对某股票过去5 天里取最大的前20 天的回报率的标准差的索引,作为其权重值。我们知道,标准差越大,波动性越明显。我们知道,如果过去5 天里都是取标准差的话,说明returns都是小于 0;否则,有一天存在returns>0,最大值都是取收盘价。那么,returns 在过去5 天里一直都小于0,根据对returns 的定义,股价一直都在下降。那么其最大的标准差的索引,其意义在于,最大标准差那天离当天越久,最大标准差那天之后,标准差都小于那天的标准差,即波动性从那天之后在下降。而从returns<0可知,股价一直在下跌,从而我们认为过去5 天标准差最大值离现在越久,就会有更高的概率反弹上升。


4、x4=rank(x3)-0.5

结构:先排序,再进行-0.5 中性化变换。

逻辑:rank(x3)表示对x3排序,返回其对应排名的 boolean 值,再进行-0.5中性化操作,使得最后的返回值x4一半为正一半为负。x3为 3中的返回值。

解析:我们知道x3的值为各股票根据前 5天最大收盘价或最大的前 20天的回报率的标准差的索引作为对应股票的权重值。那么,我们对其进行排序以及-0.5中性化操作,最后返回的x4就是我们得到的 alpha#001 因子。取其正数的股票为买入股票池,即将所有股票的根据alpha#001 因子将其对半分,将alpha#001 因子排序取其最大的50%进行交易。


➢ 转换为伪MATLAB 公式:

Step1:


Step2:


Step3:


Step4:


Step5:



➢ 策略说明:




步骤:

1、计算前25 天的每日回报率returns:前5 天的returns 用来判断、前5 天之后的过去20 天的returns 用来计算标准差。每日回报率returns 公式为:



2、判断前5 天的每日回报率,若returns<0,则当天记录值x1 为当天之前20 日回报率的标准差;否则,当天的记录值x1 为当天的收盘价。


3、将前5 天的记录值x1 经过以下公式进行差异化放大处理:

x2=Sign(x1).*(abs(x1).^2);


4、找出经过差异化放大处理后的前5 天的记录值x2 的最大值的索引。前5 天数据对应的索引为当天离现在的天数,如前一天为1,前5 天为5。


5、将每只股票返回的索引号进行排序,返回其股票对应排名的boolean 值(排名所占总位数的百分比),再减去0.5 的中性化操作得到最终的alpha001 因子。判断:若alpha001>0,则买入股票加仓;若alpha001<0,则卖出已有仓位的股票平仓。


➢ 回测程序:WorldQuant Alpha 101 因子#001(点击下载)



➢ 回测软件:Auto-Trader Pro(AT 量能策略研究终端 以 MATLAB 研究平台为依托,甚至可以把交易思路延生到机器学习,神经网络,舆情分析等更复杂的领域。依托 Matlab 强大的数理研究及强大的金融工具箱,策略师不再需要依赖程序员的编程能力,而将研究成果直接转化为程序化策略。)


➢ 回测报告:















二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:量化投资 多因子策略 Alpha MATLAB

微信图片_20170810160208.png (4.85 MB)

微信图片_20170810160208.png

沙发
donggua107 发表于 2018-8-7 10:25:49
想问一下楼主,60之后的alpha中经常出现小数天数,请问应该如何理解呢?

藤椅
幸运符 发表于 2018-8-11 00:21:20

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群
GMT+8, 2026-1-28 07:40