Fama-French 三因子模型

本文介绍了Fama和French的三因子模型,该模型通过市场风险溢酬、市值因子和账面市值比因子来解释股票收益率。以华夏银行为例,通过获取股票收益率、三因子数据,进行线性回归分析,发现华夏银行的收益率与其收益率与三个因子高度相关,其中市场风险溢酬因子影响最大,表明其股价受市场和行业波动影响较大。
摘要由CSDN通过智能技术生成

概述

自提出CAPM模型以后,不断有学者对其进行实证验证和应用。有证据表明,市场风险溢酬因子不能充分解释个别风险资产的收益率,因此学者们不断探寻影响资产定价的其它因子。


Fama和French于1992年7月和1993年8月对美国股票市场中股票收益的决定因素进行了全面性的研究分析,从可以解释股票收益率的众多因素中提取出3个重要的影响因子,即市场风险溢酬因子、市值因子和账面市值比因子,依照CAPM模型用这3个因子建立起线性模型来解释股票的收益率,这就是三因子模型。


其因子说明如下:

• 市场风险溢酬因子:对应市场投资组合的收益率

• 市值因子:对应的做多市值较小公司、做空市值较大公司的投资组合之收益率

• 账面市值比因子:对应的是做多高 B/M 比公司、做空低 B/M 比公司的投资组合之收益率。

其中:

B/M:账面市值比

  1. BM=股东权益/公司市值.
  2. 股东权益(净资产)=资产总额-负债总额 (每股净资产x流通股数)
  3. 公司市值=流通股数x每股股价
  4. 账面市值比(BM)=股东权益/公司市值=(每股净资产x流通股数)/(流通股数x每股股价)=每股净资产/每股股价=B/P=市净率的倒数


应用

在实证中,我们常用:

b3db4cad877fc8c47e1b27477b1efc04.png

来做回归检验,公式中

为超额收益率。在进行实证研究应用时,投资组合(或个股)收益率Rit、无风险收益率Rft、市场投资组合Rmt、市值因子组合SMBt和账面市值比因子组合HMLt的数据都是已知的,通过线性回归拟合最小化残差平方和我们可以得到参数

5ee3b33db068c37088eb30b8b05e5771.png

9e30191a4129a4dcbbd3a35b71e0f85b.png

c79f70192a4d9013803ee8d6f25a34c6.png

bbc62a67be5da5dd584409e7ce1edc03.png

的估计值检验超额收益及3个因子的系数是否显著地异于0,也就是检验3个因子是否能够解释收益率。


Rit和Rmt的数值获取:国泰安数据库、中国证券市场交易数据CSMAR等有提供股票交易及收益率数据,市场投资组合收益率Rmt可以直接从数据库中苑; 若研究对象为投资组合,Rit需要用个股收益率经过加权平均计算,加权平均有两种试:一种是等比例加权平均、另一种是按市值比例加权平均。


Rft的数值获取:无风险利率Rft可以取值为中国人民银行公布的人民币利率,也可以参考政府债券的利率。投资组合(或个股)i的风险溢酬 Rit-Rft和市场风险溢酬Rmt-Rft即可计算出。


模型代码实现:

以华夏银行股票(600015.SH)为例,获取2014年1月至2015年4月的数据,利用三因子模型计算影响其收益率受到哪方面影响比较大。

第一步:先计算华夏银行股票的各期收益率:

import ffn

import tushare as ts

import pandas as pd

import project_conf

import matplotlib

matplotlib.use('TkAgg')

import matplotlib.pyplot as plt



#----数据准备

pro = ts.pro_api(project_conf.tushare_token)

formStart ="20140101"

formEnd ="20150414"

#获取(600015.SH)华夏银行股票

stock_code='600015.SH'


#从公共配置文件中获取tushare的Key并且初始化pro对象

pro = ts.pro_api(project_conf.tushare_token)

#--------获取股票数据

df_hx= pro.daily(ts_code=stock_code, start_date=formStart, end_date=formEnd)

# #将日期列转换成日期格式并设置为索引

df_hx.index=pd.to_datetime(df_hx['trade_date'])

#将数据按正序排序

df_hx.sort_index(ascending=True,inplace=True)

#计算收益率

df_hx_return=ffn.to_returns(df_hx['close'])

df_hx_return.name='return'

df_hx_return.dropna(inplace=True)


运行结果:

779cccc6ef8b017a6756c453d6e5fb5d.png


第二步:载入三因子数据,并与第一步计算的收益率合并成一张表格

#获取三因子(文件中是已经计算好的三因子,见附件)

three_factors=pd.read_table('datafile/ThreeFactors.txt',index_col='TradingDate')

#设置日期作为索引

three_factors.index=pd.to_datetime(three_factors.index)

#截取2014年1月2日以后的数据

three_factors_2014=three_factors.query('index>"2014-01-02"')

#获取三个因子变量(其中,标1的是用流通市值加权平均计算的,标2的是用总市值加权平均计算的 这里取标2的

df_tf=three_factors_2014[['RiskPremium2','SMB2','HML2']]


df_data=pd.merge(df_hx_return,df_tf,left_index=True,right_index=True)

print(df_data.head())


运行结果:

bff2217991dc672b3382732512faaa8e.png


第三步:制作散点图,分析华夏收益率分别与三个因子之间的相关性

#开始作图 分析相关性

plt.subplot(2,2,1)

plt.scatter(df_data['return'],df_data['RiskPremium2'])

plt.subplot(2,2,2)

plt.scatter(df_data['return'],df_data['SMB2'])

plt.subplot(2,2,3)

plt.scatter(df_data['return'],df_data['HML2'])

plt.show()

运行结果:

fee3168288233c61a4712d982ee54a5b.png


从图可以看到,其收益率与三个因子都是高度相关的。


第四步:训练线性回归模型,输出参数

#开始训练模型

import statsmodels.api as sm

reg_three_facter=sm.OLS(df_data['return'],sm.add_constant(df_data.iloc[:,1:4]))

res=reg_three_facter.fit()

print(res.summary())


#提取模型参数

print("模型输出参数为")

print(res.params)


运行结果:

Summary输出的结果:

a0576d98fbccc355423b363ae17c3918.png


提取的参数:

模型输出参数为

const 0.000166

RiskPremium2 1.046047

SMB2 0.246412

HML2 0.509862

dtype: float64


结论:

综合上述模型的输出结果,可以看到,三个因子对华夏银行股价均有不同程度的影响,其中RiskPremium2(即市场风险溢酬)对其股价影响最大,说明华夏银行自身经营较稳健,价格受自身波动影响不明显,而受市场、行业影响较大。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值