因子的定义
股票交易中,最显然的指标无非价格和成交量,大多经典的技术指标其实都是围绕着价格和成交量来构建,本文中尝试将这两者结合起来构建量价因子。中短周期上,量价走势分类为量价背离与量价同向,并通过量价相关性来衡量量价走势的背离与同向的程度。因此,量价相关性,也就是本文中的量价因子,可以简单定义为:
一段时间窗口内,股票收盘价与股票日换手率之间的秩相关系数
本文中的量价相关系数计算,采取的时间窗口为15个交易日
from quartz_extensions import * import numpy as np import pandas as pd import scipy.stats as st start = ‘2016-01-01’ # 回测起始时间 end = ‘2016-12-01’ # 回测结束时间 benchmark = ‘HS300’ # 策略参考标准 universe = set_universe(‘A’) # 证券池,支持股票和基金 refresh_rate = ‘fri’ # 调仓频率,表示每周五结束之后生成调仓 delay_number = 5 # 信号最大衰减周期 quantile_number = 5 # 分位分组的组数 function_list = [“winsorize”, “neutralize”, “standardize”] # 信号处理函数列表,从前到后进行处理 industry_type = ‘SW1’ # 行业分类类型 ## 自定义因子函数 def foo(data, dependencies=[‘turnoverVol’, ‘closePrice’], max_window=16): closePrice = data[‘closePrice’][1:] pre_closePrice = data[‘closePrice’][:-1] turnoverVol = data[‘turnoverVol’][1:] univ = closePrice.columns corr_data = pd.Series(index=univ) for stk in univ: # 对每一只股票分别计算历史window天前望收益率 x = turnoverVol[stk].values y = closePrice[stk].values corr_data.ix[stk] = st.spearmanr(x, y)[0] return corr_data ## 注册因子名称 def initialize(account): a = Signal(‘price_vol’, foo) account.signal_generator = SignalGenerator(a) ## 调用自定义因子分析函数 create_factor_tear_sheet(‘price_vol’, start=start, end=end, benchmark=benchmark, universe=universe, refresh_rate=refresh_rate, delay_number=delay_number, quantile_number=quantile_number, function_list=function_list, industry_type=industry_type, initialize=initialize)