Надеюсь получить интересные идеи и конструктивную критику от участников на мои попытки подобрать алгоритмы возврата к среднему (Mean reversion).
Вкратце, что я знаю о системах возврата к среднему: системы, построенные на одном инструменте, являются контр-трендовыми, потому что тренд отклоняет график от средней, а заходить в сторону к средней, значит заходить против тренда. В этом же заложен главный риск таких систем – длинный тренд приводит к долгой и большой просадке. Другая вариация систем возврата к среднему – арбитраж, когда вместо одного инструмента рассматриваются два и более. В этом случае под «средней» понимается некий синтетический курс, зависящий от курсов рассматриваемых инструментов. Расхождение какого-либо из инструментов от этого синтетического курса возможно в случае нарушения глобальной корреляции, что бывает не часто, но пренебрегать таким риском нельзя.
Примером таких систем могут быть парный арбитраж на коррелируемых инструментах, календарный арбитраж, треугольники кросс-курсов валют форекса, или арбитраж бумаг, входящих в индекс, против самого индекса.
Стандартные правила работы с контр-трендовыми системами такие:
— отсутствие стоплоссов
— небольшая, но частая прибыль
То есть сначала надо найти такую среднюю, вокруг которой будут колебаться курсы инструментов.
Возьмем инструменты с коэффициентом корреляции не ниже 0.9 и проверим на периоде.Тикеры в данном случае не важны. Это может быть календарные фьючи, коррелируемые фьючи, акции или, например, крипта.
Сначала смотрим графики:Подтвердим визуальную корреляцию на цифрах:
Теперь надо понять, что для нас будет являться той самой средней. Это не обязательно спред между курсами, это может быть некая производная. Например, прогнозная цена одной бумаги на сновании курсов оставшихся рассматриваемых бумаг портфеля. Как конкретно прогнозировать – дело личное.
Посмотрим на спред между прогнозной ценой и наблюдаемой:
Теперь надо придумать, как это использовать. Можно открывать позицию при абсолютных значениях спрэда, а можно открывать позицию при относительных значениях (в стандартных отклонениях, натравив на спрэд полосы боллинджера, например).
Посмотрим на распределение спреда, чтобы определить границы:
Распределение не похоже на нормальное. Тест Шапиро-Уилка подтверждает:
Проверим хвосты распределения графически:
Похоже на тяжелые хвосты. Посмотрим на самый полезный с моей точки зрения график распределения:
Теперь видны квантили значений спреда и число выбросов.
Под конец проверим ряд спрэда на автокорреляцию:
Коррелограмма по коэффициентам автокорреляции убывает достаточно медленно, из-за чего значимыми оказались коэффициенты автокорреляции вплоть до 20 лага. Это является показателем нестационарности ряда данных спрэда.
Кстати, если алгоритм формирования спрэда имеет параметры, то при подборе таких параметров я ставлю задачу увеличить частоту возврата к среднему. При переборе параметров, гридсерче либо генетическим алгоритме в качестве цели ставим задачу уменьшения значения HalfLife – половины времени отклонения от средней. На моем спрэде это 6 минут.
Вот теперь анализ спрэда закончен. Теперь надо глядя на эти картинки, «приземлить» их на торговую стратегию.
Раз у нас тяжелые хвосты с кластерами выбросов, значит при попытке войти на каком-то уровне спреда в сторону средней, у нас возможен долгий период просадки. Поскольку дополнительно всегда есть риск расхождения коррелируемых инструментов, попробуем нарушить стандартный подход к арбитражу, и заложить в него стоплоссы. Размер убытка при расхождении возьмем -300 рублей на позицию (это значение хорошо видно на графике квантилей и выбросов), и при этом соблюсти баланс числа стоплоссов и частоты сделок (мы не хотим долго сидеть в позе с вариационным убытком, и также не хотим много мелких зафиксированных убытков).
Сделаем простую логику торгового алгоритма: стоплосс -300 руб, вход при отклонении 80 руб, забираем минимальный профит 30 руб (чтоб покрыть комиссию). Соотношение стоплосса к профиту непривычно дикое, но проверим результаты:
Trades: 636, stops: 22, доля: 3.46%
Смотрится неплохо. При подборе параметров торгового алгоритма полезно смотреть на показатель Daily VAR, в идеале вывести его в плюс.
Буду запускать его на боевом сервере в режиме эмуляции сделок, для проверки.
Подскажите, а как подступиться к календарному спрэду? Хочется, но пока не получается.
Да вроде и добавить нечего, надо только еще издержки учесть и спред-выбросы (дивиденды, ставки и пр.).
Я бы еще первые лаги частной АКФ учел. Но это уже на любителя.
Подскажите, а как учесть первые лаги АКФ? На прикладном уровне…
Я с таким ещё не сталкивался.
Эквити стратегий с болшим отношением лосса к профиту часто так выглядят, просто в диапазон моделирования не попают редкие случаи больших лоссов. Легко впасть в заблуждение, что матожидание положительное.
Тестируйте ширше без изменения настроек.
Если только на крипту переходить, но нам придется нового робота под новую биржу делать(
Только средняя не 50% а 55% я писал уже об этом.
Если есть интерес то в личку.
Если про первое говорить (как в названии), то это не более чем когнитивное искажение. Нет никакого возврата к среднему ( с чего бы?). Средняя догоняет цену, а никак не наоборот. А это заработать не поможет.
Но, думаю, есть много других кандидатов на описание поведения цены. Не лучше и не хуже. То есть никак не описывающих.
Одинокий человек, возвращающийся домой с работы и двое, возвращающиеся в семью — в их поведениях разве количеством людей в процессе всё определяется?
Но думаю в крипте мало шансов найти такое, там все бешеной волатильности.
В акциях тоже не густо для арбитража, там все трендует.
Самое лучшее для арбитража брать фьючерсы на комоды или индекс.Ведь там можно играть уже разными месяцами одномоментно.