行列の平方根
対称行列 A が正定値であるとは、x=0 のすべてについて xTAx>0 となることで、同値な条件は固有値がすべて正であることです。共分散行列は常に半正定値です。wTΣw はポートフォリオの分散であり、分散は負にならないからです。冗長な資産がないときに限り正定値で、どのポートフォリオの分散も厳密に正になります。
A=LLT,Ljj=Ajj−k<j∑Ljk2,Lij=LjjAij−∑k<jLikLjk (i>j)(1) 正定値行列にはすべて、L が正の対角を持つ下三角行列であるコレスキー分解 A=LLT があります。行列版の平方根です。対称性を使うので計算量は約 31n3 とLUの半分で、ピボット選択も不要です。アルゴリズムが平方根の中で負の数に出会えば、その行列は正定値ではないので、コレスキー分解はこの性質の安価な判定にもなります。
因子とシミュレーションA=(4225) では
L11=4=2、
L21=2/2=1、
L22=5−12=2 で、
L=(2102)、
LLT=(4225) です。相関
0.6、分散1の2つのリターンをシミュレートするには、
Σ=(10.60.61) を
L=(10.600.8) に分解し、独立な標準正規乱数
z から
x=Lz とします。すると
Cov(x)=LLT=Σ です。
- 正定値:すべての x=0 で xTAx>0。固有値がすべて正。
- コレスキー分解:A=LLT。LUの半分のコストでピボット不要、正定値の安価な判定にもなる。
- 相関のある乱数:x=Lz は独立な正規乱数 z を共分散 Σ のリターンに変える。
標本共分散行列は分解に失敗することがある資産数より観測数が少ない場合や、2つの資産のリターンが同一の場合、標本共分散行列は半正定値にとどまり、コレスキー分解はゼロまたはわずかに負のピボットで止まります。対策は、データを増やす、重複を除く、扱いやすい目標へのシュリンケージ、対角に単位行列の小さな倍数を足す、などです。
ラボ:採点される内容
- 行列を分解する20点
- 相関行列を分解する20点
- 相関のある乱数15点
- 正定値の行列はどれか15点
- コレスキー分解が失敗するとき10点
- 相関のあるリターンのシミュレーション20点