Блог им. Kot_Begemot

Обобщённый подход к диверсификации рисков

Дополнение к серии «Портфельная оптимизация как бустинг на слабых моделях»


  • Обобщённая проблема

Результаты оценки любых случайных величин представляют из себя случайную величину. Не исключением здесь будут оценки ковариации.

Особенно сильно эффект неточности полученных оценок (случайности статистик) будет проявляться в портфелях, составленных из большого количества ценных бумаг — большего или сопоставимого количеству располагаемых наблюдений. И, поскольку, в некотором приближении задача портфельного инвестирования сводится к поиску двух максимально независимых активов из множества:


Обобщённый подход к диверсификации рисков 

где R — коэффициент взаимной корреляции — её решение, естественным образом, будет располагаться в области максимально отрицательной статистической ошибки.

Иными словами, вследствие нелинейности самой задачи, ошибки в определении статистической взаимосвязи различных активов не уничтожаются суммированием( как это происходит при подсчёте средних), а, наоборот, усиливаются функцией min / max и приводят к абсолютно непредсказуемым, хаотичным результатам. Что, в свою очередь, означает не только не-оптимальные  инвестиционные решения, но и большой объём «паразитного» оборота, повторяющего случайные блуждания портфеля, требующего повышенной ликвидности и разоряющего инвестора комиссиями биржи.


  • Усадка ковариационной матрицы (Shrinkage)

Для решения этих нелинейных проблем возможно использовать простые линейные алгоритмы, позаимствованные из методов статистической регрессии и известные как регуляризация (Тихонова, Лассо и пр.). Смысл этих методов состоит в том, чтобы перевести задачу из области нелинейности, связанной с поиском минимума корреляций, в некоторую область линейности, умышленно стимулировав широкодиверсифицированные инвестиции по всему рынку (без оглядки на корреляцию). Достигается это путём регуляризации или усадки матриц :


Обобщённый подход к диверсификации рисков 

где — Cov — ковариационная матрица используемая в задаче, Cov(sample) — выборочная ковариация, Cov(basis) — базисная ковариация, ламбда — параметр регуляризации, подбираемый бэк-тестом или выбираемый на каждом шаге исходя из общих характеристик матриц.

Видно, что при ламбда = 0, задача вырождается и приобретает характер задачи в некоторых априорных предположениях о характере взаимосвязи активов, заданных матрицей Cov(basis).

Этими априорными предположениями (базисом ковариации) могут выступать :

  1. Предположение о нулевой корреляции активов (Sharpe,1963)
  2. Предположение о некотором общем уровне взаимосвязи для всех активов (Ledoit & Wolf,2003)
  3. Отсутствие каких либо априорных предположений и использование эмпирического базиса в целях усадки (PCA, задача настоящей работы)

Забегая вперёд, отметим, что, в целом, результаты наших испытаний по этим методам соответствуют результатам сторонних авторов.

  • Динамические модели условных корреляций и функции сглаживания

Второй подход, предложенный Р.Энглом (Theoretical and empirical properties of dynamic conditional correlation multivariate GARCH,
2001), заключается использовании динамических моделей корреляций (DCC) c использованием различных сглаживающих фильтров (например, фильтра Калмана или скользящей средней). В этом подходе используемая ковариационная матрица рассчитывается как:

Обобщённый подход к диверсификации рисков

Это обобщённое уравнение совмещает в себе оба подхода — при бетта = 1/n и альфа+бетта =1, оно вырождается в уравнение усадки матриц, рассмотренное ранее, а при других значениях дополняет усадку фильтром Калмана ( в зависимости от соотношений альфа и бетта) и динамической моделью ковариации, зависящей от коэффициентов вектора бетта.  


  • Оценка качества моделей при решении тестовой проблемы

В качестве исходных данных для OOS теста моделей мы взяли фондовый рынок США, представленный 64 активами за период с 08.09.11 до 11.09.18. В качестве базовой модели оценки доходности  — математическое ожидание IS выборки, рисков — модель на основе Bipower Variation.  То есть самый простой и из всех возможных методов. Период наблюдений — 120 дней, минимальный из всех эффективных периодов, период инвестирования — 60 дней. 

