На фоне текущего роста портфель обновил максимум и взял отметку в 70 млн рублей.
По совпадению я как раз завершил постепенный процесс увеличения перечня анализируемых акций, доведя их количество до 111 штук. На MOEX акций примерно в два раза больше, но у остальных совсем уж плохо с ликвидностью. В качестве потенциального направления развития можно добавить ETF, ДР, а в перспективе MOEX обещает и иностранные акции подвезти.
Для учета информации в нескольких валютах прийдется существенно переработать блок хранения данных. Опять же по совпадению прочитал пару книжек про Domain-driven design — руки чешутся переписать все чуть более грамотно.
Так же в последнее время прочитал множество статей про Reinforcement learning. Раньше никак не мог придуматься, как прикрутить RL к портфельной оптимизации, а тут вдруг возникло несколько идей. Надо будет поэкспериментировать, и возможно в итоге совершу закономерных шаг от DL к RL.
Продолжаю потихоньку добавлять новые акции для анализа в портфель и наконец добрался до 100 штук. Собираюсь включить все акции с дневным оборотом более 1% от величины портфеля (осталось примерно 25 штук), после чего заняться ETF. Чем больше акций, тем больше обучающих примеров для тренировки градиентного бустинга и сетей — сейчас около 180 тысяч, а в перспективе их количество увеличится до 250-300 тысяч.
Потихоньку продолжаю заниматься сетями. Раньше жаловался, что они обучаются существенно медленней градиентного бустинга, но после профайлинга оказалось, что тормозит не обучение, а подготовка и загрузка данных. Переписал код — в результате сети стали учатся быстрее градиентного бустинга.
Плюсом сетей является возможность реализации множества выходов — на данный момент экспериментирую с прогнозированием доходности одновременно с СКО по аналогии с GluonTS.
Для поиска гиперпараметров для градиентного бустинга использую байесовскую оптимизацию с помощью hyperopt. Для сетей решил попробовать
Наконец дошли руки сделать работающий прототип на нейронных сетях — сразу же получился результат близкий к текущей используемой модели на основе градиентного бустинга. Учитывая, что в нейронные сети подавалась только часть информации по сравнению с той, которая используется для построения признаков для градиентного бустинга, и пара простых архитектур без всякой оптимизации, то есть все шансы в перспективе обойти градиентный бустинг. Из минусов — сетки обучаются в разы медленнее бустинга, но для моей инвестиционной стратегии это не принципиально.
Сходил недавно на семинар по эволюционному поиску нейросетевых архитектур — очень проникся темой. Пока останусь на градиентном бустинге, но буду двигаться в сторону сетей и эволюционного поиска их архитектур. В какой-то момент столкну бустинг и сети в эволюционном процессе, а там посмотрим, кто победит.
По большинству эмитентов СД сформулировали рекомендации по годовым дивидендам, потому решил обновить статистику и перевести модель на новую базу расчетов с учетом данных за 2017 год. Оценка ожидаемых за следующие 12 месяцев дивидендов по портфелю изменилась с 3 067 660 до 3 045 319, а минимальных с 2 478 950 до 2 467 599. Изменения незначительны, что свидетельствует о том, что используемый подход к прогнозированию работает нормально и не склонен к переоптимизации.
В тоже время хотелось бы перейти с ежегодного обновления базы расчета на более регулярное по мере поступления новых данных об утвержденных дивидендах. К сожалению, так и не смог найти нормальней источник с большой глубиной истории и проверенными данными — везде наблюдаются те или иные косячки.
Видимо, прийдется вести свою базу данных. Переодически проверять сайты с данными по дивидендам (https://dohod.ru, https://www.conomy.ru, https://smart-lab.ru) в автоматическом режиме. При появлении новой информации на них проводится дополнительная ручная проверка, после которой обновляются данные в основной базе.
Сегодня дописал и покрыл тестами последний блок программки по управлению портфелем, а тут такой денек — волатильность подросла, и куча хороших акций продается со скидками. Последний раз система давала сигнал о необходимости торговли перед Новым годом, после чего 4 месяца ничего не менял. Но сегодня система видит большой потенциал для оптимизации портфеля — 11 СКО давненько не бывало. Завтра день будет занят, но если будет возможность продам MRSB и куплю SNGSP.
В плане дальнейшей работы над программой стоит оптимизация: изначально один расчёт занимал около 100 секунд, и достаточно просто его удалось сократить до 10 секунд. Цель снизить время исполнения до 1 секунды.
Хотя для инвестиционной торговли это не принципиально, но для дальнейшей поддержки и развития программы лучше причесать и оптимизировать код.
Продолжаю потихоньку писать программу по управлению портфелем и недавно закончил блок про оптимизации дивидендов.
Стоимостное инвестирование широко известный подход. Почему он вкратце работает. Нобелевский лауреат Шиллер открыл так называемую excess volatility puzzle, которая грубо говоря сводится к наблюдению, что цены акции гуляют существенно сильнее, чем фундаментальные показатели компаний. Соответственно, регулярно должны появляться шансы купить акции дешево относительно цены. На примере моего портфеля, годовое ско дивидендов порядка 0,7% от стоимости портфеля, а годовое ско стоимости портфеля около 10% от стоимости портфеля — различие более, чем на порядок.
После того, как купил за дешево, как долго приходится ждать возвращения цены к разумному с точки зрения фундамента уровню. Дивиденды объясняют около 15% доходности за следующий год, то есть быстрого результата ждать не стоит, но на горизонте 5 лет они объясняют более 60% доходности (выдержки из главы 20 Expected returns in the Time Series and Cross Section книжки Asset pricing) и являются одним из самых серьезных факторов, объясняющих долгосрочную доходность акций.