数理計画法パッケージ

NUOPT
金融工学関連事例紹介
nuopt-info@msi.co.jp（株）数理システム

数理計画法の役割
扱う対象（価格，収益率，倒産などのイベントの発生等）の不確定性を定量的な形でモデル化
シミュレーション
モデルが説明する現象を「見る」

分散：0.0119

分散：0.0174

数理計画法
モデルが説明する現象を「制御する」

分散：0.0062

最小
分散：0.0096

NUOPT の構成
結果のフィード
バックと検証テキスト.DLL/.LIB/.EXE

解

ArcGIS

Excel
データ

定式の解釈
/自動微分

ＳＩＭＰＬＥ
モデル
記述

Word(MP.doc)
ユーザアプリ モデリング結果（C++/VBA/JAVA)

解

関数値/
微係数値

ＮＵＯＰＴ
求解アルゴリズムNUOPT に導入されている
数理計画法アルゴリズム（金融工学への応用）
CVaR

LPM

• 線形計画法（単体法、内点法）
分散シャープレシオ• 二次計画法（有効制約法、内点法）
イールドカーブ• 非線形計画法（内点法，逐次二次計画法）
倒産判別

格付推移

• 非線形半正定値計画（内点法）

ロバストポートフォリオ• 混合整数二次計画法（分枝限定法） ロング・ショート••••

線形混合整数計画法（分枝限定法）
非線形整数計画法（分枝限定法）
制約充足問題（タブ・サーチ）
資源制約付プロジェクトスケジューリング（タブ・サーチ）金融工学関連アプリケーション• ポートフォリオ最適化• イールドカーブ推定• 倒産判別• 社債ポートフォリオ(CVaR 最小化)
• 年金ALMシステム• 相関行列の作成• ロバスト最適化• ロングショートモデル

金融工学関連アプリケーション

ポートフォリオ最適化

ポートフォリオ最適化
資産をいくつかの投資対象に配分
ポートフォリオの平均収益率は一定以上

全体の変動（リスク）は小さく

ポートフォリオ最適化
収益率分布のデモ
Excel ファイル
各銘柄の収益率PFの収益率

組入比率

平均収益率
分散

横軸：収益率ポートフォリオ最適化
最適化実行
NUOPT GUI

対象モデルを選択最適化実行金融工学関連アプリケーション

イールドカーブ推定

イールドカーブ推定
各償還期間におけるスポットレートを推定する

イールドカーブ推定・スポットレート[%]：rj ( j  1,,10)

・償還期間 T の利付き債の理論価格

S T ; r1 ,, rT  100

1  0.01 rT TT1k 1

1  0.01 rk k

イールドカーブ推定
・償還期間 T の利付き債の観測価格i {1,観測結果： (Ti , Si ), 60}・理論価格と観測価格の差の二乗和最小化

 S  T ; r ,i1, r10   Si 2i

変数

理論価格

観測価格

イールドカーブ推定
Excel ファイル
観測価格

理論価格
スポットレート理論価格と観測価格の相関イールドカーブ推定
NUOPT GUI

最適化実行

対象モデルを選択

非線形関数のフィッティング理論式： y  F  x ; ,  ,

観測結果： ( xi , yi )最小化 F  x ; ,  ,   y 2ii

パラメータ（変数）iイールドカーブ推定・変数 r j について非線形
100111S  3 
332
1  0.01 r3  1  0.01 r3  1  0.01 r2  1  0.01 r1

・その他の非線形関数のフィッティング問題- イールドスプレッドに基づく格付け推移確率行列の推定- 半正定値ロジット・モデルを用いた倒産分析

数理計画法を用いて求解NUOPTを使えば．．．
・少なくともいずれかの局所最適解に収束する
・二階微分の情報を用いているので，解の収束が速い

金融工学関連アプリケーション

倒産判別

判別分析
• 計測結果から性質を予想する

Iris virsinica

Iris virsinica

Iris versicolor

