1. 数据获取:
a) 股票池:沪深300成份股/中证500成份股/全A股。剔除ST股票,剔除每个截面期下一交易日停牌的股票,剔除上市3个月内的股票,每只股票视作一个样本。
b) 训练样本长度: 72个月。
2. 特征和标签提取:每个自然月的最后一个交易日,计算70个因子暴露度,作为样本的原始特征;计算下一整个自然月的个股超额收益(以沪深300指数为基准),作为样本的标签。因子池如图表31所示。
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) 行业市值中性化:将填充缺失值后的因子暴露度对行业哑变量和取对数后的市值做线性回归,取残差作为新的因子暴露度。
d) 标准化:将中性化处理后的因子暴露度序列减去其现在的均值、除以其标准差,得到一个新的近似服从N(0,1)分布的序列。
4. 训练集和交叉验证集的合成:
a) 分类问题:在每个月末截面期,选取下月收益排名前30%的股票作为正例(y=1),后30%的股票作为负例(y=0)。将训练样本合并,随机选取90%的样本作为训练集,余下10%的样本作为交叉验证集。
b) 回归问题:直接将样本合并成为样本内数据,同样按90%和10%的比例划分训练集和交叉验证集。
5. 样本内训练:使用机器学习模型对训练集进行训练。
6. 交叉验证调参:模型训练完成后,使用模型对交叉验证集进行预测。选取交叉验证集AUC(或平均AUC)最高的一组参数作为模型的最优参数。
7. 样本外测试:确定最优参数后,以T月月末截面期所有样本预处理后的特征作为模型的输入,得到每个样本的预测值f(x),使用预测值构建组合选股。