3

資産運用で発生する問題があります。私は、このフォーラムがそれを検討するのに十分な興味深い質問を提起すると思います (そして望んでいます)。私たちは文献をかなり広範囲に検索し、この問題について語っていることを見つけましたが、この問題を直接扱っているものは何もありませんでした.

バックグラウンド

資産の時系列データがあり、そこから相関行列を計算します。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 がこれを行う方法のように見えることはわかりますが、それがどのように適用されるかはわかりません。

どうもありがとう、

アルン・ガラパタ

4

2 に答える 2

2

極端なテスト例では、無限の数のソリューションがあります。Mma はそのうちの 1 つを選びます。(未確認の) 重みを互いにほぼ等しくするソリューションを選択する場合は、その側面を気にすることを伝える必要があります。たとえば、等しくない場合にペナルティを追加できます。これを試して:

lambda = .00001;
NMinimize[{p.m5.p - 
   lambda*PDF[DirichletDistribution[Table[2, {5}]], Most[p]], 
  Tr@p == 1 && And @@ Thread[p >= 0]}, p]

平均 1/5 のディリクレ分布を使用しました。チューニング パラメーターには、ディリクレ分布のラムダとパラメーター "2" の両方が含まれます (平均値付近の濃度を制御します)。実際の問題に応じて、これらの調整パラメーターをいじる必要があります。それほど極端ではない例では、試してみてください

lambda = .0001;
NMinimize[{p.m.p - 
   lambda*PDF[DirichletDistribution[Table[2, {5}]], Most[p]], 
  Tr@p == 1 && And @@ Thread[p >= 0]}, p]

- マーク

于 2011-01-28T16:27:09.067 に答える
2

シンプルで少し欠陥のあるアプローチを提案します。各資産について、その共分散を合計します。次に、そのパーセンテージを、その合計と共分散の合計の比率に反比例させます。

コードでは、元の例を使用して、次のようにします。

cormat = {{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}};

n = Length[cormat];
xvars = Array[x, n];
corrs = Map[Total, cormat];
cortot = Total[Total[cormat]];

unnormalized = 
  xvars /. First[Solve[xvars == cortot/corrs, xvars]]

アウト[26] = {4.129760099114916、4.337254104111004、4.479986290069387、\ 4.173066277624756、15.51647047130198}

normalized = unnormalized/Total[unnormalized]

アウト[27] = {0.1265379371734397、0.1328956583819156、0.1372690447157368、\ 0.1278648603757522、0.4754324993531559}

これらの値は、この例の妥当な結果を構成していると思います。

2つの欠陥があります。1 つは、これが資産の相対的な強さを説明していないことです。私はあなたがすでにその重み付けをしているのではないかと思うので、それは問題ではないと思います。つまり、資産 1 の 1 ドルは資産 2 の 1 ドルの価値です...

- 編集 -

この最後は完全に正しいとは言えません。資産の価格と推定収益の両方を考慮する必要があります。私が示したコードでこれをどのように処理したいかわかりません。「より良い」資産(収益対価格の観点から)がより良い共分散数を与えるように、共分散にわずかに重みを付けるのでしょうか?

--編集終了--

より大きな問題は、大きな負の相関関係がある場合、これが適切に機能しないことです。それを処理する方法は、あなたが望む動作が正確に何であるかによって異なります。たとえば、資産のペアが負の相関関係にある場合、ゼロ相関よりも好ましいと思いますか? 「いいえ」の場合、簡単な解決策は、マイナスをプラスの相関の一部に変えることです (または、マイナスの相関が無相関のアセットより良くも悪くもないと見なされる場合は、それらをゼロにします)。

私が推測するように、負の相関を持つペアが一緒にポジションを持つことを比較的望ましいものにする (景気後退に対する抵抗力を高める) 場合は、上記のコードを調整して、相関の合計がヒットまたはヒットしたときに値を爆破しないようにする必要があります。 -1 を超えます。合理的なヒューリスティックは、合計が (-0.5,0) の範囲内にある場合はマイナスをそのままにしておき、それ以外の場合は合計が -0.5 になるように正規化することだと思います。

明らかに、これはすべてヒューリスティックであり、パラメーターを調整することができます。たとえば、逆の代わりに逆べき乗関係を使用できます。私が提案する以外の方法でネガを処理できます。茶葉の読みを追加できます...

私はここでは専門外なので、用語の誤用は意図的ではないことに注意してください。多分私の深さからも。

Daniel Lichtblau Wolfram Research

于 2011-01-29T23:54:16.987 に答える