基于RiceQuant的期货多因子策略实现(三)

发布时间 2023-08-11 11:27:19作者: LazyTiming

前言

上一小节中,介绍了期货多因子的大类分类,同时给出了一部分因子公式。
本节将展示完整的单因子分析流程,用于筛选后期构建多因子模型的素材。

流程

  1. 因子预处理
  • 极值处理
  • 标准化
  • 中性化
  1. IC分析

  2. 分组收益分析

  3. 因子收益率分析

案例展示

系列一中提到的corr_vp_5m_d21为例

分析品种

选取黑色系期货品种(使用后复权主连数据) ==》 hei_se = ["RB889","HC889","J889","JM889","I889","FG889","SA889"]

计算因子矩阵与收益矩阵

因子矩阵

# 回测时间
s = '20180101'
e = '20230801'
factor_data = execute_factor(corr_vp_5m_d21_v2, hei_se , s, e)

假设每天T日收盘计算因子,在下一交易日T+1开盘买入,T+2日开盘卖出,则收益矩阵计算如下

RET_O2O = (OPEN - REF(OPEN,1))/ REF(OPEN,1)
label = execute_factor(RET_O2O, hei_se , s, e).shift(-1)

因子分析

对因子数据执行异常值处理以及标准化,由于在同一板块(黑色)做测试,未进行中性化处理,
在换仓周期为1,5,20日下,观察因子的IC变化,分层效果以及因子收益率变化。

engine = FactorAnalysisEngine()

engine.append(('winzorization-mad', Winzorization(method='mad')))
engine.append(('normalization', Normalization()))

engine.append(('rank_ic_analysis', ICAnalysis(rank_ic=True)))
engine.append(('quantile', QuantileReturnAnalysis(quantile=5, benchmark=None)))
engine.append(('return',FactorReturnAnalysis()))

result = engine.analysis(factor_data, label, ascending=False, periods=[1,5,20], keep_preprocess_result=False)
  • IC分析

  • 多空收益

  • 分层

  • 因子收益