Блог им. EshkinCat

Софт для оптимизации портфеля по Марковицу

Здравствуйте!
Решил заняться рассчетами портфелей по Марковицу. Для начала посмотрел вебинар «Создание инвестиционного портфеля» от авторов сайта «Рост сбережений», в котором пошагово разъясняются все рассчеты в Excel.
В итоге сделал вывод, что рассчитывать портфели в Excel вполне реально, но долго. Дело в том, что довольно много повторяющихся операций нужно выполнять вручную, а значит возможны ошибки. Да и странно это — изобретать велосипед, ведь задача эта довольно стандартная и ее можно автоматизировать.
Далее я выяснил, что в таких программах, как R и Matlab, рассчеты можно выполнять быстрее, да и подгрузку данных можно автоматизировать.
Для R и Matlab созданы пакеты для финансового анализа и есть много готового кода, в котором параметры можно менять под себя.
На первый взгляд графический интерфейс Excel удобнее и знаком многим, но адаптировать несколько строк кода под себя тоже не слишком трудно.

Кто-нибудь на Смартлабе имеет опыт рассчета портфелей в этих программах? Что лучше выбрать? (R бесплатна, а Matlab тоже можно получить бесплатно, так что вопрос цены не рассматриваем). Может есть другие программы для этого? Можно ли рассчитывать оптимальные портфели в Wealth-Lab, amibroker и аналогах?
★1
19 комментариев
Конечно, в R и Matlab гораздо больше гибкости и удобства делать любые математические расчеты. Но для этого надо уметь на этих языках программировать.
Как, видимо, новичку — совет: не увлекаться марковицем «в лоб», это может дать печальные результаты на практике. Изучите матчасть, методы регуляризации ковариационной матрицы (shrinkage), плюс поисследовать насколько хороши прогнозы ретурнов, которые вы подставляете в формулу для оптимального портфеля. Может статься, что эти прогнозы очень плохи, и даже min variance portfolio дает лучшие результаты.
avatar
MadQuant, Человек Нобелевскую премию по экономике получил, а вы говорите, что метод не работает?
И чего его преподают в экономических институтах?
А больше рассказывать нечего.
avatar
sergik99, премия памяти Нобеля ЦБ Швеции — это такой междусобойчик мейнстримных экономистов. Скорее знак принадлежности к их элите, нежели оценка практической пригодности результатов. 
Что до ответа MadQuant, то Вы его просто не поняли. Человек Вам в самой простой форме объяснил, что тупое применение чужой формулы чревато плохими результатами и пояснил, куды бечь.
avatar
sergik99, метод хорош и красив как математический абстракт, однако откройте любой учебник по управлению капиталом — и там наисано, что он не работает. И справедливо написано — «в лоб» действительно не работает, в чем можно просто убедиться забэктестив.
Если открыть более продвинутые статьи практиков — там написано, как его можно «полечить». По поводу чего его преподают в экономических институтах — видимо, больше ничего не знают, другого объяснения у меня нет. С тех пор появились гораздо более практичные модели — max. diversification ratio, Black-Litterman model, equal risk contribution, всякие факторные подходы…
avatar
MadQuant, спасибо за советы. Будем «копать» дальше :-)
avatar
MadQuant, если не секрет, как вы в общих чертах returns и ковариационный матрицу считаете?
avatar
Михаил, returns — никак. Работающие подходы построения оптимального портфеля не используют оценки ретурнов, поскольку ретурны — mean-reverting штука, и если раньше что-то аутперформило — скорее всего дальше будет андерперформить, а в портфель по марковицу вы уже запихали это с максимальным весом.
Ковариационную матрицу — шринкую по собственной авторской методологии. Не хочу ее раскрывать, но многие из стандартных методов уже дают результаты сильно лучше результата «по дефолту».
avatar
MadQuant, а почему нельзя прогнозировать returns не банально на основе средних исторических значений, а с помощью какого-нибудь mean-reverting (например, ARMA) процесса? 

Не раскрывая авторской методики, можете хотя бы примерно сказать, какой условно стандартных методов взят за основу?
avatar
А что именно вам надо рассчитывать для портфелей?
Стандартное отклонение?
Тимофей Мартынов, для начала хотелось бы построить границу эффективности, рассчитать коэффициент диверсификации. Для рассчета оптимального портфеля нужно еще ряд условий задавать (например, минимальную и максимальную долю в портфеле каждого инструмента и т.д.). Насколько я понял, нужно перебирать довольного много наборов данных (даже если использовать ETF, а не отдельные ЦБ). Есть онлайн-калькуляторы, которые могут рассчитать параметры уже готового портфеля, но подбор самого портфеля задача посложнее и требует много ресурсов.
avatar
Павел, в Excel Solver есть — он вам все легко и быстро посчитает. Тут проблема скорее откуда взять нормальный вектор матожиданий и ковариационный матрицу.
avatar
Михаил, Solver'ом пользоваться умею и у меня есть уже готовые шаблоны для рассчетов. Все же думал, что есть более изящные решения. Неужели все считают только в Excel? Судя по ответам, на этом сайте портфельные инвистиции не очень популярная тема. За криптой наблюдать, конечно, веселее ;-)
avatar
Павел, а что вы ожидали здесь получить — готовый код? Тогда встречный вопрос — «what is in it for me»? =)
avatar
MadQuant, я ни от кого откровений не жду. Эта тема довольно сложная, поэтому простые советы не сделают ни из кого кванта.  
Вопрос больше состоял в том, не стоит ли попробовать для рассчетов что-то кроме Excel. Что-то мне подсказывает, что есть софт, в котором эти рассчеты можно сделать намного быстрее.
avatar
Павел, по опыту наблюдения за сайтом, тут очень мало людей, которые пользуются портфельной теорией. Excel очень наглядный инструмент и вполне позволяет решать задачи оптимизации с десятками активов. Но при желании можно реализовать на любом языке программирования — практически любой язык имеет библеатеку градиентной оптимизации выпуклых многомерных функций, аналог Solver из Excel. 
avatar
Михаил, попробую поискать инфу на англоязычных ресурсах.
Excel довольно удобен, но из любопытства попробую R и MatLab. По крайней мере это будет уже осознанный выбор. Новички в любом случае начинают с шаблонов (что Excel, что R), поэтому пока что поиграю с чужим кодом, чтобы понять, насколько это для меня постижимо.
avatar
Павел, надо быть проще. (а) Выбираем активы. Это творческий процесс. (б) оцениваем риски каждого актива, не так уж важно как, главное, чтобы оценка была по единой методике и была амплитудной, то есть в терминах или процентов или рублей или долларов. (г) доли берем обратно пропорционально риску. 
Все методы. использующие те или иные оценки ковариационных матриц имеют сложность, которую не пробить без приличной математики и языка программирования.  
avatar
SergeyJu, да может и надо быть проще, но попробовать надо — хуже не будет (надеюсь)
avatar
Павел, простой подход дает некую опору, понимание стартовой точки.  Вы будете понимать, за счет сложного метода получен существенный выигрыш, или нет. Кроме того, то, что я прелагаю в качестве простого подхода, весьма устойчивая конструкция. А как Вы будете проверять сложный метод на устойчивость?
avatar

теги блога Павел

....все тэги



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