在金融领域,资本资产定价模型(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模型的公式为:
其中:
是资产的收益率 是无风险利率 是市场指数的收益率 是截距项 是市场风险系数 是误差项
在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三因子模型的公式为:
其中:
是规模因子(Small Minus Big) 是价值因子(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和三因子模型 youwenfan.com/contentcsb/82822.html
5. 注意事项
- 数据的频率(日、周、月)会影响模型的估计结果。通常,CAPM和三因子模型更适合月度数据。
- 在实际应用中,可能需要对数据进行预处理,例如去除异常值、处理缺失值等。
- 如果数据量较大,可以考虑使用
fitrlinear等更高效的线性回归函数。
通过以上代码,你可以在MATLAB中构建CAPM模型和Fama-French三因子模型,并对资产的收益进行分析。