1. 前言最近要工作了,工作好难找啊。看到好多要求要有机器学习这方面的经验的,虽然我对传统因子模型这块做了很多工作,但是机器学习却没怎么接触。
从我自身的理解来看,在股票的多因子模型上,机器学习或者深度学习的模型依然较难打败传统的线性加权的方法,而且也存在动量的特征,当某类长期稳健的底层因子突然失效,机器学习得到的Alpha也难以规避这样的风险。本身Alpha因子与收益之间的线性关系就比较好,另一方面很多Alpha模型是低频率的,样本数据不够也可能导致一些机器学习的非线性模型样本外表现不佳。现在很多私募都是大量的堆技术因子,或者将一些模型用在高频数据上。这样可能会好一点,但不管是技术因子还是高频数据,都会给模型增加了交易的成本,我虽然没研究过这块,但总感觉有点粗暴,甚至了解的一家私募雇中科院的实习生写因子,三年积累了快1万个。
现在不少基本面因子其实和股票的收益之间的线性关系并不好,例如它可能是一个倒U形的关系。如果我们能用机器学习的方法建立一个模型,捕捉到因子和股票收益之间的这种非线性关系,那就非常具有意义,其实简单来讲就是一个非线性的变换。尽管这样很难,一方面,这种关系可能并不是稳定,同时也可能不具有普适性。
但是既然是为了找工作,所以还是要学点这方面的知识,所以尝试建立一个机器学习来进行因子合成的框架,虽然最终结果未必要好于线性加权的方式,旨在学习交流为主。
2. 准备工作限于硬件水平,只有一台老破笔记本,所以没有选择太多的特征,选择了如下这些因子:
bp_lr, current_ratio, debt_2_equity, ep_ttm, eps_basic_ttm, gross_margin_ttm, illiq_1m, illiq_3m, ncf_operate_a_lr_yoy, ncf_operate_a_ttm_yoy, ncfp_ttm, net_profit_lr_yoy, net_profit_margin_ttm, net_profit_sq_zscore, net_profit_ttm_yoy, ret_5d, revenue_lr_yoy, revenue_sq_yoy, revenue_sq_zscore, revenue_ttm_yoy, roa_sq, roa_ttm_avg, roe_sq, roe_ttm_avg, sp_ttm, sue, sur, turnover_1m, turnover_3m, vol_20d毫不犹豫的贡献了自己因子库的一部分,这些因子在卖方的报告当中都有,所以我这里不再赘述它们的含义,基本上包括了估值,成长,动量,质量,规模,波动这几类。
我们需要对这些因子做去极值