У нас есть проблема, возникающая в управлении активами. Я думаю (и надеюсь), что это поднимает достаточно интересные вопросы для этого форума, чтобы рассмотреть его. Мы провели довольно обширные поиски в литературе и нашли вещи, которые обсуждают этот вопрос, но ничего не касались этой проблемы.
Фон
У нас есть данные временных рядов для активов, из которых мы рассчитываем матрицу корреляции. Для 5 активов, использующих Mathematica, это может выглядеть примерно так:
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]
У Аттилио Меуччи есть статья «Управление диверсификацией» и некоторый код 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%
Anotее пример
В портфеле из 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}
В этом случае мы имеем отрицательное распределение (-0,0541658) для 4-го актива, что не имеет смысла для того, чего мы хотим достичь.
Заключение
Итак, нам нужна какая-то функция MinimizeVarianceIntuitively. Надеюсь, все это достаточно четко описывает то, чего мы хотим достичь. Любые предложения или идеи для решения этой проблемы совершенно другими способами или для расширения чего-либо из того, что мы пробовали, уже получили высокую оценку.
Люди, которые смотрят на это всегда небрежно, предполагают, что CAPM (Модель ценообразования основных средств) делает это. Это не. Учтите, что описанные выше соотношения относятся к активу, а не к каждому активу с «рынком», поэтому у него нет «бета», с которым можно работать. Кроме того, описанная проблема не делает никаких предположений ни о возврате, ни об использовании безрисковой ставки, ни о нормальном распределении цен. Я могу видеть, как CAPM может показаться способом сделать это, но я не понимаю, как это применимо.
Большое спасибо,
Арун Гарапата