Апостериорный анализ возможностей портфельного инвестирования утверждает, что на выбранном интервале времени достижимы портфели с годовым коэффициентом Шарпа 1.32, в то же время базовая модель без преобразования ковариационных матриц достигает уровня качества не более чем 0.95. 

Обобщённый подход к диверсификации рисков
Таблица результатов тестов. 


Из таблицы видно, что DCC (dynamic conditional covariation) модели в среднем выигрывают у CCC (constant conditional covariation) моделей. При этом стандартные процедуры усадки работают слабо удовлетворительно и почти не имеют эффекта. Модель Шарпа, при этом, превосходит модель Ледойт-Вульфа, вероятно из-за некоторой, присущей ей дискретности, связанной с не завышением ковариаций слабо коррелированных активов  и слабым снижением ковариации сильно коррелированных активов. Устранить этот недостаток Ледойт-Вульф модели с сохранением всех её преимуществ (в качестве априорного предположения вводится ненулевая корреляция, что лучше соответствует действительности) позволяет более сложная факторная модель (Principal Component Analysis), разделяющая активы на группы слабо и сильно коррелированных с текущими движущими рынок факторами. 

★9
40 комментариев
В сторону спектрального разложения ковариационной матрицы смотреть не пробовали? 
avatar
SergeyJu, это было первое, что было сделано. После, естественно, пришла мысль — а зачем я раскладываю ков.матрицу, если её симметрия «неправильная» для SSA?  Поэтому сразу была спектрально разложена матрица доходностей, со всеми последующими преобразованиями в ков. матрицу. 

К самой же ков. матрице нужно применять другие алгоритмы, например КNN, раскладывая активы в коррелированные и не-коррелированные группы. То есть, своего рода, бинаризация ковариационной матрицы.  

Как использовать SSA в целях разложения самой ков. матрицы я на сегодняшний день не представляю. 
avatar
Kot_Begemot, SVD разложение для ковариационной матрицы, имхо, должно в первую очередь показать, сколько существенных факторов (собственных векторов) следует использовать. Во-вторых, позволит аппроксимировать ковариационную матрицу через её «сигнальную» часть плюс регуляризующую диагональную матрицу с мощностью равной мощностью шумовой компоненты. Уменьшение числа степеней свободы (факторов) при этом не имеет характер насилия над структурой данных.
avatar
SergeyJu, у вас правильное имхо при странном предложении реализации.

SVD разложение аппроксимирует строки матрицы. Если вы применяете его к траекторной матрице, как положено, то получаете мощность некоторого сигнала и реакцию каждой акции на этот сигнал (например цены на нефть).

Как только вы применяете SVD к ковариационной матрице, то получаете глупость, так как ковариационная матрица не имеет некоторой строковой структуры.

Представьте, что у вас в качестве актива 1 — нефть, которая определяет цену 2 актива  — акций Роснефти. Корр.матрица, соответственно: [ 1, 0.5; 0.5, 1 ]; Всего одна Г.К + 1 шумовая часть.

А теперь разложим эту матрицу по SVD и получим две ортогональных Г.К. — [0.7, 0.7] и [-0.7, 0.7]. 

Итого, восстановленная матрица по 1-ой Г.К. будет выглядеть так :

[ 0.75, 0.75; 0.75, 0.75 ] 

То есть совершенно неверное решение! (Не то, которое предполагалось).

