Об этом проекте

PyPortfolioOpt — это открытая библиотека Python для оптимизации финансового портфеля. Она предназначена как для частных инвесторов, так и для профессионалов, прототипирующих стратегии распределения, с модульным API, вдохновлённым scikit-learn, которое позволяет комбинировать или заменять модели ожидаемой доходности, модели риска, целевые функции и оптимизаторы. Библиотека охватывает классическую оптимизацию Марковица по среднему-дисперсии через интерфейс EfficientFrontier. Поддерживаемые целевые функции включают максимальный коэффициент Шарпа, минимальную волатильность, минимальный риск при заданной доходности, максимальную доходность при заданном риске и максимальную квадратичную полезность. Пользователи могут настраивать ограничения только для длинных позиций или длинных/коротких позиций, рыночно-нейтральные портфели, лимиты позиций и дополнительные целевые функции, такие как L2-регуляризация. Для ожидаемой доходности PyPortfolioOpt предоставляет средние исторические доходности, экспоненциально взвешенные исторические доходности и доходности на основе CAPM. Инструменты ковариации и моделей риска включают выборочную ковариацию, полуковариацию, экспоненциально взвешенную ковариацию, ручное сжатие и сжатие Ledoit-Wolf, Oracle Approximating Shrinkage и оценку минимальной ковариационной детерминанты. Также включены утилиты для построения графиков ковариации. Помимо стандартной оптимизации эффективной границы, проект поддерживает распределение Black-Litterman, которое объединяет рыночные или иные априорные оценки доходности с взглядами инвестора. Дополнительные оптимизаторы включают среднее-полудисперсию, среднее-CVaR, иерархический паритет рисков и алгоритм критической линии Марковица. PyPortfolioOpt работает с pandas DataFrame, содержащими данные о ценах. Модуль DiscreteAllocation преобразует непрерывные веса портфеля в покупаемые количества акций для заданной стоимости портфеля и сообщает об остатке денежных средств. Репозиторий включает пример быстрого старта, документацию Read the Docs, кулинарную книгу из Jupyter notebooks, тестовые данные для 20 тикеров и набор тестов pytest. Его можно установить из PyPI с помощью pip или напрямую из исходного кода; он выпущен под лицензией MIT. В README явно указано, что проект не является инвестиционной рекомендацией.