Okama.io: профессиональные инструменты для анализа инвестиционных стратегий

от автора

На Хабре мы уже несколько раз писали про open-source библиотеку okama, предназначенную для анализа инвестиционного портфеля на Python. Но у проекта давно есть «лицо» и для тех, кто не пишет код, — сайт okama.io: набор бесплатных интерактивных инструментов для бэктестинга портфелей, анализа и сравнения отдельных активов и прогнозов. Мы когда-то делали в качестве “развлечения” и демонстрации возможностей окамы. Но со временем okama.io превратился в самостоятельный проект, которым пользуются как в России так и за рубежом.

Сайт целиком — open-source. Это приложение okama-dash на Dash (Plotly): весь продукт — финансовая логика, обработка данных и интерфейс — написан на Python и распространяется под лицензией MIT. Под капотом работает та же библиотека okama, что доступна и из кода. Обычно функционал сайта несколько “отстаёт” от библиотеки ввиду необходимости разработки непростого интерфейса, но на сегодня эта разница не так велика.

Данные — бесплатные «end of day» исторические котировки и макропоказатели: биржи NYSE, NASDAQ, MOEX, LSE и другие, плюс индексы, крипто- и обычные валюты, товарные активы, ставки и инфляция.

Одна особенность сохраняется во всех разделах: всё состояние виджета кодируется в URL. Собрали портфель, настроили параметры — ссылку можно отправить кому угодно, и у него откроется ровно тот же расчёт.

Кнопка «Copy link»: любое состояние инструмента на okama.io кодируется в URL и передаётся одной ссылкой

Кнопка «Copy link»: любое состояние инструмента на okama.io кодируется в URL и передаётся одной ссылкой

Дальше — короткая экскурсия по разделам сайта…

Efficient Frontier — граница эффективности

Раздел “Граница эффективности”

Инструмент строит границу эффективности для набора активов: для каждого уровня риска находит портфель с максимально возможной доходностью. На графике видно сами активы (в координатах риск/доходность), облако достижимых портфелей и кривую границы — выше неё подняться нельзя. Облако можно строить случайной генерацией (Монте-Карло) или перебором по сетке весов. Рядом доступна “Карта переходов” (transition map), которая показывает как меняется состав оптимизированных портфелей на границе эффективности.

Граница эффективности на okama.io: активы, облако достижимых портфелей и кривая границы

Граница эффективности на okama.io: активы, облако достижимых портфелей и кривая границы

Compare Assets — сравнение активов

Раздел “Сравнение активов”.

Раздел сравнивает несколько активов между собой на общем историческом периоде. Доступны графики баланса (Wealth Index — рост вложенной суммы), накопленная и годовая доходность, скользящий CAGR, матрица корреляций. Под графиком — таблица метрик: CAGR за разные периоды, риск (стандартное отклонение), CVAR, максимальные просадки, коэффициент Шарпа, дивидендная доходность.

На примере ниже — wealth index для трёх активов с 2005 года: S&P 500 (SPY.US), золото (GLD.US) и Nasdaq-100 (QQQ.US).

Compare Assets на okama.io: индексы богатства SPY.US, GLD.US и QQQ.US на общем периоде

Compare Assets на okama.io: индексы богатства SPY.US, GLD.US и QQQ.US на общем периоде

Compare with Benchmark — сравнение с бенчмарком

Раздел “Сравнение с бенчмарком”.

Здесь активы сравниваются не друг с другом, а с бенчмарком — индексом или другим активом. Считаются tracking difference (накопленная и годовая), tracking error, коэффициент бета и корреляция — на расширяющемся или скользящем окне.

Пример: качество следования двух ETF на индекс S&P 500 — VOO.US (Vanguard) и SPY.US (SPDR) — относительно индекса S&P 500 Total Return. Оба фонда почти точно повторяют индекс, но VOO.US следует за ним заметно плотнее: его годовое отставание около −0,36% против −0,84% у SPY.US (на общем периоде с конца 2010 года).

Compare with Benchmark на okama.io: годовое отставание (tracking difference) ETF VOO.US и SPY.US от индекса S&P 500 Total Return

