题目 | Empirical Asset Pricing via Machine Learning |
---|---|
论文链接 | 论文pdf链接 |
发表时间 | 2018.09.04 |
论文作者 | Shihao Gu, Bryan Kelly, Dacheng Xiu |
目录
内容简要
本篇论文使用相对常见的机器学习算法(包括NN,Tree,OLS, generalized linear model等)作为benchmark,给大家呈现机器学习在股票return预测中的应用,体现出机器学习的性能能够超越传统模型
disclaimer:本文主要是笔记形式,并非文章翻译,极度提纲挈领;对于我个人更像是划重点的过程,个性化很强。
知识点
- 数据: 1957 - 2016,接近30000支股票的时间序列,共8个时序变量,74个行业变量(有的每月更新,有的季度更新),构建900个基础信号。
- 机器学习做因子一般去拟合未来的收益,以MSE作为loss function
- OLS当predictor太多的时候就会失效,主要原因是数据信噪比低且相关性非常强,一旦参数太多了就会让regression变成overfit;通过rigid regularization可以有效缓解这种现象,如果有regularization的话多一些参数还是有提升的; PCA regression对于OLS也有很明显的帮助
- NN和Tree模型深度一般也不是越深越好,NN大概3层最好,Tree大概6个叶子最好,原因大概也是数据本身信噪比低
- 最重要的predictor
- price trend: stock momentum, industry momentum, short term reversal
- liquidity,流动性: bid ask spread/ market value/ volume
- volatility, 波动: return vol,大盘 vol/各自的vol,market beta和beta 平方
- ML 有一个robust的点是很容易增加变量数量,predictor数量不是那么死,模型更加灵活
模型介绍
- 对每一个模型,都有三方面值得讨论:1. model, 2. objective function, 3. computational algorithm (其实就是优化器或者优化的方法)
- 本文并没有使用cross sectional regression,基本都是用过去的数据directional的预测,但是在parameter的优化上隐含了别的stock的信息。 预测的时候对于每一个stock使用的model都是一样的
- 超参数:1. penalization of lasso and rigid regression; 2. number of iterated trees; 3. depth of the trees.
- Sampling: training for parameter, validation for tune hyper, test for reestimate
- 他的预测是使用t时刻的数据预测t+1时刻的数据,然后把所有的预测(return 预测)做MSE求和,并没有rolling training。
Linear Model
- 对于loss function,可以考虑加上一个权重调整,例如market value的正相关来腔调大市值股票的information, 或者与市场stock数量的负相关从而保证求和时候distribution量级是一样的
- Huber function: 用来修正二阶loss对过严重outlier的敏感性,设置一个阈值,超出部分变成一阶。 实际上文章用了很多次Huber loss,确实能够提升模型的表现
- 当参数数量超过观测数量的时候,线性回归将无解,根本原因在于,对于实数有限维度的矩阵中:
r a n k ( X T X ) = r a n k ( X ) rank(X^TX) = rank(X) rank(XTX)=rank(X)
(这一点可以通过证明 I m a g e ( X ) → I m a g e ( X T X )