LRF (Linear Regression Forecast) — Прогноз линейной регрессии

Linear-Regression-Forecast
Linear Regression Forecast (прогноз по линейной регрессии) — технический индикатор, статистическом инструменте для прогнозирования будущих значений на основе прошлых данных, основанный на простой линейной регрессии по цене за окно последних N баров (периодов). Цель — оценить тренд и экстраполировать (прогнозировать) значение цены на следующий бар(ы). Визуально индикатор изображается в форме движущейся серии — для каждого пункта данных рассчитывается прогнозируемое значение линии регрессии. Последняя точка линии — прогнозируемое значение. Обычно используется как количественный способ определения основной тенденции и когда цены завышены.

Что показывает: наклон (тренд) и прогнозное значение цены; служит для определения направления тренда, силы отклонения и возможного будущего уровня цены. В отличие от скользящих средних, LRF прямо использует метод наименьших квадратов для подгонки прямой.

Преимущества: чувствителен к линейным трендам, даёт прогноз (а не только сглаженное прошлое значение), может применяться к ценам закрытия, открытия, максимумам/минимумам или другим сериям.
Ограничения: предполагает линейный характер цены на окне — при сильной волатильности или нелинейных циклах прогнозы теряют точность; чувствителен к выбору периода N; прогноз на большее число баров вперёд менее надёжен.

Как все работает?
Для того чтобы понять, как работает индикатор, сначала вам нужно понять концепцию линейной регрессии. Поверьте, это не так уж трудно. Просто на минуту забудьте, что речь идет о торговле. Давайте вместо этого представим себе группу людей с разным ростом и весом. Отразим их параметры на графике.
graph_1

Видно, что есть определенная закономерность: высокие люди обычно весят больше. А теперь вернемся к торговле. Построив на графике развитие цен во времени и модель линейной регрессии с LRF (индикатор будет делать это автоматически), трейдеры могут спрогнозировать будущие цены активов.
graph
Конечно, движение на рынке гораздо менее линейно, чем отношения между весом и ростом людей, так как нет единого фактора, определяющего будущую цену актива. Отсюда и ограниченность этого подхода. Тем не менее, этот индикатор, особенно в сочетании с разными техническими индикаторами, можно использовать, чтобы точнее определить, куда в настоящее время движется рынок.


Расчет индикатора Linear Regression Forecast, LRF

Обозначения:
— N — период регрессии (количество точек / баров).
— i = 0, 1, …, N-1 — индексы точек в окне, где i = 0 соответствует самой старой точке, i = N-1 — самой новой (иногда используют обратную нумерацию; ниже — старая → новая).
— x_i — порядковый номер (независимая переменная). Обычно используют x_i = i, либо для численной устойчивости центрируют x.
— y_i — значение цены в точке i (например, Close).
— y_hat(t) — оценка регрессии в произвольной точке t (может быть дробным, t = N означает следующий бар).
— x̄ — среднее x по окну; ȳ — среднее y по окну.

Шаги:
A. Подготовка x и y
— Берём последние N цен y_0…y_{N-1}.
— Задаём x_i = i (0..N-1). Часто для численной устойчивости центрируют: x_i’ = i — (N-1)/2. Оба подхода эквивалентны с поправкой на сдвиг линии; центрирование упрощает вычисление пересечения и уменьшает ошибки.

B. Оценка коэффициентов линейной регрессии y = a + b*x
— Наклон b:
b = (sum_{i=0}{N-1} (x_i — x̄)(y_i — ȳ)) / (sum_{i=0}{N-1} (x_i — x̄)2)
где x̄ = (1/N) sum x_i, ȳ = (1/N) sum y_i.
— Пересечение (сдвиг) a:
a = ȳ — b * x̄.

Если используете центрированные x’ (x_i’ = i — (N-1)/2), то x̄’ = 0 и формулы упрощаются:
b = (sum x_i’ * y_i) / (sum x_i’2)
a = ȳ (потому что x̄’ = 0 → a = ȳ).

C. Прогноз (Forecast)
— Прогноз на текущий (внутри окна) для позиции t (0..N-1):
y_hat(t) = a + b * x_t
— Прогноз на следующий бар (t = N, если x_i = 0..N-1):
y_hat_next = a + b * N
или при центрированных x’ — t’ = (N-1)/2 + 1 = (N+1)/2; применяйте соответствующую x’_next.

Пример формул для практической реализации (используя центрированные x’ для простоты):

1) Вычислить x_i’ = i — (N-1)/2 для i=0..N-1.
2) S_xy = sum_{i=0}{N-1} x_i’ * y_i
S_xx = sum_{i=0}{N-1} x_i’2
3) b = S_xy / S_xx
4) a = ȳ (среднее y по окну)
5) Прогноз на k баров вперёд (k = 1 для следующего):
x_next’ = (N-1)/2 + k
y_hat_next = a + b * x_next’

Если нужно прогнозировать именно на 1 бар вперёд и хотите избежать дробных индексов при неконцентрированных x:
— x_next = N (при x_i = 0..N-1)
— y_hat_next = a + b * N

Примеры численного расчёта (коротко):
— Пусть N = 5, y = [10, 11, 12, 13, 14] (линейный рост).
x = 0..4; x̄ = 2; ȳ = 12.
S_xy = sum (x — 2)*(y — 12) = ((-2)*(-2) + (-1)*(-1) + 0*0 + 1*1 + 2*2) = 10.
S_xx = sum (x — 2)2 = 10.
b = 10/10 = 1.
a = 12 — 1*2 = 10.
y_hat_next (x=5) = 10 + 1*5 = 15. (соответствует очевидному росту)

Рекомендации по реализации:
— Для скользящей (постоянно обновляемой) линии используйте вычисления по последним N точкам на каждом баре.
— Чтобы ускорить расчёт, можно поддерживать скользящие суммы sum(y), sum(x*y) и т.д., но при центрированном x суммирование x_i’ остаётся фиксированным (S_xx и x_i’ константы для данного N), поэтому для каждого окна нужно лишь пересчитывать S_xy и ȳ (или поддерживать скользящую сумму y и скользящую сумму x_i’*y_i).
— Обработайте случаи, когда S_xx = 0 (например N=1) — регрессия не определена; возвращайте NaN или цену.
— Можно строить также саму линию регрессии (a + b*x для x внутри окна) и отдельно линию прогнозов (a + b*(x_next…x_next+K-1)).


Как использовать индикатор Linear Regression Forecast, LRF

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

Некоторые эксперты считают, что благодаря методу, используемому в этом индикаторе для аппроксимации будущих цен, он может быть более точным, чем скользящая средняя. Поэтому, если ваша торговая система использует скользящие средние, попробуйте заменить их LPF. Конечно, после внесения всех необходимых корректив в стратегию.
artboard
Итак, как использовать прогноз по модели линейной регрессии в торговле? Индикатор, конечно, не скажет вам, когда открывать или закрывать сделку. Все, что он делает, это подает вам соответствующий сигнал. Когда свечи открываются и закрываются выше линии LPF, рынок движется вверх. Когда верно обратное и свечи открываются и закрываются ниже линии LPF, рынок движется вниз. Трейдеры могут использовать информацию, чтобы следовать тренду, когда получено подтверждение (точка 1 на рисунке выше) или ждать разворота (точка 2 на рисунке выше). Две свечи, которые закрываются выше/ниже линии LPF, можно считать подтверждением. Хорошая иbltz – перепроверить сигналы, полученные от LPF с импульсным индикатором, так как рыночный импульс имеет тенденцию убывать непосредственно перед разворотом тренда.

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