量价因子之alpha004

系列文章

量价特征因子的量化分析
量价因子之前言
量价因子之alpha001
量价因子之alpha002
量价因子之alpha003



说明

关于本系列文章的背景、引用报告、因子表达式中的变量、函数、回测等说明,请参考:量价因子之前言

一、alpha004因子逻辑表达式

((((SUM(CLOSE, 8) / 8) + STD(CLOSE, 8)) < (SUM(CLOSE, 2) / 2)) ? (-1 * 1) : (((SUM(CLOSE, 2) / 2) <
((SUM(CLOSE, 8) / 8) - STD(CLOSE, 8))) ? 1 : (((1 < (VOLUME / MEAN(VOLUME,20))) || ((VOLUME /
MEAN(VOLUME,20)) == 1)) ? 1 : (-1 * 1))))

理解:
1.考虑价格,根据近2日平均收盘价,是否介于近8日平均收盘价的正负一个标准差之间,来设计。
2.考虑量,当日成交量是否大于等于近20日成交量的均值,来设计。
3.价格,大于一个标准差,取-1,小于负一个标准差取+1,介于之间且满足成交量大于等于近20日成交量的均值,取+1,小于,取-1;
3.因子返回值为+1或者-1,两个值;
4.可以理解成,超跌了(小于负一个标准差)会反弹(+1),超涨了(大于一个标准差)会下跌(-1),正常涨跌(介于正负一个标准差之间)看成交量,放量(成交量大于等于近20日成交量的均值)则看涨(-1),缩量(成交量小于近20日成交量的均值)看跌(-1)

二、因子Python实现

Python代码如下(示例):

import numpy as np
import pandas as pd

def alpha191_004(data,roll_close_long=8, roll_close_short=2, roll_vol=20):
	# 价格
    roll_close_long_mean = data['close'].rolling(roll_close_long).mean()
    roll_close_long_std = data['close'].rolling(roll_close_long).std()
    roll_close_short_mean = data['close'].rolling(roll_close_short).mean()
    # 成交量
    roll_vol_ratio = data['volume'] / data['volume'].rolling(roll_vol).mean()
    # nan处理
    na_map = roll_close_long_mean.isna().astype(float).replace(1., np.nan) + roll_vol_ratio.isna().astype(float).replace(1., np.nan)
    
    # 大于一个正标准差
    condition1 = (roll_close_long_mean + roll_close_long_std) < roll_close_short_mean
    # 小于一个负标准差
    condition2 = (roll_close_long_mean - roll_close_long_std) > roll_close_short_mean
    # 放量
    condition3 = roll_vol_ratio >= 1
    
    # 根据condition取值
    alpha = (~data['close'].isna()).astype(float).replace(0,np.nan) # 初始化 非nan为1,nan仍为nan
    alpha[condition1] = -1
    alpha[(~condition1)&(~condition2)&(~condition3)] = -1
    
    return alpha + na_map    
   

三、因子回测

因子和收益之间的相关系数

简单以某只股票的量价回测alpha004因子和收益gain之间的相关系数。

data['gain'].corr(alpha191_004(data))
0.09117828062406358

四、总结

alpha004量价因子,不过它先考虑价,后考虑量。价考虑超涨转跌,超跌反弹,是均值回归的思想。价格合理波动放量则涨,缩量则跌。回测结果为正值,表示正相关,有合理性。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值