SABRモデルのボラティリティスマイルwebアプリを作る

概要

・SABRパラメータとボラティリティ・スマイルの関係をインタラクティブに分かるように
・ShinyのwebアプリホスティングサービスのShinyAppsを使ってみる

Shinyapps

Shinyの使い方については既に様々なサイト・資料様で解説されておりますので割愛。私は参考1を参考に今回のコードを組んでいます。

で、

Shinyは基本的にはスタンドアローンなwebアプリを作るもので、お気楽に世間様に公開することができません(知らないだけ?)。そんなときに使えるのがShinyappsとなるわけですな。

ShinyApps.io
https://www.shinyapps.io/

無料で使用する場合には50 Active Hoursという制限があるようなのですが、まあ個人で試してみる程度なのでキニシナイ。
サインアップ後に

と言った感じにRでコマンドを打っていくとShinyAppsを使う環境が整います。というかサインアップ後にログインするとそういう指示が書かれてる。

Rコード

Apps自体のアップ先はこちら
http://nekopuni.shinyapps.io/141206_sabr

ui.r

server.r

実行用スクリプト

実行用スクリプトを実行すると、別ウィンドウで以下の画像のようなページが表示されます。
(macならRStudioの別ページ、windowsならブラウザの新規タブか何かで開くようです。)
ページ左のスライドでSABRモデルのパラメータを動かすと、右側のボラティリティ・スマイルも更新されます。
141214_1

ちなみにShinyをローカルで使用するには

で起動することができます。

パラメータとスマイルの関係

・Alpha
→ スポットのボラティリティということで、Alphaが大きくなるほどスマイルも全体的に上方に移動

・Volatility of volatility
→ 原資産のボラティリティがどの程度変動するか。volvolが大きいほどスマイルのウィングが上方に移動。
感覚的には、volvolが大きいほど、OTMになりやすくなるからという感じですかなあ
OTMのvolga(ボラティリティの2階微分)が正であることと対応してるという理解

・Rho
→ 原資産とボラティリティの相関。一般的には原資産が下落する局面でボラティリティが上昇するので相関は負を取りやすい。スマイルのスキューに対応し、グリークスで言うvannaに対応

・Beta
→ betaが1でlognormal volatility、beta が0でnormal volatilityとなる。ベータが大きいほどスマイルは上方に移動する。

参考

はじめてのShiny
http://www.slideshare.net/wdkz/shiny-16178934