Compare with Benchmark на okama.io: годовое отставание (tracking difference) ETF VOO.US и SPY.US от индекса S&P 500 Total Return

Investment Portfolio — анализ портфеля

Раздел “Портфель”.

Самый насыщенный раздел. Из активов с заданными весами собирается портфель, для которого можно: выбрать стратегию ребалансировки; задать денежные потоки — регулярные пополнения и изъятия (в том числе с индексацией на инфляцию, снятием процента от текущего размера, динамическими правилами); прогнать прогноз Монте-Карло; подобрать максимально безопасный размер изъятий под заданный горизонт. Считаются баланс портфеля, доходность, просадки, тест распределения доходностей.

Пример — классический портфель 60/40 (60% акции SPY.US, 40% облигации AGG.US). Линия портфеля идёт между акциями и облигациями: доходность ниже, чем у чистых акций, зато заметно ровнее — CAGR 8,1%, риск 10,1%, максимальная просадка −32% против −51% у одного S&P 500.

Интересная особенность этого раздела — возможность перейти вместе с созданным портфелем в соседние разделы и там его проанализировать (Граница эффективности, Бенчмарк, Сравнение).

Investment Portfolio на okama.io: индекс богатства портфеля 60/40 (SPY.US + AGG.US) на фоне его компонентов

Investment Portfolio на okama.io: индекс богатства портфеля 60/40 (SPY.US + AGG.US) на фоне его компонентов

Database — поиск по финансовой базе

Раздел “База данных”

Поиск по всей базе данных okama: акции, ETF, ПИФы, индексы, валюты (включая криптовалюты), товары, ставки. База разбита на пространства имён (namespaces) — биржи и типы данных: US (биржи США), MOEX (Московская биржа), LSE (Лондон), XETR/XFRA (Германия), CC (крипто), COMM (товары), INDX (индексы), INFL (инфляция), RE (недвижимость) и другие. По каждому инструменту видны тикер, название, страна, биржа, валюта, тип и ISIN.

Пример — поиск «AAPL» в пространстве имён US.

Database на okama.io: поиск «AAPL» в пространстве имён US

Database на okama.io: поиск «AAPL» в пространстве имён US

Macro — макроэкономика

Раздел “Макроэкономика”

Раздел макроэкономических данных различных стран с интерактивными графиками:

  • Инфляция — годовая, скользящая, накопленная и помесячная по странам, с возможностью наложить на график ключевые ставки центробанков;

  • Ставки центробанков — ключевые ставки и расчёт реальных ставок (с поправкой на инфляцию);

  • CAPE10 — коэффициент Шиллера по 25 странам: текущий срез и историческая динамика.

На графике — скользящая 12-месячная инфляция по нескольким странам.

Macro на okama.io: скользящая 12-месячная инфляция по странам

Macro на okama.io: скользящая 12-месячная инфляция по странам

Онлайн-курс по математике портфельных инвестиций по стандартам CFA

Сайт начинался как набор очень простых виджетов: посчитать доходность, нарисовать график. Со временем он разросся — и сегодня это уже довольно сложный инструмент. Граница эффективности, CVAR, tracking error, стратегии денежных потоков, бэктестинг распределений и прогнозы Монте-Карло — за каждым из этих расчётов стоит серьёзная финансовая математика.

Вся математика проекта основана на проверенных временем профессиональных стандартах CFA (Chartered Financial Analyst).

Для того, чтобы научиться пользоваться Современной теорией портфеля (СТП) в профессиональной деятельности, мы создали курс «Профессиональное создание инвестиционного портфеля» в онлайн-школе Финариум. Это единственный в России курс где можно научиться разрабатывать и сопровождать инвестиционные стратегии согласно стандартам CFA.

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

Онлайн-курс «Профессиональное создание инвестиционного портфеля» — школа инвестиций Финариум, по международным стандартам CFA

Онлайн-курс «Профессиональное создание инвестиционного портфеля» — школа инвестиций Финариум, по международным стандартам CFA

Ссылки

Другие наши статьи на Хабре про okama:

Вопросы, баг-репорты и пул-реквесты приветствуются — проект открытый.

ссылка на оригинал статьи https://habr.com/ru/articles/1051450/