式w * Cov * t(w)を使用すると、負のポートフォリオ分散を生成できます。負の分散の意味は何ですか?ゼロと仮定する必要がありますか?虚数に頼らなければ負の数の平方根(標準偏差を推定するため)を取ることができないため、負の分散は厄介です。また、分散の式と一致していないようです。二乗は常に正の数を生成するため、は平均からの偏差の二乗の平均です。
負の分散は、私の本当の問題の氷山の一角です。 (事前の)期待を表す共分散行列があります。私は過去のリターンを持っておらず、使用したくありません。 23の資産クラスがあります。私はいくつかのポートフォリオの最適化(平均分散ではない)で遊んでいます。最適なポートフォリオの重みのセット(w)を考え出します。ベンチマーク(b)の重みのセットもあります。計算しています。トラッキングエラー。トラッキングエラーの2乗は、(w-b)* cov * t(w-b)である必要があります。これがネガティブなことです。
さらに、私の重みはベンチマークとは十分に異なるため、検査と直感により、ゼロは間違った答えであることがわかります。これをさらに証明するために、資産クラスに対して(リターンと共分散行列の仮定を使用して)1000のランダムリターンを生成し、wとbに対して1000のリターンを計算しました。次に、差を計算してから、分散を取りました。そして、私はコンピューターを持っているので、これを1000回繰り返しました。最も低いトラッキングエラー(差の分散の平方根)は2.7%でした。したがって、分散は正である必要があると確信しています。
FWIW、23x23の共分散行列があります。そのほとんどは、公開ソース( Researchアフィリエイト)。地方債を追加します。他の用途での共分散行列にはかなり満足しています。例: wとbのポートフォリオの分散は大きいようです。
計算上または解釈によって、私が間違っている可能性があることについての洞察をいただければ幸いです。私の仕事はすべてRで行われ、いくつかのデータとコードを共有できます。
コメント
- 行列は半明確に正ではないため、そうではありません。共分散行列。これは、「手動で」設計された「共分散」行列の1つの問題です。行列から「近い」(ある距離の意味で)正当な共分散行列を作成する方法はいくつかあります。
- var / cov行列のデータを投稿できますか?上記のコメントが示すように、それは正の半確定ではない可能性が高いです。
回答
指摘されたとおり。ここで他のユーザーが設計した共分散行列は明らかに正定値ではないため、この奇妙な動作が発生します。
これは単なる数学的な問題ではなく、経済的な問題であることに注意してください。
おもちゃの例として、これを見てください。AとBが強く負の相関関係にある場合(たとえば-1)、両方は3番目のCと負の相関(再び-1)になります。このような行列を設計(=書き留め)することはできますが、これは正しい数学や実生活では遭遇できないものです。
内容次のことができます。
- 各資産の非負の分散を選択$ V = diag(v_1、v_2、\ ldots、v_n)$
- 正定値行列を選択相関の場合$ C $
- $ Cov = \ sqrt {V} C \ sqrt {V} $を計算します。ここで、平方根は成分ごとです。
3番目のステップの計算については、 stack.overflow で説明しています。パッケージ corpcor は、選択したターゲットへの共分散を縮小する方法を提供し、正定性のチェックを提供します。
関数make.positive.definite
は、特定の行列に最も近い(選択された意味で)正定値行列を見つけるために使用できます。
回答
Ivanがコメントで指摘したように、あなたの行列は有効な共分散行列ではありません。言い換えると、そのような共分散行列を推定できるデータセット(完全な観測値を含む)は存在しません。
このような行列を修復する最も簡単な方法は、行列の負の固有値をゼロに置き換えることです。 。このメソッドは、Rパッケージ NMOF
の関数repairMatrix
に実装されています。 、私が維持しています。
回答
Ivanのコメントは良い答えです。私は何かを追加していますが、主にコメントの代わりに回答して、検索結果に回答があることを確認します。私の共分散行列は正の半確定でなければなりません。私が理解しているように、これは大まかにそれが非負の数のようであることを意味します。これを掛けると、ゼロか同じ符号の何かが得られます。これは、正の半確定および正の確定の簡単な説明へのリンクです。 Ivanに感謝します。
コメント
- これは正しくありません。 行列が正の半確定であることを確認するには、すべての固有値が正であることを確認するのが最も簡単ないくつかのオプションがあります。 もう1つの良い代替策は、主要な主要な未成年者がすべてポジティブであるかどうかを確認することです。 Matlabは、ほんの一瞬でそれをチェックできます。
- 正の半確定行列は、$ x ' \ Sigma x $が非負であることを意味します。 実際の$ x $。 正定値行列の場合、$ x ' \ Sigma x $は厳密にゼロより大きくなります。