Python金融系列第八篇:Fama-French 多因子模型

作者:chen_h
微信号 & QQ:862251340
微信公众号:coderpai


第一篇:计算股票回报率,均值和方差

第二篇:简单线性回归

第三篇:随机变量和分布

第四篇:置信区间和假设检验

第五篇:多元线性回归和残差分析

第六篇:现代投资组合理论

第七篇:市场风险

第八篇:Fama-French 多因子模型


介绍

我们在前面的章节中,我们了解到资本资产定价模型(CAPM)将市场回报视为影响任何资产回报的唯一因素。本章将 CAPM 概括为以下形式的多因素模型:

R = α + β 1 f 1 + β 2 f 2 + ⋯ + β n f n R=\alpha + \beta_{1} f_{1} + \beta_{2} f_{2} + \cdots + \beta_{n} f_{n} R=α+β1f1+β2f2++βnfn

其中每个 f i f_{i} fi 是一个因子。

Fama-French 三因子模型

这个模型是由 Eugene Fama 和 Kenneth French 于 1993 年提出来描述股票收益的。具体三因子模型数学表述如下:

R = α + β m M K T + β s S M B + β h H M L R = \alpha + \beta_{m} MKT + \beta_{s} SMB + \beta_{h} HML R=α+βmMKT+βsSMB+βhHML

其中,

  • MKT 是市场的超额回报。这是在美国注册并在纽约证券交易所内,美国证券交易所或者纳斯达克上市的所有 CRSP 公司的价值加权回报减去一个月的国债收益率;
  • SMB(Small Minus Big)衡量市值较小的股票的超额回报,而不是市值较大的股票;
  • HML(High Minus Low)衡量价值股超过成长股的超额收益。价值股票的成交价格比(B/P)高于成长股。

模型试验

为了测试三因子模型,我们用它来预测纳斯达克美国小型股指数和纳斯达克美国大型股指数的回报。我们估计过去 6 年中每日回报的模型。

美国小型股回报的结果:

在这里插入图片描述

SMB 的系数为正,因此当小型股超过大型股时,小型股指数将获得更高的回报,这并不奇怪。通过比较这些因素的统计数据,我们知道 MKT 和 SMB 是推动小盘股指数的更重要因素。

美国大型股票回报的结果为:

在这里插入图片描述

正如预期的那样,SMB 的系数对于大型股指是负的。HML 的系数非常低,这表明价值和成长股在大盘股指中的权重大致相同。

因素回报

Fama-French 5因子模型包含另外两个因素:

  • RMW(Robust Minus Weak)衡量营业利润率较高的公司的超额回报,而不是利润较低的公司;
  • CMA(Conservative Minus Aggressive)衡量的是公司投资的超额回报低于哪些投资更能多的公司;

RMW 由 Novy-Marx提出,他写到:“控制毛利润率解释了大多数与收益相关的异常情况,以及各种看似无关的盈利交易策略。” CMA 由Fama和French 提出。

总结

在本章中,我们将资本资产定价模型(CAPM)扩展为多因素模型:特别是 Fama-French 因子模型。到目前为止,它们是经验最成功的多因素模型,并且在实践中常用。


来源:quantconnect

Fama-French因子模型是一个由美国经济学家肯·法玛(Ken French)和他的同事创建的风险评估工具,用于衡量股票收益的主要驱动因素。该模型将资产回报分解为个基本因子: 1. **市场因子**(Market Risk Premium, MRP):反映了整体市场的风险溢价,即所有股票相对于无风险利率的超额回报。这个因子捕捉的是股票投资的整体风险。 2. **规模因子**(Size Effect, SIZ):代表小盘股通常比大盘股有更高的预期收益率,反映了投资者对小市值公司的偏好。 3. **价值因子**(Value Effect, VEN):衡量了低市盈率(高价格/盈利比率)股票相对于高市盈率股票的表现,反映市场对于便宜股票的估值差异。 在Python中,你可以使用`famafrench`库来应用Fama-French因子模型。首先,你需要安装这个库,可以使用pip命令: ```bash pip install famafrench ``` 然后,通过以下步骤分析数据: ```python import famafrench as ff # 加载Fama-French数据 ff_data = ff.get_fundamentals(start_date='YYYY-MM-DD', end_date='YYYY-MM-DD') returns = ff_data['Returns'].pct_change() # 计算因子数据 market_factor, size_factor, value_factor = ff.portfolio_effect(returns) # 可视化或进一步分析因子结果 ``` 在这个例子中,你需要替换`start_date`和`end_date`为你感兴趣的日期范围。模型计算出的各因子可以帮助你理解特定时间段内投资组合的风险调整后收益。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值