python求因⼦代码_Python量化⼊门:饱受青睐的三因⼦模型
「附代码及数据」
代码及数据见⽂章最后。
主要内容:
⼀、CAPM的不⾜与三因⼦模型的诞⽣
⼆、三因⼦模型的原理
三、Python三因⼦模型选股实战
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⽂件中看到。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论