FC2ブログ

# 資本資産価格モデル Capital Asset Pricing Model
# 引数 期間 値 市場指数 市場指数の変動率(%) 安全資産利子率(%) ($Period, \@Price, \@Index, $ReturnOnTheMarket, $RiskFreeRate)
# 戻り値 資本資産価格モデル (@capm)
sub CAPM{
my ($Period, $Price, $Index, $ReturnOnTheMarket, $RiskFreeRate) = @_;
$ReturnOnTheMarket = $ReturnOnTheMarket / 100;
$RiskFreeRate = $RiskFreeRate / 100;
my @capm = ();
my $Beta = 0;
my $RiskPremium = 0;
my $count = @$Price - ($Period + 1);

# 期間,配列数市場指数の変動率(%) ,安全資産利子率(%)の確認
if(($Period <= 0) || ($count < 0) || (@$Price != @$Index) || ($ReturnOnTheMarket < 0) || ($RiskFreeRate < 0)){
return 0;
}

# 計算
for(my $i = $count; $i >= 0; $i--){
# 平均
my $avg1 = 0;
my $avg2 = 0;
my %rate = ();
for(my $j = 0; $j < $Period; $j++){
$rate{'Price'}->[$j] = (($$Price[$i + $j] - $$Price[$i + ($j + 1)]) / $$Price[$i + ($j + 1)]) * 100;
$rate{'Index'}->[$j] = (($$Index[$i + $j] - $$Index[$i + ($j + 1)]) / $$Index[$i + ($j + 1)]) * 100;

$avg1 += $rate{'Price'}->[$j];
$avg2 += $rate{'Index'}->[$j];
}
$avg1 = $avg1 / $Period;
$avg2 = $avg2 / $Period;

# 分散と共分散
my $variance = 0;
my $covariance = 0;
for(my $j = 0; $j < $Period; $j++){
my $tmp1 = ($rate{'Price'}->[$j] - $avg1);
my $tmp2 = ($rate{'Index'}->[$j] - $avg2);

$variance += $tmp2 * $tmp2;
$covariance += $tmp1 * $tmp2;
}
$variance = $variance / $Period;
$covariance = $covariance / $Period;

# ベータ値 Beta
$Beta = $covariance / $variance;

# リスクプレミアム Risk Premium
$RiskPremium = $ReturnOnTheMarket - $RiskFreeRate;

# 資本資産価格モデル Capital Asset Pricing Model
$capm[$i] = ($RiskFreeRate + ($Beta * $RiskPremium)) * 100;
}

return @capm;
}


参考URL
資本資産価格モデル - Wikipedia
CAPM(Capital Asset Pricing Model)[キャップエム]
オンライン コンパイラ/インタプリタ
テクニカル分析
プロフィール

Author:雨宮
Firefoxを使用しているので気づかなかったけど、IE6でソースコードを上手くコピーできない

5/3
携帯用ならIE6でもソースコードをコピーできる
携帯用

検索フォーム


あわせて読みたいブログパーツ
一寸先は闇 RSS