資産運用で発生する問題があります。私は、このフォーラムがそれを検討するのに十分な興味深い質問を提起すると思います (そして望んでいます)。私たちは文献をかなり広範囲に検索し、この問題について語っていることを見つけましたが、この問題を直接扱っているものは何もありませんでした.
バックグラウンド
資産の時系列データがあり、そこから相関行列を計算します。Mathematica を使用した 5 つのアセットの場合、次のようになります。
m = Correlation[data]
{{1.0, 0.635562, 0.698852, 0.404792, -0.32746}, {0.635562, 1.0, 0.410075, 0.314375, -0.0636438}, {0.698852, 0.410075, 1.0, 0.374416, -0.260137}, {0.404792, 0.314375, 0.374416, 1.0, 0.293135}, {-0.32746, -0.0636438, -0.260137, 0.293135, 1.0}}
m //TableForm
1.000000, 0.635562, 0.698852, 0.404792, -0.32746
0.635562, 1.000000, 0.410075, 0.314375, -0.0636438
0.698852, 0.410075, 1.000000, 0.374416, -0.260137
0.404792, 0.314375, 0.374416, 1.000000, 0.293135
-0.32746, -0.0636438, -0.260137, 0.293135, 1.000000
資産運用では分散が必要です。ポートフォリオ内の 2 つ以上の資産の相関が高すぎる場合、リスクを分散させるのではなく、集中させてしまいます。
私たちが欲しいもの
ポートフォリオの「集中」リスクを最小限に抑えながら、常にすべての商品である程度のポジションを保持する資産ポートフォリオを構築するためのアプローチまたは方法が必要です。
以下のいくつかの例で集中リスクを説明しますが、最初に...
なぜこれが興味深い問題や質問なのですか?
いくつかの理由で、これは興味深く挑戦的な質問になっています。
「効率的なフロンティア」に関連していますが、使用する個々の手段の将来のパフォーマンスについては想定していません。
分散を最小限に抑えることで答えが得られますが、直感的に満足できるものでも有用なものでもありません。
主成分分析はこれを調べる自然な方法のように思えますが、必要なものが得られないようにも見えます。
エントロピー最大化の使用を検討しましたが、離散エントロピーに精通している担当者の 1 人が有望だと考えていましたが、これを連続エントロピーの観点から考えてみると、行き止まりであることがわかりました。次のコードは、私たちが見たもののアイデアを示しています (実際に実行されるかどうかはわかりません)。
(* This function computes the distribution of returns, given a \
distribution of price movements.*)
returnDistribution[P_, n_] := Module[ {xv, wv},
wv = Array[w, n];
xv = Array[x, n];
varsInPlane =
Append[Delete[xv, n], (r - Total[Delete[wv*xv, n]])/wv[[n]]];
Integrate[PDF[P, varsInPlane],
Map[Function[{#, -Infinity, Infinity}], Delete[xv, n]]
]
]
dist = MultinormalDistribution[
ConstantArray[0, 3], {{1, 0.9, 0}, {0.9, 1, 0}, {0, 0, 1}}];
rd = returnDistribution[dist, 3]
(* The problem we want to solve is this *)
wv = Array[w, n];
Maximize[{rd*Log[rd, 2],
Total[wv] == 1 && And @@ Thread[wv >= 0]}, wv]
Attilio Meucci は論文「Managing Diversification」と有望に見えるいくつかの MatLab コードを持っています。
http://www.symmys.com/AttilioMeucci/Research/PublFinance/PublFinance.html
しかし、私の同僚の一人がそれを見た後、次のようにコメントしました:
彼は私がやりたかったのとほぼ同じことをしているようです (アイデアを破棄する前に)、彼は少しごまかしています。連続エントロピーを実際に計算する代わりに、彼は各主成分を個別の賭けとして扱っているだけです。しかし、基本的に、彼の論文は、複数の相関するコインフリップで行った計算の改良版です。これにより、現在の変数の余分な桁からではなく、他の変数からエントロピーを取得する必要があります。
彼が行っていることを非正規分布に対して行うのは、よりトリッキーかもしれませんが、「95% 標準正規分布、5% は本当に悪いもの」という形の状況に生成モデルを使用できると思います。
集中リスクの例
集中リスクを説明する簡単な例
思考実験で 3 つの資産のポートフォリオを見ると、達成したいことを最も簡単に理解できます。2 つの商品の相関が 1 (100%) で、3 つ目の商品の相関が 0 であると仮定すると、その相関行列は次のようになります。
1, 1, 0
1, 1, 0
0, 0, 1
この場合の私たちの観点からは、2 つの相関する株式のそれぞれに 25% を配置し、相関しない株式に 50% を配置することは理にかなっています。
25%, 25%, 50%
これにより、相関する商品に集中するリスクが相殺されますが、100% 相関する資産は実際にはまだ異なる商品であり、その相関は将来変化する可能性があります。
100% の相関関係を持つ 2 つの資産が同じように動く場合、可能な配分の広い範囲が等しく目的を果たすことができると主張する人もいるかもしれません。
50%, 0%, 50%
0%, 50%, 50%
10%, 40%, 50%
...またはそのようなテーマのバリエーション。
しかし、それらの将来の相関関係がどのように進化するかわからないため、最良かつ最も直感的な解決策は次のとおりであると考えています。
25%, 25%, 50%
もう一つの例
100% の相関を持つ 4 つの資産と 0% の相関を持つ 1 つの資産を含む 5 つの資産のポートフォリオでは、相関行列は次のようになります。
1, 1, 1, 1, 0
1, 1, 1, 1, 0
1, 1, 1, 1, 0
1, 1, 1, 1, 0
0, 0, 0, 0, 1
そして、私たちが望むポートフォリオの割り当ては、次の比率になります。
12.5%、12.5%、12.5%、12.5%、50%
もちろん、現実世界はさらに複雑です。
私たちが試したこと
分散の最小化 (有望だが機能しない)
これを行うために分散を最小限に抑えることを誰かが提案しましたが、ご覧のとおり、直感的な解決策は得られません。
これを説明するいくつかの Mathematica コードは次のとおりです。
For 3 assets:
m3 = {{1, 1, 0}, {1, 1, 0 }, { 0, 0 , 1}};
Array[x, Length@m3];
Minimize[{p.m3.p, Tr@p == 1 && And @@ Thread[p >= 0]}, p]
{1/2, {x[1] -> 1/4, x[2] -> 1/4, x[3] -> 1/2}}
これは良さそうです。それは私たちに与えます:
25%、25%、50%
しかし...
5 つのアセットの場合:
m5 = {{1, 1, 1, 1, 0}, {1 , 1, 1, 1, 0 }, {1 , 1, 1, 1, 0 }, {1 , 1,1, 1, 0 }, { 0, 0 , 0, 0, 1}};
p = Array[x, Length@m5];
Minimize[{p.m5.p, Tr@p == 1 && And @@ Thread[p >= 0]}, p]
{1/2, {x[1] -> 1/16, x[2] -> 1/4, x[3] -> 1/8, x[4] -> 1/16, x[5] ->1/2}}
それが私たちに与えるほど良くはありません:
6.25%, 25%, 12.50%, 6.25%, 50%
したがって、分散を最小限に抑えることは、より現実的なものは言うまでもなく、この単純な (人為的である場合) ケースでも機能しません。
有望なソリューション
私たちの議論への貢献者の 1 人は、有望なアプローチを提案しました - 少なくとも負の相関関係がないケースでは。おそらく、誰かがより完全な解決策を提案するようになるでしょう。
再び Mathematica コードで:
m = {{1, 1, 0}, {1, 1, 0}, {0, 0, 1}};
Tr /@ PseudoInverse[m]/Tr[ Tr /@ PseudoInverse[m]]
{1/4, 1/4, 1/2}
まさに私たちが望むものです。注: Mathematica のコードに慣れていない方のために説明すると、「Tr」は行列のトレースを検出し、「/@」は関数をリストまたは行列にマップします。残りはおそらく理にかなっています。
4 つのアセットの別の例:
m = {{1, 1, 1, 0}, {1, 1, 1, 0}, {1, 1, 1, 0}, {0, 0, 0, 1}};
Tr /@ PseudoInverse[m]/Tr[ Tr /@ PseudoInverse[m]]
{1/6, 1/6, 1/6, 1/2}
繰り返しますが、まさに私たちが望んでいるものです。
これは、分散を最小化するよりもうまく機能しますが、より現実的な例 (投稿で説明されている最初の例) では、うまくいかないことがあります。
m = {{1.0, 0.635562, 0.698852, 0.404792, -0.32746}, {0.635562, 1.0, 0.410075, 0.314375, -0.0636438}, {0.698852, 0.410075, 1.0, 0.374416, -0.260137}, {0.404792, 0.314375, 0.374416, 1.0, 0.293135}, {-0.32746, -0.0636438, -0.260137, 0.293135, 1.0}}
Tr /@ PseudoInverse[m]/Tr[ Tr /@ PseudoInverse[m]]
{0.267806, 0.0898877, 0.22403, -0.0541658, 0.472441}
この場合、4 番目のアセットに負の割り当て (-0.0541658) が設定されていますが、これは達成したいことには意味がありません。
結論
したがって、一種の MinimizeVarianceIntuitively 関数が必要です。これらすべてが、私たちが達成したいことを十分に明確に説明していることを願っています. この問題をまったく異なる方法で攻撃するための提案やアイデア、または私たちがすでに試したことを拡張するためのアイデアは非常に高く評価されています。
これをさりげなく見ている人は、CAPM (Capital Asset Pricing Model) がこれを行っていると常に示唆しています。そうではありません。上記の相関関係は、各資産を「市場」に関連付けるのではなく、資産と資産を関連付けているため、使用できる「ベータ」がないことを考慮してください。また、記述された問題は、リスクフリーレートまたは価格の正規分布のリターンまたは使用のいずれについても仮定していません。CAPM がこれを行う方法のように見えることはわかりますが、それがどのように適用されるかはわかりません。
どうもありがとう、
アルン・ガラパタ