MATLAB构建capm和三因子模型

在金融领域,资本资产定价模型(CAPM)和Fama-French三因子模型是两种常用的资产定价模型。CAPM模型主要考虑市场风险对资产收益的影响,而Fama-French三因子模型则在此基础上增加了规模因子(SMB)和价值因子(HML)的影响。

MATLAB中构建CAPM模型和Fama-French三因子模型的代码。

1. 数据准备

假设你已经获取了以下数据:

  • 资产的日收益率(asset_returns)
  • 市场指数的日收益率(market_returns)
  • 无风险利率(risk_free_rate)
  • Fama-French三因子数据(SMB 和 HML)

这些数据可以通过金融数据库(如CRSP、Compustat等)或在线资源(如Fama-French数据库)获取。

2. 构建CAPM模型

CAPM模型的公式为:
\(R_i - R_f = \alpha + \beta (R_m - R_f) + \epsilon\)
其中:

  • \(R_i\) 是资产的收益率
  • \(R_f\) 是无风险利率
  • \(R_m\) 是市场指数的收益率
  • \(\alpha\) 是截距项
  • \(\beta\) 是市场风险系数
  • \(\epsilon\) 是误差项

在MATLAB中,可以使用fitlm函数来估计CAPM模型。

% 假设数据已经加载到以下变量中
% asset_returns: 资产的日收益率
% market_returns: 市场指数的日收益率
% risk_free_rate: 无风险利率

% 计算超额收益率
excess_asset_returns = asset_returns - risk_free_rate;
excess_market_returns = market_returns - risk_free_rate;

% 构建CAPM模型
capm_model = fitlm(excess_market_returns, excess_asset_returns);

% 输出结果
disp('CAPM模型结果:');
disp(capm_model);

% 提取alpha和beta
alpha = capm_model.Coefficients.Estimate(1);
beta = capm_model.Coefficients.Estimate(2);

fprintf('Alpha: %.4f\n', alpha);
fprintf('Beta: %.4f\n', beta);

3. 构建Fama-French三因子模型

Fama-French三因子模型的公式为:
\(R_i - R_f = \alpha + \beta_1 (R_m - R_f) + \beta_2 \text{SMB} + \beta_3 \text{HML} + \epsilon\)
其中:

  • \(\text{SMB}\) 是规模因子(Small Minus Big)
  • \(\text{HML}\) 是价值因子(High Minus Low)

在MATLAB中,可以使用fitlm函数来估计三因子模型。

% 假设数据已经加载到以下变量中
% asset_returns: 资产的日收益率
% market_returns: 市场指数的日收益率
% risk_free_rate: 无风险利率
% SMB: 规模因子
% HML: 价值因子

% 计算超额收益率
excess_asset_returns = asset_returns - risk_free_rate;
excess_market_returns = market_returns - risk_free_rate;

% 构建三因子模型
fama_french_model = fitlm([excess_market_returns, SMB, HML], excess_asset_returns);

% 输出结果
disp('Fama-French三因子模型结果:');
disp(fama_french_model);

% 提取系数
alpha = fama_french_model.Coefficients.Estimate(1);
beta_market = fama_french_model.Coefficients.Estimate(2);
beta_smb = fama_french_model.Coefficients.Estimate(3);
beta_hml = fama_french_model.Coefficients.Estimate(4);

fprintf('Alpha: %.4f\n', alpha);
fprintf('Beta (Market): %.4f\n', beta_market);
fprintf('Beta (SMB): %.4f\n', beta_smb);
fprintf('Beta (HML): %.4f\n', beta_hml);

4. 数据加载示例

展示如何加载数据。假设数据存储在CSV文件中。

% 加载数据
data = readtable('financial_data.csv');

% 提取数据
asset_returns = data.AssetReturns;
market_returns = data.MarketReturns;
risk_free_rate = data.RiskFreeRate;
SMB = data.SMB;
HML = data.HML;

% 转换为数值数组(如果需要)
asset_returns = table2array(asset_returns);
market_returns = table2array(market_returns);
risk_free_rate = table2array(risk_free_rate);
SMB = table2array(SMB);
HML = table2array(HML);

参考代码 MATLAB构建capm和三因子模型 www.youwenfan.com/contentcnu/82822.html

5. 注意事项

  • 数据的频率(日、周、月)会影响模型的估计结果。通常,CAPM和三因子模型更适合月度数据。
  • 在实际应用中,可能需要对数据进行预处理,例如去除异常值、处理缺失值等。
  • 如果数据量较大,可以考虑使用fitrlinear等更高效的线性回归函数。

通过以上代码,你可以在MATLAB中构建CAPM模型和Fama-French三因子模型,并对资产的收益进行分析。

posted @ 2026-04-28 09:18  康帅服  阅读(26)  评论(0)    收藏  举报