python求因子代码_Python量化入门:饱受青睐的三因子模型「附代码及数据」

代码及数据见文章最后。

主要内容:

一、CAPM的不足与三因子模型的诞生

二、三因子模型的原理

三、Python三因子模型选股实战

一、CAPM的不足与三因子模型的诞生

CAPM模型经历了大量的实证和应用之后,有证据表明,市场风险溢酬并不能充分解释个别风险资产的收益率。于是很多研究者开始探索其他的因素,比如公司市值、PE、杠杆比例、账面市值比等。

Fama和French两个人对于各种因素进行了全面的组合分析,当单独使用Beta或者用Beta分别与其他几个因子相结合时,Beta的解释能力很弱;市值、PE(市盈率)、杠杆比例、BM(账面市值比,PB的倒数)单独来用时,对于收益率的解释能力都很强,但是组合起来时,市值、BM会弱化杠杆比例和PE的解释能力。

后来Fama和French两人提取了3个重要因子:市场风险溢酬因子、市值因子和账面市值比因子,以收益率作为因变量构建了一个类似CAPM的线性模型,即著名的三因子模型。

二、三因子模型的原理

三因子模型中的3个因子均为投资组合的收益率:市场风险溢酬因子对应了市场投资组合的收益率,市值因子对应了做多市值较小的公司与做空市值较大的公司的投资组合带来的收益率,账面市值比因子对应的是做多高BM公司、做空低BM公司的投资组合带来的收益率。三因子模型的形式为:

可以看到这里用的是期望,所以我们仍然转换成线性回归模型的形式:

这样大家就比较熟悉了,一个常数项,三个自变量,一个误差项,一个因变量,妥妥的一个多元线性回归模型。跟CAPM中一样,α代表超额收益率,越高越好,说明我们的投资组合越优秀。

不要看到这么多名词就害怕,在实际应用过程中,这些数据都是已知的,我们直接把数据扔给计算机,通过最小二乘法求解得到α、b、s、h的估计值即可以及它们是否显著即可。

唯一稍显麻烦一点的是SMB和HML的计算,这一部分需要先根据流通市值将股票分为1:1的大市值(B)和小市值(S)股票;根据BM数据将股票分为3:4:3的高中低(H/M/L)三组;这样我们就有了2×3共计6种投资组合(SL/SM/SH/BL/BM/BH)。然后我们通过市值加权平均的方式求得各组的收益率,最后就是求SMB和HML了:

三、Python三因子模型选股实战

1.计算SMB和HML

导入必要的库

定义计算函数

计算并存储数据

根据我实际测试,计算两年的数据大概要七八分钟,我们可以把历史数据整个计算一遍,存到本地或者数据库中,以后就可以直接调用了。

毕竟这两种组合的收益率的计算不是我们这节的重点。

2.挑选股票和基准指数

还是以这几只股票为例,不过这几只股票可能太有代表性,跟指数的波动形态比较接近,在大家自己练手的时候,推荐选择不同市值水平、PB水平的股票来测试,我们这里只讲解方法。

这里geA是指国证A股指数,更能代表整个A股市场。

整合数据,并简单探索

观察数据间的相关性

红色代表正相关,蓝色代表负相关。颜色越深,相关性越强。

收益率时序图

累计收益率时序图

多元线性方程求解

求解过程如下,这次我就不帮大家解读结果了,大家尝试着自己来理解一下。

我提供一些提示,x1、x2、x3分别对应了市场风险溢酬因子、市值因子、账面市值比因子,const对应着常数项,即超额收益率α。

一般情况下,当p值小于0.05时,我们认为该因子对于收益率有显著影响。

这里就放一张图,剩下的结果可以在我提供的J

upyter Notebook文件中看到。

你可能感兴趣的:(python求因子代码)