本発明の実施の形態について、まず、計算の全体像を明示するため、数式を利用して解析計算上の工夫や数値計算上の工夫について計算手法を説明する。そして、かかる工夫をソフトウエアとして計算機に実装する場合の具体的な構成について実施例として説明する。
[第1の実施形態:リスク計測]
本発明の実施の形態においては、数値計算上の工夫を行うことにより、解析的な方法に基づいてリスク指標の算出を高速かつ高精度に算出する。本実施の形態においては、モーメント母関数を算出し、それに基づいてポートフォリオの損失についての確率分布(確率密度関数や分布関数)を算出する。モーメント母関数は確率密度関数のラプラス変換であるため、モーメント母関数から確率密度関数を算出するためにラプラス逆変換の計算を利用する。
ここで、本実施の形態の数値計算における工夫では、リスク指標の算出の過程に用いられるラプラス逆変換のための数式自体は簡略化しない。その代わり、計算手法や計算手順を工夫することによって、現実の計算機を用いて計算を行う場合に高速かつ高精度に計算を実行するための手法を提供する。なお、この実施形態においてはポートフォリオの構成には何らの仮定を設けない。したがって、本発明の実施の形態は、任意の構成を有するポートフォリオに適用することができる。例えば、十分に与信が分散されたポートフォリオであっても、与信集中が進んだポートフォリオであっても、高速かつ高精度にリスク指標の計算を実施することができる。
本実施の形態では、エクスポージャやデフォルト率などのデータからまずモーメント母関数の算出を行い、そしてそれをラプラス逆変換することにより損失額の確率分布(確率密度関数)を算出する。なお、ここでのモーメント母関数は、本発明におけるポートフォリオ関数の一例である。以下、モーメント母関数の算出過程とラプラス逆変換の計算過程に分けて計算手法を説明する。
[モーメント母関数の算出]
モーメント母関数を算出するためには、共通リスク因子Xの実現値である共通リスク変数xに関する積分を実行する必要がある(数13参照)。本願発明者の検討では、共通リスク因子の数が少ない場合、例えばファクター数が1の場合には、Gauss−Legendre法や、Gauss−Hermite法によって高精度にモーメント母関数を算出できることを確認しており、ファクター数が2〜4である場合には、優良格子点法(GLP法)によって高精度にモーメント母関数を算出できることを確認している。しかしながら、信用リスク管理の実務で用いられるマルチ・ファクター企業価値モデルにおける共通リスク因子の数は、5個以上(例えば、十数個から数十個)とする場合が多く、そのような場合には、上記の数値積分アルゴリズムは適用することができないか、またはできたとしても計算時間が多大になる。特に、債務者数が非常に多い場合(数十万から数百万件)には、計算時間の増大のために実用性に乏しい。
ここで、数値積分の一般論についてごく簡単に説明する。数値積分を実行するにあたっては、様々な数値積分アルゴリズムが知られているが、ほとんどのものは、
という形式を用いて表現することができる。ここで、
である。すなわち、数値積分では、積分領域の中から適当に積分点とそれに関連付けされたウエイトからなる点列
を与え、それらの点における被積分関数の値の適当な加重和により積分の近似値を求めるということになる。したがって、数値積分の精度は
という点列をどのように選ぶかによって決まることとなる。別の言い方をすれば、数値積分アルゴリズムとは、この点列を決めるための手続きを示したものである。
数値積分アルゴリズムの中には、積分領域が有限な場合にしか適用できないものも多い。しかし、実際には無限領域上の積分を数値的に求めたい場合がある。無限領域上の積分を有限領域上の積分で表現する方法として、積分への寄与が小さい領域を無視する方法や、変数変換により積分領域を有限化する方法がある。前者の方法では、積分領域を無視することによる誤差が発生するが、積分領域を有限化することによって精度の高い数値積分アルゴリズムが利用できる場合があり、結果として元の積分領域で考えるよりも高い精度で数値積分を実行できる可能性がある。
モーメント母関数は共通リスク変数に関する積分として書かれており、積分領域はN
F次元のユークリッド空間全体に及ぶ。しかし、この積分については、共通リスク因子が正規分布に従うことに起因する性質の良い収束因子
が含まれており、数値計算上扱いやすい性質を備えている。実際、この因子が含まれているおかげで、原点から十分離れた領域からの積分への寄与は極めて小さい。このため、数値積分上の積分領域を、原点を含んだ超球や超立方体に限定しても、それによって生じる誤差を極めて小さくすることができる。例えば、原点を中心とした一辺の長さが2aの超立方体上に積分領域を制限する近似:
においては、aを十分に大きく取ることにより、この近似による誤差は任意に小さくすることが可能となる。
また、変数変換によって積分領域を有限化することも可能である。例えば、
という変換を考える。ここでx
jは積分変数のベクトル
の第j成分である。この変換によって積分領域を[0,1]区間の直積とすることができ、モーメント母関数は次のように表すことができる。
ここで、右辺のp
iの引数は
というベクトルであり、この右辺に現れるΦ
−1は、標準正規分布の分布関数の逆関数である。
ポートフォリオ関数に現れる共通リスク変数に関する積分を数値計算するにあたっては、元の積分の表式に、上述のような何らかの変形を行った上で数値積分アルゴリズムを適用することができる。どのような変形を行ったとしても、数値積分アルゴリズムを用いて得られる式は、
という形で表すことができる。ここで
は積分点であり、w
lは当該積分点に関連したウエイト値である。積分点は、数値積分アルゴリズムによって決められる積分点から、積分の変形の過程で行った変数変換の式を用いて算出され、共通リスク変数としての意味を持つものである。また、各積分点に関連するそれぞれのウエイト値は、積分点における標準正規分布の密度関数の値と、数値積分アルゴリズムから決定される積分点に付随したウエイト、および、必要に応じて含まれる積分変数の変数変換に伴うヤコビアンの積である。このように、数値積分の方法によって、積分点や積分点に関連するウエイト値の与え方は異なるが、本発明は数25の計算を高速化する手法を提供するため、数値積分の手法によらず適用することが可能である。
モンテカルロ積分とは、積分点を乱数によって選び、すべてのウエイトを一律wl=1/NIとする、という手続きで積分を評価するものである。ここで、NIは積分点の数である。モンテカルロ積分は、収束の速度が積分の次元に依存しないという著しい特徴があり、高次元の積分を数値的に求める際にはしばしば有力な選択肢となる。しかしながら、収束速度が遅いため、高い精度で積分値を求めるためには非常に計算時間がかかることが多い。実際にモーメント母関数の表式中の共通リスク変数に関する積分をモンテカルロ積分によって実行する場合、高信頼区間(例えば99.97%)でのVaRを高い精度で算出するためには、最低でも積分点の数を100万個程度以上にする必要がある。積分点およびそれに関連するウエイトを用いてモーメント母関数を表すと、数25となるが、この式に基づいてモーメント母関数を算出する場合、積分点毎に、すべての企業にわたる積を計算する必要がある。銀行全体のポートフォリオに含まれる企業数は典型的には数万から数百万程度であり、モンテカルロ積分によってこのような計算を実行した場合、膨大な時間がかかる。例えば、積分点の数を100万個として100万社のポートフォリオに対して計算するためには、累計一兆回のループ計算が必要になり、このような計算は実用性に乏しい。
本願発明者は、モーメント母関数の計算においてセクターリスク因子を利用し、またそのセクターリスク因子を離散化することにより、与えられた助変数に対するモーメント母関数の値を極めて高速に計算する方法を見出した。具体的には、本実施の形態においては、次の二つのステップにより計算を行う。すなわち、まず離散化評価点におけるセクター別条件付モーメント母関数の値を計算する。ここで、セクター別条件付モーメント母関数は、
により定義される。次いで、その結果を用いて全体のモーメント母関数を近似的に計算することにより、計算を大幅に高速化する。この計算方法をコンピュータによって実施する形態においては、セクター別条件付モーメント母関数の計算と全体のモーメント母関数の計算を分離して、まずセクター別条件付モーメント母関数の計算を各離散化評価点について行い、その結果を記憶手段に記憶しておいて、全体のモーメント母関数の計算ではその記憶手段中のセクター別条件付モーメント母関数のデータを用いる。以下、この計算方法を用いるモーメント母関数の値の算出法について詳述する。ただし、本発明は、ポートフォリオ関数の定義に合致していれば、モーメント母関数以外の関数の計算に対しても適用することができる。例えば、被積分関数が分布関数のラプラス変換である、
の計算にも、本発明を適用することができる。実際、以下の方法でモーメント母関数を計算した後、助変数による除算を行うことによって数28を計算することができる。数値計算上は密度関数よりも分布関数の方が扱いやすいことが多いが、以下では説明を簡単にするため、モーメント母関数の計算方法を例として取り上げる。なお、リスク管理の実務では、セクターの設定にあたって、債務者の業種を用いることが多い。
[モーメント母関数の書き換え]
まず、上記の二つのステップのための準備として、モーメント母関数の書換えを行う。感応度係数はセクターごとに与えられるため、
と書くことができる。この式は、感応度係数が企業ごとに異なる値を取るのではなく、セクターごとに異なる値をとることを表している。
企業iの企業価値Z
iは、互いに独立な共通リスク因子X
jの一次結合によって与えられる単一のファクターY
Sによって表現することができ、
となる。ファクターY
SはセクターSごとに定められる確率変数であり、セクターリスク因子という。
セクターリスク因子を導入することにより、それぞれのセクターに属するすべての企業の企業価値が、一つの共通因子であるセクターリスク因子によって記述することが可能となる。これは、セクターSに属する企業の条件付デフォルト率が、セクターリスク因子YSの実現値であるセクター変数ySにのみ依存することを意味する。このため、以下では企業iの条件付デフォルト率をpi´(yS)と表す。また、数27に示したセクター別条件付モーメント母関数も、ySのみの関数となる。これは、特定のセクターだけに注目すると、損失額分布はワン・ファクターモデルによって完全に記述することができることを意味する。
セクター変数y
Sは共通リスク因子Xの実現値x(一般にはベクトル)によって表現できるので、適当な積分点と積分点に関連するウエイトの列をとることにより、求めるべきモーメント母関数は、
と表現することができる。ここで、セクター変数y
S lは、積分点が与えられると、
という式によって算出することができる。なお、β
Sは数30の第二式によってセクターごとに決まる値であり、x
l,jは数26のベクトルの第j成分である。
さらに、次に説明する計算上の工夫によって、十分な精度を保ちつつ本発明が対象とする積分の計算量を大幅に削減する近似計算が可能となる。
[条件付モーメント母関数の計算の高速化]
数値積分を高速化する方法は、大きく分けて2つある。一つは、数値積分アルゴリズムの工夫などによって、少ない積分点においても高い精度で積分値を求めるようにする方法であり、もう一つは、被積分関数の値を算出する計算を高速化し、積分点一つあたりの計算にかかる時間を短縮する方法である。本発明における高速化は、後者の方法によるものを含む。すなわち、本発明のある態様においては、積分点ごとの条件付ポートフォリオ関数の計算を高速化することにより、ポートフォリオ関数に表れる共通リスク変数に関する積分を高速に計算している。このような方法は、多数の積分点を用いた場合にも有効であることから、高次元の積分に対しても適用することが可能となる。
本実施形態におけるモーメント母関数の計算方法について、数式を交えて説明する。まず、セクター別条件付モーメント母関数の計算に用いる離散化評価点を決定する。本実施形態における離散化評価点とは、実数直線上に取られた点のことである。ここで、離散化評価点の個数をN
gと表す。そして、離散化評価点の集合をGを、G={g
1,g
2,…,g
Ng}(g
1<g
2<…<g
Ng)と表す。この集合Gの決定方法については後ほど述べる。次に、各離散化評価点におけるセクター別条件付きモーメント母関数の値を計算する。すなわち、
を、セクターごとに、全ての離散化評価点に対して計算する。その結果をセクターと離散化評価点に関連付けて記憶装置に記憶する。そして、次の近似式に基づいて共通リスク変数に関する積分の計算を実行する。
つまり、数値積分の過程において現れるセクター別条件付モーメント母関数について、
という置き換えを実施するということである。ここで、g
m S lは、上記点列のm
S l番目の値であり、y
S lは、l番目の積分点から決まるセクターSに対するセクター変数の値である。数34の近似による誤差を少なくするには、g
m S lがy
S lの値に近くなるようにm
S lを特定する必要があるが、この特定方法の例については後に述べる。数35の右辺の値は記憶装置に記憶されており、セクターSとm
S lを特定すれば呼び出すことができる。これを用いて数34の計算を進めることにより、積分点毎にセクター別条件付モーメント母関数を計算する必要がなくなり、積分の計算が大幅に高速化される。なお、本実施形態では、全てのセクターについて離散化評価点の集合は同一であるものとして計算方法を示しているが、g
m S lをy
S lから決定する処理はセクターごとに行われるため、離散化評価点の集合はセクターごとに異なっていても本発明は実施可能である。例えば、離散化評価点の個数や値がセクター毎に異なっていても、本実施形態と同様の計算方法により、積分計算の大幅な高速化を実現することができる。
上述の計算方法の説明から、モーメント母関数の計算精度が集合Gの取り方およびm
S lの特定方法に依存することが分かる。一般に数値計算においては、計算精度と計算時間はトレードオフの関係があり、どちらか一方を犠牲にした上で他方を改善することは容易である。本発明の大きな特徴の一つは、高い計算精度を保ちつつ、計算時間の大幅な高速化を実現したことである。ここでは、数34式の近似による誤差が十分に小さくできることを示す。まず、g
1<y
S l<g
Ngの場合について考える。N
gを大きくすれば、離散化評価点を十分に小さな間隔で設定することができる。このように離散化評価点を設定した上で、適切にm
S lを特定すれば、
は必ず一定値以下に収めることができる。
がyに関する連続関数であることから、これは、
を
にいくらでも近づけることができることを意味する。次にy
S l<g
1もしくはy
S l>g
Ngの場合を考える。この場合、数36を一定値以下に抑えることはできない。しかし、Y
Sが標準正規分布に従う確率変数であるため、g
1を絶対値が十分に大きい負の値とし、g
Ngを十分に大きな正の値とすれば、このようなセクター変数に対応する積分領域からの積分への寄与は、非常に小さくすることができる。これは、g
1およびg
Ngとして適切な値をとり、十分な精度を持つ数値積分法を用いれば、数35の置換えが数値積分の結果に与える誤差を非常に小さくすることができることを意味している。以上のことから、N
gを十分に大きくして適切に集合Gをとれば、数34の右辺は非常によい精度で左辺を近似することができる。
離散化評価点の存在範囲は、セクター変数yが分布する範囲のほとんどをカバーできるように設定する。幸い、セクターリスク因子は標準正規分布に従うため、[−5,5]の区間を取ると、その実現値は99.9999%以上の確率でこの範囲に収まる。これは、有限範囲に分布する離散化評価点gmをセクター変数yの代替として用いたとしても、それによって生じる誤差を極めて小さく抑えられることを意味する。また、数34の近似に伴う誤差は、離散化評価点の個数や、有限区間内におけるgmの分布によっても影響を受ける。本願発明者の検討では、[−5,5]の区間内に、例えば均等に64個の離散化評価点を取ることにより、十分な精度でリスク指標を算出することができる。また、離散化評価点の数をさらに増やせば、より高精度にリスク指標を算出することができる。本発明は離散化評価点の数を数百個とした場合でも高速に実施することができるため、実用上十分な高い精度を確保することができる。
本実施形態の精度に関する性質について実用上の観点からの検討を行い、以下のように離散化評価点の数や範囲を設定し、セクター変数の積分点の代わりに用いる離散化評価点を特定することによって、十分に高い精度でモーメント母関数を求めることができることを見出している。
(1)点列の個数、N
g:64個〜256個程度とする
(2)Gのとり方:区間[−5,5]に等間隔にg
mを配置する
(3)mの決定方法:|y
S l−g
m|を最小とするmをm
S lとする。
これらの方法を用いると、計算速度についても十分に高速にモーメント母関数を計算することが可能である。また、これらの方法は、積分点の選び方とは無関係であり、任意の数値積分アルゴリズムに対して用いることができる。例えば、共通リスク因子の数が少ない場合には、数値積分アルゴリズムに優良格子点法を用いて計算することができる。また、モンテカルロ積分の手法、すなわち、積分点を乱数によって発生させて数値積分を行うこともできる。なお、上記(2)で用いる区間は標準正規分布に従う確率変数の実現値のほとんどをカバーできるような区間であれば良く、[−5,5]に限定されるものではない。この区間を[Min_g,Max_g]とし、等間隔で離散化評価点を配置する場合、離散化評価点の具体的な値は、
で与えられる。
[ラプラス逆変換の計算過程]
本実施の形態では、上述の計算過程によって算出したモーメント母関数の値を用いて、ラプラス逆変換の計算を行う。この数値計算を効率よく行うために、まずラプラス逆変換の無限区間での積分を無限級数によって表現し、次いで、その無限級数を計算する際に収束加速法を用いる。
[ラプラス逆変換の無限区間での積分]
ラプラス逆変換は、以下のような積分によって行われる。
ここでγは、ラプラス逆変換を行う際の積分経路を決めるパラメータである。この式の積分区間は無限区間であり、無限大を含む遠方の積分区間においても被積分関数が減衰することは期待できない。したがって、数値積分を実行するには工夫が必要となる。
本発明では、ラプラス逆変換に含まれる無限区間を含む積分計算を、まず無限級数によって表現する。そしてその無限級数の計算を実現するために収束加速法を用いる。ラプラス逆変換にあらわれる無限区間を含む積分を無限級数により表現するアルゴリズムはいくつか知られており、ゲイバー(Gaver)法、ポアソン法、ラゲール法、ポスト=ウィッダー(Post−Widder)法などがある。本実施の形態では、特にポアソン法を用いる場合について説明するが、本発明がこれに限定されるものではない。
ポアソン法を用いて、ラプラス逆変換の式を無限級数として近似すると、
となる。ここで、hは積分区間の分割幅である。このポアソン法は、形式的には台形公式と同じであり積分計算を無限級数によって近似するものであるが、その近似の誤差はしばしば非常に小さくなることが知られている。例えば、分布関数のポアソン法による近似
では、0≦t≦2π/hにおける近似誤差はexp(−2πγ/h)/(1−exp(−2πγ/h))で抑えられ、積分区間の分割幅hを小さく取れば非常に良好な近似となる。ただし、この近似誤差は数43の無限級数が正確に計算できると仮定した場合の表式であり、実際の数値計算においては、無限級数を有限項で打ち切ることにより生じる打ち切り誤差も考慮しなければならない。しかしながら、ポアソン法によって得られる無限級数自体の収束は非常に遅いため、打ち切り誤差を十分に小さくするためには、多大な計算量が必要となるという問題がある。このため、更に収束加速法を用いてこの計算の速度を速くする工夫を行う。
[収束加速法]
収束加速法とは、級数を効率よく算出するための計算上の技術である。この収束加速法には様々なものが知られており、代表的なものとしてε法やρ法、QD法などが挙げられる。本実施例では、特にQD法を用いる場合について説明するが、本発明がこれに限定されるものではない。
一般に、無限級数の値を数値的に求めるには、無限級数の各項を数値計算して和をもとめて算出するよりも、無限級数の式を変形して対応する連分数の形式にしてから式の値を算出するほうが、収束が早い。この収束の程度を説明する一例として、arctan(x)を無限級数で表示した
と、連分数で表示した
との二つの表現を用いて、それぞれで4arctan(1)=πの公式によって円周率πの数値計算を行う場合を考える。この例において級数による計算方法を用いると、100万項までの級数の計算を行っても、正確な値となるのは小数点以下5桁までである。これに対し、連分数による計算方法では、10階層まで計算すれば小数点以下6桁まで正確な値が求められる。このように、無限級数による計算において収束が緩慢な場合であっても、連分数による計算では収束が速くなる場合がある。本実施の形態においては、収束を加速させるために連分数の表現の有するこの性質を利用する。
ポアソン法によって無限級数により表現されたラプラス逆変換の公式は、連分数を用い
て、
と表現することができる。ここで、γとhを
と設定すれば(t
maxは正の実数、nは正の整数)、損失額tが区間[0,4t
max]にある場合のポアソン法による分布関数の近似の誤差を10
−n以下に抑えることができる。ここで、数46によってラプラス逆変換の値を数値的に求めるためには、数47に現れるt
maxおよびnを決定する必要がある。本願発明者の検討によれば、n=9〜15程度にした上で数47によってγとhを与えれば、ポアソン法とQD法を用いて損失額分布を算出した際の損失額tの区間[0,t
max]における誤差を十分に小さくすることができる。ただし、本発明におけるγとhのとり方は、数47に限定されるものではない。ここで、損失額分布を算出する区間から(t
max,4t
max]を除外したのは、この区間では打切り誤差の影響で誤差が大きくなる可能性があるためである。数47に現れるt
maxについては、密度関数や分布関数の算出範囲に応じて値を設定する。この値を大きくすると計測可能な損失額の範囲が広がる一方で、無限級数の収束速度が遅くなる。このため、t
maxに必要以上に大きな値を用いると、一定の計算精度を達成するために必要な計算量は多くなる。
本実施形態では、無限級数から連分数を求めるために特にQD(quotient difference algorithm)法と呼ばれる手法を用いる。なお、数46において、zにのみ損失額tが表れ、ckにtが含まれないことから、連分数の係数akにもtは含まれない。このため、損失額を変更しても効率よく計算を行うことができる。
QD法などによって連分数の係数{a
0、a
1、a
2、・・・}を求めてしまうと、任意の損失額tに対して密度関数の値をよい精度で高速に求めることができる。つまり、損失額tのそれぞれの値に対して
という計算をすればよい。
ここで、QD法とは、連分数展開を行う場合の連分数の係数を求める数学的手法である。具体的には、QD法によれば、
を満たす連分数の係数は、
によって与えられる。ここで、
である。また、連分数の表記にあたって、
との表現を用いている。ここに記載したQDアルゴリズムによる係数の算出手順を図12に示す。この計算手順によれば、連立された漸化式よって順次入力データから出力データの値が決まり、それと数50の式を組み合わせることにより、求めたい連分数の係数が算出されることが分かる。
実際の数値計算においては、連分数は有限の階層で打ち切る必要がある。数50および数51によれば、M個の連分数の係数を算出するためには、M個の級数の係数を初期値として与える必要がある。以下の説明では、級数の計算を打ち切る項数のことをNkと表すこととする。上で述べたことから、求める連分数の係数の個数をMとすれば、Nk=Mである。連分数の方法を用いることにより、Nk項の和で無限級数を近似するより、遥かに高い精度で無限級数の近似値を求めることができる。一般には、このNkを大きくするほど計算精度は高くなるが、一方で計算時間も多くかかることとなる。このため、Nkは計算速度と計算精度のトレードオフを考慮した上で決めるべきものである。なお、本願発明者の検討によれば、Nkを50から200程度にすれば、十分に高い精度でリスク計測を行うことが可能である。ポアソン法ではckが数46の下段第一式で与えられることから、ポアソン法とQD法を組み合わせてラプラス逆変換を行うためには、Nk個の異なる助変数の値に対してモーメント母関数の値を求める必要がある。このように、数値的にラプラス逆変換を行うためには、複数の助変数の値に対するモーメント母関数の値を計算する必要があるが、このモーメント母関数の計算は前述したモーメント母関数の高速計算手法を用いて実行する。
QD法によって連分数の係数が算出された後は、数48の右辺の計算を行うことにより、損失額tに対する密度関数の値を求めることができる。この計算に必要となる連分数の評価にあたっては、漸化式を用いる方法が知られている。具体的には、
とするとき、数列{A
−1、A
0、A
1、・・・、A
M}および{B
−1、B
0、B
1、・・・、B
M}を
によって定めると、
が成り立つ。この方法をモーメント母関数の算出に適用するには、数54の漸化式の計算において、{a
0、a
1、a
2、・・・}としてポアソン法とQD法によって得られた連分数の係数である数50の値を用い、zとして数46の下段の式によって損失額tから決定されるzを用いればよい。このように、連分数の係数が決まれば、連分数の値を求める計算は漸化式による計算に帰着できる。数54や数55の計算は、四則演算のみによって実行可能であることから、連分数の値を求める計算は極めて高速に実行することが可能である。
[密度関数の算出]
以上のようなポアソン法とQD法を組み合わせたラプラス逆変換の計算手法(ポアソン−QD法)は、発案者の名前をとってde Hoogのアルゴリズムと呼ばれている。本願発明者らは、このde Hoogのアルゴリズムを用いて密度関数あるいは分布関数を計算することにより、分布の裾に至るまで高精度に計算できることを見出した。また、この計算手法はパラメータに対する安定性が高く、例えば数46の下段の式のCkを打ち切る項数Nkを増やしても、突然誤差が大きくなる等の不具合は生じにくいことも確認している。さらに、de Hoogのアルゴリズムでは、ひとたび連分数の係数を求めると任意の損失額に対する確率が即座に計算できるため確率分布全体を非常に高速に算出することが可能である。
前述のモーメント母関数の計算法とde Hoogのアルゴリズムを組み合わせることにより、密度関数を高速に算出することができる。このためには、N
k個の助変数λ
0, λ
1,・・λ
Nk−1に対するモーメント母関数の値を求める必要がある。ただし、λ
kは
で与えられる。N
k個の助変数λ
0,λ
1,・・λ
Nk−1に対するモーメント母関数の値の計算は、単純にモーメント母関数の計算をN
k回反復することによっても達成することができる。また、数値積分を実行するために必要となるすべてのセクター別条件付モーメント母関数の値を予め計算しておき、一度の数値積分のループ中でN
k個のモーメント母関数を並行して計算するという手法でも実現可能である。
一度の数値積分のループ中でNk個のモーメント母関数を並行して計算する場合、数値積分のループの中で必要となるセクター別条件付モーメント母関数の値すべてを記憶装置に保持する。具体的には、離散化評価点の値ごと、助変数の値ごとに、すべてのセクターのセクター別条件付モーメント母関数の値を記憶する。このためには、記憶装置に、Ng×Nk×Ns個の複素数データを記憶しておく必要があるが、Ng,Nk,Nsの典型的な大きさが、それぞれ数十から数百程度であることから、これはメインメモリ中に十分に格納できるサイズである。特に、本発明を計算機によって実現しようとする場合、計算過程で必要とされる記憶領域のサイズが債務者数にも積分点の数にも依存しない実装とすることが可能である。このため、債務者数が数百万件から一千万件にのぼる大規模ポートフォリオに対するリスク計測や、積分点の数を百万個以上必要とするような数値積分アルゴリズムを用いた場合にも、装置の構成を変更することなくリスク計測が実施できる。このように、計算過程で使用する記憶領域が少ない実装が可能である点も、本発明の大きな利点の一つである。
QD法によって連分数の係数が求められると、数48にしたがって密度関数の値を算出でき、その密度関数の値を利用して各種のリスク指標を通常の数値計算の手法によって求めることができる。このリスク指標は、例えば、予測損失額などであり、実際のポートフォリオの管理に用いられる数値指標であることから、必要に応じて、表示装置によって表示されて計算手法を実装したコンピュータからユーザーが認識可能な態様で表示されることができる。その際、数値やグラフとして表示されたり、あるいはプリンターなどにプリントされることや、また、後の利用のために適当な記憶手段に格納されることも可能である。したがって、この実施の形態に体現される本発明が十分に役に立つものであることは明らかである。
また、数41を数42によって近似し、数46によって値を求める手法は、密度関数を求める場合以外にも用いることができる。分布関数を求めるには、数42の代わりに数43を用いて同様の計算を実施すればよい。また、後述するVaRベースおよびCVaRベースのリスク寄与度を算出する場合であっても、それぞれに応じた被積分関数を用いて数41に相当する表現が行えるため、これらに合わせて数48までの手法も同様に適用することができる。
[本実施形態の計算法の性質]
以上に示した計算手法の性質を、計算速度と計算精度の点からさらに説明する。まず、計算速度について説明するため、ある与えられた助変数λに対するモーメント母関数の値を計算することを考える。数31に基づいて条件付モーメント母関数
を計算するには、それぞれの積分点について(N−1)回の複素数データの積の計算が必要である。ここで、Nは債務者数(ポートフォリオ全体に含まれる企業数)である。条件なしのモーメント母関数
を算出するためには、さらに共通リスク変数x
jの空間における積分点に対応したウエイトを掛け合わせて、すべての積分点について和を取る必要がある。これを単純にプログラム化すれば、債務者数Nと積分点の数N
Iとを用いると、助変数1つあたり、N×N
I回のループを実行することとなる。
ここで、実際のポートフォリオの場合について考えると、債務者数Nや積分点の数NIはかなり大きな数となり得る。債務者数が数百件程度の小規模ポートフォリオの場合や共通リスク因子の数が数個程度の場合には、このような計算方法でもモーメント母関数の算出は不可能ではない。しかし、現実のポートフォリオを運用する業務において考えた場合、債務者数や共通リスク因子の数に関するこれらの条件は大きな制約となる。実際、銀行全体のポートフォリオを考えると、債務者数Nが数万〜数百万件に達するのが一般的であり、共通リスク因子も十数個から数十個用いられていることが少なくない。このような場合にはモンテカルロ積分が有力な選択肢となるが、モンテカルロ積分で99.97%といった高い信頼区間での信用VaRを精度高く計測するためには、少なくとも100万個程度以上の積分点を用意する必要がある。このため、信用リスク管理の実務においては、数31に基づく計算手法によってモーメント母関数を計算すると計算時間が膨大になり実用性に乏しい。
これらの従来の手法に対し、本実施形態の数34の右辺に基づく近似計算における重要なポイントの一つは、
は積分点に依存せず、離散化評価点を決めれば計算することができる点である。数値計算の観点からは、本実施形態の手法は、積分点についての反復計算の外で数59を予め計算しておいて計算機の記憶手段に保存しておくことが可能になるという利点を有している。このとき積分点に関するループの中では、単にセクターごとにm
S lを特定して
という積を計算するだけである。これはN
S個の複素数データの積であり、非常に高速に計算することができる。このように、数34に基づいた計算では、債務者に関するループと積分点に関するループとを完全に分離することができ、反復計算の回数を大幅に減らすことが可能になる。実際、ここで述べた方法で計算した場合、助変数1つあたりのループの回数を離散化評価点の数N
gとセクター数N
Sとを用いて見積もると、おおよそ(N
g×N+N
S×N
I)回である。N
gやN
Sの典型的な値は数十〜数百程度であるため、比較のために例示した上述の例におけるループ回数(N×N
I)と比較して大幅に計算量を削減し得ることは明らかである。
なお、ラプラス逆変換を実行する段階では、Nk個の助変数の値それぞれに対してモーメント母関数の値を求める必要がある。このため、密度関数や分布関数を算出するためには、いずれもの方法でも上述のループ回数をNk倍した回数のループが必要となる。
次に、本発明の計算精度について説明する。一般に、信用リスク管理においては損失額分布の裾を高精度で求めることが重要であるが、このためには、共通リスク変数に関する数値積分を非常に高精度に実行する必要がある。上記の説明から明らかなように、数31に基づくモーメント母関数の計算と比較して、本発明の手法は積分点一つあたりに必要な計算量が非常に少なくてすむ。このため、積分点の数を大幅に増やした場合でも、計算時間は大きくは増加しない。実際、本実施形態の手法は積分点の数を数百万個とした場合にも十分に高速に実行可能であり、収束が遅いモンテカルロ積分を用いた場合でもモーメント母関数を高精度に計算することができる。モンテカルロ積分は収束が遅い数値積分アルゴリズムであるが、一方で収束速度が積分の次元に依存しないという性質を持つ。このため、数値積分アルゴリズムとしてモンテカルロ積分を採用した場合、計算速度や計算精度の共通リスク因子数への依存性を非常に小さくすることができる。一般に高次元の数値積分を高速かつ高精度に実行することは非常に難しいため、多次元の確率変数ベクトルXiの空間で積分を行うことは多大な困難を伴う。本発明の手法とモンテカルロ積分を組み合わせることにより、すなわち、共通リスク変数に関する積分の算出にモンテカルロ積分を用いることにより、マルチ・ファクターモデルにおける高次元積分の困難さをも克服することができる。
さらに、リスク計測で一般的な手法であるモンテカルロシミュレーションと比較して、本発明の計測精度について述べる。モンテカルロシミュレーションでは、乱数で発生させた一組の共通リスク変数に対して、一つの損失シナリオを発生させる。これに対し、本発明の手法では、一組の共通リスク変数(積分点)について、条件付モーメント母関数を計算している。条件付モーメント母関数には、共通リスク変数が与えられた下での条件付損失額分布と同等の情報が含まれていることから、一組の共通リスク変数に対する情報量は本発明の手法の方が圧倒的に多い。このため、モーメント母関数の算出に用いる積分点数と同じシナリオ数のモンテカルロシミュレーションと比較した場合、本発明の手法の方がポートフォリオから発生する損失に関する情報量が多く、より高い精度での計測が可能となる。
加えて、本実施形態の計算手法は、大規模ポートフォリオのリスク計測を実施する場合に、特にメリットが大きい手法である。上述の計算時間に関する説明から明らかなように、本実施形態では、非常に時間がかかる数値積分の計算がポートフォリオの債務者数とは無関係に実施できる。このため、全体の計算時間の債務者数に対する依存性が非常に緩やかであり、大規模なポートフォリオであっても高速に計算を実行することが可能である。これに対し、数25に基づいた計算やモンテカルロシミュレーション法では、全体の計算時間が債務者数にほぼ比例する。このため、ポートフォリオの債務者数が増えるほど、本発明による計算時間の短縮の効果はより大きくなる。
なお、上述のように複素数を用いた数式によって表現されている本発明の手法をコンピュータを用いて実現するために、本発明の各実施形態においては、複素数による数値計算を行う必要がある場合がある。具体的には、複素数の四則演算の処理、および複素数に対する指数関数の値を算出する処理が挙げられる。この際、複素数の実部と虚部はそれぞれが実数で表されるから、複素数の実部と虚部のそれぞれにメモリー領域を確保し、実部と虚部に分けて演算を行うことにより、コンピュータ上で複素数に関する処理を記述することができる。なお、本発明の手法は、コンピュータ上で複素数を扱うその他の方法を用いて実現することもできる。また、本発明の説明に用いた複素数の計算をコンピュータによって実施する際のプログラムミング手法は特定のもの限定されるものではなく、数値計算が実施可能な種々の実装形態、種々のプログラミング手法によって本実施形態を実現することが可能である。例えばC++言語では、複素数型のデータ型を定義し、関数および演算子のオーバーロード機能を利用することにより、複素数に対する処理を実数に対する処理と同じように記述することもできる。
[第2の実施形態]
本発明の他の実施形態においては、ポートフォリオに関する情報からリスク計測を行う上記の過程と同じ工夫が有効な他のリスク指標の計算においても実施できる。このリスク指標として、リスク寄与度を算出する例を以下で説明する。
リスク寄与度とは、
によって定義される数値である。すなわち企業iのエクスポージャE
iの微小変化に対する信用VaRの変化額の比のことである。ここでVaRがエクスポージャE
1,E
2,・・・E
Nの一次同次関数であることから、同次関数に関するEulerの定理を適用することにより、
が得られる。数62の左辺の和を構成する各項は、個社ごとのリスク量を表していると解釈することが可能である。このため、この量
は個社iのエコノミックキャピタルと呼ばれ、信用リスク管理上、重要な意味を持つ。
以下では、損失額分布の分布関数をF
L(E
i,t)と表記する。ただし、tはポートフォリオ全体から発生する損失額であり、E
iは企業iのエクスポージャである。ここで、VaRの算出に用いた信頼区間をpとすれば、
が成り立つ。この式をE
iによって微分することにより、リスク寄与度の表式
を得る。この式の右辺の分子は分布関数の偏微分の形で書かれているが、数28から
のように明示的に書くことができる。ただし、
とした。ここで、数65等を計算するために必要となるVaRの値は、第1の実施形態の手法に基づく分布関数の計算方法によって算出することができる。
ここで、数62及び数65から、
を示すことができる。このため、個社iのエコノミックキャピタルは、
と書くこともできる。
数65の分母は密度関数そのものであるから、実施形態1の方法で計算することができる。また、すべての債務者のリスク寄与度を算出する場合には、数69を用いて計算することもできる。さらに、数66の右辺はラプラス逆変換の形式で書かれており、
の計算方法が与えられれば、実施の形態1に関連して説明したポアソン−QD法(de Hoogのアルゴリズム)等を用いることにより計算することができる。実際、以下に述べるように、数70は非常に高速に算出することが可能である。
本発明のセクターリスク因子の離散化を応用することにより、数70の計算を高速に実行する方法を示す。まず、次の量を定義する。
この量を用いると、数70は、適当なウエイトと積分点の列
を用いることにより、
と表すことができる。ここで、
は企業iの損失生起確率しか含まないため、企業iが属するセクターのセクターリスク因子を通じてのみ共通リスク因子に依存する。このため、次のようにしてセクター変数に関する関数
を定義することができる。なお、数71および数75で表される関数は、リスク寄与度指標関数の例となっている。
上式に現れるセクターリスク変数を離散化して計算を高速化するため、次のような記号を導入する。
すると、数73に対する次の近似式が得られる。
ここで、数77の右辺に現れる
は、数60に現れたm
S lと同じものであり、離散化評価点を特定するためのサフィックスである。これは、高々
個の異なる値しか取らない。リスク寄与度算出を高速化するポイントは、数77の和で
が同一の値をとる項を括ってしまう、ということである。次のような記号を導入する。
これらを用いると、数77の右辺は次のように書き換えることができる。
ところで、
には個別企業を表す添字iは含まれていない。これは、
は企業毎に計算する必要がなく、ポートフォリオに対して一度計算しておけばよいことを意味する。更に言えば、
を計算するために必要な
は、リスク計測時(すなわち、第1の実施形態の実施時)に計算されるものである(数34および数35参照)。このため、
をリスク計測を行う際に同時に計算してメモリーに保存しておくことにより、効率的に数70の計算を実行することができる。
また、数82の右辺で項の数がNg個になっており、Ng回のループで計算できることもこの計算方法の大きな利点である。これに対し、数73に基づいた計算では、積分点数NI回のループが必要となる。NIは数万から数百万のオーダーになる可能性がある一方、Ngは数十から数百のオーダーであるため、これは計算の高速化の大きな要因となる。このようにループの回数を積分点の数と無関係にできるのは、セクターリスク変数の離散化、すなわち離散化評価点を用いた近似を行ったためである。
これまで述べてきた数70の計算方法とポアソン−QD法(de Hoogのアルゴリズム)を組み合わせることにより、数66を計算することが可能となる。このためには、数56で与えられるN
k個の助変数λ
0、λ
1、・・λ
Nk−1に対して数70の計算を行い、QD法に用いる係数を求める必要がある。この計算を実行するには、まず、リスク計測時に次の配列
を計算して記憶装置に保持しておく。そして、例えば企業iについての計算を行うには、k=0,1,・・・N
k−1に対して
を求め、これを用いてQDアルゴリズム数50および数51を実行する。その上で連分数の評価の計算である数54および数55を実行し、数46の連分数の前に現れる係数を掛ければよい。
ここで数88の配列は、Ng×Nk×Ns個の複素数であり、十分にメインメモリ中に格納することができるサイズである。このように数88を保持する記憶装置としてメインメモリを用いれば、高速に配列を呼び出すことができ、計算自体も非常に高速に実行可能となる。さらに、数88の計算量は積分点の数に依存しないため、ひとたびリスク計測時に数88を求めてしまえば、リスク寄与度の算出に必要な計算時間は積分点の数には依存しない。このため、本発明による計算方法を用いると、極めて高速かつ高精度にリスク寄与度を算出することが可能である。
このように、本発明によるリスク寄与度の算出方法は極めて高速であるため、数百万件規模のポートフォリオであっても、すべての債務者に対してリスク寄与度あるいはエコノミックキャピタルを求めることができる。
[第3の実施形態]
本発明のさらに他の実施形態として、CVaRベースのリスク寄与度を算出する計算方法について説明する。CVaRの場合も、数61と類似の表現によって、リスク寄与度が
と表現される。このCVaRベースのリスク寄与度については、モンテカルロシミュレーション法での算出法が知られている。しかし、そのモンテカルロシミュレーション法にしても、特に高い信頼区間でのリスク寄与度を精確に求めるためには莫大な試行回数が必要となるため実務向きの方法ではない。ここでも高速ラプラス変換の方法を用いることにより、高速かつ高精度にCVaRベースのリスク寄与度を算出することが可能となる。
まず、CVaRを次のように書換えておく。
ただし、
である。これにより、
と計算できる。数93の第2行目の右辺の括弧内第2項は、数66と積分のラプラス変換の公式から、
と表すことができる。ここで第二式のL
λ −1[・・・]は、括弧内の式をλについてラプラス逆変換することを表す。この括弧内の式は、数66の右辺の被積分関数を助変数λによって割っただけであるから、数94も数66の計算と全く同様に、本発明の計算によって高い精度で高速に計算することができる。
[第4の実施形態:フーリエ変換による実施]
本発明においては、さらなる実施形態として、ラプラス変換の代わりに、フーリエ変換を用いた実施形態も可能である。すなわち、当業者には明らかであるように、確率密度関数をフーリエ変換した特性関数を用いれば、確率密度関数についてラプラス変換を実行することによって示された上記数学的議論が同様に展開できる。確率密度関数以外の損失額の確率分布に関連した関数を算出する場合も同様である。本実施形態においては、上記各実施形態におけるラプラス変換を実行するための処理をすべてフーリエ変換を実行するための処理とし、ラプラス逆変換を実行するための処理を全て逆フーリエ変換を実行するための処理とすることにより処理の流れは同様となる。なお、フーリエ変換においては、ラプラス変換に用いる助変数の代わりに、同様の助変数に虚数単位を乗じたものを用いる。このため、逆変換の積分経路も異なる。これらの違いから、上記各実施形態によって示したラプラス変換に基づく処理とは一部の処理が異なるが、ラプラス変換のための処理をフーリエ変換のための処理とするための変更は当業者には容易である。また、フーリエ変換法に特有の計算上の工夫を行うことも可能である。例えば、逆フーリエ変換を高速に実行するために、バタフライ演算などの高速フーリエ変換の手法を用いることも可能である。以下、特に断りのない記載は、ラプラス変換を用いる実施形態について記載しているが、フーリエ変換を用いる本実施の形態についても同様に当てはまる。
[実施例]
以上に説明した各実施形態の計算手法をコンピュータ上に実装するための具体的手法およびその結果について、以下、図面を参照して説明する。
[実施例1]
実施例1は、本発明の実施の形態を実装する実施例であり、デフォルトモードの場合の実装の態様を示している。しかしながら、特に断りのない限り、MtMモードにも適用可能な特徴が含まれている。図1は、本発明のラプラス変換を用いる実施の形態の実施例において共通に使用されるコンピュータの構成を示すブロック図である。適当なマイクロプロセッサユニット(MPU)などの演算手段102が、メモリーやグラフィックカードや入出力とのインターフェースを提供するブリッジ回路112、114が接続されている。ブリッジ回路112は、十分なバンド幅を有するCPUバス104、106によって演算手段102をメインメモリ108およびグラフィック処理部110に接続する。ブリッジ回路114は、ブリッジ回路112と専用バス116によって接続されて、ブリッジ回路114は、更にハードディスクドライブ118、光学ドライブ120とIDEインターフェースなどのバス132、134によって接続され、USBなどの外部入出力端子122、124とバス136,138によって接続される。音声処理回路128、ネットワークインターフェース130、カードスロット126が、PCIバスなどのバス140によってブリッジ回路114に接続される。
なお、本発明の各実施の形態を実装するためのコンピュータのハードウエア構成は特段この構成に限定されるものではなく、複数のMPUによって連携して演算を行うように構成されていたり、数値演算の形式に併せて専用の数値演算ユニットを一つ以上有していたり、複数の筐体に分かれて互いにネットワークにより接続されているクラスタ構成にされていたりすることができる。なお、本実施例のみならず、本発明全般に、区別して記載された機能手段は、実質的にそのような区別された機能を果たす任意の構成要素によって実現される。このとき、その構成要素が、物理的にいくつの数を有するか、あるいは、複数であり互いにどのような位置関係にあるかなどの機能を果たす上で制限とならない属性によって本発明が制限されることはない。例えば、複数の区別された機能が単一の構成要素によって継時的に異なるタイミングで実行されることも本発明の実施形態として含まれる。
本発明の各実施の形態の機能処理を実装するコンピュータにおいて数値計算をするためのソフトウエア構成は、本発明の各実施の形態の数値情報処理を実現する限り任意の構成とすることができる。そのコンピュータは、基本入出力システム(BIOS)などのハードウエア制御のためのソフトウエアを搭載しており、これと連携して動作し、ファイル入出力やハードウエアリソースの割り振りを担当するオペレーティングシステム(OS)によって管理されている。当該OSは、OSやハードウエアと連携して動作するアプリケーションプログラムを、例えばユーザーからの明示の命令や、ユーザーからの間接的な命令や他のプログラムからの命令に基づいて実行することができる。アプリケーションプログラムは、このような動作を可能とし、OSと関連して動作するように、OSの規定する手続に依存して、あるいはOSに依存しないように適切にプログラムされている。本発明の各実施の形態を実装する場合には、一般に、専用のアプリケーションプログラムの形式で数値計算やファイル入出力等の処理を実装するが、本発明がそれのみに限定されるものではなく、複数の専用または汎用アプリケーションプログラムを用いたり、既成の数値計算ライブラリを部分的に用いたり、他のコンピュータのハードウエアによって処理されるようにネットワークプログラミング手法によって実現されていたり、その他の任意の実装形態によって実現されうる。したがって、本発明の各実施の形態の計算手法をコンピュータ上に実装するための一連の命令を表現するソフトウエアを、単に計算プログラムと呼ぶ。計算プログラムは、コンピュータにより実行可能な任意の形式あるいはそのような形式に最終的に変換可能な任意の形式によって表現される。
本発明の各実施の形態の計算プログラムは、ハードウエア資源であるMPUなどの演算手段が、OSを介してあるいはOSを介することなく計算プログラムからの指令を受け、ハードウエア資源であるメインメモリや補助記憶装置などの記憶手段と協働して、ハードウエア資源である適当なバスなどを通じて演算処理を行うように構成される。つまり、本発明の各実施の形態の計算手法を実現するソフトウエアによる情報処理が、これらのハードウエア資源によって実現されるように実装される。記憶手段あるいは記憶部は、任意の単位によって論理的に区分されているコンピュータが可読な情報記憶媒体の一部または全部またはそれらの組み合わせをいう。この記憶手段は、例えば、MPU内のキャッシュメモリや、MPUと接続されたメインメモリや、MPUと適当なバスによって接続されたハードディスクドライブなどの不揮発性記憶媒体など、任意のハードウエア資源によって実現される。ここで、記憶手段は、MPUのアーキテクチャによって規定されるメモリー内の領域や、OSが管理するファイルシステム上のファイルやフォルダ、同じコンピュータ内やネットワーク上のいずれかのコンピュータにあってアクセス可能なデータベースマネージメントシステム内のリストやレコード、リレーショナルデータベースによって相互にリレーションがある複数のリストで管理されたレコードなど任意の形式によって実現され、論理的に他と区分され、情報を識別可能に少なくとも一時的に記憶または記録できる任意のものを含む。
図2は、上記コンピュータ内において機能的に実現されるラプラス変換を用いるある実施の形態のリスク指標の計算装置300の機能的構成を示すブロック図であり、本発明を実施する態様のひとつとして機能的処理をハードウエアとの関連において具体的に示すものである。複数の企業に対する債権を含むポートフォリオの損失についてのリスク指標計算装置300は、機能手段として、離散化評価点算出部304と、損失指標関数算出部306と、セクター関数データ算出部308と、セクター関数データ記憶部350と、セクター乗算部312と、ウエイト乗算部314と、狭義ポートフォリオ関数算出部316と、ラプラス逆変換部318と、リスク指標算出部320とを含む。なお、ウエイト乗算部314と狭義ポートフォリオ関数算出部316とをあわせてポートフォリオ関数算出部と呼ぶ。実施態様における任意選択として、ポートフォリオ関数データ記憶部360や、パラメータ記憶部370、和データ記憶部380、セクターリスク因子係数算出部302が設けられていても良い。パラメータ記憶部370に記憶されるデータは、例えばキーボード372などの入力装置によってユーザーから受け付けられたり、他の手段によって準備されてパラメータ記憶部370に格納されたりする。また、任意の選択としてパラメータ算出部(図示しない)を用意し、ユーザーから受け付けたデータをで加工した上でパラメータ記憶部370に格納する構成とすることもできる。
損失指標関数算出部306、セクター関数データ算出部308、セクター乗算部312、ウエイト乗算部314、狭義ポートフォリオ関数算出部316、ラプラス逆変換部318、リスク指標算出部320は、それぞれに特有の数値情報処理を実現する機能手段をいい、典型的には、予めそれらの機能手段を実現するためのコンピュータプログラムを格納する記憶手段から、そのプログラムが呼び出され、演算手段にそのプログラムの少なくとも一部がロードされ、そのプログラムが演算手段内のデコーダによってデコードされ、デコーダからの指示に基づいて命令が発行され、演算手段内の実行ユニットによってその命令が実行されることにより、機能的に実現される。演算処理部は、ALU(算術論理ユニット)などの数値演算処理部を用いて構成されることができるが、実装されるアーキテクチャは特定のものには限定されない。そのコンピュータプログラムが実行されることによって、演算装置と記憶手段が協働して実現される各算出部の特有の数値計算が実現されるが、本発明は同等の機能をコンパイルされた実行可能プログラムやプログラム中の関数やプロシージャなどのサブルーチン類、ダイナミックリンクライブラリなどの動的にリンクされる計算モジュールによって実現されるものを含み、また、同等の機能をハードウエアによって実現する任意の特定目的のプロセッサ、ASIC(特定用途向け集積回路)やDSP(デジタル信号プロセッサ)、または、FPGA(Field Programmable Gate Array)などを一部にあるいは全部に含むものを含むことができる。
パラメータ記憶部370に記憶されるデータは、他の機能手段によって計算に用いられるデータである。そのデータとしては、ラプラス逆変換の計算に用いられる助変数の値を決めるためのパラメータや、離散化評価点の決定に必要となるパラメータ、級数の係数の算出数を決めるパラメータ、リスク指標の算出に用いられるパラメータ、などが挙げられる。本発明を実施するために必要となるパラメータは、ラプラス逆変換を級数近似する方法や収束加速法、計算するリスク指標、あるいは他の機能手段の実施方法によって異なる。パラメータ記憶部370には、本発明の実施態様に応じて必要となるパラメータを格納する。他の機能手段は、必要となった時点でパラメータ記憶部370からパラメータを呼び出す。パラメータ記憶部370は、メインメモリ108中の所定の領域またはハードディスクドライブ118においてOSにより管理されるファイルにより実現される。
本発明を実施するにあたって、パラメータ記憶部370に記憶されるデータを与える手段は、特定の方法に限定されない。例えば、計算過程で必要となるパラメータを外部ファイルとして用意しておき、それを読込む構成とすることもできる。また、キーボード372によってユーザーがパラメータを入力もしくは選択する構成とすることもできる。さらに、キーボードで入力された数値から、計算に必要となるパラメータをパラメータ算出部(図示しない)において算出する構成とすることもできる。さらに、これらの方法のうちいくつかを組み合わせてパラメータを与える構成とすることもできる。
本実施例において、パラメータ記憶部370に記憶されるデータの例として、ラプラス逆変換の計算に用いる助変数の集合{λk}およびその個数Nk、離散化評価点の決定に用いるパラメータであるMax_g(離散化評価点の最大値)、Min_g(離散化評価点の最小値)およびNg(離散化評価点の個数)、算出対象とする損失額の集合{t0、t1、・・・、tNT}およびその個数を特定するパラメータであるNT、などが挙げられる。また、リスク指標としてVaRを算出する場合には、追加のデータとして信頼区間pが記憶される。さらに、計算に利用するラプラス逆変換法や数値積分法によって、追加のデータが記憶されることもある。例えば、ラプラス逆変換法にポアソン法とQD法を用いる場合、ラプラス逆変換の計算に用いるパラメータγおよびh(数47)、算出する損失額の最大値tMAXが記憶される。このうちγおよびhについては、キーボードからtMAXとnを入力し、パラメータ算出部で数47にしたがって算出した上でパラメータ記憶部370に格納する構成とすることができる。また、ポートフォリオ関数を算出する際の数値積分法としてモンテカルロ積分を用いる場合、積分点発生に必要となる積分点数NIおよび乱数シードrsが記憶される。なお、本実施例においては、ポートフォリオ関数を逆変換した関数は、損失額分布の密度関数や分布関数のような損失額の関数であるとしている。
セクターリスク因子Yは、複数の企業価値に影響する少なくとも一つの共通リスク因子Xの一次結合として表される。セクターリスク因子Yを定義するための係数α(数30下段)は、他の手段を用いて予め計算されて、あるいは、任意選択としてセクターリスク因子係数算出部302によって、セクターごとに与えられる。係数αはセクターごとに異なる値の組であるため、セクターリスク因子は、セクターを定めれば一つに決まる(数30下段第二式、Yの表式参照)。本実施例では、予めセクターごとに感応度係数が計算されて記憶手段に格納されており、それが呼び出される構成としている。記憶手段に格納されているデータの例としては、共通リスク因子に対する各セクターの感応度係数(数30下段、α)のデータが挙げられる。図13にこの例を示す。また、別の実施態様として、セクターリスク因子係数算出部302が備えられている構成とすることもできる。この場合、セクターリスク因子係数算出部302は、セクター別の株価インデックスの時系列データやセクター別のデフォルト率の時系列データなどを入力データとして、主成分分析等の統計分析を実施することにより、図13と同様のデータを算出する。
図13にはセクター番号またはセクターIDによって区別される各セクターに対して、そのセクターにおいて用いられるセクターリスク因子Yを共通リスク因子Xから生成するための係数(感応度係数)が与えられている。
離散化評価点算出部304は、パラメータ記憶部から離散化評価点の決定に必要なパラメータを呼び出して離散化評価点の集合Gを定める。離散化評価点の集合Gは、計算の過程でセクター変数yの代替として用いられる有限個の点列である。本発明で用いることのできる離散化評価点Gの決定方法は、特定方法に限定されるものではない。例えば、離散化評価点算出部304の処理を、パラメータ記憶部370から離散化評価点の最大値Max_g、および最小値Min_g、離散化評価点の個数Ngを呼び出し、数40によって離散化評価点の値を算出する処理とすることができる。なお、具体的な数値として、Min_g=−5、Max_g=5として、Ngを64から256程度の整数値とすれば、高精度にリスク指標を算出することができる。なお、本実施例では、全てのセクターについて離散化評価点の集合は同一であるものとして計算方法を示しているが、離散化評価点の集合がセクターごとに異なるものとしても本発明は実施可能である。
ポートフォリオ関数を高精度に計算するために必要となる積分点の数は数百万個に達することがあるが、本発明で十分な精度を実現するために必要となる離散化評価点の数は、数十〜数百程度である。このため、セクター変数yの代替として離散化評価点を用いることにより、計算機の記憶領域などのリソースを節約することができ、大幅な計算の高速化が可能である。なお、上記のセクターリスク因子係数算出部302の場合と同様に、本実施形態のリスク指標の計算装置300においては離散化評価点算出部304が備えられているが、本発明はそのような離散化評価点算出部304が用いられる場合に限定されない。例えば予め離散化評価点が計算されて記憶手段に格納されており順次呼び出されるように構成する実施態様も本発明の実施態様となり得る。
損失生起確率は、リスク計測期間終了時点における企業価値の確率分布と、損失に対する認識を反映した判定基準に基づいて算出される。ある企業の企業価値は、当該企業が属するセクターリスク因子を用いて書けることから、セクターSに属する企業の損失生起確率はセクター変数ySの関数となる。判定基準については、本実施例のデフォルトモードの場合、判定基準については数7のCiによって与えられ、損失生起確率は数31第三式によって与えられる。ここで数7の右辺の引数であるPDiは、企業iの平均デフォルト率であり、企業iが属する格付のデフォルト発生率の時系列データなどから算出されるものである。なお、後述するMtMモードの場合には、一期間における平均格付推移確率の情報から判定基準が算出される。判定基準の算出に必要なこれらの情報は予め準備されていて、損失指標関数算出部306に入力として与えられる。本実施例においては、平均デフォルト率は企業ごとではなく、各企業が属する格付ごとに決まる値としている。ただし、本発明は企業ごとに平均デフォルト率が与えられる場合にも実施可能である。損失認識にあたり、デフォルトのみを考慮する本実施例のデフォルトモードと、比較のため、格付も考慮するMtMモードのそれぞれの場合について、本実施形態で利用する入力データを図15に示す。図15(a)は、デフォルトモードにおいて利用される平均デフォルト率データの例を示し、各欄は、リスク計測期間における格付別の平均デフォルト率を示す。格付番号は、コンピュータ内で格付を識別するために使用され、格付IDは、格付を識別するための任意の識別符号であり、例えば金融機関がその組織内で利用している任意の識別符号とすることができる。図15(a)によれば、例えば、Dの格付IDに分類される企業は、リスク計測期間中にデフォルトとなる確率が0.65%であることを示している。このように、どの格付IDの企業がどれだけのデフォルト確率を有するかは、データとして与えられる。なお、図15(b)は、後述するMtMモードにおいて利用される平均格付遷移確率を示している。
ポートフォリオ関数は助変数の関数であり、ポートフォリオ関数算出部によって得られるポートフォリオ関数のデータは、助変数の値に対応して算出される。本実施例では、ラプラス逆変換部318の処理において、助変数の集合{λk}の各要素に対応したポートフォリオ関数のデータが用いるが、以下で述べる損失指標算出部306から狭義ポートフォリオ関数算出部316の説明においては、集合{λk}のある要素λ´に対応したポートフォリオ関数のデータを算出する処理について述べる。
損失指標関数算出部306は、損失生起確率と、助変数に企業のエクスポージャを乗じた値の指数関数とを用いて企業ごとに定められる損失指標関数のデータを算出する。ここで、セクターSに属する企業の損失生起確率はセクター変数ySの関数であるから、その企業の損失指標関数もセクター変数ySの関数である。損失指標関数算出部306では、パラメータ記憶部から助変数の集合{λk}の要素であるλ´および離散化評価点算出部304によって得られた離散化評価点の集合{gm}が入力され、企業ごとに、各離散化評価点に対し、助変数の値がλ´であり、セクター変数の値が当該離散化評価点の値である場合の損失指標関数の値を算出する。本実施例のデフォルトモードの場合、損失生起確率は数31の第三式によって与えられるため、その計算にあたっては標準正規分布の分布関数の逆関数の計算を行う必要があるが、損失指標関数算出部306は、この計算を実行することができるようなサブルーチン又はモジュールを含む。また、損失生起確率を求めるためには、企業ごとに、その企業がどこのセクターに属するかを示すデータ、セクターごとの感応度係数を与えるデータ、その企業のエクスポージャ、およびその企業の平均デフォルト率に関するデータが必要となる。損失指標関数算出部306には、これらのデータが入力情報として与えられる。図14に企業ごとに与えられる情報の例を示す。企業(債務者)ごとに、その企業が属する格付およびセクターがデータとして与えられ、さらに、その企業がデフォルトとなった場合の損失額(エクスポージャ)も与えられる。この表における格付IDから、図15に示したデータを用いて、各企業の平均デフォルト率の情報が得られる。また、セクター別に感応度係数を与えるデータの例を図13に示す。図14におけるセクターIDとこのセクター別感応度係数の情報によって、各企業の感応度係数が特定される。なお、エクスポージャの代わりに取引残高とデフォルト時損失率を入力情報とし、取引残高とデフォルト時損失率からエクスポージャを算出する構成とすることもできる。
なお、本実施例のように格付別に平均デフォルト率が与えられている場合、セクター変数の値が与えられた下では、同一セクターに属する同一格付の企業の損失生起確率はすべて同じ値となる。これは、セクターごと、格付ごと、離散化評価点ごとの損失生起確率のデータを算出しておけば、上述の計算に用いる損失生起確率は、必ずこのどれかの値と一致することを意味する。このため、格付を通じて平均デフォルト率を与える場合には、計算装置300の構成に損失生起確率データ算出部(図示しない)および損失生起確率データ記憶部(図示しない)を追加し、上述の損失生起確率のデータを記憶させる構成とすることもできる。この場合、損失生起確率データ算出部には、図13に示したセクター情報、図15に示した格付別デフォルト率情報、および離散化評価点算出部304によって得られた離散化評価点の集合{gm}が入力データとして与えられる。このような構成とすることにより、企業ごとに損失生起確率の計算を行う必要がなくなり、損失指標関数の計算をより高速に実行することが可能となる。
セクター関数データ算出部308は、損失指標関数算出部306によって算出された損失指標関数のデータを、セクターごと離散化評価点ごとに、セクター内の全ての企業について乗算する処理を行う。その結果を用いて、各セクターについて、離散化評価点gmごとにセクター関数データの値が算出される。例えば損失指標関数が企業ごとの条件付モーメント母関数(数31第二式の右辺の中括弧内)であれば、数31の第二式で定義されるセクター別条件付モーメント母関数が、すべての離散化評価点gmに対して算出される。
セクター関数データ記憶部350は、セクター関数データ算出部308によって算出されたセクター関数データの値を、セクターSと離散化評価点gmとに対応させてデータとして記憶する。ここで、一例として、セクター関数データ記憶部350は図1のメインメモリ108中の所定の領域またはハードディスクドライブ118においてOSにより管理されるファイルにより実現されることができる。セクター関数データ記憶部350をハードディスクドライブ118のファイルによって構成する場合には、図1に示したように、各セクターS、各離散化評価点gmに対応してセクター関数データの値が格納される。なお、図では、gmの値そのものを明示して例示しているが、離散化評価点gmはサフィックスmを指定することにより特定されるため、mの値とともに格納されていてもよい。またセクターS、離散化評価点gm(またはサフィックスm)との対応付けが可能な他の態様によって格納されて実現されることもできる。
本発明を実施するにあたっては、必ずしも全ての企業に対して損失指標関数のデータを算出した上でセクター関数データ算出部の処理を行う必要はなく、企業ごとに、損失指標関数のデータの算出とセクター関数データ算出の処理を行っていく実施態様とすることも可能である。このためには、損失指標関数のデータの算出処理を行う前に、セクター関数データ記憶部350にセクターと離散化評価点に対応したセクター関数データの記憶領域を確保し、全てのセクター関数データの値を実数値の1に初期化しておく。その上で、一つの企業に対する処理として、全ての離散化評価点に対して損失指標関数のデータを算出し、離散化評価点ごとに、当該企業のセクターと当該離散化評価点に対応するセクター関数データに、当該離散化評価点に対応する損失指標関数のデータを乗算する処理を行う。この処理を全ての企業に対して行うことにより、全てのセクター関数データを算出することができる。このような実施態様では、全ての企業の損失指標関数の値を記憶する必要がなく、処理過程で利用するメモリー等の記憶領域を少なくすることができる。なお、ここで示した例では、セクター関数データ算出部から損失指標算出部が呼び出されて計算が行われることとなるが、このような処理方法も本発明の実施態様となり得る。
セクター関数データ記憶部350を用いることにより、後の計算においては、セクターSと離散化評価点とを指定するだけで、損失指標関数算出部306とセクター関数データ算出部308とによって予め算出されたセクター関数データの値を得ることができ、その都度新たな計算を行う必要がなくなる。ここで、このセクター関数データの値を得るためには、セクター関数データ算出部308による計算を、セクターSの数NSと離散化評価点の集合{gm}の元の数Ngとの積の回数だけ行う。損失指標関数算出部306におけるセクターごとの計算では、各セクターについてそのセクターに属する企業数だけの計算が実行されるため、セクター関数データ記憶部350に必要な値が格納されるまでには、結局、企業の数Nと離散化評価点の集合{gm}の元の数Ngとの積の回数の計算が実行される。
セクター乗算部312は、各積分点について、セクターSごとに、当該積分点に対応したセクター変数yS l(数32、なおβSは数30第二式より算出)に対応する離散化評価点gm S lを離散化評価点の集合から特定し、当該セクターおよび特定された当該離散化評価点に対応するセクター関数データをセクター関数データ記憶部から呼び出し、全セクターのセクター関数データを乗じる処理を行う。その結果を用いて、積分点ごとに条件付ポートフォリオ関数の近似値が算出される。例えば、セクター関数がセクター別条件付モーメント母関数(数31第二式)であれば、積分点ごとに、数34の右辺中の積の値が算出される。ここで、本発明の計算手法によらない場合には、各積分点についてセクター変数の値yS lに対するセクター関数データを算出する必要がある。しかし、本実施の形態では、このような計算を毎回繰り返さず、予めセクター関数データ記憶部350に格納しておいた各離散化評価点におけるセクター関数データを用いることにより、極めて高速な計算を可能にしている。予め記憶手段に格納されたセクター関数データは、損失指標関数の離散化評価点における値から算出されるため、セクター変数が離散化評価点と一致する場合以外は、セクター変数と離散化評価点が完全には一致しないことから生じる若干の誤差を含む近似値である。ただし、この近似による誤差は、離散化評価点の集合{gm}の設定とセクター変数yS lに対応する離散化評価点gm S lの特定を適切に行えば、十分に小さくすることができる。
セクター乗算部312には、積分点に関する情報が入力として与えられる。本発明は、積分点や積分点に関連するウエイトを算出する数値積分アルゴリズムとして、任意のものを用いて実施することができる。無論、算出されるリスク指標の精度は選択した数値積分アルゴリズムに依存するが、例えば数値積分アルゴリズムにモンテカルロ積分を用い、積分点の数を100万個以上とすれば、非常に精度高く各種リスク指標を算出することが可能である。また、本発明においては、積分点や積分点に関連するウエイトの情報を与える手段は、特定のものによらない。例えば、積分点と積分点に関連するウエイトを同時に外部ファイルから読込む構成とすることができる。このような構成では、外部ファイルを変更することにより、任意の数値積分アルゴリズムで発生させた積分点とそれに関連するウエイトを用いて、セクター乗算部312およびウエイト乗算部314の処理を実行することが可能となる。図16は、外部ファイルから読込む積分点情報の例を示す。図16において、積分点番号とは、積分点を特定するサフィックスlに対応する整数を示している。また、ウエイトは積分点に関連するウエイト値を示す。また、最上段に示された共通リスク因子IDに対応付けることにより、積分点番号ごとに各共通リスク変数の値が与えられている。この他、セクター乗算部312の内部に積分点を発生させるモジュールを組み込んでおき、そのモジュールと協働してセクター乗算の処理を実行する構成とすることも可能である。このような構成では、積分点を発生するためにいくつかのパラメータが必要となるが、それらのパラメータはパラメータ記憶部に記憶しておき、セクター乗算部312の処理を実行する際に呼び出される。例えば、数値積分アルゴリズムとして優良格子点法を用いる場合には、積分点の個数と優良格子ベクトルのデータをパラメータ記憶部に与えておき、これを呼び出すことによって積分点の算出を行う。
ここでは、数値積分アルゴリズムとしてモンテカルロ積分を用いる場合のセクター乗算部312での積分点およびウエイトの算出処理について説明する。まず、共通リスク因子の数NF個の一様乱数を発生させ、これを標準正規分布の分布関数の逆関数で変換したものを各共通リスク変数とすることにより、積分点を決定する。この際、セクター乗算部312はメルセンヌ・ツイスター法によって一様乱数を発生するモジュール、および標準正規分布の分布関数の逆関数値を算出するモジュールを含む構成とすることができる。また、積分点に関連したウエイトは全ての積分点に対してwl=1/NIとする。ここでNIは積分点の数である。ウエイトの計算および正規乱数の発生にあたっては、パラメータ記憶部370に記憶されている積分点の数NI、および乱数のシードrsのデータを用いる。また、共通リスク因子の数NFは、図13に示したセクター情報から得られる。
セクター乗算部312では、積分点ごとに決まるセクター変数の値から、セクター関数データを呼び出す際に用いる離散化評価点gm S lを特定する処理も行われる。セクター変数yS lに対するセクター関数の値を用いて計算すべきところを、gm S lに対するセクター関数データで置き換えることによって生じる誤差を小さくするためには、gm S lはyS lの十分近くに存在する必要がある。本発明は、離散化評価点gm S lを特定する方法は、特に限定するものではない。例えば、|yS l−gm|を最小とするmをmS lとして{gm}からgm S lを選ぶ実施態様とすることができる。このような特定方法を用いることにより、離散化評価点の間隔が十分に小さくなるよう離散化評価点の集合を決定しておけば、上述の置換えによって生じる誤差も十分に小さくすることが可能である。なお、セクター関数データが、離散化評価点の値ではなく離散化評価点を特定するサフィックスmと対応付けてセクター関数データ記憶部350に記憶されている場合には、gm S lではなく、mS lを用いてセクター関数データの呼び出しが行われる。
ウエイト乗算部314は、サフィックスlによって特定される積分点ごとに、条件付ポートフォリオ関数の近似値をセクター乗算部312から得て、当該積分点に関連するウエイト値wlを乗じる処理を行う。これにより、重み付けデータが得られる。例えば、セクター関数がセクター別条件付モーメント母関数(数31第二式)の場合、重み付けデータは、数34の右辺の和の各項となる。
狭義ポートフォリオ関数算出部316は、ウエイト乗算部314で算出された重み付けデータを全ての積分点について合算する処理と、当該合算値とポートフォリオ助変数関数のλ´における値との積を算出する処理を行う。合算の処理は、全ての積分点の重み付けデータを算出した後に総和を取る処理としてもよいし、予めポートフォリオ関数データを記憶する領域を確保して0に初期化しておき、積分点ごとに、セクター乗算部312の処理とウエイト乗算部314の処理を行って重み付けデータを算出し、ポートフォリオ関数データの記憶領域のデータに、当該重み付けデータを加えていく処理としてもよい。後者の場合にはポートフォリオ関数算出部からセクター関数データ算出部が呼び出されて処理が進むが、このような処理方法も本発明の実施態様となり得る。助変数の値をλ´としてポートフォリオ助変数関数の値を算出し、当該合算値に乗じることにより、λ´に対応したポートフォリオ関数データが算出される。ポートフォリオ関数は、例えばポートフォリオ全体のモーメント母関数(数13)や、損失額分布の分布関数をラプラス変換した関数(数28)とすることができる。なお、モンテカルロ積分のように、全ての積分点のウエイトが等しい場合には、ウエイト乗算部314の処理を行わずに、ポートフォリオ関数算出部316で全ての積分点に対するセクター関数データを合算した後に積分点の数NIで除算を行って得られる値に、ポートフォリオ助変数関数のλ´における値との乗算を行うことによって、ポートフォリオ関数のデータを算出する処理とすることもできる。
以上で述べた処理によって、助変数λ´に対応したポートフォリオ関数のデータが算出される。ポートフォリオ関数のラプラス逆変換を数値的に計算するためには、助変数の集合{λk}の全ての要素に対応するポートフォリオ関数のデータが必要となるが、上述の処理をλ´の値を変えながら実行することにより、そのデータを算出することができる。また、本発明のある実施態様では、助変数の集合{λk}の全ての要素に対するポートフォリオ関数のデータを並行して算出する処理とすることもできる。このような実施態様の例については、実施例2、実施例10、実施例11、および実施例12で示す。
ポートフォリオ関数データ記憶部360は、ポートフォリオ関数算出部316によって算出されたポートフォリオ関数のデータを、助変数λの値もしくは助変数を特定するサフィックスkに対応させてデータとして記憶する。ここで、一例としてポートフォリオ関数データ記憶部360は図1のメインメモリ108中の所定の領域またはハードディスクドライブ118においてOSにより管理されるファイルにより実現されることができる。
ラプラス逆変換部318は、ポートフォリオ関数データ記憶部360に記憶されたポートフォリオ関数データに基づいて、助変数λについての積分の数値計算を行う。ここで、助変数についての積分の計算は、ある関数についてのラプラス変換の値から元の関数を導くラプラス逆変換の処理において必要な計算であり、元の関数が確率密度関数である場合には数41により与えられる。これにより、例えば、確率密度関数や分布関数などの確率分布を反映する関数の形式で、損失額についての確率分布が求められる。
ポアソン法とQD法に基づいてラプラス逆変換部318を構成する場合の処理について述べる。この場合、ラプラス逆変換部318は、ポートフォリオ関数のデータから連分数の係数を算出する連分数係数算出部318A、連分数の係数と損失額から連分数の値を算出する連分数評価部318B、および逆変換関数算出部318Cを備える。ポートフォリオ関数のラプラス逆変換の積分をポアソン法により近似する場合、近似無限級数の係数は、数56によってγおよびhから算出される助変数λkにおけるポートフォリオ関数の値によって表現される。このため、連分数係数算出部318Aには、数56に従う助変数の集合{λk}の各要素に対応したポートフォリオ関数のデータが入力される。連分数係数算出部318Aで行われる処理は、QD法(数50および数51)によって、入力されたポートフォリオ関数のデータから連分数の係数を算出することである。例えば、ポートフォリオ関数がモーメント母関数の場合、数46の最下段の式によってポートフォリオ関数データから級数の係数ckを算出し、それらを数51の第二式に代入した上で数51の漸化式の演算を実行し、数50に示される連分数の係数の値を算出する処理が行われる。次に、連分数係数算出部318Aにより算出された係数は、連分数評価部318Bが受け取って連分数の値の算出に用いられる。連分数評価部318Bでは、パラメータ記憶部370から損失額の集合{t0、t1、・・・、tNT}の各要素を順次呼び出し、数46下段の式によって損失額からzを算出し、連分数係数算出部318Aにより算出された係数を用いて数54の漸化式および数55の計算を行い、各損失額に対応した連分数の値を算出する。最後に、連分数評価部318Bで算出された連分数の値を逆変換関数算出部318Cが受取って、ポートフォリオ関数を逆変換した関数の、各損失額における値の近似値が算出される。逆変換関数算出部318Cで行われる処理は、数48において、中括弧の前に掛かる係数を算出し、連分数評価部318Bで算出された連分数の実部の値との乗算を行うことである。
なお、連分数係数算出部318Aおよび連分数評価部318Bの処理で用いられる演算は四則演算のみであり、非常に高速に実行可能である。また、逆変換関数算出部318Cの処理も、初等関数の計算と四則演算に帰着できるため、極めて高速に実行可能である。このため、ラプラス逆変換部318の演算は、全体としても非常に高速に実行することが可能である。
ポアソン法によって得られるラプラス逆変換の近似級数の係数には、損失額tの値は含まれない。このため、連分数係数算出部で係数を算出した後、複数の損失額tの値に対して連分数評価部318Bおよび逆変換関数算出部318Cを繰り返し動作させることにより、数48に従って、異なる損失額tに対して、確率密度関数や分布関数などのリスクに関連した関数の値を算出することが可能である。また、連分数係数算出部によって得られた連分数の係数のデータを記憶装置に保存しておく構成とすることも可能である。このような構成にすることにより、記憶装置から連分数係数を呼び出して連分数評価部318Bおよび逆変換関数算出部318Cのみを動作させて、任意の損失額に対するポートフォリオ関数のラプラス逆変換の値を算出することができる。
なお、ポアソン法以外の方法によって得られるラプラス逆変換の近似級数を利用する場合、当該級数の係数には損失額tの値が含まれることがある。こうした近似級数を与える例としては、Gaver法が挙げられる。このような場合、算出対象とする各損失額に対して、ラプラス変換に必要となる助変数の値をパラメータ記憶部370に記憶しておく。そして、損失額ごとに、各助変数に対応したポートフォリオ関数データの算出とラプラス逆変換の処理が行われる。
リスク指標算出部320は、ラプラス逆変換部318によって算出された、損失額の集合{t0、t1、・・・、tNT}に対応したリスクに関連した関数のデータから、ポートフォリオの損失についてのリスクを示すリスク指標を算出する。ここで算出されるリスク指標は必ずしも一種類に限らず、複数のリスク指標が算出されたり、あるいは上記実施形態によって算出されたリスク指標を用いて更なるリスク指標を算出することも含む。また、計算の内容によっては、損失額tを決定したい場合がある。この例としては、信頼率pが与えられた場合にVaRを求める計算があげられる。このような場合には二分法等の収束計算が有効であるが、実装上、リスク指標算出部320の計算結果に応じて再びラプラス逆変換部318を動作させるために、リスク指標算出部320からラプラス逆変換部318を呼び出すように構成することも本実施形態においては可能である。
上述の本発明の実施の形態は、本発明の範囲内において様々なリスク指標の計算に合わせて変形することができる。その変形の実施例について以下説明する。
[実施例2]
実施例の一つとして、助変数の集合{λk}の全ての要素に対するポートフォリオ関数のデータを並行して算出することができる。この場合、損失指標関数算出部306では、企業ごとに、各助変数および各離散化評価点に対して損失指標関数のデータを算出することができる。また、セクター関数データ算出部308では、助変数ごと離散化評価点ごとにセクター関数データを算出し、セクター関数データ記憶部350に、セクターSと離散化評価点gmとに加えて、ラプラス変換の助変数λの各値にも対応させてデータとして記憶することができる。さらに、セクター乗算部312では、助変数の各値に対して、全セクターについてセクター関数データを乗じる処理を行って、助変数ごとの条件付ポートフォリオ関数の近似値を算出することができる。さらに、ポートフォリオ関数算出部316では、助変数ごとの条件付ポートフォリオ関数の近似値を用いて、助変数ごとのポートフォリオ関数のデータを算出する処理を行うことができる。ラプラス逆変換部318では、助変数ごとのポートフォリオ関数のデータを用いてラプラス逆変換の数値計算を実行することができる。
なお、この実施例においても、全ての企業に対する損失指標関数のデータを算出した後にセクター関数データの算出を行う必要はなく、企業ごとに損失指標関数の算出とセクター関数データとの乗算を行う方法で実施することも可能である。また、全ての積分点に対して助変数ごと条件付ポートフォリオ関数のデータを算出した後で助変数ごとポートフォリオ関数の算出を行う必要はなく、積分点毎に、助変数ごと条件付ポートフォリオ関数の算出と助変数ごとポートフォリオ関数の合算を行う処理とすることもできる。本発明をこれらの処理方法を用いて実施することにより、使用する記憶領域が減らせると同時に、無駄な反復計算を避けることができ、通常のデスクトップのコンピュータでも、企業数が数百万件に及ぶ大規模ポートフォリオのリスク指標を高速に算出することが可能となる。
[実施例3]
実施例の一つとして、損失指標関数算出部306が計算する損失指標関数を、企業ごとの条件付モーメント母関数(数31第二式の右辺の中括弧内)とし、セクター関数データ算出部308で計算するセクター関数をセクター内の全ての企業にわたる損失指標関数の積であるセクター別条件付モーメント母関数(数31第二式)とし、セクター乗算部312が計算する条件付ポートフォリオ関数を、全てのセクターにわたるセクター関数の積である条件付モーメント母関数とし、ポートフォリオ関数算出部が計算するポートフォリオ関数をポートフォリオ全体のモーメント母関数(数67)とすることができる。この場合、ラプラス逆変換部318において算出される、ポートフォリオ関数をラプラス逆変換した値は、損失の確率分布を与える確率密度関数(数41)のデータとなる。そして、リスク指標算出部320は、この確率密度関数のデータに基づいてリスク指標を算出する。このリスク指標は損失についての確率密度関数から算出可能な様々なものを選ぶことができる。なお、この例では、ポートフォリオ助変数関数は恒等関数となっている。
例えば、リスク指標を予測損失額とすることができる。この場合、リスク指標算出部320は、密度関数から損失額の期待値を算出して予測損失額を得る。
[実施例4]
ここで、ポートフォリオ助変数関数を1/λとし、その他の処理は実施例3と同じものとした実施例も可能である。この実施例では、ラプラス逆変換部318において算出される、ポートフォリオ関数をラプラス逆変換した値は、損失の確率分布の分布関数(数43)のデータとなる。そして、リスク指標算出部320は、この分布関数のデータに基づいてリスク指標を算出する。このリスク指標は損失の確率分布の分布関数から算出可能な様々なものを選ぶことができる。
[実施例5]
他の一例として、リスク指標に所定の信頼区間に対応する信用VaR額を含むことができる。信用VaR額とは、分布関数の値が所定の値(信頼区間)となる損失額のことである。例えば、予め決められた損失額に対して分布関数の値を計算しておき、それを適切に補間することにより信用VaR額を求める事ができる。また、分布関数は単調増加関数であるため、二分法等の反復計算によって、分布関数の値が信頼区間に一致する損失額を探索し、信用VaR額を求める事もできる。いずれの場合も、ラプラス逆変換部318において算出される分布関数のデータを用いて信用VaR額を算出することができる。
[実施例6]
また、他の例として、分布関数を用いる実施形態において、ウエイト乗算部314が、数34の右辺の算出結果を得る処理に追加して、得られた算出結果を、セクターSごとにセクター乗算ステップで特定された離散化評価点gm S lと当該セクターSとに対応付けて、セクター別離散化評価点別に、全ての積分点にわたって和PS m(数81第二式)をとる第1の追加計算処理部である和データ算出部314Aを備えることができる。また、和データ算出部314Aで算出された和データPS mをセクターSおよび離散化評価点gmに対応付けて記憶する追加の記憶装置である和データ記憶部380を備えることができる。
このとき、リスク指標算出部320は、ポートフォリオ内の各企業iについて、離散化評価点gmごとに、損失生起確率(数31の第三式)と助変数λに当該企業の債権のエクスポージャEiを乗じた値の指数関数とを用いて定義されるリスク寄与度指標関数Ri(数71)の各離散化評価点での値であるリスク寄与度指標関数データ(数80)を算出し、当該企業のセクターと当該離散化評価点とにより特定される前記和データPS mを和データ記憶部380から呼び出して、前記リスク寄与度指標関数データと乗算して、全ての離散化評価点にわたる当該乗算結果の和をとって、エクスポージャによる分布関数の偏微分値のラプラス変換データを求める追加算出部320Aを備えることができる。また、ラプラス逆変換部318は、分布関数の算出に加えて、追加算出部320Aによって算出された偏微分値のラプラス変換データとリスク指標算出部320によって算出された信用VaR額から、企業のエクスポージャによる分布関数の偏微分値データを、すべての企業に対し算出する処理を行うことができる。さらに、信用VaR額と分布関数の各企業のエクスポージャによる偏微分値データとエクスポージャとを含んで定義される、信用VaR額に基づく各企業のエコノミックキャピタルの表現(数69)に、信用VaR額と偏微分値データとエクスポージャデータとを代入して、信用VaR額に基づく企業のエコノミックキャピタルを算出する追加リスク指標算出部320Bを含むことができる。また、追加リスク指標算出部320Bでは、こうして得られた各企業のエコノミックキャピタルを、当該企業のエクスポージャで除すことにより、リスク寄与度(数61)を算出することもできる。信用VaR額に基づくリスク寄与度とは、ある企業のエクスポージャを微小量変化させた際のVaR額の変化(数61)をいい、エコノミックキャピタルとは、そのリスク寄与度に当該企業のエクスポージャを乗じた値(数63)である。
[実施例7]
上記実施例6における追加算出部320Aの処理において、エクスポージャによる分布関数の偏微分値のラプラス変換データをさらに助変数で除す処理を追加的に行うこともできる。そして、ラプラス逆変換部318では、追加算出部320Aで算出されたエクスポージャによる分布関数の偏微分値のラプラス変換データをさらに助変数で除したデータ、および信用リスク算出部320で算出される信用VaR額とを用いて、企業のエクスポージャによる分布関数の偏微分値を[0,VaR]の区間で損失額について積分したデータ(数94)を、すべての企業に対して算出する処理を行うことができる。このとき、リスク指標算出部320は、企業の平均デフォルト率と、ラプラス逆変換部318により算出された分布関数の偏微分値の積分データとの和を取り、その和を全区間からの信頼区間の残余によって除算することにより、条件付きVaR額CVaRに基づくリスク寄与度(数93)を、全ての企業に対して算出する処理を行う追加リスク指標算出部320Cをさらに含むことができる。ここで、条件付VaR額(CVaR)とは、信用VaR額以上の損失が発生してしまったという条件の下での、ポートフォリオの損失額の条件付期待値である。
[実施例8]
本発明の実施の形態において、損失判定基準は、企業がデフォルトとなる企業価値の上限を与えるデフォルト閾値Ci(数7)を含む基準とすることができる。このとき、損失指標関数が、セクターSに含まれる企業iについて、デフォルト時の損失を表すエクスポージャEiと、デフォルト閾値により定まる、セクター変数yが与えられた条件での条件付デフォルト確率pi(y)とを含んで定義されている(数31第二式の右辺の中括弧内)。この実施例により、本実施の形態においてデフォルトモードに基づいて損失を考慮することができる。
[実施例9]
また、実施例7において、損失判定基準が、上記基準に加えて、企業の格付が変化する企業価値の値である格付閾値を少なくとも一つさらに含む基準とし、損失指標関数が、セクターSに含まれる企業iについて、格付推移時およびデフォルト時の損益を表すLi(r=>s)と、セクター変数yが与えられた条件での企業の条件付格付推移確率p(r=>s)(y)(数9)をさらに含んで定義されている変形例も実施可能である。この場合、デフォルトモードの場合と同様のデフォルトによる損失の発生に加えて、格付の変化を考慮したMtMモードの計算を行うこともできる。通常はMtMモードに用いる格付のうち最も低位のものはデフォルトに相当するので、MtMモードにおける損失判定基準は、上述のデフォルト閾値と格付閾値とを併せて含んでいる。なお、後に説明するように、デフォルト状態は複数存在してもよい。
ここで、MtMモードにおける損失判定基準が、例えば上述のようにr格付からs格付(共に、デフォルトを含む)への遷移確率として与えられた場合について、デフォルトの性質を適切に反映させる手法について説明する。図15(b)にこのMtMモードの場合の入力データの例を示している。図15(b)の各欄に記載されているように、MtMモードでは、リスク計測を実行する時点における格付ごとに、リスク計測期間終了時点で最上段に示された各格付に遷移する確率が数値データとして与えられている。例えば、この表から、リスク計測の時点において格付Cにある企業は、対象期間の後に格付A,B,・・・G、およびデフォルトとなる確率は、それぞれ、0.4%、1.5%、・・・、0.4%および0.3%であることが読み取れる。このような入力データを用いてMtMモードの計算を債権取引の実態に合わせてより適切に行うためには、デフォルトが持つ特別な性質、つまり、デフォルトは他の格付とは異なり、一度デフォルトになるとそこからデフォルト以外の他の格付に遷移しないという性質を反映するための追加の情報を用いる。この情報を図17に示す。
図17は、格付ごとに各時点までにデフォルトとなるデフォルト率を与える例を示すデータである。ここでの各時点でのデフォルト率は、累積デフォルト率、すなわち、遅くともその時点までにデフォルトとなる確率を示している。ここで、「デフォルト1」〜「デフォルトN」とある列のそれぞれは、デフォルトになるまでの時点を考慮して債務者のデフォルト状態として分類したものである。例えば、デフォルト状態を区分してN等分した場合、例えば、1年を月次となるように期間を区分して設定した場合には、図17においてN=12として、1年後までを月ごとに12等分した各時点までにデフォルトとなる累積のデフォルト率を各時点に対するデータとして付与する。
各時点の累積デフォルト率は、デフォルトの性質上、時間の経過とともに増大するものとなる。その時間依存性は、市況や経済状況を反映させて、さまざまに設定することができる。例えば、評価する時点からの経過時間に比例するように増大させることもできるし、また、単純な比例関係ではない場合には、初期値と中間時点での値と最終時点での値などから例えばスプライン関数によって補間して与えて時間依存性を付与することができる。
そして、図15(b)と図17によって与えられる格付やデフォルトの遷移情報は、図18に示すような損失額のデータと共に用いられる。すなわち、図18は、デフォルトモードを説明した実施例1において図14によって説明したのと同様の企業ごとに与えられる情報の例をMtMモードについて示したものである。図18において、「1年後の状態ごとの損益額」は、1年後に、債務者がその格付となった場合の損失額を表している。金額に付した符号は、プラスが損失を表し、マイナスが利益を表しており、単位は通貨単位(日本円)である。例えば、債務者番号のラベル「1」と一年後の状態ごとの損失額のラベル「B」とによって指定される欄の記載は、「債務者番号1の債務者の格付が、1年後にB格になった場合、2,000,000円の損失が発生する」という事象を意味している。なお、一般には、一人の債務者について複数の債権が存在するが、図18では、複数の債権から発生する損益を債務者ごとに集計したものを入力データとしている。ただし、本発明を実施するにあたっては、債権別の損益を入力データとして用いることもできる。
図15(b)の格付推移情報に加えて図17で示した各デフォルト状態への遷移情報の考慮が必要なのは、MtMモードにおいては債権の満期を考慮するため、すなわち、デフォルトとなる時点によって発生する損失が異なりうるためである。例えば、債権満期が6ヶ月であれば、リスク計測時点から5ヶ月後にデフォルトした場合には損失が発生する一方、6ヶ月を過ぎて(例えば、11ヶ月後に)デフォルトした場合は損失が発生することはない。このため、債務者番号2の行に例示したように、早期のデフォルトにおいては損失が発生し、満期以降のデフォルトでは元本が償還されたことに伴う利益が発生していることがあり得る。
このように、すでに図15(b)に示したMtMモードの場合のデフォルト率に加えてより詳細な情報、すなわち、図17のような各格付の債務者が各時点までにデフォルトに遷移する情報を与えること、および、それにあわせて図18のような各時点での格付やデフォルト状態に対する損失額を与えることにより、格付変動による債権の市場価値の変動を適切に反映したMtMモードにおける損失額分布の算出が可能となる。
図18に示したデータを用いて、MtMモードにおける損失額分布の密度関数を算出する方法について説明する。ここで、L
ijを、第i番目の債務者が一年後にj番目の状態になったときの損益額とする。すなわち、L
ijは、図18の表のi行(j+4)列の数値に対応する変数を表す。MtMモードの場合、ポートフォリオの全債務者の状態によっては、損失ではなく利益が生じる可能性がある。これは、損失額が負の領域でも損失額分布が値を持つことを意味する。ラプラス変換法は、通常はサポートが0以上の関数にしか適用できないため、そのままではMtMモードでの損失額分布の密度関数算出に適用することができない。しかし、損失額分布を適当に平行移動することによって0以上のサポートを持つようにできるため、実際にはラプラス変換法を適用することができる。具体的には、次式によって関数f
L *(t)を定義する。
ただし、
である。この関数f
L *(t)のサポートは0以上となるので、ラプラス変換法を適用して算出することができる。実際に計算すると、f
L *(t)のラプラス変換は次のようになる。
ここで
は、条件付の状態推移確率であり、「共通リスク因子の値がベクトルxである」という条件の下で企業iがj番目の状態に遷移する確率を表す。企業価値モデルでは、図13および図15(b)、図17の情報からこの条件付状態推移確率を算出することができる。条件付推移確率は、例えばモンテカルロシミュレーションでMtMモードのリスク計測を行う際にも必要とされるものであり、その計算式は同業者には広く知られているため、ここでは説明を割愛する。数97の最下段の表現はポートフォリオ関数の条件を満たしているため、本発明の手法を適用して高速に計算でき、これをラプラス逆変換することによってf
L *(t)を算出することができる。このようにしてf
L *(t)が得られると、
としてMtMモードでの損失額分布の密度関数の値を算出することができる。
図18に示した状態ごとの損失額を算出するためには、リスク計測時点における債権の現在価値(現在価額)および、リスク計測期間後(例えば1年後)の格付ごとの将来価値を算出する必要があるが、このためには、当業者には明らかであるような現在価値の算出方法である割引キャッシュフロー法、すなわち、将来にわたる債権からのキャッシュフローを所定の割引率を考慮して割引いて現在価額を算出する計算を行う。この際、キャッシュフローを適切に考慮するためには、満期や表面利率、利払・元本償還スケジュールを含む契約条件を考慮することができ、更に、割引率には、リスクフリー(無リスク)の債権の金利(例えば、国債利率)に、デフォルトを除く格付それぞれが持つリスクを反映させた格付別のスプレッドの金利を上乗せした割引率を用いることができるなど、当業者には自明の手法を用いることができる。なお、格付別スプレッドは、社債の利回り情報やクレジット・デフォルト・スワップのプレミアムの情報等から算出する方法が知られている。
本実施例の計算装置においては、上記各機能手段に加えて、このような計算を行うための手段を備えていることができる。例えば、図19に示したように、キャッシュフロー展開に必要な情報を債権情報記憶部502に準備し、その情報を利用して、キャッシュフローの情報、すなわち、各時点でのキャッシュフローのデータをキャッシュフロー展開部504によって生成する。また、社債の利回り情報やクレジット・デフォルト・スワップのプレミアムの情報等を含む情報を社債情報記憶部512に準備し、その情報を利用して、格付別スプレッド算出部514において格付別のスプレッドを算出する。更に、無リスク金利情報記憶部522にリスクフリーの債権の金利情報を準備しておく。そして、キャッシュフロー展開部504からの各時点でのキャッシュフローのデータ、格付別スプレッド算出部514からの格付別のスプレッドのデータ、および、無リスク金利情報記憶部522からのリスクフリーの債権の金利情報のデータを損益計算部540において組み合わせて、計算時点での現在価値および一年後の状態(格付)ごとの将来価値を計算する。その結果を格付別に求めることによって、図18に示したように、デフォルトを除いた格付ごとの損失額(損益額)が得られる。
なお、図18の情報は、債権の現在価値や将来価値を算出する既存のシステムの出力を利用して作成することもでき、本実施例の計算装置は、外部から図18に相当するデータを読み込む構成とすることもできる。
[実施例10]
次に、実施例1により説明したものとは異なる形態の実装を行う実施例について説明する。この実施例では、具体的にポートフォリオ関数が損失額分布の分布関数のラプラス変換である場合を取り上げ、本発明の実施の形態として、コンピュータプログラムによって計算を実施する際のプログラムの構成を、機能ブロック図とフローチャートを用いて説明する。なお、これ以降の実施例の説明に用いるフローチャートでは、特に初期化の処理を明示していない変数や配列については、全て初期値は0となっているものとする。以下の説明では、上述の数式によって記載した変数とほぼ同様のノーテーションを採用しているが、コンピュータプログラムに実装する便宜上一部変更しているものもあるため、数式及びそこに用いた変数との対応を必要に応じて記す。また、コンピュータに実装する上での数値計算上必要な各変数の仕様についても適宜図面にまとめている。
図20Aは、本実施例のプログラムによって実現される計算装置の構成を示すブロック図である。本実施例では、キーボード1302から入力された各種パラメータとデータベース1304〜1310に格納された入力データとから、最終的にELやVaR、CVaR等のリスク指標を計算するための構成を示している。パラメータ記憶部1314には、計算に必要となる各種パラメータが格納されている。本実施形態では、パラメータ記憶部1314に格納されているパラメータはキーボード1302から入力する実装としているが、本発明の実施にあたってこれらのパラメータの与え方は本質的ではなく、いくつかのパラメータについて、プログラム中で予め設定された値を用いたり、キーボード1302から入力された情報に基づいてパラメータ算出部1312で算出したりする構成とするともできる。入力データ記憶部1316には、1304、1306、1308、および、1310の各データベースから、必要なデータが格納されている。ここでパラメータ記憶部1314、入力データ記憶部1316および計算結果記憶部1318は、メインメモリ中に確保された領域や、ハードディスクドライブにおいてOSにより管理されるファイルなどにより実現することができる。なお、本実施例では、各債務者(企業)のデフォルト率は、図14および図15(a)のように債務者の格付と格付別デフォルト率によって与えられるものとする。
本実施例では、プログラム内で債務者や格付を特定するために、債務者IDや格付ID等のIDに代わって連続する整数値をとる変数(インデックス)を使用する。このインデックスとしては、債務者(企業)を特定するインデックスである債務者番号i、ラプラス逆変換に用いる助変数を特定するインデックスである助変数番号k、積分点を特定するインデックスである積分点番号l、離散化評価点を特定するインデックスである評価点番号m、格付を特定するインデックスである格付番号r、セクターを特定するインデックスであるセクター番号s、共通リスク因子を特定するインデックスである因子番号nが挙げられる。図20B(1)に、本実施例で使用するインデックスについて示す。これらのインデックスは、プログラム中でループの制御や配列の要素を特定するために用いられるものであり、以下で行う説明やフローチャート中でも、図20B(1)に示したインデックスを使用する。なお、以下の説明では、債務者番号を表すインデックスiとの混同を避けるため、虚数単位をjの文字で表す。
図20B(2)は、図20Aのパラメータ記憶部1314内に示された、パラメータを表す変数について説明したものである。表中の「型」の列は、コンピュータ内部での変数の表現について示したものである。例えば「double」とあるのは倍精度浮動小数点数として扱われる変数であり、「long」とあるのは倍精度整数として扱われる変数を表す。ただし、ここで示した変数型はあくまで一例であり、異なる変数型を用いても本発明を実施することは可能である。これらのパラメータのうち、ラプラス逆変換に用いるパラメータであるγおよびhは、キーボード1302からポアソン法の近似精度を規定するパラメータnおよび計算に用いる損失額の上限値tmax入力し、数47の式にしたがってパラメータ算出部1312で算出する構成とすることができる。
図20Cは、入力データ記憶部1316内に示された入力データを表す変数の内容を示したものである。「入力DB」の列は、それぞれの変数が、図20A中のどのデータベース(DB)から得られるものかを示したものである。また、配列として扱われる変数については、「引数」の列に、配列の引数の情報を記載した。「入力データ例との関係」の列には、図13〜図18に示した入力データ例と各変数の関係について簡潔に説明している。
計算結果記憶部1318は、計算過程で得られるデータを格納する記憶装置である。この計算結果記憶部1318は、例えばメインメモリ中に確保された領域を用いて実現することができる。なお、計算結果記憶部1318には、離散化評価点のデータを記憶する離散化評価点記憶部1318A、損失生起確率データを記憶する損失生起確率データ記憶部1318B、セクター関数データを記憶するセクター関数データ記憶部1318C、ポートフォリオ関数のデータを記憶するポートフォリオ関数データ記憶部1318Dが含まれる。さらに、上述した以外のデータを記憶する追加記憶部1318Eも含まれる。
離散化評価点算出部1320は、離散化評価点の値を格納した配列であるg[m]の算出を行う。このg[m]は、本実施例における離散化評価点データであり、その各要素には、数40の変数gmで示した値を格納する。離散化評価点算出部1320には、g[m]を算出するために、パラメータ記憶部1314に格納されている離散化評価点の最大値Max_g、離散化評価点の最小値Min_g、および離散化評価点の個数Ngが入力される。離散化評価点算出部1320の処理では、数40の右辺の式に基づいて全ての離散化評価点番号mに対して配列g[m]の各要素を計算していき、結果を計算結果記憶部1318に格納する。
損失生起確率データ算出部1322は、N
g、格付別デフォルト率の配列pd[r]、セクターごとの感応度係数の配列α[s,n]、格付の数Nr、セクターSの数N
s、共通リスク因子の数Nf、g[m]の入力に基づいて、離散化評価点別、格付別、セクター別の条件付デフォルト率の算出を行い、離散化評価点番号mと格付番号rとセクター番号sを引数とする配列CPD[m、r、s]およびセクター番号sを引数とし、数30第二式のβ
sの値を格納する配列β[s]を出力する。条件付デフォルト率の計算式は数31第三式に示されているが、本発明ではセクター変数を離散化して計算を実行するため、後の計算に現れる条件付デフォルト率も有限個の値しかとらない。このCPD[m、r、s]は、後の計算に現れるすべての条件付デフォルト率の値を格納した配列であり、本実施例における損失生起確率データとなっている。具体的に、β[s]とCPD[m、r、s]の各要素の値は、それぞれ次の式に基づいて計算される。
このモジュールでは、数100の計算を、1≦m≦N
g、1≦r≦Nr、1≦s≦N
sを満たすすべての[m、r、s]組み合わせについて行う。なお、入力されるN
gは、パラメータ記憶部1314に格納され、pd[r]、α[s,n]、Nr、N
s、Nfは、入力データ記憶部1316に格納され、g[m]は、計算結果記憶部1318に格納されている。また、算出されたβ[s]とCPD[m、r、s]は計算結果記憶部1318に格納され、後に他のモジュールから呼び出され計算に使用される。なお、条件付PD算出部1322の処理においては、標準正規分布の分布関数およびその逆関数の値を求める必要があるが、これらの関数値を算出するモジュールの構成方法は広く知られており、ブロック図からは割愛している。
なお、本実施例では、後のループの計算を高速化するために、損失生起確率データ算出部1322で損失生起確率のデータを算出しているが、この処理は本発明を実施するにあたって必須のものではない。例えば、次に説明するセクター関数データ算出部1324において、損失生起確率の算出処理を行う実施態様とすることも可能である。
セクター関数データ算出部1324は、ラプラス逆変換の計算に用いられるパラメータであるγおよびh、ラプラス逆変換に用いる助変数の個数N
k、N
g、債務者のエクスポージャを格納した配列E[i]、債務者の格付を格納した配列R[i]、債務者のセクターを格納した配列S[i]、債務者数N、CPD[m、r、s]の入力に基づいて、離散化評価点ごと助変数ごとにセクター別条件付きモーメント母関数のデータを算出し、離散化評価点番号mと助変数番号kとセクター番号sを引数とする配列SMGF[m、k、s]を出力する。このSMGF[m、k、s]の各要素は、数31第二式でλ=γ+jkh(jは虚数単位)、y
S=g[m]とした値であり、次の式によって計算される。
このモジュールに入力されるγ、h、N
k、N
gは、パラメータ記憶部1314に格納され、E[i]、R[i]、S[i]、Nは入力データ記憶部1316に格納され、CPD[m、r、s]は計算結果記憶部1318に格納されている。このセクター関数データ算出部1324の処理はCalcSectorMGFモジュールの処理である。このCalcSectorMGFモジュールの処理について、更に詳細に図21AおよびBのフローチャートを用いて説明する。なお、このモジュールで算出されるSMGF[m、k、s]は、本実施例におけるセクター関数データとなっている。
図21AおよびBは、セクター別条件付きモーメント母関数のデータを算出するCalcSectorMGFモジュールの処理フローを示すフローチャートである。CalcSectorMGFモジュールの処理では、まず配列SMFG[m、k、s]のすべての要素を実数の1に初期化し(S2102)、債務者番号を示すインデックスiを1に初期化し(S2104)、インデックスiを、計測対象ポートフォリオの債務者数を表す変数Nと比較して終了判定を行う(S2106)。債務者番号を示すインデックスiが債務者数を表す変数N以下である場合には、助変数番号を示すインデックスkを0に初期化し(S2108)、インデックスkがNk−1以下の値にある限り、複素数の指数関数の係数を表す配列Ex[k]に対して値exp[{γ+jkh}E[i]]を代入し(S2112)、kをインクリメントしてゆく(S2114)。
次いで、離散化評価点を指定するインデックスmを1に初期化(S2116)し、Ng以下のmに対して(S2118)、CPD[m、R[i]、S[i]]をローカル変数PDに代入する(S2120)。そして、kを0からNk−1までの範囲で増加させながら(S2122、S2124、S2130)、1−PD+PD×Ex[k]を計算して変数PMGFに代入し(S2126)、配列要素SMGF[m、k、S[i]]にPMGFを掛け合わせていく(S2128)。この処理をmをインクリメントさせながら(S2132)行うことにより、数101の右辺の積のうち、債務者iに関する計算が終了する。これを、ポートフォリオに含まれるすべての債務者について行うことにより(S2134)、すべての配列要素SMGF[m、k、s]が計算される。
CalcSectorMGFモジュールの処理においては、複素数の指数関数の係数を表す配列Ex[k]は、数101の右辺の積の第3番目の項における指数関数の値(複素数値)を与える。これを先に求めて数値配列として得たのは、離散化評価点番号mをスキャンするループ(S2118〜S2132)の内部において助変数番号kをループさせているため(S2122〜S2130)、負荷が高い指数関数の数値計算の処理をmのループから外して計算量を削減するためである。
CalcSectorMGFモジュールの処理の過程で算出されるPMGFは、本実施例における損失指標関数データである。S2108〜S2114、S2120、S2126の各ステップは、この損失指標関数データであるPMGFを算出するための処理となっている。すなわち、本実施例では、セクター関数データ算出部1324が、損失指標関数算出部1323を含んだ構成となっている(図20A)。このように、計算処理速度を向上させる工夫上、ある演算部が他の演算部を呼び出しながら処理を進める場合があるが、このような場合も本発明の実施態様に含まれる。
ポートフォリオ関数算出部1326は、γ、h、Nk、Ng、Ns、Nf、α[s,n]、積分点に関連したウエイト値w[l]、共通リスク変数としての意味を持つ積分点の配列X[n、l]、積分点の数NI、g[m]、β[s]、SMGF[m,k,s]の入力に基づいてポートフォリオ関数の算出を行い、助変数番号kを引数とする配列PF[k]を出力する。このPF[k]は、本実施例におけるポートフォリオ関数データであり、その各要素は、数34の右辺でλ=γ+jkhとし、さらにγ+jkhで除した値となる。入力されるγ、h、Nk、Ngは、パラメータ記憶部1314に格納され、Ns、Nf、α[s,n]、w[l]、X[n、l]、NIは、入力データ記憶部1316に格納され、g[m]、β[s]、SMGF[m,k,s]は計算結果記憶部1318に格納されている。このポートフォリオ関数算出部1326の処理はCalcPFモジュールの処理である。このCalcPFモジュールの処理について、更に詳細に図22AおよびBのフローチャートを用いて説明する。
図22AおよびBは、配列PF[k]を算出するCalcPFモジュールの処理フローを示すフローチャートである。CalcPFモジュールの処理では、各積分点に対して、まず、離散化評価点を指定するためのインデックスである評価点番号をセクターごとに計算し(S2208〜S2216)、その後、すべてのセクターのセクター別条件付モーメント母関数の積を計算して条件付モーメント母関数の値を算出する(S2222〜S2228)。そして、条件付モーメント母関数に積分点に付随したウエイトをかけ、すべての積分点について足し上げることにより(S2230)、モーメント母関数のデータMGF[k]を算出する。最後に、モーメント母関数のデータMGF[k]を助変数番号kに対応した助変数の値で除算してポートフォリオ関数のデータPF[k]を算出する(S2236〜S2242)。
CalcPFモジュールの処理では、積分点ごとに計算を実行していく。まず、積分点を示すループ用のインデックスlを1に初期化し(S2202)、インデックスlを、積分点の数を表す変数NIと比較して終了判定を行いながら(S2204)、インデックスlをインクリメントする(S2234)。
インデックスlが新たな値なると、初めにセクターを表すインデックスsを引数とする、離散化評価点番号を表す配列M[s]を決定する(S2208〜S2216)。このM[s]は、数34の右辺に現れるmS lにあたるものである。M[s]を決定するためには、インデックスsを、セクター数を表す変数Nsまでの範囲で増加させながら(S2208、S2210、S2216)、数32によりセクター変数を算出してyに代入し(S2212)、|y−g[m]|を最小とする配列番号mを特定してM[s]=mとすればよい(S2214)。これにより、セクター番号sごとに、セクターリスク因子ySの値を最もよく近似する離散化評価点gmを与える評価点番号M[s]が決定される。これにより、セクター番号sを指定しさえすれば積分点に対応した離散化評価点番号が決定され、セクター関数データ算出部1324で算出したセクター関数データSMGF[m、k、s]を呼び出せるようになる。
次いで、積分点に対応した条件付モーメント母関数を算出して、積分点に付随するウエイトでの加重和を計算していく。本実施例では、ラプラス逆変換に必要となるNk個のモーメント母関数の値の算出を、一回の積分点ループの中で行う処理としている。まず、助変数番号を示すインデックスkを0に初期化し(S2218)、Nk−1以下のkに対して(S2220)条件付モーメント母関数の算出を行う(S2221〜S2228)。条件付モーメント母関数の算出は、まず条件付モーメント母関数のデータを格納する変数CMGFを実数の1に初期化し(S2221)、セクター番号を表すインデックスsを1に初期化し(S2222)、sをインクリメントしながら(S2228)、CMGFに対してセクター関数データSMGF[M[s],k,s]を乗じてゆく(S2226)。全てのセクターについてこの計算を実行することにより(S2224)、積分点番号lと助変数番号kに対応した条件付モーメント母関数のデータであるCMGFが算出される。さらに、積分点に応じたウエイト値w[l]をCMGFに乗じた上で、モーメント母関数の助変数番号kの成分MGF[k]に加えていく(S2230)。この計算をすべてのkに対して実行することにより(S2232)、ひとつの積分点からの積分値への寄与の計算が終了する。
上述の計算をすべての積分点に対して行うことにより(S2234)、モーメント母関数のデータMGF[k]が得られる。さらに、助変数番号kごとに(S2236、S2238、S2242)、モーメント母関数のデータMGF[k]をγ+jkhで除すことにより(S2240)、ポートフォリオ関数のデータPF[k]を算出する。こうして計算されたPF[k]は、計算結果記憶部1318に格納される(図20A)
CalcPFモジュールの過程で算出されるCMGFは、本実施例における条件付ポートフォリオ関数の近似値となっている。S2208〜S2216、およびS2221〜S2228のステップは、セクター関数データを乗算してCMGFを算出するための処理、すなわちセクター乗算ステップの処理である。このように、本実施例では、ポートフォリオ関数算出部1326は、セクター乗算部1325を含んだ構成となっている(図20A)。また、S2202、S2204、S2218、S2220、S2230〜S2234のステップは、条件付ポートフォリオ関数のデータであるCMGFに、積分点に関連するウエイトw[l]を掛けて足し上げる処理であり、これらの処理によって算出されるMGF[k]は、条件付ポートフォリオ関数の共通リスク因子に関する平均となっている。さらに、S2236〜S2242のステップにおいて、MGF[k]をγ+jkhで除しているが、これは、本実施例におけるポートフォリオ助変数関数が助変数の逆数によって与えられるためである。
リスク指標算出部1328は、γ、h、tmax、Nk、NT、p、PF[k]の入力に基づいて、VaRやCVaR、ELといったリスク指標を算出する。ここでNTは、分布関数の値を算出する損失額の数を決定するパラメータであり、pはVaRおよびCVaRを算出する際の信頼率である。リスク指標算出部1328にはラプラス逆変換を行うラプラス逆変換部1330が含まれており、リスク指標の算出にあたっては、このラプラス逆変換部1330の出力が利用される。入力されるγ、h、tmax、Nk、NT、pは、パラメータ記憶部1314に格納され、PF[k]は計算結果記憶部1318に格納されている。
本実施例では、ラプラス逆変換を実行するにあたってポアソン−QD法(de Hoogのアルゴリズム)を利用する。ラプラス逆変換部1330の入力は、γ、h、t、Nk、およびNk個の要素を持つ複素数型の配列C[k]であり、出力はtにおける関数の値である。このラプラス逆変換部1330の処理はラプラス逆変換モジュールLIの処理である。以下では、ラプラス逆変換部1330によって値を算出する関数をf(t)として、本実施例におけるラプラス逆変換モジュールLIの処理について説明する。ただし、f(t)は実軸上で実数値をとるラプラス変換可能な関数であるとする。
ポアソン法によれば、f(t)は次の級数で近似できる。
ラプラス逆変換モジュールLIの入力となる配列C[k]の各要素には、数102の級数に表れるf(t)をラプラス変換した関数の値を与える。すなわち、
とする。ラプラス逆変換モジュールLIでは、まず係数の配列C[k]から、QDアルゴリズムによって連分数の係数を算出する。具体的には、c
0=C[0]/2、c
k=C[k](k=1,…,N
k−1)とた上で数51の漸化式の計算を実行し、数50の係数a
kを得る。次に算出した連分数の係数a
kと入力されたtを用いて数54の計算を実行し、A
MおよびB
Mを算出する。ただし、数54に現れるzは、数102の第五式によって入力値であるtから算出される。最後に、f(t)の近似値として
を出力する。
ラプラス逆変換モジュールLIの主な処理である数51および数54の漸化式の計算は四則演算のみで実行できるため、当該モジュールの処理は非常に高速に実行することが可能である。このため、さまざまなtに対する関数の値f(t)を高速に算出することができる。また、ラプラス逆変換モジュールLIで行われる処理のうち、数51の処理は変数tに依存しない。このため、複数のtの値t0、t1、・・・に対してf(t)の値を算出する場合、t0に対する値を算出するときのみ数51の処理を実行し、得られた連分数の係数akを配列a[k]として計算結果記憶部1318に格納し、t1以降の値を算出する際には計算結果記憶部1318に格納された配列a[k]を利用し、数51の処理は省略するという実施態様も可能である。このような処理とすることにより、複数のtに対して関数の値を求める際の処理時間をさらに短縮することができる。
なお、本実施例の別の態様において、本発明を実施することもできる。本実施例において、ポートフォリオ関数算出部1326でモーメント母関数のデータMGF[k]をγ+jkhで除する処理(S2236〜S2242)を省いてモーメント母関数のデータMGF[k]をポートフォリオ関数算出部1326の出力とした上で、リスク指標算出部1328においてMGF[k]をγ+jkhで除する処理を行ってラプラス逆変換モジュールLIに入力することにより、分布関数のデータを算出することもできる。この場合、リスク指標算出部1328においてMGF[k]をγ+jkhで除する処理までをポートフォリオ関数算出ステップと解することができるため、このような処理を行う場合も本発明の実施態様に含まれる。
数43より、ポートフォリオ関数算出部1326で得られたポートフォリオ関数データPF[k]を、ラプラス逆変換モジュールLIの入力とすることにより、損失額分布の分布関数の値を算出することが可能となる。すなわち、
とした上で、損失額tを変えながらラプラス逆変換モジュールLIの処理を繰り返し実行することで、幅広い損失額の範囲にわたって分布関数の値を算出することができる。このため、EL、VaR、CVaR、標準偏差といったリスク指標についても、容易に計算することができる。例えば、分布の平均値であるELは、
として算出することができる。ここでN
T値を、1,000程度とすれば十分に精度高くELを算出することができる。次に、信頼率pのVaRを算出するには、二分法等の反復法によって、分布関数の値がpとなるような損失額tを求めればよい。さらに、CVaRを算出するには、
という計算を行えばよい。なお、損失額分布の分散や標準偏差、歪度、尖度、中央値、四分位点等の統計量を分布関数から算出することは容易であり、そのような統計量はすべてリスク指標算出部1328の出力となりうる。
なお、リスク指標算出部1328は、算出するリスク指標やシステムの使い方等に応じて、様々な構成とすることができる。例えば、ある決まった信頼率のVaRやCVaRを毎回レポートするという場合には、予めプログラム中で信頼率pを与えておき、リスク指標を算出する構成とすることができる。また、キーボード1302から信頼率pを入力してVaRやCVaRを算出してディスプレイに表示したり、損失額tを入力してtに対応する分布関数の値を算出してディスプレイに表示したりする構成とすることもできる。
このように本実施例によってEL、VaR、CVaRといった様々なリスク指標が適切に計算される。なお、上述のCalcSectorMGFモジュールおよびCalcPFモジュールの説明に用いたフローチャートに現れる変数の仕様については、図23および図24Aおよび図24Bにまとめている。これらの変数の仕様の表の中で、「型」の列がcomplexとなっているものは、プログラム中で複素数として扱われる変数である。コンピュータプログラムにおいて複素数を扱う方法にはさまざまなものが知られているが、どのような方法を用いたとしても本発明は実施可能である。
本実施例ではポアソン−QD法(de Hoogのアルゴリズム)によってラプラス逆変換を行う場合の処理について述べたが、これ以外の高速ラプラス変換法を用いた処理とすることも容易である。例えば、ポアソン法以外の無限級数化法を用いた場合、級数の係数の算出にあたって数56とは異なる助変数の値に対するポートフォリオ関数の値が必要となるが、本実施例のポートフォリオ関数の算出方法は助変数の値には依存しないため、こうした場合にも本実施例の処理を用いることができる。また、ラプラス逆変換部1330の処理のみ変更すれば、QD法以外の級数加速法を用いることも容易である。このように、本発明は、様々なラプラス逆変換法と組み合わせて実施することができる。さらに、計算するポートフォリオ関数を、特性関数や特性関数をフーリエ変換の助変数と虚数単位の積で除した関数とし、ラプラス逆変換部1330の処理をフーリエ変換の処理に変更すれば、本実施例と同様にして、フーリエ変換によって密度関数や分布関数を算出することもできる。
また、本実施例の大きな利点の一つとして、計算計算結果記憶部1318に格納される配列のサイズが十分に小さく、計算結果記憶部1318としてメインメモリ中に確保された領域等の高速アクセスが可能な記憶手段を用いることができる点が挙げられる。このような構成とすることにより、CalcSectorMGFモジュールやCalcPFモジュールの処理は高速に遂行することが可能である。さらに、本実施例では、計算結果記憶部1318に格納される配列はすべて、そのサイズが債務者数Nに依存しないため、債務者数が数百万件に上る大規模なポートフォリオであっても計算結果記憶部1318をメインメモリ中に確保された領域として処理を行うことが可能である。
[実施例11]
本実施例では、上述の実施例10の変形例として、ポートフォリオ関数算出部1326の計算においてモンテカルロ積分法を用いる処理について説明する。そのため、実施例10におけるCalcPFモジュールの代わりにCalcPF_MCモジュールを用いるが、それ以外の処理については実施例10と同様である。なお、この実施例においては、積分点情報を格納したデータベース1310は不要であり、入力データ記憶部1316にw[l]、X[n、l]、NIは記憶しない。一方、キーボード1302からは積分点数NIおよび乱数のシードRsが入力される。これらの変数はパラメータ記憶部1314に格納された上で、ポートフォリオ関数算出部1326で利用される。
モンテカルロ積分法を用いるポートフォリオ関数算出部1326の計算においては、γ、h、Nk、Ng、Ns、Nf、NI、Rs、α[s,n]、g[m]、β[s]、SMGF[m,k,s]の入力に基づいて、ポートフォリオ関数データの算出を行い、助変数番号kを引数とする配列PF[k]を出力する。このPF[k]の各要素は、数34の右辺でλ=γ+jkh(jは虚数単位)とし、さらにγ+jkhで除した値となり、PF[k]は本実施例におけるポートフォリオ関数データである。ここで、図22AおよびBのCalcPFモジュールとは異なり、ウエイトw[l]はCalcPF_MCモジュール内で計算される。
図25AおよびBは、CalcPF_MCモジュールの動作を示すフローチャートである。ここで、図22AおよびBに示したCalcPFモジュールの動作との違いは、積分点の数NIで均等になるようなウエイトを設定すること(S2502)と、乱数を初期化する処理を行うこと(S2503)と、乱数を発生させて共通リスク変数を算出する処理(S2510〜S2518)を行うことだけであり、それ以外の処理は、図22AおよびBの処理と同様である。CalcPF_MCモジュールに用いる変数の仕様を、図26AおよびBにまとめている。
上述したように、モンテカルロ積分では均等のウエイトが用いられるため、ウエイトを設定する処理を最初に行う(S2502)。これに伴って、このウエイトを利用する処理であるステップS2542では、ステップS2502によって算出されたウエイトを用いる。ウエイトの設定に続いて、モンテカルロ積分で用いる乱数を、乱数シードRsを用いて初期化する処理を行う(S2503)。本実施例においては一様乱数を用いるが、一様乱数を発生させる方法としてはメルセンヌ・ツイスター法など様々なものが知られており、同業者であればそれらを実装することは容易である。なお、本発明は乱数の発生方法を特定の方法に限定するものではなく、また、乱数ではなく準乱数を用いて実施することも可能である。
乱数を発生させて共通リスク変数を算出する処理では、共通リスク因子を特定するインデックスである因子番号nを、1から共通リスク因子の数を与える変数Nfまでインクリメントしながら一様乱数を発生させ(S2514)、共通リスクファクターを算出する(S2516)。一様乱数から共通リスク変数を算出する処理は、数21でηjからxjを求める処理であり、一様乱数を標準正規分布の分布関数の逆関数で変換すればよい。ここで、S2516に示したNormSInv()という関数は、標準正規分布の分布関数の逆関数を表している。
上記以外の処理すなわち、ステップS2504〜S2506、S2520〜S2554の処理は、図22AおよびBに示したCalcPFモジュールと同様の処理を行い、また、ポートフォリオ関数算出部1326以外の機能部の処理も実施例10と同様に行うことによって、実施例10と同様の計算を行うことができる。なお、CalcPF_MCモジュールを用いた実装では、積分点の情報を内部で生成するため、共通リスク因子の数や積分点数が変更された場合でも入力データや各モジュールの処理をなんら変更することなく計算を行うことができるという利点を有している。また、入力データ記憶部1316に積分点の情報を格納する必要がないため、積分点の数を非常に多くした場合でも、入力データ記憶部1316としてメインメモリ中に確保された領域を用いることができる。このため、積分点を非常に多くした場合でも高速に計算を実行することが可能であるという点も、この実施例の利点の一つである。
[実施例12]
本実施例は、実施例10に示した構成を、エコノミックキャピタルの計算に適合させるために変形させた変形例であり、その機能ブロックを図27に示している。実施例10との相違点は、ポートフォリオ関数算出部1326の代わりにポートフォリオ関数算出部1326Aが用いられ、リスク指標算出部1328の代わりにリスク指標算出部1328Aが用いられ、個社エコノミックキャピタル算出部1332および和データ記憶部1318Fが追加されることである。
ポートフォリオ関数算出部1326Aは、γ、h、Nk、Ng、Ns、Nf、α[s,n]、w[l]、X[n、l]、NI、g[m]、β[s]、SMGF[m,k,s]の入力に基づいて、ポートフォリオ関数データと、リスク寄与度算出に用いる和データの算出を行い、助変数番号kを引数とする配列PF[k]と、セクター番号sと離散化評価点番号mと助変数番号kを引数とする配列P[s、m、k]を出力する。このP[s、m、k]は、本実施例における和データであり、その各要素は、数88のPS m, kに相当する。入力されるγ、h、Nk、Ngがパラメータ記憶部1314に格納され、Ns、Nf、α[s,n]、w[l]、X[n、l]、NIが入力データ記憶部1316に格納され、g[m]、β[s]、SMGF[m,k,s]が計算結果記憶部1318に格納されることは実施例10と同様である。このポートフォリオ関数算出部1326Aの処理は、本実施例においてはCalcPF_RCモジュールの処理である。このCalcPF_RCモジュールの処理について、更に詳細に図28A〜Dのフローチャートを用いて説明する。
図28A〜Dは、モーメント母関数およびリスク寄与度算出用係数を算出するCalcPF_RCモジュールの処理フローを示すフローチャートである。CalcPF_RCモジュールの処理が図22AおよびBに示したCalcPFモジュールの処理と相違するのは、ステップS2832〜S2838の処理であるので、これらの処理以外の処理についての説明を省略する。
CalcPF_RCモジュールでは、ステップS2830によってMGF[k]を算出すると、次いで、各セクターについて(S2832、S2836)、ウエイトw[l]とCMGFの積をリスク寄与度算出用係数P[s、M[s]、k]に加える処理が行われる。そして、助変数番号を表すインデックスkがインクリメントされ(S2838)、kの終了判定が行われる(S2820)。全てのkについての処理が完了すると、積分点を表すインデックスlがインクリメントされて(S2840)、lの終了判定(S2804)へと戻る。このような追加の処理を行うことにより、数88に従うリスク寄与度算出用の和データP[s、m、k]が算出され、計算結果記憶部1318に格納される(図27)。
リスク指標算出部1328Aは、リスク指標算出部1328の処理と同様の処理を行って、少なくともVaRの値を算出する。算出されたVaRの値は計算結果記憶部1318に格納される。
更に、本実施例において追加される個社エコノミックキャピタル算出部1332は、γ、h、Nk、Ng、E[i]、R[i]、S[i]、N、CPD[m、r、s]、P[s、m、k]、VaRの入力に基づいてポートフォリオに含まれる全ての債務者のエコノミックキャピタルの算出を行い、債務者番号iを引数とする配列EC_VaR[i]を出力する。このEC_VaR[i]の各要素は数63のECiに相当する。入力されるγ、h、Nk、Ngはパラメータ記憶部1314に格納され、E[i]、R[i]、S[i]、Nは入力データ記憶部1316に格納され、CPD[m、r、s]、P[s、m、k]、VaRは計算結果記憶部1318に格納されている。この個社エコノミックキャピタル算出部1332の処理はCalcECモジュールの処理である。このCalcECモジュールの処理について、更に詳細に図29A〜Cのフローチャートを用いて説明する。
図29A〜Cは、個社のエコノミックキャピタルを算出するCalcECモジュールの処理フローを示すフローチャートである。CalcECモジュールの処理は、図21AおよびBに示したCalcSectorMGFモジュールの処理に類似した処理であり、相違点は、SMGF[m,k,s]の初期化処理(S2102、図21A)がないこと、RCMGF_VaR[k]の初期化処理(S2905)が加わること、計算対象が異なることからステップS2924およびS2926で計算される関数が異なること、ラプラス逆変換の処理S2932や総和の計算S2934が行われること、及び、終了前に規格化の処理がS2938〜S2944において行われることである。これらのうち初期化の処理S2905は自明であるので、これ以外の処理について以下で説明する。
CalcECモジュールの処理におけるステップS2924で計算されるローカル変数Rは、数76でλ=γ+jkhとしたものに相当し、本実施例におけるリスク寄与度指標関数のデータとなっている。また、S2926で計算する配列RCMGF_VaR[k]の各要素は、数82の右辺の値に相当する。このため、ステップS2924では、数71右辺と同様の式によりローカル変数Rが計算され、ステップS2926では、そのローカル変数Rとリスク寄与度算出用の和データP[s、m、k]の積を足し上げていくことにより、数82の右辺の値に相当する配列RCMGF_VaR[k]の各要素が算出される。
次に、ステップS2932において、RCMGF_VaR[k]をラプラス逆変換モジュールLIによってラプラス逆変換して債務者iのエクスポージャーE[i]を掛けることにより、配列EC_VaR[i]を債務者iに対して求める。ラプラス逆変換モジュールLIは実施例10で用いたものと同じものであり、このモジュールへの入力をC[k]=RCMGF_VaR[k](k=0、1、・・・、Nk−1)、t=VaRとすることにより、所望の結果が得られる。このEC_VaR[i]の値は、数65式右辺で、−fL(VaR)の除算を行う前のものである。fL(VaR)の値は、ポートフォリオ関数算出部1326Aの処理過程で算出されるMGF[k]と、リスク指標算出部1328Aで算出されるVaRをラプラス逆変換モジュールLIに入力することにより算出することができ、このような実施態様とすれば、数65に従って債務者iのVaRベースエコノミックキャピタルを計算することもできる。ただし、この方法では、数値計算の誤差の影響により、VaRベースエコノミックキャピタルの全ての債務者についての総和が厳密にはVaRに一致しなくなる。このため、本実施例では、数69に基づいてVaRベースエコノミックキャピタルを計算している。規格化の処理S2938〜S2944では、数69に対応する計算を行って、最終的に債務者iのVaRベースエコノミックキャピタルEC_VaR[i]を得る。なお、上述のCalcPF_RCモジュールおよびCalcECモジュールの説明に用いたフローチャートに現れる変数の仕様について図30A、Bおよび図31A、Bにまとめている。
個社のVaRベースエコノミックキャピタル算出モジュールCalc_ECでは、和データP[s、m、k]を用いることにより、積分点に関するループを行うことなくエコノミックキャピタルを算出することができる。このため、一債務者あたりのエコノミックキャピタル算出にかかる計算時間をきわめて短くすることができ、大規模なポートフォリオでも全債務者のエコノミックキャピタルを算出することが可能である。なお、本実施例のCalcPF_RCで行われる数値積分の処理を、実施例11と同様に変更することにより、容易にモンテカルロ積分を利用する実装とすることができる。
[実施例13]
本実施例は、CVaRベースエコノミックキャピタルを算出する処理を実施する態様を示す実施例であり、その機能ブロックを、上述の実施例12の構成を示すために用いた図27に示している。実施例12との相違点は、ポートフォリオ関数算出部1326Aの処理が、CalcPF_RCモジュールではなくCalcPF_RC2モジュールの処理であること、これに伴って、PF[k]、P[s、m、k]に追加してPD_avg[s、r]が算出されること、追加の入力としてNr、CPD[m,r,s]が用いられること、リスク指標算出部1328Aの出力にCVaRが含まれること、個社エコノミックキャピタル算出部1332の処理がCalcECモジュールではなく、CalcEC2モジュールの処理であること、これに伴って追加の入力としてp、CVaR、PD_avg[s、r]が用いられることである。ここでpは、個社エコノミックキャピタル算出部1332に入力されるVaRおよびCVaRの値を算出する際に用いた信頼率である。CalcEC2モジュールで算出されるEC_CVaR[i]の各要素は、数90のRCi CVaRに個社のエクスポージャEiを掛けたもの相当する。ここで、ポートフォリオ関数算出部1326Aに入力されるNrは、入力データ記憶部1316に格納され、CPD[m,r,s]は、計算結果記憶部1318に格納され、個社エコノミックキャピタル算出部1332に入力されるpはパラメータ記憶部1314に格納され、CVaR、PD_avg[s、r]は計算結果記憶部1318に格納されている。ここに示したCalcPF_RC2モジュールの処理とCalcEC2モジュールの処理について、それぞれ、図28A〜Dおよび図29A〜Cのフローチャートを用いて更に詳細に説明する。
図28A〜Dには、CalcPF_RCモジュールの処理フローに加えて、それに類似した処理が行われるCalcPF_RC2モジュールの処理フローも示されている。CalcPF_RC2モジュールの処理がCalcPF_RCモジュールの処理と相違するのはステップS2815とステップS2841〜S2858の処理であるので、これらの処理以外の処理についての説明を省略する。
CalcPF_RC2モジュールで新たに追加した処理では、格付番号r、セクター番号sを持つ債務者の平均デフォルト率を要素とする配列PD_avg[s、r]を算出する。このうち、ステップS2185の処理では、PD_avg[s、r]を算出するために用いられる、ウエイトの和を格納した配列w_sum[s、m]の算出を行う。具体的に、PD_avg[s、r]、w_sum[s、m]の各要素は、次の式に基づいて計算される。
ここで、L
S mは数81の第一式で与えられる集合である。この配列PD_avg[s、r]は、後に説明するCalc_EC2モジュール内でCVaRベースエコノミックキャピタルを算出する際に使用されるものであり、具体的には、数93の下段の式の中括弧内第一項に現れる債務者のデフォルト率PD
iの近似値として用いられる。ここで、数93に現れるPD
iの厳密な値は図14の債務者の格付および図15(a)の格付別デフォルト率によって与えられ、pd[R[i]]という配列の要素で表すことができる。数93の下段の式の計算を行う場合にも、この厳密値をそのまま用いることも可能である。本実施例で厳密値ではなくPD_avg[s、r]を用いる理由は数値計算上の誤差を考慮してのことである。数93の下段の式の中括弧内第二項は数値積分によって算出するため、積分点の偏りに伴う数値積分の誤差が含まれている。このため、第一項のPD
iも同じ積分点を用いて算出した平均値であるPD_avg[s、r]を用いることにより、最終的に算出されるCVaRベースエコノミックキャピタルの誤差を小さくすることができる。なお、PD
iがPD_avg[s、r]を用いて近似できることは、次のように確かめられる。
ステップS2815では、セクター番号sと評価点番号mを引数とする、離散化評価点に対する積分ウエイトの和を要素とする配列w_sum[s、m]の算出処理を行う。この配列w_sum[s、m]は、数109の第二式に相当するものである。積分点番号lをインクリメントしながら、積分評価点ごとに全てのセクター番号sに対してw_sum[s、M[s]]にw[l]を加えていく処理を行うことにより、配列w_sum[s、m]の全ての要素を算出することができる。
ステップS2840〜S2858では、積分点についてのループが終了(S2804)した後に、格付番号r、セクター番号sを持つ債務者の平均デフォルト率を要素とする配列PD_avg[s、r]を算出する。まず、離散化評価点番号mを1からNgまでインクリメントさせながら(S2848、S2850、S2854)、CPD[m、r、s]に重みw_sum[s、m]を乗じてPD_avg[s、r]に加えていく(S2852)。この処理を全てのセクター番号sについて行い(S2844、S2846、S2856)、更にその処理を全ての格付番号rについて行うことにより(S2841、S2842、S2858)、PD_avg[s、r]の各要素に、数109の第一式の和に相当する値が格納される。
図29A〜Cには、CalcECモジュールの処理フローに加えて、それに類似した処理が行われるCalcEC2モジュールの処理フローも示されている。CalcEC2モジュールの処理がCalcECモジュールの処理と相違するのはステップS2946〜S2952、ステップS2954およびS2956、ステップS2943の処理であるので、これらの処理以外の処理についての説明を省略する。
CalcEC2モジュールのステップS2946〜S2952の処理では、助変数番号kを引数とする配列RCMGF_CVaR[k]を算出する処理を行う。ここで、配列RCMGF_CVaR[k]の各要素は、数94第二式の括弧内の式でλ=γ+jkhとした値に相当する。数94を導出した際に述べたことから、このRCMGF_CVaR[k]は、RCMGF_VaR[k]を助変数で割ることにより計算できる。このため、これらのステップでは、助変数番号kをインクリメントさせながら(S2946、S2948、S2952)、助変数番号kごとにRCMGF_VaR[k]をγ+jkhで除算して結果を配列RCMGF_CVaR[k]に格納するという処理(S2950)を行う。
ステップS2954では、数93に基づいて債務者ごとのCVaRベースエコノミックキャピタルの算出を行い、債務者番号iを引数とする配列EC_CVaR[i]に結果を格納する。ここで、数93の下段中括弧内の第一項目には、PD_avg[R[i],S[i]]を用いる。また、数93の下段中括弧内の第二項目は、数94式に従ってラプラス逆変換により算出する。数94のラプラス逆変換は、ステップS2946〜S2952によって得られたRCMGF_CVaR[k]をラプラス逆変換モジュールLIの入力とすることにより、計算することができる。具体的には、ラプラス逆変換モジュールへの入力をC[k]=RCMGF_VaR[k](k=0、1、・・・、Nk−1)、t=VaRとして処理を実行すればよい。なお、上述の処理において、PD_avg[R[i],S[i]]の代わりにpd[R[i]]を用いることもできる。両者の結果は、共通リスク変数に関する積分を数値計算することによって生じる誤差によって差異が生じるが、本質的には同じ結果を与えるものである。このようにPD_avg[R[i],S[i]]の代わりにpd[R[i]]を用いる場合には、PD_avg[R[i],S[i]]の算出に関連した処理は不要となる。
ステップS2956では、CVaRベースエコノミックキャピタルの全ての債務者に関する総和TotalEC_CVaRを算出する。そして、ステップS2843では、TotalEC_CVaRを用いて規格化を行うことにより、債務者iのCVaRベースエコノミックキャピタルEC_CVaR[i]を得る。ここで規格化を行うのは、CalcECモジュールにおいて行ったのと同様に、CVaRベースエコノミックキャピタルの総和が、CVaRに一致するようにするためである。ただし、この規格化は本発明において必須のものではなく、規格化の処理を行う前のEC_CVaR[i]の値も、債務者iのCVaRベースのエコノミック・キャピタルの近似値としての意味を持つ。
このように本実施例によって、ポートフォリオの全債務者に対するVaRベースエコノミックキャピタルおよびCVaRベースエコノミックキャピタルが適切に計算される。Calc_EC2モジュールも積分点に関するループを行うことなくエコノミックキャピタルを算出することができ、大規模なポートフォリオでも全債務者のCVaRベースエコノミックキャピタルを算出することが可能である。なお、上述のCalcPF_RC2モジュールおよびCalcEC2モジュールの説明に用いたフローチャートに現れる変数の仕様について図32A、Bおよび図33A、Bにまとめている。
以上、本発明の実施の形態につき述べたが、本発明は既述の実施の形態に限定されるものではなく、本発明の技術的思想に基づいて各種の変形、変更および組み合わせが可能であり、特許請求の範囲の記載に基づいて発明が理解される。