tjlee / poptimizer

Оптимизация долгосрочного портфеля акций

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Оптимизация долгосрочного портфеля акций

О проекте

По образованию я человек далекий от программирования. Занимаюсь инвестициями с 2008 года. Целью проекта является изучение программирования и автоматизация процесса управления портфелем акций.

Используемый подход не предполагает баснословных доходностей, а нацелен на получение результата чуть лучше рынка при рисках чуть меньше рынка при относительно небольшом обороте. Портфель ценных бумаг должен быть достаточно сбалансированным, чтобы его не страшно было оставить без наблюдения на продолжительное время.

Большинство частных инвесторов стремиться к быстрому обогащению и, согласно известному афоризму Баффета, "мало кто хочет разбогатеть медленно", поэтому проект является открытым. Стараюсь по возможности исправлять ошибки, выявленные другими пользователями, и буду рад любой помощи от более опытных программистов. Особенно приветствуются вопросы и предложения по усовершенствованию содержательной части подхода к управлению портфелем.

Проект находится в стадии развития и постоянно модифицируется (не всегда удачно), поэтому может быть использован на свой страх и риск.

Основные особенности

Оптимизация портфеля

  • Базируется на Modern portfolio theory
  • При построении портфеля учитывается более 190 акций (включая иностранные) и ETF, обращающихся на MOEX
  • В качестве критерия оптимизации используется максимизация отношения доходности сверх безрисковой ставки к риску портфеля
  • Используется ансамбль моделей для оценки неточности предсказаний ожидаемых доходностей и рисков отдельных активов
  • Используется робастная инкрементальная оптимизация на основе расчета достоверности улучшения метрик портфеля в результате торговли с учетом неточности имеющихся прогнозов вместо классической mean-variance оптимизации
  • Применяется поправка Бонферрони на множественное тестирование с учетом большое количества анализируемых активов

Прогнозирование параметров активов

  • Используются нейронные сети на основе архитектуры WaveNet с большим receptive field для анализа длинных последовательностей котировок
  • Осуществляется совместное прогнозирование ожидаемой доходности и ее дисперсии с помощью подходов, базирующихся на GluonTS: Probabilistic Time Series Models in Python
  • Для моделирования толстых хвостов в распределениях доходностей применяются смеси логнормальных распределений
  • Используются устойчивые оценки исторических корреляционных матриц для большого числа активов с помощью сжатия Ledoit-Wolf

Формирование ансамбля моделей

  • Осуществляется выбор моделей из многомерного пространства гиперпараметров сетей, их оптимизаторов и комбинаций признаков
  • Для исследования пространства применяются подходы алгоритма Метрополиса — Гастингса/Имитации отжига
  • Для масштабирования локальной области поиска и кодирования гиперпараметров используются принципы дифференциальной эволюции
  • Для выбора моделей в локальной области применяется распределение Коши для осуществления редких не локальных прыжков в пространстве гиперпараметров
  • При отборе претендентов в ансамбль осуществляется последовательное тестирование с соответствующими корректировками уровней значимости

Источники данных

  • Реализована загрузка котировок всех акций (включая иностранные) и ETF, обращающихся на MOEX
  • Поддерживается в актуальном состоянии база данных дивидендов с 2015г по включенным в анализ акциям
  • Реализована возможность сверки базы данных дивидендов с информацией на сайтах:

Направления дальнейшего развития

  • Применение нелинейного сжатия Ledoit-Wolf для оценки корреляции активов
  • Реализация сервиса на Go для загрузки всей необходимой информации
  • Рефакторинг кода на основе DDD, MyPy и wemake
  • Использование архитектур на основе трансформеров вместо WaveNet
  • Поиск оптимальной архитектуры сетей с помощью эволюции с "нуля" по аналогии с Evolving Neural Networks through Augmenting Topologies
  • Использование Reinforcement learning для построения портфеля

Особые благодарности

  • Evgeny Pogrebnyak за помощь в освоении Python
  • RomaKoks за полезные советы по автоматизации некоторых этапов работы программы и исправлению ошибок
  • AlexQww за содержательные обсуждения подходов к управлению портфелем, которые стали катализатором множества изменений в программе

About

Оптимизация долгосрочного портфеля акций

License:The Unlicense


Languages

Language:Python 99.9%Language:Makefile 0.1%