Okama 1.3.1. Новая версия финансовой библиотеки для Python
Вышла новая версия финансовой библиотеки okama для Python. Установить можно уже сейчас:
pip install okama -U
Простейшие примеры использования библиотеки доступны на GitHub.
Новое в версии 1.3.1
Добавлена поддержка Python 3.11.
Кроме того:
- В ошибку следования (Tracking Error) и в «бету» добавлена возможность считать скользящие.
Параметр rolling_window доступен в функциях AssetList: index_corr(), index_beta(), tracking_error(). Теперь можно строить скользящие для Ошибки следования, для беты и для корреляции с бенчмарком. - Две функции index_corr() и index_rolling_corr() слиты в одну в AssetList
- AssetList, Prtfolio, EfficentFrontier и EfficentFrontierReb теперь являются sequences(последовательностями) и обладают методами __getitem__, __iter__.
Исправление ошибок
- get_namspaces() и другие алиасы из __init__.py больше не совершают удаленных запросов по API при импорте
- попарное построение Границ эффективности plot_pair_ef() попадала при inflation=False
- Можно использовать тикеры с точкой. Такие как BRK.B
Скользящие для ошибки следования (Tracking Error)
Примеры использования новых возможностей версии 1.3.1. Выбираем самые популярные ETF, следующие S&P 500, на NYSE и LSE:
Строим 2-х летнюю скользящую для Ошибки следования (Tracking Error):
Разница впечатляет … не так ли?
0,2% - это ошибка следования американских ETF и около 5% для европейского фонда CSPX на Лондонской бирже. Откуда такая разница?
Недавно опубликовал статью Методика сравнения индексных фондов. Tracking Difference и Tracking Error 1. Там подробно объясняются, откуда берутся подобные расхождения.
Использование итерируемых объектов okama
Теперь AssetList, Prtfolio, EfficentFrontier и EfficentFrontierReb - это последовательности (sequence).
Последовательность формируется из объектов класса ok.Asset.
Можно обращаться к активу по его порядковому номеру. Например, для того чтобы посмотреть текущую цену бумаги:
Или использовать в циклах:
Изменений на сайте okama.io
Изменения в версии 1.3.1 можно увидеть на примерах в финансовом виджете Сравнение с бенчмарком на сайте okama.io.
Улучшения в документации
В документации классов AssetList, Portfolio, EfficientFrontier, EfficientFrontierReb появились новые методы:
Раньше эти методы не присутствовали на okama.readthedocs.io, т.к. документация классов не показывала наследуемые методы.
Что дальше?
К этому времени можно сказать, что все самые популярные формулы финансовой математики уже реализованы. Не все, конечно, речь идет лишь о том, что применяется к временным рядам в рамках Современной теории портфеля (СТП).
Пора приступить к проработки различных стратегий пополнений / снятий денег в портфеле. Для этого я планирую добавить отдельный класс, который будет описывать такие стратегии. У стратегии должно быть предусмотрены регулярные пополнения или снятия денег, нерегулярные пополнения (нужен список дат), пополнения с более сложными условиями (например, Value Averaging). В реальной жизни бывают и снятия и пополнения… попробуем и это предусмотреть.
Можно сказать, что сейчас реализуется простейший вариант такой стратегии – пополнение только при создании портфеля.
Новый класс (как бы его назвать?) должен быть связан с Portfolio и влиять на wealth index.
Это простая часть…
Более сложная часть плана – реализовать сравнение «выгодности» стратегий. Я думаю придерживаться концепции «один портфель – одна стратегия пополнений». Это значит, что сравнивать будем между собой не стратегии, а портфели.
С точки зрения финансов портфели, у которых есть промежуточные снятия или пополнения, можно сравнивать с помощью дисконтирования денежных поток (DCF). Придется научиться вычислять IRR и NPV портфеля.
А дальше – оптимизация весов портфеля и формирование Границы эффективности по этим критериям. В качестве целевой функции (Utility Function) можно будет использовать, например, NPV.
Что есть у коллег?
Не хочется начинать с нуля, поэтому хотелось бы посмотреть, что уже реализовано на эту тему.
Пока мне известно только о похожих вещах на Portfolio Visualizer (PV):
В PV возможны только простейшие стратегии пополнения / изъятия:
- без пополнений (есть сейчас в okama)
- пополнения с фиксированной суммой
- изъятия с фиксированной суммой
- изъятия с фиксированным процентом
Но PV это не open source. Посмотреть на реализацию там не получится.
Похожие материалы:
- Поиск по бесплатной финансовой базе данных на okama.io
- Сайт okama.io – Инструменты портфельного инвестора и альтернатива PortfolioVisualizer.com
- Охота за финансовыми данными. Или как раздобыть историю инфляции в Китае
- Релиз версии 1.2.0 финансовой библиотеки Okama для Python
- Okama: финансовая библиотека для Python и бесплатная база исторических данных
- Вебинар: Python и библиотека okama для портфельного инвестора
- Релиз версии 1.2.0 финансовой библиотеки Okama для Python
- Okama 1.4.0 - Новая версия финансовой библиотеки для Python. Портфели с пополнениями и изъятиями
- Библиотека инвестора
- Okama: финансовая библиотека для Python и бесплатная база исторических данных
Комментарии