1. 数据获取:
a) 股票池:全A股。剔除ST股票,剔除每个截面期下一交易日停牌的股票,剔除上市3个月内的股票,每只股票视作一个样本。
b) 回测区间:2011年1月31日至2019年9月30日,月度滚动回测。
2. 特征和标签提取:每个自然月的最后一个交易日,计算图表7中231个因子暴露度,作为样本的原始特征;计算下个自然月的个股超额收益和信息比率(以中证500指数为基准),作为样本的标签。
3. 特征预处理:
a) 中位数去极值:设第T期某因子在所有个股上的暴露度序列为D_i,D_M为该序列中位数,D_M1为序列 |D_i-D_M| 的中位数,则将序列D_i中所有大于D_M+5D_M1的数重设为D_M+5D_M1,将序列D_i中所有小于D_M-5D_M1的数重设为D_M-5D_M1;
b) 行业市值中性化:将填充缺失值后的因子暴露度对行业哑变量和取对数后的市值做线性回归,取残差作为新的因子暴露度。
c) 标准化:将中性化处理后的因子暴露度序列减去其现在的均值、除以其标准差,得到一个新的近似服从N(0,1)分布的序列。
4. 训练集和交叉验证集数据处理:直接将样本合并成为样本内数据,按90%和10%的比例划分训练集和交叉验证集。
5. 样本内训练:训练两个模型:
a) XGBoost,模型输入为231个因子,训练目标为下个自然月的个股超额收益(以中证500指数为基准)。
b) Stacking:包含两个XGBoost基模型,两个模型输入都为231个因子,训练目标分别为下个自然月的个股超额收益和信息比率(以中证500指数为基准),再将两个基模型集成。
6. 交叉验证调整参数:模型训练完成后,使用模型对交叉验证集进行预测。选取交叉验证集MSE最小的一组参数作为模型的最优参数。
7. 样本外测试,组合优化构建组合:确定最优参数后,以T月月末截面期所有样本预处理后的特征作为模型的输入,得到每个样本的预测值f(x),将预测值视作合成后的因子。然后使用组合优化模型得到T月月末截面期的股票权重。进行组合优化时,优化目标为最大化预期收益,约束条件为相对于中证500控制行业市值中性,个股主动权重偏离上限为1%。
8. 模型评价:构建选股组合评价模型。