26 июн 2019
Коротко:
- Библиотека с открытым кодом yapo опубликована на GitHub
- Базовый функционал библиотеки предусматривает расчет доходности, риска, инфляции и др.
- Библиотека позволяет использовать нашу открытую базу финансовых данных (MICEX, NYSE, NSADAQ, валюты, инфляции стран мира и др.)
- Простейшие примеры использования библиотеки доступны на MyBinder
- Комьюнити проекта – возможности для участия в развитии yapo
В мае мы рассказывали о сайте Окама с инструментами для портфельных инвестиций, который использует финансовую библиотеку с открытым кодом. Пришло время рассказать про саму библиотеку, которая используется сайтом для расчетов и работы с финансовыми данными.
Зачем нужна еще одна библиотека?
В 2017 году, когда началась первая работа в Python мы решили просто усовершенствовать свою работу и разработать алгоритм, который бы хорошо справлялся с поиском решений для построения границы эффективности и другими классическими задачами в рамках Современной теории портфеля (СТП). Математика этого подхода хорошо известна. Более того, в последние 20-30 лет он стал своего рода мейнстримом в инвестиционной индустрии вместе с увеличением популярности индексного подхода к инвестициям.
Мы с энтузиазмом взялись за работу, надеясь, что «обойдется» адаптацией уже существующих решений под конкретные задачи. Язык Python был выбран благодаря своей популярности и простоте использования. Кроме того, именно на нем можно найти огромное количество библиотек с открытым кодом для большого числа типовых проблем. Но, как мы быстро убедились, при всем разнообразии библиотек на Python количество подходящих финансовых решений крайне мало и ни одна из имеющихся библиотек не может претендовать на законченное решение для типовых финансовых задач (даже более простых чем СТП). Более того, как мы выяснили, после поисков и сравнений, в области OSS (Open Source Software) в принципе крайне мало сколько-нибудь пригодных к использованию проектов в области финансов. Чтобы не быть голословным, можно обратиться к перечню финансовых OSS проектов, который ведется на BogleHeads.
Стоит оговориться, что в мире существует много качественного финансового программного обеспечения. Например, MATLAB Computational Finance Suite или Simulation Programming Language (SIMSCRIPT) самого Марковица. Но все значительные финансовые проекты являются проприетарными. Интересно, что в области корпоративных финансов все еще является стандартом использование EXCEL в лучшем случае с VBA для частичной автоматизации.
Нам пришлось сделать шаг назад, разрабатывая собственные решения для простейших финансовых операций, исключающих возможность ошибки и человеческого фактора (Типичным ошибкам в финансовых вычислениях и работе с временными рядами в финансах будет посвящена следующая статья). Хотите безошибочно вычислить среднюю доходность SPY за последние 54 месяца в любой валюте? … придется писать код самостоятельно.
Что умеет yapo сегодня
В настоящее время библиотека умеет следующее:
- Работа с временными данными финансовых активов (Time Series с метаинформацией)
- Вычисления накопленной доходности и среднегодовой доходности
- Вычисления доходности скорректированной на размер инфляции (реальная доходность)
- Вычисление риска активов (стандартное отклонение)
- Составление инвестиционных портфелей (комбинация временных рядов для различных активов)
- Вычисление индекса доходности депозитов TOP-10 (OKID10 – доступен через виджет)
В разработке сейчас находятся новые функции yapo:
- Оптимизация инвестиционных портфелей и построение границы эффективности
- Расчет корреляции активов и индексов
- Альтернативные варианты для расчета риска:
- VaR
- CVaR
- Полудисперсия
- Вычисление ошибки следования для индексного фонда
- Вычисление коэффициента бета
- Применение метода Монте-Карло для финансовых временные рядов
- Вычисление доходности к погашению и дюрации для облигаций
- Вычисление Adjusted Close (учет сплитов, дивидендов и купонов в цене закрытия)
На основе имеющихся функций довольно легко можно строить графики, отображать информацию при помощи простых в освоении возможностей языка Python.
Пример: вычисление ошибки следования российских индексных фондов акций (ПИФ)
Открытая база данных финансовых активов и экономических показателей
Все функции yapo были бы почти бесполезны, если бы их не было возможно применить к историческим данным. Поэтому библиотека работает вместе с API доступом к нашей открытой базе исторических данных для активов, индексов и экономических показателей.
В настоящее время в нашей базе присутствуют:
- Исторические данные для всех акций и ETF, доступных на следующих биржах:
- NYSE (США)
- NASDAQ (США)
- CBOE (США)
- MICEX (Россия)
- Взаимные фонды США
- Наиболее важные ценовые индексы и индексы полной доходности
- Паевые инвестиционные фонды (ПИФ)
- Курсы валют ЦБ (Рубль, Евро, Доллар США)
- Инфляция (США, ЕС, Россия)
- Ставки максимальной процентной ставки TOP-10 банков России
В ближайшее время база данных будет расширена и станут доступны следующие данные:
- Новые биржи:
- LSE (Великобритания)
- SSE (Китай)
- BSE (Индия)
- Данные по российским облигациям
- Цены золота
- Цены серебра
- Курсы криптовалют
Библиотека yapo – проект с открытым кодом
В настоящее время библиотека опубликована на GitHub и легко устанавливается на популярных операционных системах: Windows, Lunux, MacOS
pip install yapo
Примечание: для Windows требуется предварительная установка Python 3
Библиотека может быть запущена онлайн без предварительной установки через MyBinder, где вы найдете примеры простейших вычислений и действий с данными в формате Jupyter Notebook.
Комьюнити проекта
Наш проект нацелен на формирование активного сообщества, заинтересованного в развитии направления вычислительных финансов на основе открытого кода. Мы используем максимально открытую лицензию MIT, которая не ограничивает любое частное и коммерческое применение yapo.
Участие в комьюнити проекта возможна следующими способами:
- Участие в разработке программного обеспечения библиотеки (Python, F#)
- Тестирование библиотеки и выявление ошибок
- Создание примеров применения библиотеки и обучающих материалов
- Написание документации и примеров использования
- Совершенствование сайта проекта okama.io (TypeScript, Angular 2)
- Развитие базы финансовых и экономических данных и API (GraphQL)
- Финансовая помощь проекту
Если yapo вам понравился, поставьте "звезду" в GitHub.
Следующая статья будет посвящена типичным ошибкам в финансовых вычислениях и работе с временными рядами исторических финансовых данных (Time Series).

Похожие материалы:
— Python: Тип данных для финансовых вычислений или как избежать ошибок
— Сайт Okama.io - инструменты портфельного инвестора
— Python помогает готовить налоговую декларацию
— Финансовая библиотека с открытым кодом на Python - yapo
Комментарии ()