相関行列の補完

BOEブログが、リスク算定に使う未知の相関係数を含む相関行列を補完する比較的簡単な数学的な手法を紹介している。これは昨年の論文で展開されたもので、論文の著者はDan I. Georgescu(BOE)、Nicholas J. Higham(マンチェスター大)、Gareth W. Peters(ヘリオット・ワット大)で、BOE記事はGeorgescuとHighamが書いている。
記事では以下のような簡単化された数値例を示している。

相関係数 BU1 BU1 BU1 BU2 BU2
a b c a b
BU1 a 1 0.7 0.85 0.85 0.75
BU1 b 0.7 1 0.6 0.5 0.85
BU1 c 0.85 0.6 1 x y
BU2 a 0.85 0.5 x 1 0.75
BU2 b 0.75 0.85 y 0.75 1

この例では企業はa、b、cという3種類のリスクに曝されており、BU1とBU2という2つの部門から構成されている。例えばBU1とBU2のaは社債スプレッドリスク、bは株式リスク、BU1のcは取引されていない資産のリスク、と考えることができる。cについては過去の市場データが存在しないため、相関係数がデータからは計算できない。部門内の相関係数はすべて既知だが(左上と右下のマトリックス)、BU1のリスクcとBU2のリスクの相関係数は未知である。これは、例えばBU1が英国部門、BU2がイタリア部門を表し、英国のリスクcとリスクa、bの相関係数は専門家が推計できるが、英国のリスクcとイタリアの各リスクとの相関係数は推計できない、という状況に相当する。
記事によれば、このケースでは、補完すべき相関係数の組み合わせは下図の青の範囲になるという。著者たちが解として推奨する、行列式を最大化する組み合わせ(MaxDet)は、(小数点以下2桁表示で)x=0.72、y=0.64である。これは領域の中心に位置するので、その意味では不偏推定値である。仮にBU1の各リスクの資産量が10、20、70、BU2の各リスクの資産量が30、50だとすると(単位は100万ポンド)、ソルベンシーII基準*1の式に基づく必要資本は159弱となる。

上図では「least onerous」と「most onerous」という組み合わせも示されているが、それぞれ必要資本は150と167になり、上述の159に対して10%の不確実性区間を導出する形になる。
なお、必要資本は、相関行列をΣ、各リスク資本のベクトルをVとして、(VTΣV)(1/2)として計算される。シミュレーションの際は最初に相関行列の平方根を取るため、相関行列は半正定値行列であることが要求される。その場合、行列式を最大化する以外に、半正定値行列という点で行列を最も安定化させる解として、最小の固有値を最大化する解というのも考えられる、と記事では述べている。
また実務的には、大きな相関行列を、未知の相関係数を1つだけ含む3×3の行列に分解し、その未知の相関係数を掛け算で求めることが良く行われるという。例えば上のケースではxについて

1 0.6 0.5
0.6 1 x
0.5 x 1

もしくは

1 0.85 0.85
0.85 1 x
0.85 x 1

という2つの3×3の部分行列を取り出すことができる(前者はBU1のリスクb、cとBU2のリスクaの相関行列、後者はBU1のリスクa、cとBU2のリスクaの相関行列*2)。この場合、xは、前者については0.6×0.5=0.3(BU1のリスクb、cの相関と、BU1のリスクbとBU2のリスクaの相関との積)、後者については0.85×0.85=0.72(BU1のリスクa、cの相関と、BU1のリスクaとBU2のリスクaの相関との積)として計算できる。あるいは、両者の平均として0.51という値を求めることもできる。このうち0.72は行列式を最大化する解に近いが、それは丸めなども寄与した偶然であり、それ以外の解はより小さくなる、と記事では指摘している。
行列式を最大化する解の理論的特長としては以下があるという。

  • 存在と唯一性
    • 半正定値行列が存在するならば、行列式を最大化する解は一つだけ存在する
  • エントロピー最大化モデル
  • 最尤推定
  • 中心性
    • 行列式を最大化する解は、半正定値行列という制約下で可能な範囲の分析の中心値となる。ここで分析の中心値とは、各超平面との距離の積を最大化する点である。

なお、行列式を最大化する解は、相関行列が以下のパターンで表される時には

A11 B C
BT A22 E
CT ET A33

E=BTA11-1Cという明示的な解として求められる。しかし、このようなパターンに帰着できない時には、そうした単純な解は存在せず、非線形最適化問題になるという。記事ではそうした問題を解くMATLABのコードも示している。

*1:cf. ソルベンシーII - Wikipedia

*2:元記事では後者の要素(3,1)が0.5となっているが、おそらく0.85の誤り。