保険業界向け MATLAB セミナー数理モデル開発の高度化と効率化へ向けての機能紹介 中川慶子 アプリケーションエンジニア MathWorks Japan 2011 The MathWorks, Inc. 1
アジェンダ MATLABについて数式処理と数値計算の連携デモ : 1. ディスカウントファクターの導出 2. 確率ボラティリティモデルを使ったプライシング 3. VARモデルを用いたシナリオ まとめ 2
MATLAB とは プログラミング言語と アルゴリズム開発環境 Matrix Laboratory の略 米国で開発された行列演算ライブラリー LINPACK, EINSPACK を手軽に利用するソフトウェアとして開発された 高速行列演算ライブラリー インタプリターによる対話的環境 高機能な可視化ツール Jack Little Cleve Moler 3
保険業界での活用例 デフォルト確率 確率分布 例 : 生存確率 イールドカーブ 商品開発 / 既存商品ヘッジ シナリオ分析 - 例 : 自然災害など デリバティブのプライシング 損失準備金の試算 払戻金の評価 ALM バックテストの検討 キャッシュフローマッチング 利率変動の影響評価 最適化 ポートフォリオ分析 4
MATLAB をお使いの金融機関は? 保険会社上位 10 社 アセットマネジメント上位 15 社 米国の商業銀行上位 10 行のうち 9 行 ヘッジファンド上位 15 社のうち 12 社 全 OECD 加盟国の準備銀行 3 大格付け機関 5
モデル開発における課題 従来の開発 専用ソフトウェア 課題 カスタマイズ不可能 透明性不十分 エクセル 計算時間 データサイズ制限 VBA や C 言語での自社開発 多くの工数が必要 上記手段の併用 統合 自動化が非効率 6
Computational Finance Workflow Access Files Research and Quantify Data Analysis & Visualization Share Reporting Databases Financial Modeling Applications Datafeeds Application Development Production Automate 7
モンテカルロ法によるアジアンオプションの価格付け 1. 汎用的な株価モデルから N- ステップ M- パス生成 ; 2. 満期日 T における各パスのアジアン オプション価格を算出 ; 3. 2 の結果の平均を求めることによってプレミアムを決定 ; 8
VBA vs. MATLAB Next j Next i Pricing of Asian option 'Once we have the scaled numbers, we need to do the cumulative product to simulate asset paths For i = 1 To (nsteps - 1) For j = 1 To (nsims - 1) mat(i, j) = mat(i, j) * mat(i - 1, j) ' Now, we want to get the average asset value Dim avprices() As Double ReDim avprices(nsims - 1) For j = 0 To (nsims - 1) For i = 0 To (nsteps - 1) avprices(j) = avprices(j) + mat(i, j) Next i VBA (Macro) MATLAB 'Take the average price avprices(j) = avprices(j) * S / nsteps 'Take off the strike/exercise avprices(j) = avprices(j) - E 'If zero, floor on zero If avprices(j) < 0 Then avprices(j) = 0 End If Next j 'Now, take the average payoff and discount Dim oprice As Double oprice = 0 For i = 0 To (nsims - 1) oprice = oprice + avprices(i) Next i oprice = Exp(-r * T) * oprice / nsims 'Return the option price Application.Range("E12").Value = oprice End Sub 70 Lines 9
VBA vs. MATLAB Pricing of Asian option VBA (Macro) MATLAB S0 = 100; K = 95; r = 0.03; T = 2; sigma = 0.2; q = 0; nsims = 100000; nsteps = 24; Dt = T/nSteps; % Determine the timestep Eij = exp( (r -q -sigma^2/2)*dt + sigma*sqrt(dt).*randn(nsteps, nsims) ); Sij = S0.* cumprod(sij,1); Ci = exp(-r*t) * max(mean(sij)-k, 0); C = mean(ci) 10
アジェンダ MATLABについて数式処理と数値計算の連携デモ : 1. ディスカウントファクターの導出 2. 確率ボラティリティモデルを使ったプライシング 3. VARモデルを用いたシナリオ まとめ 11
Zero Curve の構築と Discount Factor への変換 処理フロー Excel データのインポートと可視化 日付データの利用 欠損データの補間 キャッシュ フローの計算と可視化 イールド カーブのデータ変換 12
シリアル日付西暦 0 年 1 月 1 日が 1 datenum 日付文字列をシリアル日付に変換 datestr シリアル日付を日付文字列に変換 datemnth 月データをシリアル日付に変換 >> datenum('2012/03/01') ans = 734929 >> datestr(734929,'yyyy/mm/dd') ans = 2012/03/01 >> datestr(datemnth('2012/03/01', 2*12)) ans = 01-Mar-2014 13
イールド カーブの変換と日付計算基準 Par Yield Zero Curve Discount Factor 0.0355 0.0380 0.0401 0.0423 0.0445 0.0467 pyld2zero 0.0355 0.0380 0.0402 0.0424 0.0447 0.0470 zero2disc 0.9824 0.9630 0.9419 0.9195 0.8952 0.8699 サポートされる日付計算基準 ( デイカウント方式 ) 値 Day-count Basis 値 Day-count Basis 値 Day-count Basis 0 Actual/Actual 5 30/360 (ISDA) 10 Actual/365 (ISMA) 1 30/360 (SIA) 6 30/360 (European) 11 30/360E (ISMA) 2 Actual/360 7 Actual/365 (Japanese) 12 Actual/365 (ISDA) 3 Actual/365 8 Actual/Actual (ISMA) 13 BUS/252 4 30/360 (PSA) 9 Actual/360 (ISMA) 14
Zero Curve の構築と Discount Factor への変換まとめ 処理フロー Excel データのインポートと可視化 MATLAB: Import Wizard / xlsread 関数 日付データの利用 Financial Toolbox : 様々なデイカウント方式をサポート 欠損データの補間 MATLAB: 1 次元 /2 次元 /3 次元データの内挿または外挿 キャッシュ フローの計算と可視化 Financial Toolbox: cfamounts 関数 / cfplot 関数 イールド カーブのデータ変換 Financial Toolbox: pyld2zero 関数 / zero2disc 関数 15
アジェンダ MATLABについて数式処理と数値計算の連携デモ : 1. ディスカウントファクターの導出 2. 確率ボラティリティモデルを使ったプライシング 3. VARモデルを用いたシナリオ まとめ 16
課題 : SV モデルのパラメータ推定とバックテスト 目的 : 株式オプションの Heston モデルによるパラメータ調整と 算出されたパラメータを使ったバックテスト 利用製品 MATLAB Econometrics Toolbox Financial Toolbox Optimization Toolbox Statistics Toolbox アプローチ : Excel データのインポート インプライド ボラティリティの算出 モデルのキャリブレーション モンテカルロ シミュレーション 17
課題 : SV モデルのパラメータ推定とバックテスト Heston モデル を使って 1 市場データを用いたパラメータ推定 及び 2 推定結果を用いてモンテカルロ シミュレーションによるヨーロピアン コールオプションの算出 を行う 18
まとめ : SV モデルのパラメータ推定とバックテスト Excel からデータ テーブルの生成 Statistics Toolbox インプライド ボラティリティの算出 Financial Toolbox キャリブレーション Optimization Toolbox マルチ ファクターモデル用クラス Econometrics Toolbox 並列計算による高速化 Parallel Computing Toolbox 19
アジェンダ MATLABについて数式処理と数値計算の連携デモ : 1. ディスカウントファクターの導出 2. 確率ボラティリティモデルを使ったプライシング 3. VARモデルを用いたシナリオ まとめ 20
VAR モデルを使った経済予測 課題 1. 以下 8 本の互いに相関のある時系列を VAR モデルにフィッティング GDP GDP デフレータ GPDI ( 民間国内総投資 ) 雇用者報酬 民間非農業労働生産性指数 国債 3 ヶ月物利回り 個人消費支出 失業率 2. 最適なラグ次数の発見 3. 実質 GDP 予測シミュレーション 21
多変量時系列解析 8 変量 VAR(p) モデル 1. Y t は ( 縦 ) ベクトルで与えられた時系列 2. a は定数ベクトル y1 y 2 y7 y8 t t t t 3. W t は平均が 0 ベクトルで 共分散行列 Q の 8 次元正規分布に従う乱数 >> Spec = vgxset('n', 8, 'Constant', true, 'nar', p, 'Series', YSeries); >> [EstSpec, EstStdErrors, LLF] = vgxvarx(spec, Y1, [], Y0); 22
適切なラグの次数 ラグ ( 遅れ ) の次数を 1~7 までを用意し赤池情報量基準を調べる 赤池情報量基準 (AIC) AIC = -2 log( 最大尤度 ) +2 ( パラメータ数 ) VAR(2) による直近 5 期のフィッティングの様子 23
5 年先までの景気シミュレーション フィッティングした係数を用いて 1000 パス 20 ステップのモンテカルロ シミュレーション [Y,W] = vgxsim(spec,20,[],y0,[],1000); 24
アジェンダ MATLABについて数式処理と数値計算の連携デモ : 1. ディスカウントファクターの導出 2. 確率ボラティリティモデルを使ったプライシング 3. VARモデルを用いたシナリオ まとめ 25
モデル開発における課題 従来の開発 専用ソフトウェア 課題 カスタマイズ不可能 透明性不十分 エクセル 計算時間 データサイズ制限 VBA や C 言語での自社開発 多くの工数が必要 上記手段の併用 統合 自動化が非効率 26
モデル開発における課題 MATLAB 課題を解決 出来合いの解析ソフトを使う他社に比べ 我が社では MATLAB を用いて アルゴリズムとモデルを常に改善するフレキシビリティーがあります Willem Jellema, Robeco 社 カスタマイズ可能 透明性有り 1 契約のシミュレーションを 15 分から 1 秒に高速化 変額保険リスク分析システムの開発事例より ( ユーザー名非公開 ) VB で二週間かかっていたコードを 2 時間でかけるようになりました CAMRADATA 社 全ての開発環境を MATLAB に統一したことで アルゴリズムの共有からアプリケーションの展開まで効率化できました Dr. Stéphane Daul, EIM Group 計算時間 データサイズ制限 工数削減 統合 自動化を実現 27
金融業界における典型的なワークフロー Access Files Research & Quantify Data Analysis & Visualization Share Reporting Databases Financial Modeling Applications Datafeeds Application Development Production Integrate 28
金融業界における典型的なワークフロー Access Files Access Files Databases Datafeeds Databases Research and Quantify Data Analysis Research & Visualization and Quantify Data Analysis and Visualization Financial Modeling Application Development Financial Modeling Share Reporting Share Reporting Applications Production Applications Spreadsheet Link EX Datafeeds Database Application Fixed Income Financial Derivatives Development Financial Econometrics Builder EX Builder NE Production Builder JA Datafeed Statistics Optimization MATLAB Compiler Parallel Computing MATLAB Automate 29
データの取り込み エクセルやテキストファイル ODBC/JDBC 準拠のデータベース Bloomberg, Reuters, Factset, FRED などからの自動取り込み Web サービス (SOAP) 30
各種関数ライブラリを利用して工数削減 数学 回帰 ( 線形, 非線形 ) カーブフィッティング 確率分布 乱数生成 クラスター分析 多変量 主成分分析 機械学習 最適化 パラメーター推定 ファイナンス系解析 ポートフォリオの最適化と分析 デリバティブプライシング ヘッジング イールドカーブ モデリング モンテカルロ シミュレーション リスク計量 ARMA/GARCH 解析 31
Symbolic Math Toolbox 数式処理ツール 数式処理例 : 微分 >> diff(sin(x^2) + cos(y^2), x) ans = 2*x*cos(x^2) 特殊関数例 : ルジャンドル多項式 5 次 >> syms x >> n = 5; >> simplify(diff((x^2-1)^n, x, n)/(2^n*prod(1:n))) ans = (x*(63*x^4-70*x^2 + 15))/8 任意精度例 : 3 を 100 桁まで >> vpa(sqrt(3), 100) ans = 1.7320508075688772935274463415058723669428052538103 80628055806979451933016908800037081146186757248576 32
充実した開発環境 アプリケーション開発ツール 多機能なエディターとデバッガー 依存関係レポート パフォーマンス解析ツール MATLAB プロファイラー コードアナライザー オブジェクト指向プログラミング 多様なプラットフォームに対応 Windows, Unix, Linux, & Mac 33
MATLAB アプリケーションの配布 MATLAB を所有しているエンドユーザへの MATLAB コードの配布 MATLAB を所有していないエンドユーザとのアプリケーションの共有 MATLAB Compiler によるスタンドアロン実行形式 共有ライブラリの作成.exe.dll.lib MATLAB Compiler MATLAB Builder EX MATLAB Builder JA Java MATLAB Builder NE MATLAB Compiler アドオンによる特殊ソフトウェアコンポーネントの作成 34
MATLAB Central MATLAB/Simulink ユーザのオープンコミュニティー 来訪者数 662,000 件 / 月 ファイルエクスチェンジ MATLAB コード Simulink モデル及びドキュメントを含むフリーなファイルアップロード / ダウンロード ファイルの評価 コメント及び質問投稿 9,000 以上のファイル 一月あたり 400 以上の投稿 一日あたり 25,500 ものダウンロード ニュースグループ MATLAB/Simulink に関する技術討論の場としてのウェブフォーラムやニュースグループ 一日あたり約 200 件の書込み ブログ 製品開発に関連する主な MathWorks 開発者からの投稿 blogs.mathworks.com にアクセスして下さい Based on February 2009 data www.mathworks.com/matlabcentral 35
トレーニング 2 種類のトレーニングを提供 定期トレーニング オンサイトトレーニング コース例 金融分野向け MATLAB 基礎 応用コース MATLAB による最適化手法 MATLAB による統計解析 MATLAB によるデータ処理と可視化 MATLAB のプログラミング手法 MATLAB GUI 構築 MATLAB による分散 / 並列処理 MATLAB によるポートフォリオの最適化他 www.mathworks.co.jp/training/ 36
技術サポート リソース 100 名を超えるサポートエンジニア 北米 欧州 アジアで現地サポート 総合的な製品に特化した Web サポートリソース 高い顧客満足度 24 時間以内に70% 問題解決 80% のお客様が80-100% の満足度と回答 www.mathworks.co.jp/support/ 37
お問い合わせ 営業部へのお問い合わせ http://www.mathworks.co.jp/contact_us/ テクニカルサポート http://www.mathworks.co.jp/support/contact_us/ 電話 03-6367-6717 ( 月 ~ 金 受付時間 9:00-17:30) 本日のご参加ありがとうございました 38
サポート コミュニティー 39
Excel データのインポート dataset 配列の利用 >> dataset( XLSFile, < ファイル名 >, Sheet, < シート名 >'); 日付 株価 ヘッダー情報付き配列 40
VaR 算出の際に役立つ関数 価格データを収益率へ変換 >> RetSeries = tick2ret(tickseries, [], Continuous ); 累積和の計算 RetSeries( n) >> X = [1,2,3,4,5]; >> cumsum(x) ans = TimeSeries( n 1) log TimeSeries( n) 1 3 6 10 15 41
スタンドアロン アプリケーション配布のフロー 1 Toolboxes MATLAB デスクトップ 3 End User 2 MATLAB Compiler 4.exe MATLAB Compiler 42
イベントスケジュール 各分野に特化した無料セミナーを開催 無料セミナー Web セミナー 43
パートナープログラム MathWorks 製品を補完 拡張する 300 を超えるサードパーティ製品 サービス MATLAB または Simulink をベースにした製品またはインタフェースを持つ製品 MathWorks 製品を用いたトレーニングやコンサルティング MathWorks 製品を統合するシステムインテグレータやサプライヤー http://www.mathworks.co.jp/products/connections/ 44
ブックプログラム 教育 専門書として 1000 冊以上 26 の言語 制御 信号処理 画像処理 生物科学 通信 機械工学 数学 航空宇宙工学 環境科学 化学 金融 電気等 http://www.mathworks.co.jp/books/ 45
コンサルティング 専門知識と豊富な製品知識 MATLAB を使用したアプリケーション開発 Simulink 及び Stateflow を使用したモデルベースデザイン 組込みシステム開発 開発プロセス及びシステムへの MathWorks 製品の全社統合 迅速かつスムースな MathWorks 製品導入のためのジャンプスタートサービス 航空宇宙 防衛 自動車 通信 電力 海洋 金融を含む様々な成長業界に対するプロジェクトベースのサービス提供 46