この記事は主に金融の人向けです。
PRICE関数、MDURATION関数がマイナス金利で使えない問題
債券や債権の価格・デュレーションを計算するのに用いるEXCELのPRICE関数、MDURATION関数ですが、利回りに負の値を入れるとエラー(#NUM!)になります。
なんでなのかは皆目見当もつきませんが、日欧がマイナス金利環境に入ってから何年も経つのに全然アップデートされていない状況です。
困ってる人も多いのではないでしょうか?
というわけで、作ったので買ってください。
というわけで、マイナスの利回りを入力しても大丈夫なオリジナル関数PRICE2()とMDURATION2()をVBAで作成しました。
以下のように、利回りがプラスの領域ではEXCELオリジナルのPRICE関数とMDURATION関数と
完全に 一致してます。(これ、結構むずかしいんです。)
計算速度はオリジナル関数の半分程度(VBAで作ってるのでどうしてもオリジナルより遅いですが、ストレスを感じることはないと思います。)
※オリジナルで省略可能引数の[基準]については、0もしくは省略時の「30 日/360 日 (NASD 方式)」のみとなっております。(それ以外は上手く再現出来ませんでした・・)
使い方
この関数はVBAマクロで作成されていますので、使用されるファイルにVBAマクロをインストールして頂く必要があります。
やり方は以下の2つ。
・手動:VBEを開いて、関数のVBAコードを対象ファイルのModule内にコピーペースト。
・自動インストール:VBAをやったことない人向け。以下の通り。
自動インストール
基本的に、VBAコードをコピペするだけなのですが、「VBAなにそれ?」という人のために、ボタン一つでできるようにしてあります。
ただし、この機能を使うためにはExcelのセキュリティ設定を弱めなくてはならないデメリットがあります。
インストールが完了したら、設定を元に戻すことを推奨します。(何か損害が発生しても責任は持てません)
やり方はファイルにも書いてますが、以下の通り。
⓪セキュリティ設定を変更
自動インストールでは、VBAマクロによってVBAコードを書き加えるため、通常のセキュリティには引っ掛かります。従って、インストール時のみ、以下の通りセキュリティ設定を緩める必要があります。
以下の画像の通り、Excelメニューから、「ファイル」⇒「オプション」⇒「セキュリティセンター」⇒「セキュリティセンターの設定(T)」⇒「マクロ設定」⇒「VBAオブジェクト プロジェクト モデルへのアクセスを信頼する(V)」にチェック
①インストールしたいブックを開く。
関数を使いたいブックを開いた状態にしてください。
(個別用マクロブックにインストールすれば、その端末内の全てのブックで使用できるようになりますね。)
コメント