А если бы вы повернули Корр.матрицу на 45 градусов, чтобы в ней появилась построчная структура, то да — вы бы получили то, что хотели, а именно 1 Г.К без шума.
avatar
Kot_Begemot, Вы забыли про диагональное регулирующее слагаемое матрицы, которое должна дополнить диагональ до равенства следов (шумовая компонента) . 
Ясно, что идеального совпадения не будет, также ясно, что ЛЮБАЯ регуляризация искажает матрицу.
P.S. У Вас, кстати, матрица не ковариационная, а корреляционная.
avatar
SergeyJu, ох… это уже на отдельную работу потянет — реализация PCA над ков. матрицей и её составляющими (траекторными матрицами). Тут двумя формулами не обойдешься. 
avatar
Мне вот интересно, почему Талеб так люто не любит Шарпа и Марковица, мол зря им Нобелевку дали, они всему миру запудрили мозги тем, что на самом деле не работает. Но раз так много шума вокруг Марковица, значит таки работает?
avatar
Dmitryy, на рынке не работает. На деле написания статей, обучения студентов и, как виидим, получения премии банка Швеции памяти Нобеля — работает.
avatar
SergeyJu, вооот, значит не пустозвонит таки Талеб. Правда про БШ он тоже сказал, что зря им премию дали, но там не потому, что формула не работает, а потому, что не они авторы :)
avatar
Dmitryy, с этой квазинобелевской премией зря носятся, как с писаной торбой. Непонятно чего там больше, науки или квазинаучного междусобойчика. Впрочем, бывает и хуже, например, нобелевка по литературе. А уж премия мира — вообще ужас ужасный.
avatar
Dmitryy, это смотря как посмотреть. Та же формула Блэка-Шоулза тоже не работает, однако, это не означает, что рыночная цена опционов складывается из каких-то совершенно слепых сил. Нет, и продавцы и покупатели опционов пользуются ею в стандартном и/или не стандартном виде. Нобелевская премия же даётся за обобщение знаний или ПОДХОД в решении задачи, цель предсказать рынок и изобрести грааль перед наукой не ставится — ни одна наука не может превратить игру с нулевой суммой в игру, в которой все выигрывают.


Возникновение улыбки волатильности в данном случае может быть просто следствием дисбаланса покупателей и продавцов, использующих в своих оценках формулу Б-Ш и, как следствие, саму улыбку.

Что касается Марковица, то всё опять же зависит от задачи. Если вы — свободный частный трейдер — то… побить индекс портфелем Марковица вам не удастся. И первые мои опыты показывали именно это. Если вы управляющий портфелем крупного банка, у которого на балансе акции Газпрома на  2 трлн. рублей в качестве прямых инвестиций и в вашу задачу входит только диверсификация рисков этой, конкретной прямой инвестиции (с учётом доходности) — то Марковиц вам вполне эту задачу решит и сделает это лучшим образом.
avatar
Kot_Begemot, по поводу последнего пункта имею глубокие сомнения. Во-первых, наши банки на балансе таких объемов акций не должны держать, резервы задушат. Во вторых, не на чем у нас на рынке такую кучу газпрома хеджировать. В третьих, в марковица в принципе не верю, потому что ни оценки прошлой доходности ни оценки ковариаций не являются стационарными и их прогностическое качество очень низкое. 
avatar
SergeyJu, на нашем рынке всё намного проще. И стационарность его намного выше.


 В третьих, в марковица в принципе не верю, потому что ни оценки прошлой доходности ни оценки ковариаций не являются стационарными и их прогностическое качество очень низкое.

Это совершенно не меняет дело.

1. Оценки прошлой доходности не обязательно должны использоваться в качестве прогноза. Я тестировал несколько фундаментальных стратегий и неожиданно получил пренеприятную проблему — сильный (неконтролируемый, слабоконтролируемый) рост рисков. 

Иными словами, Марковиц на прошлых доходностях это только частный случай портфельной оптимизации.

2. Вопрос не в том, что рынок нестационарен, вопрос в том — мешает ли эта нестационарность конкретным методам. Если рынок, например, состоит из интервально-стационарных процессов с некоторым временем жизни (экспоненциально распределённым), то это уже позволит работать на нём разнообразным трендовым стратегиям в определённом интервале окон.

Если на рынке наблюдается GARCH / ARCH, то это тоже не нанесет большого ущерба портфелям Марковица — качество работы резко снизит, но правильное решение в неправильное не превратит. 

Собственно, в этом вся и закавыка — проплыть океан нестационарных айсбергов, не столкнувшись ни с одним из них.




avatar
Kot_Begemot, так ведь портфель Марковица и есть индекс. Рыночный и тангенциальный портфели в теории Марковица должны совпадать (это следует из допущений CAPM) Или Вы про какой-то другой портфель говорите? 
avatar
DR. LECTER, моя работа над портфелями начиналась со скромной заметки о том, почему CAPM модель неверна. И то, что сегодня я делаю по сути — чистой воды случайность. 

