В продолжение прошлого поста сравниваю по логам еще один день:
На данных бэктеста: 17 сделок, прибыль 844 пунктов
OPEN 236 short 2021-11-24 07:25:00+00:00
CLOSE short 2021-11-24 07:47:00+00:00 profit= 51.0
OPEN 237 short 2021-11-24 07:54:00+00:00
CLOSE short 2021-11-24 07:55:00+00:00 profit= 86.0
OPEN 238 short 2021-11-24 08:01:00+00:00
CLOSE short 2021-11-24 08:03:00+00:00 profit= 40.0
OPEN 239 short 2021-11-24 08:04:00+00:00
CLOSE short 2021-11-24 08:45:00+00:00 profit= 32.0
OPEN 240 short 2021-11-24 10:10:00+00:00
CLOSE short 2021-11-24 10:11:00+00:00 profit= 43.0
OPEN 241 short 2021-11-24 10:11:00+00:00
CLOSE short 2021-11-24 10:27:00+00:00 profit= 32.0
OPEN 242 short 2021-11-24 10:33:00+00:00
CLOSE short 2021-11-24 10:36:00+00:00 profit= 60.0
OPEN 243 short 2021-11-24 10:52:00+00:00
CLOSE short 2021-11-24 10:56:00+00:00 profit= 58.0
OPEN 244 short 2021-11-24 11:15:00+00:00
CLOSE short 2021-11-24 11:18:00+00:00 profit= 53.0
OPEN 245 short 2021-11-24 11:31:00+00:00
CLOSE short 2021-11-24 11:35:00+00:00 profit= 48.0
OPEN 246 short 2021-11-24 12:22:00+00:00
CLOSE short 2021-11-24 12:40:00+00:00 profit= 94.0
OPEN 247 short 2021-11-24 13:23:00+00:00
CLOSE short 2021-11-24 13:30:00+00:00 profit= 61.0
OPEN 248 short 2021-11-24 13:45:00+00:00
CLOSE short 2021-11-24 13:46:00+00:00 profit= 37.0
OPEN 249 short 2021-11-24 16:51:00+00:00
CLOSE short 2021-11-24 16:54:00+00:00 profit= 40.0
OPEN 250 short 2021-11-24 19:19:00+00:00
CLOSE short 2021-11-24 19:23:00+00:00 profit= 35.0
OPEN 251 short 2021-11-24 19:23:00+00:00
CLOSE short 2021-11-24 19:39:00+00:00 profit= 39.0
OPEN 252 short 2021-11-24 19:42:00+00:00
CLOSE short 2021-11-24 20:05:00+00:00 profit= 35.0
Я нахожусь в процессе тестирования на промышленных данных тех моделей, которые я разработал с помощью системы Backtest’а.
В основе системы лежит open-source библиотека Zipline, разработанная стартапом Quantopian, но не поддерживаемая где-то с апреля этого года, когда этот стартап приказал долго жить.
В библиотеке допилена возможность онлайн-закачки данных с источников (финам, mfd, YF), достаточно просто в алгоритме указать, какие тикеры нужны за какой период, и данные будут в нужном виде скачаны и преобразованы. А также допилена возможность работать с минутным таймфреймом.
Поскольку библиотека реализована на Python, то в пайплайн алгоритма можно вставить любые методы обработки и анализа данных, включая библиотеки машинного и глубокого обучения, сразу в одном ноутбуке и скачав данные, и обучив модели, и проведя бэктест алгоритма, что дико удобно.
В принципе, проверена даже техническая возможность повторить портал Quantopian, добавив на какой-либо сайт возможность работы с ноутбуком Zipline, расшаривая (при желании) для других пользователей на форуме либо полный скрипт пользовательского алгоритма, либо его результаты (таблицы и графики).
Надеюсь получить интересные идеи и конструктивную критику от участников на мои попытки подобрать алгоритмы возврата к среднему (Mean reversion).
Вкратце, что я знаю о системах возврата к среднему: системы, построенные на одном инструменте, являются контр-трендовыми, потому что тренд отклоняет график от средней, а заходить в сторону к средней, значит заходить против тренда. В этом же заложен главный риск таких систем – длинный тренд приводит к долгой и большой просадке. Другая вариация систем возврата к среднему – арбитраж, когда вместо одного инструмента рассматриваются два и более. В этом случае под «средней» понимается некий синтетический курс, зависящий от курсов рассматриваемых инструментов. Расхождение какого-либо из инструментов от этого синтетического курса возможно в случае нарушения глобальной корреляции, что бывает не часто, но пренебрегать таким риском нельзя.
Примером таких систем могут быть парный арбитраж на коррелируемых инструментах, календарный арбитраж, треугольники кросс-курсов валют форекса, или арбитраж бумаг, входящих в индекс, против самого индекса.
В этом посте я хочу рассмотреть вариант арбитражной стратегии, и протестировать его на чувствительность к проскальзыванию, чтобы понять возможность применения.
Далее будут приведены мои субъективные умозаключения.
Для начала перечислю виды арбитража, которые я знаю:
Момент, который объединяет эти стратегии, состоит в том, что торговая позиция выставляется всегда одновременно по двум инструментам в противоположные стороны (если активы прямо скоррелированы, и в одинаковые стороны в ином случае).
Все эти арбитражные стратегии в основном относятся к классу рыночно-нейтральных «mean reversing» стратегий, потому что не следуют за трендом, а пытаются вернуться к некой справедливой цене актива (та же трендовая составляющая), выставляя позиции против отклонения от тренда, хотя, конечно, можно придумать и трендовые стратегии, использующие актив-«поводырь» для прогнозирования тренда.
Как вы знаете (сильно упрощая), искусство управляющих фондами и портфелями состоит в подборе состава портфеля для достижения заданного соотношения риска и доходности, согласно современной портфельной теории Марковица. В портфель набираются различные инструменты с разными весами для снижения рисков и увеличения возврата (в целом).
И в зависимости от стратегии, портфель ребалансируется с частотой раз в год/квартал/месяц…
Суть ребалансировки — подборка весов портфеля методом решения задачи оптимизации с помощью функций квадратичного программирования, или поиск весов между активами, которые в результате отвечали бы:
Полностью приводить теорию не имеет смысла, она доступна для желающих в интернете. Особенно рекомендую понять тему эффективной границы. Это суть портфельной теории.
Здесь периодически возникают статьи про применение нейронок в трейдинге.
Я решил поделиться примером того, как в одном пайплайне (единая структура программного кода) можно построить, обучить и протестировать нейронку в торговом алгоритме.
Статья будет более полезна и понятна тем, кто имеет хоть небольшой опыт работы с Python.
Итак, наша задача проверить, есть ли вообще надежда на успешное применение нейронных сетей в трейдинге, проверить гипотезу на простом алгоритме, понять, как можно в случае успеха перенести все на боевую среду (реальный торговый робот), и желательно, продемонстрировать все это понятно и доходчиво.
Чтобы в конце концов сделать вывод о перспективности применения нейронок, будем соревноваться с индексом РТС.
Сразу сделаю дисклеймер, все рассматриваемые и полученные в статье результаты являются лишь простым примером, и применять их на реальных деньгах не рекомендую. И я не буду давать теорию по нейронным сетям и работе с ними. Всё это находится/читается/выучивается.