我们在资产管理中出现了一个问题。我认为(并希望)它为这个论坛提出了足够有趣的问题来考虑它。我们对文献进行了相当广泛的搜索,找到了围绕这个问题讨论的内容,但没有直接涉及这个问题。
背景
我们有资产的时间序列数据,我们从中计算相关矩阵。对于使用 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
在资产管理中,人们想要多元化。如果投资组合中的两个或多个资产相关性太高,它会集中而不是分散风险。
我们想要什么
我们想要一种方法或方法来构建资产组合,以最小化投资组合的“集中”风险,同时始终在所有工具中持有一些头寸
我将通过以下几个示例来说明集中风险,但首先...
为什么这是一个有趣的问题或问题?
有几件事使这成为一个有趣且具有挑战性的问题:
虽然与“有效边界”相关,但我们对各个工具使用的未来表现没有任何假设。
最小化方差给出了答案,但不是一个直观令人满意甚至有用的答案。
主成分分析似乎是一种自然的方式来看待这个问题,但似乎也没有给我们我们需要的东西。
我们已经研究过使用熵最大化,但是当我们熟悉离散熵的一个人认为它看起来很有希望时,当我们尝试用连续熵来思考这个问题时,它被证明是一个死胡同。以下代码让我们了解了我们所看到的内容(不确定它是否实际运行):
(* 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 有一篇论文“管理多元化”和一些看起来很有希望的 MatLab 代码,
http://www.symmys.com/AttilioMeucci/Research/PublFinance/PublFinance.html
但在看过我的一位同事后评论它是:
他似乎在做我想做的大致相同的事情(在放弃这个想法之前),除了他有点作弊。他没有实际计算连续熵,而是将每个主成分视为离散赌注。但基本上,他的论文是我对多个相关硬币翻转所做的计算的改进版本。这迫使您从其他变量中获取熵,而不是从当前变量的额外数字中获取熵。
对非正态分布做他正在做的事情可能会更棘手,尽管我认为可以将生成模型用于“95% 标准正态分布,5% 非常糟糕”形式的情况。
集中风险示例
几个简单的例子来说明集中风险
如果我们在思想实验中查看 3 种资产的投资组合,最容易理解我们想要实现的目标。假设 2 个工具的相关性为 1 (100%),第三个为 0,其相关矩阵如下所示:
1, 1, 0
1, 1, 0
0, 0, 1
在这种情况下,从我们的角度来看,将 25% 放在 2 只相关股票中,将 50% 放在不相关股票中是有意义的。
25%, 25%, 50%
这抵消了集中于相关工具的风险,同时认识到 100% 相关资产实际上仍然是不同的工具,其相关性在未来可能会发生变化。
有人可能会认为,由于具有 100% 相关性的两种资产移动相同,那么广泛的可能分配同样可以满足我们的目的,例如:
50%, 0%, 50%
0%, 50%, 50%
10%, 40%, 50%
...或主题的任何此类变化。
但是,由于我们不知道它们未来的相关性将如何演变,我们认为最好和最直观的解决方案仍然是:
25%, 25%, 50%
另一个例子
在由 5 个资产组成的投资组合中,其中 4 个具有 100% 的相关性,1 个具有 0% 的相关性,相关矩阵如下所示:
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%
因此,即使对于这种简单(如果是人为的)情况,最小化方差也不起作用,更不用说更现实的情况了。
一个有前途的解决方案
我们讨论的一位贡献者提出了一种有前途的方法 - 至少对于没有任何负相关的情况。也许它会导致某人提出更完整的解决方案。
再次使用 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”查找矩阵的迹,“/@”将函数映射到列表或矩阵。其余的可能是有道理的。
四个资产的另一个示例:
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(资本资产定价模型)这样做。它不是。考虑到上述相关性将资产与资产相关联,而不是每个资产与“市场”相关联,因此它没有可使用的“贝塔”。此外,所描述的问题没有假设回报或使用无风险利率或价格的正态分布。我可以看到 CAPM 看起来像是一种方法,但我看不出它是如何应用的。
非常感谢,
阿伦·加拉帕塔