Да, CAPM модель изначально строится на допущении, что портфель по Марковицу  и есть рыночный портфель. А так же на допущении того, что все инвесторы рациональны и имеют именно этот рыночный портфель. И потому уже ценность актива для них определяется с точки зрения альфа и бетта коэффициента, то есть с точки зрения способности конкретного актива диверсифицировать именно рыночный портфель (а не собственный портфель инвестора, если бы этот портфель был отличен от рыночного). 

Тем не менее, это не означает, что невозможно на малых капиталах собрать портфель лучше. Более того, это даже не означает, что на крупных капиталах невозможно собрать портфель лучше, так как рациональность инвесторов и преследуемые ими цели (например, прямые инвестиции) могут быть различны, что приводит к некоторым отклонениям от CAPM.

Самое смешное, что сама CAPM в собственных предположениях не должна допускать недооценённости/переоценённости активов, так как предполагает, что рынок эффективен всегда. Но у инвесторов, как минимум существуют и собственные прогнозы относительно рынка, что создаёт предпосылки для переоценки/недооценки активов по SML, и, соответственно, опровергает изначальные положения модели CAPM.
avatar
ugene Logunov, 

1. Не совсем понятна задача t-testa.

Разница, безусловно есть и очень сильная. Шарп давит доходность превращая портфель в индекс (16%). Вульф оставляет высокую доходность, но не диверсифицирует риски (23%), PCA сохраняет доходность (около 20%) с хорошим подавлением дисперсии. Поэтому да — значимая разница есть.


2. Ни на каком. Для того, чтобы получить «честный OOS» использую только непараметрические фильтры. Параметр длинны выборки не подбирался. За исключением того, что был выбран минимальный (самый тяжёлый для прогнозирования) из всех статистически значимых (эффективных) периодов. На периодах в 60 дней  и менее, в силу случайности динамики ВР, уже невозможно выделить среднюю, ковариацию и т.д.

3. Начинал с BrokenStick, но пришлось её ослабить, так как «сломанная трость» выделяла только 1 Г.К. после… некоторой модернизации в среднем PCA оставило 4 компоненты. (на глаз я бы оставил только 3). 

Это самый простой в реализации автомат. Для проверки качества методов — вполне достаточно.


Ещё пара идей:

Это всегда приветствуется! 

1.
 
Возможно, в качестве метрики качества хорошо было бы рассмотреть не Sharpe ratio, а среднее расстояние Махаланобиса

Сейчас я вам ничего не отвечу, но за подсказку — спасибо.

2.

2. Сначала выровнять по волатильности каждый из рядов, после чего считать на них корреляции.

Какими только извращениями на этом пути я не занимался. Результат  — так себе. В итоге пришёл к выводу, что квадратичная оценка ковариаций одна из лучших. Регуляризую, естественно, корреляционную матрицу, а потом совершаю обратный пересчёт.
avatar
Eugene Logunov, к сожалению, может. Но только это не задача p-testa.

Предположим, что вы имеете две модели с доходностью 10% и 10.01% — разница не значимая, но какую модель вы выберете? 

В лучшем случае, можно выбрать комбинацию из двух. Но при этом ответить на вопрос какая модель однозначно лучше вы не можете. Единственное, что вы можете указать, что вероятность того, что модель с бОльшей доходностью лучше — больше, вот и всё. 

Поэтому применять t-test для того, чтобы найти существенную разницу между моделями не вижу особого смысла, потому как построить две модели (с разницей в 1 метод) с явным стат. преимуществом как-то не получается. За 5-10 модернизаций появляется ощутимое различие (раза в 2 по Шарпу) и тут уже можно о чём-то говорить, но применительно к одному дополнению типа Shrinkage — нет. 
avatar
Eugene Logunov, это хорошо, когда у вас есть два конечных алгоритма, а когда две правки — нет.

Вот, например, то же DCC не работает с Шарпом (по понятным причинам) и не очень работает в голом виде (на грани t-testa, на глаз), но совместно с другими методами — тем же PCA — работает намного лучше. А так вы хорошую правку отбросите в самом начале, если будете всё по тестам проверять. 
avatar
Eugene Logunov, нет, так не пойдет.  Код R я не понимаю, тем более что вы ссылаетесь на какие-то непонятные функции («with») и понять что происходит я не могу. (особенно %*%).

