作者:幻好
来源: 恒生LIGHT云社区
Fama-French三因子模型
基本概念
Fama和French 1993年指出可以建立一个三因子模型来解释股票 回报率 。模型认为,一个 投资组合 (包括单个股票)的超额回报率可由它对三个因子的暴露来解释,这三个因子是:市场资产组合( Rm − Rf )、市值因子(SMB)、账面市值比因子(HML)。这个多因子均衡定价模型可以表示为:
法码三因子模型可以理解为,某个股票的收益率与其市值,账面市值比,市盈率等因素相关,能够通过比较组合排序后,选出收益最高的股票组合。
历史背景
Fama和French 1992年对美国股票市场决定不同股票 回报率 差异的因素的研究发现,股票的市场的beta值不能解释不同股票 回报率的差异 ,而上市公司的市值、账面市值比、市盈率可以解释股票回报率的差异。Fama and French 认为,上述超额收益是对CAPM 中β未能反映的风险因素的补偿。
Fama和French的假设主要有两大部分:一个是理论假设,一个是统计假设。
模型选股实践
本文主要以法码三因子模型为理论基础,通过A股市场数据建立相关性模型,然后通过因子比重选出前十支股票进行组合,验证其收益率。
实践需要提前掌握技能:Python基础语法、Pandas数据处理、基本的金融知识基础、一定的逻辑思维能力。
数据来源
- 数据源来自—恒有数【 https://udata.hs.net/home】
- 统计从2018年至今的近三年总数据
- 由于数据量较大获取时间较久,本文已将提取数据上传附件,便于大家实践。
本文主要基于恒有数社区获取Fama-French三因子模型所需数据源的过程实践。
数据采集原文: 【量化】实战获取Fama-French三因子模型的数据源
策略规则
- 获取每个月的最后一个交易日的数据
- 计算出每条数据的总市值 * 市净率
- 获取所有股票中上述值最小的 10 只股票进行组合
- 对以上组合股票进行投资模拟计算,验证收益率
数据基础
数据源包含以下关键数据:
- 交易日期 :交易日期
- 开盘价 :当日股票股票开盘价格
- 最高价 :当日股票交易最高价格
- 最低价 :当日股票交易最低价格
- 收盘价 :股票收盘价格
- 股票代码 :股票的代码,上证股票以sh结尾,深证股票以sz结尾
- 涨跌幅 :复权之后的真实准确涨跌幅
- 成交量 :当日股票成交量
- 成交额 :当日股票成交额
- 总市值 :当日股票总股价
- 换手率 :当日股票换手比例
- 是否交易 :本月股票最后一个交易日是否交易
- 是否涨停 :本月股票最后一个交易日收盘是否涨停
- 是否跌停 :本月股票最后一个交易日收盘是否跌停
- 市盈率TTM :最近12个月市盈率
- 市净率 :市净率,股价 / 最近期财报每股净资产
具体数据,如下图所示:
实现过程
1.检查源数据的正确性,确保模型所需数据的真实可靠性。
2.使用程序读取数据,并计算每支股票的【下月涨跌幅】
3.从数据源数据中剔除一些可直接排除的数据
4.根据计算总市值 * 市净率所得结果进行排序,并按时间进行分组
5.模拟初始资金100,计算下月收益
总结
本文主要通过Fama-French三因子模型,粗略的搭建了模型,对收益进行了预测。多因子计量模型一般都是建立在大量假设基础上的,现实世界里不存在如此完美的情形。只能通过控制某些变量去研究解释其他变量,然后得出一个相对真实的理论值。
投资有风险,入市须谨慎。