MATLABを用いたCAPMおよび三因子モデルの構築

金融工学において、資本資産価格モデル(CAPM)とFama-French三因子モデルは、資産価格評価の主要なアプローチとして広く使用されています。CAPMモデルは主に市場リスクが資産収益に与える影響を分析する一方、Fama-French三因子モデルはそれに加えて、規模因子(SMB)と価値因子(HML)の影響を考慮に入れています。

以下に、MATLABを使用してCAPMモデルとFama-French三因子モデルを構築する方法を示します。

1. データ準備

以下のデータを取得済みとします:

  • 対象資産の日次収益率(stock_returns
  • 市場指数の日次収益率(benchmark_returns
  • 無リスク金利(rf_rate
  • Fama-French三因子データ(size_premiumvalue_premium

これらのデータは金融データベース(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モデルを推定できます。

% データが以下の変数にロード済みと仮定
% stock_returns: 対象資産の日次収益率
% benchmark_returns: 市場指数の日次収益率
% rf_rate: 無リスク金利

% 超過収益率の計算
excess_stock_returns = stock_returns - rf_rate;
excess_benchmark_returns = benchmark_returns - rf_rate;

% CAPMモデルの構築
market_model = fitlm(excess_benchmark_returns, excess_stock_returns);

% 結果の出力
disp('CAPMモデルの結果:');
disp(market_model);

% alphaとbetaの抽出
intercept = market_model.Coefficients.Estimate(1);
market_beta = market_model.Coefficients.Estimate(2);

fprintf('切片(Alpha): %.4f\n', intercept);
fprintf('市場ベータ: %.4f\n', market_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関数を使用して三因子モデルを推定できます。

% データが以下の変数にロード済みと仮定
% stock_returns: 対象資産の日次収益率
% benchmark_returns: 市場指数の日次収益率
% rf_rate: 無リスク金利
% size_premium: 規模因子
% value_premium: 価値因子

% 超過収益率の計算
excess_stock_returns = stock_returns - rf_rate;
excess_benchmark_returns = benchmark_returns - rf_rate;

% 三因子モデルの構築
ff_model = fitlm([excess_benchmark_returns, size_premium, value_premium], excess_stock_returns);

% 結果の出力
disp('Fama-French三因子モデルの結果:');
disp(ff_model);

% 係数の抽出
intercept = ff_model.Coefficients.Estimate(1);
market_beta = ff_model.Coefficients.Estimate(2);
size_beta = ff_model.Coefficients.Estimate(3);
value_beta = ff_model.Coefficients.Estimate(4);

fprintf('切片(Alpha): %.4f\n', intercept);
fprintf('市場ベータ: %.4f\n', market_beta);
fprintf('規模ベータ(SMB): %.4f\n', size_beta);
fprintf('価値ベータ(HML): %.4f\n', value_beta);

4. データ読み込み例

データがCSVファイルに保存されている場合の読み込み例です。

% データの読み込み
financial_data = readtable('market_data.csv');

% データの抽出
stock_returns = financial_data.StockReturns;
benchmark_returns = financial_data.BenchmarkReturns;
rf_rate = financial_data.RiskFreeRate;
size_premium = financial_data.SizePremium;
value_premium = financial_data.ValuePremium;

% 数値配列への変換(必要な場合)
stock_returns = table2array(stock_returns);
benchmark_returns = table2array(benchmark_returns);
rf_rate = table2array(rf_rate);
size_premium = table2array(size_premium);
value_premium = table2array(value_premium);

5. 注意事項

  • データの頻度(日次、週次、月次)によってモデルの推定結果が異なります。一般的に、CAPMと三因子モデルは月次データに適しています。
  • 実際の適用においては、外れ値の除去、欠損値の処理などのデータ前処理が必要になる場合があります。
  • データ量が多い場合、fitrlinearなどのより効率的な線形回帰関数を検討する価値があります。

上記のコードを使用することで、MATLABでCAPMモデルとFama-French三因子モデルを構築し、資産の収益を分析できます。

タグ: MATLAB 金融工学 資産価格モデル CAPM Fama-Frenchモデル

8月4日 02:15 投稿