Python实现Fama French五因子模型
发布网友
发布时间:2024-09-24 15:31
我来回答
共1个回答
热心网友
时间:2024-09-24 16:37
本文聚焦于构建并实现Fama French五因子模型的Python版本,探讨了数据准备、构建因子的变量、代码处理以及因子计算方法。五因子模型相较于传统的三因子模型增加了两个关键因子:规模因子(SMB)和投资因子(CMA),引入了总资产增长率作为第五个因子,从而对投资决策提供更全面的视角。接下来,本文将详细解析五因子模型的构建过程和实现步骤。
首先,构建股票池包括了深圳主板、中小板、创业板、上海主板以及科创板的全部在市股票,剔除上市不满12个月的新股、风险警示股(ST)、退市股、净资产为负的股票以及停牌股票。对于财务数据的准备,需要收集无风险利率、量价数据。量价数据来源于Wind股票行业序列,采用后复权股票价格,无风险利率则从CSMAR数据库中获取月度数据。数据更新频率采取每月更新,股票组合进行月度换仓,不同于Fama French年度换仓策略。
在数据处理上,本文遵循了之前文章的处理方式,包括了数据匹配和生成月度频率数据的步骤。为了补充模型所需的财务数据,ROE数据和总资产增长率数据被整合到现有的数据集中。通过外连接(outer join)操作,确保了每个股票每个月末都能获取到最新的财务数据信息,向前填充缺失值以保证数据的一致性。
接下来,本文详细介绍了五个因子的计算方法。市场因子(MARKET)通过计算市场组合的收益率,将市场组合收益率减去对应的无风险利率得出。价值因子(HML)计算与三因子模型中类似,通过独立双重排序法构建,将股票按照市值大小和账面市值比进行分类,计算不同组合的收益率。在规模因子(SMB)的计算上,规模因子的计算方式发生了变化,采用了独立双重排序法,分别以市值和账面市值比为基准对股票进行分类,计算不同组合的收益率。
盈利因子(RMW)和投资因子(CMA)的计算同样采用独立双重排序法,分别按照ROE(TTM)和总资产增长率对股票进行分类。计算过程涉及到将股票分为大市值、小市值、高账面市值比、中账面市值比、低账面市值比、高ROE、中ROE、低ROE、保守投资、中等投资、积极投资的多个组合,并计算不同组合的收益率。最终,通过公式得出因子的计算结果。
代码实现中,首先对数据匹配进行了优化,通过读取数据、缩尾处理和外连接操作,实现了更高效的数据整合。因子计算的实现逻辑清晰,通过独立分组标记、计算特定组合的收益率,以及选择对应公式计算因子值。代码处理过程包括了参数检查、特征变量独立分组、组合构建、因子计算等步骤,确保了模型的准确性和可靠性。
在模型检验方面,本文展示了五因子模型中各因子的累计收益情况,并进行了t检验,结果显示投资因子的不显著性,以及市场因子的潜在不显著性。此外,通过Alpha检验和GRS检验,比较了CHN三因子模型与Fama French五因子模型的性能,结论显示尽管两者都能解释部分异象,但CHN三因子模型的解释效果更优。