金融工学の計算(2)〜連続複利のディスカウントファクター(DF):Excel編

Ruby会議でだいぶ横道にそれてしまいましたが、そろそろ本題に戻りたいと思います。

理論編で導いた、連続複利のディスカウントファクターは、期間t、利率rの場合、

 DF = e^{-rt}

でした。

金融工学の計算(1)では、ここからRuby編が始まりましたが、今回からまずExcelでどう表せるかをやることにします。実務では、このような金融工学の計算はまずExcelのようなスプレッドシートで評価するのが一般的です。学生の方など、Excelをお持ちでなければ、スプレッドシートソフトの代替案があります。一般的なものは次の2つです。

両方とも簡単な関数はExcel互換ですが、Googleの方はどこでもアクセスできて便利です。

さて、まず上記の式をExcelで表すには、自然対数の底eの式をどう表すか考える必要があります。Excelでは、EXP関数を使います。例えば、期間2年、利率1%の連続複利のDFを計算したい場合、セルにこのような式を入力します。

=EXP(-0.01*2)

では、Excelで半年毎の連続複利DFを計算してみます。

それぞれのセル式を説明していきます。A5の最初の評価日のところには、

=TODAY()

として、今日の日付が入るようにしています。A6以降の評価日は、その上のセルの6ヶ月後の日付が欲しいので、

=DATE(YEAR(A5), MONTH(A5)+6, DAY(A5))

のようにして、DATE関数を利用しています。これを以下ドラッグしてコピーすれば、各セルの上の日付よりも6ヵ月後の日付が取得できます。*1

次に期間ですが、日数を年数に変換するために、日にちの引き算を行っています。ただし、Excelの場合は意識しなくても日付のセルを引き算するだけです。年数に直すため、365で割っています。*2
B5のセルには0を入れて、B6のセルは、

=(A6-A$5)/365

と入力します。ここで、A$5としていますが、この式ではA5は固定でA6の部分のみ相対的に進めていきたいので、$をつけています。*3

そしてやっとディスカウントファクターです。C5に、

=EXP(-A$3*B5)

と入力します。A3を絶対参照しているのは、利率は固定だからです。C5のDFは何を表しているかというと、当日のDFはもちろん現在価値=将来価値、なので、常に1になります。これは簡易な式の検証になります。

Excelを利用すると、簡単に期間を伸ばすことが出来ますし、利率を変えてDFの値がどのように変化するかを感覚的につかむことも出来ます。ただ、弱点としては大量の計算が難しいことと、リスク管理など正確に同じ条件で計算し、その結果を保持する、ということも苦手です。

そのような業務の要件がある場合、他の方法でシステムを構築することになります。次回からは、RubyHaskellで、今回Excelで実現したことをどうやって行うか、をやってみます。

*1:今回は単純化のため、Modified Followingなどの休日処理を全く考慮していません。

*2:これも単純化のため。実務ではAct/365など、日数計算についてもう少し考慮します。

*3:絶対参照についてはこことかが参考になります。