之前做了很多因子测试的工作,但一直没有总结,感觉很凌乱,决定花时间把这部分东西写一写,温故知新,也为后续学习打基础。首先写一下单因子测试部分,分三篇,数据预处理一篇, 回归法一篇,分层测试法一篇。本篇首先说明多因子模型是什么,随后着重于单因子测试流程及数据预处理的细节,附代码。
01
因子模型概述
均值方差模型
马科维茨的均值方差组合模型是金融学中最著名的投资组合模型,模型想回答的问题是,当投资者需要进行投资决策时,对于市场上存在的证券,他该如何在这些证券上分配资金,简要叙述如下:
设
为市场上的n个证券,各证券期望收益率分别为
,投资者在各证券上的投资权重为
,收益率的协方差矩阵为
。则组合的期望收益率为
各资产的风险可以用资产收益的标准差衡量,则组合的风险可以表示为
从而投资者的最优决策可以为在一定风险水平下,最大化期望收益,或者在一定的期望收益水平下, 最小化风险,即
理论上来说,这个最优化问题是有解析解的,但实际应用中存在很多问题。
首先,实际情况下,预期收益率是不可知的,因此只能采用历史收益率代替期望收益率,每一期需要进行投资时,利用上一期的各证券收益率估计组合风险,求解优化问题得到最优组合的权重,进行当期投资,这样做的误差很大,因为用历史数据直接求协方差阵作为未来组合风险的估计量很不准确。
其次,模型中投资组合的风险计算需要估计组合中每个股票的波动率和两两相关系数,假设股票个数为N,那么都估计的参数个数为<