FC2ブログ

# 二項モデル Binomial Model
# 引数 原資産価格 権利行使価格 残存期間(日) 変動率(%) 安全資産利子率(%) 原資産利回り(%) 期間 ($Price, $Strike, $CurrentMaturity, $Volatility, $RiskFreeRate, $DividendYield, $TimeStep)
# 戻り値 hash {'call'} {'put'} (%binomialmodel)
sub BINOMIALMODEL{
my ($Price, $Strike, $CurrentMaturity, $Volatility, $RiskFreeRate, $DividendYield, $TimeStep) = @_;
my %binomialmodel = ();
my $Year = 365;
$CurrentMaturity = $CurrentMaturity / $Year;
$Volatility = $Volatility / 100;
$RiskFreeRate = $RiskFreeRate / 100;
$DividendYield = $DividendYield / 100;

# 計算
my $prediction = 0;
my $diff = 0;
my @call = ();
my @put = ();
my $r = exp(($RiskFreeRate - $DividendYield) * $CurrentMaturity / $TimeStep);
my $u = exp($Volatility * sqrt($CurrentMaturity / $TimeStep));
my $d = 1 / ($u * $r);
my $p0 = ($r - $d) / ($u - $d);
my $p1 = 1 - $p0;

# 原資産価格の予測
for(my $i = 0; $i <= $TimeStep; $i++){
$prediction = $Price * ($u ** ($TimeStep - $i)) * ($d ** $i);
$diff = $prediction - $Strike;
# call
$call[$i] = $diff > 0 ? $diff : 0;
# put
$put[$i] = -$diff > 0 ? -$diff : 0;
}

# ヨーロピアンタイプ
for(my $i = $TimeStep - 1; $i >= 0; $i--){
for(my $j = 0; $j <= $i; $j++){
# call
$call[$j] = (($p0 * $call[$j]) + ($p1 * $call[$j + 1])) / $r;
# put
$put[$j] = (($p0 * $put[$j]) + ($p1 * $put[$j + 1])) / $r;
}
}

# 二項モデル Binomial Model
$binomialmodel{'call'} = $call[0];
$binomialmodel{'put'} = $put[0];

return %binomialmodel;
}


参考URL
金融大学 オプション取引入門講座 第10回 2項モデル(バイノミナルモデル)
オンライン コンパイラ/インタプリタ
テクニカル分析
プロフィール

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

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

検索フォーム


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