系列文章
量价特征因子的量化分析
量价因子之前言
量价因子之alpha001
量价因子之alpha002
量价因子之alpha003
量价因子之alpha004
说明
关于本系列文章的背景、引用报告、因子表达式中的变量、函数、回测等说明,请参考:量价因子之前言
一、alpha005因子逻辑表达式
(-1 * TSMAX(CORR(TSRANK(VOLUME, 5), TSRANK(HIGH, 5), 5), 3))
理解:
1.TSRANK(A, n) 表示序列 A 的末位值在其临近过去 n 天的顺序排位,同理,TSMAX(A, n)表示序列 A 过去 n 天的最大值;
2.量价都用近5日,价格用最高价;
3.CORR求量价的相关系数,放量涨缩量跌,系数接近1,放量跌缩量涨为-1;
4.最后取-1*TSMAX(),可以理解成,近3日有放量涨或者缩量跌,因子值为负(看跌),近3日都放量跌缩量涨为正(看涨)。
二、因子Python实现
Python代码如下(示例):
import numpy as np
import pandas as pd
def alpha191_005(data, roll_tscorr=5, roll_tsmax=3):
"""
(-1 * TSMAX(
CORR(TSRANK(VOLUME, 5), TSRANK(HIGH, 5), 5)
, 3))
TSRANK(A, n) 序列 A 的末位值在过去 n 天的顺序排位
TSMAX(A, n) 序列 A 过去 n 天的最大值
"""
v_r = data['volume'].rolling(roll_tscorr).rank(axis=0,pct=True)
h_r = data['high'].rolling(roll_tscorr).rank(axis=0,pct=True)
# 如果python版本低,没有rolling().rank(),可以用下面自定义函数实现
# v_r = data['volume'].rolling(roll_tscorr).apply(lambda x: rolling_rank(x,axis=0,pct=True))
# h_r = data['high'].rolling(roll_tscorr).apply(lambda x: rolling_rank(x,axis=0,pct=True))
corr = v_r.rolling(roll_tscorr).corr(h_r)
alpha = - corr.rolling(roll_tsmax).max()
return alpha
# 自定义rolling_rank()
def rolling_rank(array,axis=0,pct=True):
return pd.Series(array).rank(axis=axis,pct=pct)[-1:]
三、因子回测
因子和收益之间的相关系数
简单以某只股票的量价回测alpha005因子和收益gain之间的相关系数。
data['gain'].corr(alpha191_005(data))
-0.026313032695070532
四、总结
alpha005量价因子,寻找近日是否出现过放量涨缩量跌,或者近日是否连续放量跌缩量涨。