Стратегия кросс-рыночного арбитража, основанная на адаптивной регуляризованной скользящей средней


Дата создания: 2023-11-16 16:20:11 Последнее изменение: 2023-11-16 16:20:11
Копировать: 0 Количество просмотров: 642
1
Подписаться
1617
Подписчики

Стратегия кросс-рыночного арбитража, основанная на адаптивной регуляризованной скользящей средней

Обзор

Эта стратегия позволяет осуществлять арбитражные сделки между различными рынками путем вычисления адаптивных нормализованных скользящих средних. Эта стратегия имеет такие характеристики, как арбитраж между рынками, динамическая корректировка параметров и контроль риска.

Стратегический принцип

Эта стратегия сначала определяет функцию scaleMinimax для стандартизации временной последовательности до заданного диапазона. Затем определяет функцию rema для адаптивного нормализованного скользящего среднего, которая вычисляет гладкую сигнальную линию sig.

  1. Определите скользящее окно с длиной по умолчанию 5 дней.
  2. Ежедневный значок - это средневзвешенное значение значка предыдущего дня по цене закрытия в тот же день. Средневзвешенное значение использует механизм адаптивного взвешивания, и чем ближе к текущему значению, тем больше вес.
  3. Добавление аргумента λ в качестве правильного термина делает преобразование sig более плавным.

После получения сигнала, стратегия определяет свободное пространство, судя по сигнала и цене. В частности:

  1. Когда сиг наносит цену, делайте больше.
  2. Когда подпись будет на цене, пусть будет пусто.

Кроме того, в стратегию добавлены гладкий коэффициент smooth и показание сигнальной линии show_line в качестве регулируемых параметров, что повышает гибкость стратегии.

Анализ преимуществ

По сравнению с традиционной стратегией скользящих средних, эта стратегия имеет следующие преимущества:

  1. Применение механизмов адаптивного нагрузки позволяет быстрее реагировать на изменения цен.
  2. Добавление регуляторов, чтобы сделать сигнальную линию более гладкой и избежать ошибочных сигналов из-за резких колебаний цен.
  3. Арбитраж на рынках позволяет извлечь выгоду из разницы цен на различных рынках.
  4. Настраиваемые параметры имеют гибкий дизайн и могут быть оптимизированы в зависимости от рыночных условий.

Риски и решения

Однако эта стратегия несет в себе определенные риски:

  1. При двустороннем перекрестке вероятность возникновения ошибочного сигнала выше. Решение заключается в соответствующей коррекции параметров сглаживания, чтобы избежать колебания сигнальной линии.

  2. Для арбитража на рынках необходимо обеспечить взаимосвязь между ценами и согласованность движения. Решение заключается в выборе рынка с высокой взаимосвязью для арбитража.

  3. Для оптимизации параметров необходимо накопить достаточно исторических данных для обратной проверки. Решение заключается в осторожной корректировке параметров в реальных сделках.

Направление оптимизации

Эта стратегия также может быть оптимизирована в следующих областях:

  1. При выборе параметров можно вводить алгоритмы машинного обучения, которые автоматически оптимизируют параметры.

  2. В генерируемом сигнале может быть введено большее количество индикаторов для комбинации, чтобы создать более стабильный торговый сигнал.

  3. На контроле риска можно установить линию стоп-лосса для контроля одиночных потерь.

  4. В случае арбитража на рынках, это может быть расширено на более релевантные виды сделок.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Crossover82%", overlay=true)

//
// Functions
//
scaleMinimax(X, p, min, max) => 
    hi = highest(X, p), lo = lowest(X, p)
    (max - min) * (X - lo)/(hi - lo) + min

rema(ts, p) => // regularized ma
    rm = 0.0, lambda = .5, a = 2 / (p + 1)
    rm := (nz(rm[1]) + a * (ts - nz(rm[1])) + lambda * (2 * nz(rm[1]) - nz(rm[2]))) / (lambda + 1)
    rm
    
//
// Inputs
//
X = input(close, title="Data source")
smooth = input(2, title="REMA smooth factor")
show_line = input(true, title="Show signal line")

//
// Main
//
p = 5
sig = rema(scaleMinimax(pow(X*p,-X) - 0.1, 100, lowest(X, 100), highest(X, 100)), smooth)

plot(show_line ? sig : na, linewidth=1)
plot(cross(sig, X) ? ohlc4 : na, style=circles, linewidth=8, color=blue, transp=50)

longCondition = crossover(sig, X)
if (longCondition)
    strategy.entry("LE", strategy.long)

shortCondition = crossunder(sig, X)
if (shortCondition)
    strategy.entry("SE", strategy.short)