Количественная торговая стратегия, основанная на линейном регрессионном анализе


Дата создания: 2024-01-26 15:48:35 Последнее изменение: 2024-01-26 15:48:35
Копировать: 0 Количество просмотров: 680
1
Подписаться
1617
Подписчики

Количественная торговая стратегия, основанная на линейном регрессионном анализе

Обзор

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

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

В основе адаптивной стратегии линейного возврата лежит вычисление линейного возврата к закрытию цены на некоторое количество линий корня K, образующих среднюю линию, представляющую средние цифры цены, верхнюю линию, представляющую верхнюю линию цены, и нижнюю линию, представляющую нижнюю линию цены. Конкретный процесс вычисления выглядит следующим образом:

  1. Собираем входные параметры для независимых переменных x и y, обозначенных как корень K из линии K. Здесь x - целое число от 1 до length, а y - конечная цена соответствующей линии K.

  2. Расчет коэффициента регрессии:

    • b = (∑y)/n - m(∑x)/n
    • m = [(n∑xy) - (∑x)(∑y)]/[(n∑x2) - (∑x)2]
  3. Вычислить линейную регрессию y’ для каждой K-линии, стандартная разница STDDEV

  4. Центральная линия является уравнением регрессии y’ = mx + b, и верхние и нижние колеи плавают вверх и вниз по центральной линии в пределах стандартного размера.

По мере прибытия новой K-линии, вышеперечисленные прокрутки обновляются, образуя верхний и нижний адаптивные каналы. В соответствии с перекрестками верхних и нижних полос каналов делается дополнительная подзарядка, остановка убытков около средней линии.

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

Стратегия адаптивного линейного регрессивного канала имеет следующие преимущества по сравнению с традиционной среднелинейной стратегией:

  1. Более научная, логичная, регрессионная модель анализа имеет большее статистическое значение, чем средняя линия

  2. Более гибкий и адаптируемый к изменениям цены

  3. Лучшая эффективность отслеживания, значительно лучше, чем среднелинейная стратегия для некоторых сортов

  4. Опыт работы в реальном пространстве показал хорошие результаты.

Анализ рисков

Основные риски этой стратегии:

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

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

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

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

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

  1. Поиск оптимальных параметров для тестирования большего числа комбинаций

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

  3. Увеличение стратегии по удержанию убытков, снижение риска потерь и защита капитала

  4. Добавление модуля управления позициями, изменение размеров позиций в зависимости от рыночных условий

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

В целом, стратегия линейного пути регрессии является хорошей количественной стратегией. Она имеет прочную теоретическую основу, хорошую практическую эффективность, заслуживает дальнейшего изучения и оптимизации и может стать эффективной составляющей системы количественных торгов. Но также необходимо признать ее ограничения, предотвратить риски и тщательно практиковать.

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

//@version=2
strategy("Stealthy 7 Linear Regression Channel Strategy", overlay=true)
source = open
length = input(100, minval=1)
mult1 = input(1, minval=0.001, maxval=50)
mult2 = input(1, minval=0.001, maxval=50)
DayTrader = input(title="Range Mode", type=bool, defval=false)

//Making the first least squares line
sum_x = length * (length + 1) / 2
sum_y = 0
sum_xy = 0
xyproductsum = 0
sum_xx = 0
for i = 1 to length
    sum_y := sum_y + close[i]
    sum_xy := i * close[i] + sum_xy
    sum_xx := i * i + sum_xx
m = (length*sum_xy - (sum_x * sum_y)) / (length * sum_xx - (sum_x * sum_x))
b = sum_y / length - (m * sum_x / length)

//Finding the first standard deviation from the line
difference = 0
for i = 1 to length
    y = i * m  + b
    difference := pow(abs(close[i] - y),2) + difference
STDDEV = sqrt(difference / length)

//Creating trading zones
dev = mult1 * STDDEV
dev2 = mult2 * STDDEV
upper = b + dev
lower = b - dev2
middle = b

if DayTrader == false
    if crossover(source, upper)
        strategy.entry("RGLONG", strategy.long, oca_name="RegChannel",  comment="RegLong")
    else
        strategy.cancel(id="RGLONG")

    if crossunder(source, lower)
        strategy.entry("RGSHORT", strategy.short, oca_name="RegChannel",  comment="RegShort")
    else
        strategy.cancel(id="RGSHORT")

    if crossover(source, middle) and strategy.position_size < 0
        strategy.close_all()
    if crossunder(source,middle) and strategy.position_size > 0
        strategy.close_all()

if DayTrader == true
    if crossover(source, lower) 
        strategy.entry("RGLONG", strategy.long, oca_name="RegChannel",  comment="RegLong")
    else
        strategy.cancel(id="RGLONG")

    if crossunder(source, upper)
        strategy.entry("RGSHORT", strategy.short, oca_name="RegChannel",  comment="RegShort")
    else
        strategy.cancel(id="RGSHORT")


plot(upper, title="UpperBand", color=purple, linewidth=1, style=line)
plot(lower, title="LowerBand", color=purple, linewidth=1, style=line)
plot(middle, title="MiddleBand", color=black, linewidth=1, style=line)