Поясню в чём проблема :


Исходная корр. матрица по 64 активам за 7 лет.





Восстановленная корр. матрица по 0 Г.К. 
 


Восстановленная корр. матрица по 1 Г.К.


Ни один ваш метод, работающий сразу с корр/ков. матрицей этого не даст.

avatar
Eugene Logunov, ага спасибо. Возможно просто непривычная для меня система координат.  

Впрочем могу и пост небольшой сделать на эту тему, с формулами :)

Было бы интересно.
avatar
а когда будет глава про кнопку «Бабло»?
Сберегатель (От Лонга!), что за кнопка такая? Это где-то на клавиатуре?
avatar
Kot_Begemot, 
понятно
главу про кнопку «Бабло» можно не ждать
Eugene Logunov, получил. 

И неожиданно понял, что чистая ков. матрица должна быть построково структурирована (как у меня на последней картинке). А ещё пол дня назад был уверен в обратном... 
avatar
Kot_Begemot, что значит «построково структурирована»? 
avatar
SergeyJu, это значит, что должен существовать какой-то определенный вид строки, например :

[0,0,0,1,1,0] что означает, что 4 и 5 -ый активы из 6 ходят парой с некоторым управляющим воздействием (Г.К.).

Соответственно, на другой строке, коррелированной с тем же управляющим воздействием должна получаться эта же структура — [0,0,0,1,1,0].

Исходя из этого, все (в том числе и мои, построенные на сингулярном разложении рядов) PCA корр. матрицы будут с виду напоминать «набор вертикальных линий» (если совсем грубо), повторяя сами себя от строки к строке. ( что и получается. на моих картинках).

Изначально, поскольку PCA это всего лишь — линейный, сглаживающий фильтр строк и в условиях отсутствия представлений о «правильном» виде матрицы ковариации, было решено использовать PCA для самих рядов. Потому что для  рядов должно было выполняться это условие построковой структуры  из предположений о стационарном отклике на некоторый невидимый, управляющий фактор. То есть для рядов линейная модель была понятна, а для матриц — нет. Отсюда и непонимание.
avatar
Kot_Begemot, ковариационная матрица симметричная, поэтому одноименные строки и столбцы одинаковы. Получается клетчатая структура :)
Зачем Вы используете построчный фильтр я не понял. Или Вы используете SVDразложение прямоугольной матрицы, не сворачивая её в ковариационную? 
avatar
SergeyJu, из-за того, что ков. матрица — диагонально (а не вертикально) симметричная и возникла проблема понимания)

Зачем Вы используете построчный фильтр я не понял. 

Любое PCА и есть построчный фильтр. Если вам нужен какой-нибудь другой фильтр, например диагональный или выискивающий закономерности в некоторых разбросанных по плоскости (матрице) точках — PCA уже будет не применим. Я поэтому сразу сказал (неверно), что нужно использовать для ков./кор. матриц KNN или что-то подобное, отвязанное от строк. 

Например, закономерность вида :

0,1,0
0,0,1
1,0,0

требующую разложения в 1 компоненту вы уже через PCA не разложите (в данном случае наблюдается диагональный сдвиг единиц). А через тот же KNN вполне себе найдете кластер. 

Так, результатом работы PCA будет строка (собственный вектор)
А KNN — матрица (то есть некоторая двумерная структура).

И поэтому PCA соберёт восстановленную матрицу из последовательных одинаковых строк, но с разной амплитудой, а KNN как суперпозицию матриц с разной амплитудой.
avatar
Eugene Logunov, зачем Вы переходите к корреляциям и обратно, а не  работаете непосредственно с ковариационной матрицей? 
avatar
Eugene Logunov, не проще изначально разделить группы?
Интересно, Вы сами этот эффект обнаружили, или где-то прочли.
avatar
Eugene Logunov, чисто практически я рассуждаю так. Есть акции и есть облигации. Они существенно разные. Внутри каждой группы своя жизнь, а между группами переливы (изменение процентов) есть отдельная задача. Насколько такой подход хуже Вашего, как Вы полагаете? 

avatar

теги блога Kot_Begemot

....все тэги



UPDONW
Новый дизайн