【量化】通过Fama-French三因子模型选股,收益能达到多少?

作者:幻好

来源: 恒生LIGHT云社区

Fama-French三因子模型

基本概念

Fama和French 1993年指出可以建立一个三因子模型来解释股票 回报率 。模型认为,一个 投资组合 (包括单个股票)的超额回报率可由它对三个因子的暴露来解释,这三个因子是:市场资产组合( RmRf )、市值因子(SMB)、账面市值比因子(HML)。这个多因子均衡定价模型可以表示为:

image-20211120182259810-1637403783396.png

法码三因子模型可以理解为,某个股票的收益率与其市值,账面市值比,市盈率等因素相关,能够通过比较组合排序后,选出收益最高的股票组合。

历史背景

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.检查源数据的正确性,确保模型所需数据的真实可靠性。

image-20211121192126921.png

2.使用程序读取数据,并计算每支股票的【下月涨跌幅】

image-20211121193328192.png

image-20211121193507648.png

3.从数据源数据中剔除一些可直接排除的数据

image-20211121193954587.png

image-20211121193600878.png

4.根据计算总市值 * 市净率所得结果进行排序,并按时间进行分组

image-20211121194032070.png

image-20211121193737134.png

5.模拟初始资金100,计算下月收益

image-20211121194052149.png

image-20211121193847423.png

总结

本文主要通过Fama-French三因子模型,粗略的搭建了模型,对收益进行了预测。多因子计量模型一般都是建立在大量假设基础上的,现实世界里不存在如此完美的情形。只能通过控制某些变量去研究解释其他变量,然后得出一个相对真实的理论值。

投资有风险,入市须谨慎。


版权声明:本文为weixin_44433834原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。