Iris versicolor判別分析
数理計画モデル• 変数a0 , a1 , a2 , a3 , a4 （パラメータ）• 目的関数eversicolorなのにが1/2以上になる1 e(誤判定）確率  a0  a1 X1  a2 X 2  a3 X 3  a4 X 4
X 1 , X 2 , X 3 , X 4 （計測データ）

判別分析• ロジスティクス関数 ( )versicolor virsinica

判別分析
判別の実際（パラメータ推定）

数理計画モデル
入力

判別モデルパラメータ
NUOPT

非線形最適化
アルゴリズム

出力

判別分析
判別の実際（予測力検証）

正解率１００％

倒産判別
η：財務諸表の値の関数• 二次モデルへの拡張  a0  a X  X QXt

 q11 q12
qq2122 q31 q32
 q41 q42

q13q23q33q43t

表現力
q14 増大q24 
Qq34 パラメータ
q44 （二次項）倒産判別のための数理計画モデル• 変数a0 , a, Q （パラメータ）• 目的関数e
倒産データについてはが１に近い1 ee
存続データについてはが０に近い
1 e  a0  a X  X QXtt

パラメータ推定のための数理計画モデル• 制約

Qが半正定値予測力向上

半正定値制約の意義• 倒産・存続の境界線の形状（制約なし）

X2
囲われる領域は非有界

X1半正定値制約の意義• 倒産・存続の境界線の形状（制約あり）

X2

有界領域を定義する可能性

X1

金融工学関連アプリケーション

社債ポートフォリオ（CVaR 最小化）

社債ポートフォリオ最適化• ３つの社債のポートフォリオ• 購入予算（１００億） 制約• 期待収益率（１．５％～１．６％．．）• クレジット・スプレッドは格付け（A,B,D）連動• 格付けは推移確率行列に従って移動• 格付け移動が不確定要素（正規乱数→一様乱数）• 無リスク金利は一定• 一年後価格の分布を最適化

分散 vs. CVaR
分散最小化による社債ポートフォリオ
期待収益率＝1.281（最小）分散 vs. CVaR
分散最小化による社債ポートフォリオ
期待収益率＝1.4

分散 vs. CVaR
分散最小化による社債ポートフォリオ
期待収益率＝1.5

CVaR最小化
1最小化 p  sk  kSample

制約sk     R ( x)ksk  0,x 
投資可能集合分散 vs. CVaR
CVaR最小化による社債ポートフォリオ
期待収益率＝1.504（最小）分散 vs. CVaR
分散最小化による社債ポートフォリオ
期待収益率＝1.55

分散 vs. CVaR
分散最小化による社債ポートフォリオ
期待収益率＝1.6

金融工学関連アプリケーション

年金 ALM システム

ＮＵＯＰＴを用いた年金ＡＬＭシステム事例紹介• 年金基金の投資計画⇒投資対象はアセットクラス（短期資産・国内株式・外国株式…：数個）• 長期的（２０年程度）な投資計画⇒多期間にわたる投資計画を求める問題⇒状況に応じた投資可能ということを前提• 資産価格変動に分布は仮定できない⇒変動シナリオを入力• 負債（年金支払い）のキャッシュフローを考慮したい⇒想定データを入力• 最適配分を求めたいベースとなる数理モデル• 枇々木モデル

発展・改良枇々木モデルの特徴• 非線形性の解消⇒Ｘを配分比率でなく投資量で表現• 本質的なトレードオフの明確化
不確定性の記述⇔意思決定の自由度（どちらに傾斜するかを自由に設定可）• 線形計画問題になる⇒汎用の数理計画パッケージで解ける枇々木モデルの定式化
変数とパラメータの定義• 変数• パラメータ枇々木モデルの定式化
キャッシュフローの制約

シナリオ
富の評価

現在資産価格の動きを予想して生成
実際的には5000本以上必要

シミュレーション型モデル• 配分はシナリオに依存しない
投資配分⇒意思決定不確定性の表現に計算機資源を振り向ける

混合型モデル• シナリオ依存の意志決定

投資配分
⇒意思決定

意志決定の自由度をある程度持たせる

線形計画問題としての
枇々木モデル• n,m いずれも数十万• ＮＵＯＰＴの内点法が有利• 制約式の係数行列Aの構造に癖あり• 内点法の反復回数を比較的多く所要枇々木モデル
実行時間の例
変数総数
シナリオ数：
１０００
シナリオ数：
１００００

制約総数 計算時間（秒）

12034 12133

6120034 120133

138(計算機：Pentium1.5GHz＋メモリ1G,ソフト：NUOPT）

枇々木モデル
計算結果• 最終富の累積分布枇々木モデル
計算結果• 有効フロンティア

金融工学関連アプリケーション

相関行列の作成

相関を持った乱数を発生したい• 相関行列Gを恣意的に決定したい– アセット１とアセット２は逆相関だから
G[1,2] = -0.6 くらいかな– アセット２とアセット３は強い相関があるのでG[2,3] = 0.8 にしたい
– ．．．

相関行列は G  LL と分解できねばならない ⇒ 正定値でなければならない
T正定値？
• 固有値がすべて正• あらゆる v についてv Gv  0t

無限個の制約が必要
半正定値：最小固有値で０を許す

半正定値行列
ノルム最小化問題
最小化
制約G X FX    I : 半正定値

最も近い相関行列の生成半正定値行列ノルム最小化問題
SIMPLEによるモデル記述
Set N; // 行列の各要素
Element i(set=N),j(set=N);
Variable x(index=(i,j));Parameter a(index=(i,j)); // 与えられた行列の要素
SymmetricMatrix m((i,j));Parameter minEig; // 出力される相関行列の最小固有値
m[i,i] = 1 - minEig;// 対角は 1 とする
m[i,j] = x[i,j], i > j; // 下三角部分の定義
m >= 0; // 半正定値制約
Objective diffnrm(type=minimize); // 差の行列のノルム
diffnrm = sum(pow(x[i,j]-a[i,j],2),(i,j,i < j));

半正定値行列ノルム最小化問題
実行結果の例

金融工学関連アプリケーション

ロバスト最適化ロバスト最適化• マルコビッツモデル

リスク回避係数

max r x   x Qx
TTxs.t. x e  1
T

Qの変動に対してリスクの振れ幅大ロバスト最適化• ロバストマルコビッツモデル

max r x   max  x Qx
w

TTQL Q QU

s.t. x e  1
T

要素毎の上・下限ロバストマルコビッツモデル• 等価な問題への変形
max r T x    QU  U  QL  L xs.t.

xT e  1
U  L x  T 01
 x
U  0, L  0
Fabozzi Kolm, Pachamanova Focardi,
Robust Portfolio Optimization and Management,2007

ロバストマルコビッツモデル
実行結果の例

ロバスト性の検証• 正定値行列１００ケースについてリスクを比較金融工学関連アプリケーション

ロングショートモデル

ロング・ショートモデル（整数計画問題）• 組み入れ比率の定義

xj  xlongj

xx

shortj x dlongj

shortj,x0j,dbuyjbuyj

dselljsellj0,d整数変数不要な要件• ターンオーバー上限制約

dbuyjdselljTj• 取引コスト最小化

最小化    djbuyj  dsellj

整数変数が必要となる要件• ポジションの等式制約

xlongj LTj• 一般の投資制約

A xi
jjlongj

bi

C di
jj

buyj

di

整数変数の導入• ロング・ショート

xlongjlongjU buyj

Ulongj, xshortj

Ushortj(1  longj• 購入・売却

dbuyj

buyj, dsellj

Usellj(1  buyj))ロングショートモデルの性能• １６点のフロンティア曲線描画
計算時間平均23.7秒

計算時間最小11.2秒

計算時間最大34.0秒

総時間合計392.3秒（使用環境：NUOPT9.1 Core2 1.6GHz メモリ2GBytes）

ロングショートモデルの補強• 制約追加• 相補性を織り込んだ表現の変更(x j )  (x2)  (xlong 2jshort 2j)

補強の効果（ロング・ショートモデル）
銘柄数

補強前

補強後

３００

７２秒

１９秒

５００---

９５秒

６００---

１７８秒

７００---

３２９秒

FIOPT（金融工学プラットフォーム）
VMStudio との連携
リスクモデルの実装が可能

受託業務形態• 要求定義– 定式化– 周辺を含めたソフト仕様の設計• プロトタイピング・製造– モデル・プログラム作成• 検証とコンサルテーション– 高速化・モデルの精密化– 不測の事態への対処• パッケージ化– 汎用的な仕様の洗い出し

NUOPT事例紹介ページ：
http://www.msi.co.jp/nuopt/solution.html