В этом посте я хочу рассмотреть вариант арбитражной стратегии, и протестировать его на чувствительность к проскальзыванию, чтобы понять возможность применения.
Далее будут приведены мои субъективные умозаключения.
Для начала перечислю виды арбитража, которые я знаю:
Момент, который объединяет эти стратегии, состоит в том, что торговая позиция выставляется всегда одновременно по двум инструментам в противоположные стороны (если активы прямо скоррелированы, и в одинаковые стороны в ином случае).
Все эти арбитражные стратегии в основном относятся к классу рыночно-нейтральных «mean reversing» стратегий, потому что не следуют за трендом, а пытаются вернуться к некой справедливой цене актива (та же трендовая составляющая), выставляя позиции против отклонения от тренда, хотя, конечно, можно придумать и трендовые стратегии, использующие актив-«поводырь» для прогнозирования тренда.
Основные отличия между подходами трендовых и рыночно-нейтральных стратегий:
Трендовые стратегии:
— мало сделок, но они длительные по времени
— «позвольте прибыли течь»
— «режьте свои убытки»
Рыночно-нейтральные стратегии:
— много быстрых сделок
— быстро забери свою прибыль
— не фиксируй убыток, дождись возвращения рынка к «справедливой» цене
Каждый из этих принципов может вызвать скепсис и критику, но для трейдера они должны трансформироваться в набор конечных прикладных инструментов его выбранной торговой стратегии.
Итак, начнем. Для рассмотрения возьмем календарный арбитраж на одном из фьючерсов FORTS.
По ближнему фьючу будем прогнозировать «справедливую цену» дальнего фьюча.
При слове «прогнозировать» начинаются вопросы. В нашей стратегии прогнозировать необходимо трендовую составляющую, и поэтому надо отделить ее от шума. Кто-то делает это разновидностями средних, борясь с запаздыванием. Кто-то использует семейство подходов GARCH/ARIMA с разными порядкам составляющих авторегрессии, скользящего среднего и интеграционной составляющей, подключает логарифмирование возвратов, проверкой ряда на единичные корни расширенным тестом Дики-Фуллера (ADF тест) или ему подобными.
Лично я не стал пробовать добиваться гомоскедастичности и стационарности некой производной временного ряда для точного прогнозирования. Я использую рекурсивный низкочастотный фильтр и линейную модель развития тренда (ну или научным языком модель AR(1)).
При расхождении наблюдаемой цены дальнего фьюча от «справедливой цены» будем входить в позицию.
Делаем все эксперименты на среде бэктеста, реализованной на Python на основе библиотеки Zipline.
Работать будем на минутках на фьючерсе доллара:

Теперь моделируем параметры проскальзывания. В отличие от прошлых статей, здесь более сложная модель проскальзывания:
— проскальзывание всегда пессимистичное (всегда ухудшает цену входа в сделку)
— значение проскальзывания случайное, от 1 до 10 рублей.
Это проскальзывание происходит в реальности между моментом, когда вы увидели подходящую цену в стакане и отправили брокеру ордер, и моментом исполнения рыночного ордера. На него влияют скорость вашего соединения, скорость обработки сигналов вашей торговой платформы и волатильность торгуемого инструмента в данный момент времени.

Дополнительно устанавливаем комиссию:

Теперь сам алгоритм. В нем мы достижение цели каждой сделки проверяем по обеим инструментам сразу, с учетом цен HIGH и LOW, поскольку тестируем работу с рыночными ордерами:

В нем мы:
— работаем по двум инструментам рыночными ордерами (MASTER и SLAVE)
— ограничиваем свою прибыль
— не используем стоп-лоссов
Попросим алгоритм показать интересующие нас результаты бэктеста, и вывести графики:

График баланса:

Отдельно смотрим на Beta-коэффициент регрессии двух активов

И посмотрим на сделки на графике цены одного из инструментов:

И посмотрим один конкретный день:

Глядя на график, вспоминаем, что в арбитраже по одному конкретному инструменту сделка чаще всего будет убыточная (вероятность, когда обе разнонаправленные сделки принесут прибыль, редка).
А теперь проверим, что будет, если проскальзывание всегда будет 10 рублей:


Как видим, арбитражная стратегия заманчива для использования, но очень чувствительна к волатильности активов и каналам связи. Поэтому она может быть применима либо для низковолатильных активов, либо при аллокации торговых серверов на бирже.
У таких стратегий есть известные отрицательные стороны и риски, например, вероятность появления большого и долгого по срокам отклонения одного актива от «средней» (или «справедливой») цены вследствие рыночной ситуации или нарушения корреляции между торгуемыми активами. Бороться с этим риском можно методами управления капиталом и другими способами.
Прошу практиков подсказать:
Думаю к чему-нибудь да придете, если конечно терпения хватит на длительное прохождение практики.