Привет, после небольшого перерыва возвращаемся к бэктестам. Добавим к простой трендовой стратегии на Мосбирже 4 варианта выхода из позиций с возрастающим уровнем сложности. Для первых двух стратегий особых навыков не требуется, третья требует парсинга Телеграма и для последней потребуется обученная нейронная сеть при разметке сообщений.

Это продолжение рассуждений о риске и доходности акций на Московской бирже: https://smart-lab.ru/blog/625771.php Основные выводы из первой части:
1) Увеличение риска (стандартного отклонения) приводит к снижению будущей доходности акций, а не наоборот;
2) Стратегия, выстроенная только на основе исторической волатильности, несамостоятельна и проигрывает индексу.
В этот раз возьмем за основу трендовую стратегию в самом простом виде – на пересечении 1-месячной и 3-х месячной скользящей средней. И будем снижать риск разными способами с целью поднять доходность, Шарп, сократить время боковиков и корреляцию с бенчмарком. Об эффективности трендовых стратегий в России можно почитать здесь https://smart-lab.ru/blog/611263.php на глобальных ETF здесь
В связи с хайпом вокруг искуственных нейронных сетей стало интересно: насколько реально обучить сеть или дерево или иную технологию машинного обучения для восстановления вида неизвестной функции по следующим значениям обучающей выборки:
Сеть или дерево должна вычислить значение этой функции для аргумента x==97853
Философский подтекст состоит в том, что человек в состоянии определить вид этой функции совершенно достоверно и получить нулевую ошибку на валидационной выборке любого размера и сложности.
Если технологии ML не могут дать адекватного ответа на этот вопрос, то могут ли они в принципе быть полезны в торговле?
UPDATE 1: За прошедшие несколько часов 2 человека однозначно продемонстрировали способность восстановить вид искомой функции. Что подтверждает простоту озвученной задачки.
Наконец дошли руки сделать работающий прототип на нейронных сетях — сразу же получился результат близкий к текущей используемой модели на основе градиентного бустинга. Учитывая, что в нейронные сети подавалась только часть информации по сравнению с той, которая используется для построения признаков для градиентного бустинга, и пара простых архитектур без всякой оптимизации, то есть все шансы в перспективе обойти градиентный бустинг. Из минусов — сетки обучаются в разы медленнее бустинга, но для моей инвестиционной стратегии это не принципиально.
Сходил недавно на семинар по эволюционному поиску нейросетевых архитектур — очень проникся темой. Пока останусь на градиентном бустинге, но буду двигаться в сторону сетей и эволюционного поиска их архитектур. В какой-то момент столкну бустинг и сети в эволюционном процессе, а там посмотрим, кто победит.

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

По большому счету дальше можно лишь потихоньку расширять перечень анализируемых бумаг и добавлять новые признаки, объясняющие доходность, но придумывать в рукопашную новые фичи не хочется, поэтом попробую переписать все на нейронных сетях и сырых котировках без всякой обработки.
В основном раньше имел дело с TF/Keras, но по ощущениям в последнее время подавляющая часть статей по сетям сопровождается кодом на PyTorch, поэтому решил изучить его и использовать в своей программе. В качестве обучения собираюсь принять участие в соревновании Кто поставит лайк без использования градиентного бустинга только с помощью PyTorch. Ну о потом приступить уже к использованию сеточек для прогнозирования доходности.


Приветствую вас, любители трейдинга!
Видел на смартлабе посты про Пайтон (Python), читать их было очень интересно, в том числе и про то, как НС торгует на бирже. В настоящее время Пайтон (https://www.python.org/) занимает 3 строчку в рейтинге по языкам программирования (https://www.tiobe.com/tiobe-index//). Сам изучал в детстве бейсик (Basic), потом паскаль (Pascal) и далее посмотрел множество языков программирования, вплоть до ассемблера. Самый тяжелый С++)), а все потому, что у него код пишется сокращенными символами, например «начало» и «конец» программы обозначались фигурными скобками «{ …здесь код… }», а у паскаля «begin» и «end». Согласитесь, проще запомнить слова, чем множество лишних для нас символов, которые хранятся у нас в головном мозге, нейронных клетках. Программировал из любопытства.
Я хочу поделиться с вами, про Нейронную сеть (НС), что меня заставляет двигаться в этом направлении вперед. Простую НС теперь может создать любой желающий, даже ребенок с 6 лет сможет понять суть работы НС и попробовать написать программу. Программировать можно через веб-сайт, например Гугол (Google) сделал потрясающую колабораторию (так он ее называет) для программирования на Пайтон (https://colab.research.google.com/).
