GFT (Gaussian Filter Trend) — Гауссов фильтр тренда (скользящая усреднённая по Гауссу, используемая как детектор тренда)

Gaussian Filter Trend — это фильтр тренда (скользящая усреднённая по Гауссу, используемая как детектор тренда), использующий свёртку ценовой серии с дискретным гауссовским ядром (Gaussian kernel). В отличие от простых скользящих средних (SMA, EMA), гауссовый фильтр присваивает вес точкам по нормальному (колоколообразному) закону: центральным точкам — наибольший, удалённым — экспоненциально меньший. Это даёт хорошее подавление высокочастотного шума при меньшей фазовой задержке относительно равновесных (несмещённых) фильтров с аналогичной степенью сглаживания.
Особенности:
— Плавность: сильное сглаживание случайных колебаний.
— Частотные свойства: действует как низкочастотный (low-pass) фильтр с контролируемой шириной полосы пропускания через параметр сигмы (σ).
— Симметрия: классический несмещённый фильтр — центр ядра располагается на текущей точке, поэтому он требует будущих значений (невозможен в реальном времени без задержки). Для практического применения на исторических данных можно использовать несмещённую форму; в реальном времени версии делают асимметричные (causal) приближения или вводят задержку (lag) равную половине длины ядра.
— Управляющие параметры: окно (kernel length, N) и стандартное отклонение σ гауссового ядра (определяет «ширину» фильтра).
Интерпретация: значение гауссовой сглаженной линии рассматривается как оценка локального тренда; наклон и пересечения с ценой/другими линиями дают сигналы тренда/разворота.
Формула расчёта Индикатора Gaussian Filter Trend
Генерация дискретного гауссова ядра:
Пусть окно размера N (нечётное), центр в i = 0, индексы k = −M..M, где M = (N−1)/2. Тогда не нормированное ядро:
g(k) = exp(−k^2 / (2 σ^2))
Нормировка для единичной суммы:
w(k) = g(k) / sum_{j=-M}^{M} g(j)
Свертка с ценой (например, с закрытиями P_t):
GFT_t = sum_{k=-M}^{M} w(k) * P_{t+k}
Примечание: формула использует значения P_{t+k} для k>0 (будущие данные) — это несмещённая (non-causal) реализация, применимая на исторических данных для точной оценки тренда.
Асимметричная (реальная, causal) версия:
Для использования в реальном времени берут k = 0..(N−1) и сдвигают ядро назад:
GFT_t_causal = sum_{k=0}^{N-1} w_c(k) * P_{t-k}
где w_c(k) — нормированное ядро, смещённое так, чтобы веса приходились на прошлые наблюдения.
Дополнительные формулы (производные для оценки наклона):
Наклон (градиент) тренда можно получить численно, например центральной разностью:
slope_t ≈ (GFT_{t+Δ} − GFT_{t−Δ}) / (2Δ)
или одношаговой разностью для более простых сигналов:
slope_t ≈ GFT_t − GFT_{t-1}
1) Каузальная (online) реализация и задержка
Причина: классический симметричный дискретный гауссов фильтр несмещён (uses future samples) и потому непригоден для live-трейдинга. Для торговли нужна каузальная (или почти-каузальная) версия.
Прямой способ (только прошлые данные):
— Сдвинуть ядро так, чтобы веса применялись к прошлним значениям: G_t = sum_{k=0}^{M} w_k * P_{t-k}, где w_k = g(k)/sum_{j=0}^{M} g(j). Здесь ядро усечено вправо (только k≥0).
— Это даёт большую фазовую задержку и искажение формы по сравнению с симметричным вариантом, но обеспечивает реальный-time работоспособность.
Полукаузальная схема (мини-макс компромисс):
— Использовать симметричное ядро, но задержку компенсировать прогнозной аппроксимацией будущих значений (например, линейная экстраполяция цены или использование AR(1)/экспоненциальная предсказательная модель). Это уменьшает кажущуюся задержку, но вводит модельную ошибку.
Рекурсивные аппроксимации (IIR-замены):
— Аппроксимация гаусса рекурсивным IIR-фильтром (последовательность простых фильтров первого/второго порядка) даёт каузальную реализацию с контролируемой фазой и меньшей вычислительной нагрузкой.
— Пример: аппроксимация через последовательность экспоненциальных сглаживаний (Cascade of first-order low-pass filters) или через разработанные коэффициенты по методу ответа в частотной области (например, метод Михайлова/Ирвина для приближения гаусса).
Измерение задержки:
— Эффективная задержка можно оценить как центр массы (centroid) весов: delay = sum k * w_k (для каузального ядра это средняя «яндекс»). Для симметричного несмещённого ядра centre = 0; для усечённого — положительное значение в тиках.
— Практически измеряют лаг между пиками/перекрёстками фильтра и оригинальной серией (cross-correlation) на исторических данных.
2) Оценка наклона (производной) гауссова тренда
Простые варианты:
— Разность: slope_t = G_t − G_{t−d} (например, d=1 или d=5). Удобно и просто.
— Центральная разность (если доступны G_{t+1}): slope_t = (G_{t+1} − G_{t−1})/2 (не каузальная).
Более точные численные производные:
— Аппроксимация первой производной через свёртку с ядром, полученным от производной гаусса: g'(k) = −(k/σ^2) * exp(−k^2/(2σ^2)). Нормировка не обязательна, но полезна для интерпретируемой амплитуды.
— Каузальная версия первой производной: взять одностороннюю аппроксимацию g’_c(k) (k≥0) и нормировать.
Шкала и нормировка:
— Производная чувствительна к масштабу σ и шагу выборки; полезно нормировать slope на сумму абсолютных весов или на среднюю величину цены (или на среднюю true range), чтобы получить сопоставимую метрику силы тренда.
Шумозащита:
— Комбинируют производную гаусса с пороговой фильтрацией, буферизацией (rolling median) или применением количественной оценки SNR (slope /
Применение в трейдинге Индикатора Gaussian Filter Trend
Цель: отделить трендовую компоненту от шума; определять направление и силу тренда, фильтровать ложные входы.
Типичные использования:
Определение направления тренда: если GFT выше цены или растёт — бычий тренд; если ниже или падает — медвежий.
Сигналы входа/выхода:
— Пересечение цены и GFT: цена пересекает GFT сверху вниз → сигнал на продажу; снизу вверх → покупка. Требуется фильтрация ложных сигналов (подтверждение объёмом, свечными паттернами, фильтра по наклону GFT).
— Пересечения двух GFT с разными σ (короткая vs длинная): классический кроссовер (аналог SMA crossover) — быстрый GFT пересекает медленный → сигнал. Лучше, чем простые SMA-кроссоверы, за счёт гладкости и контроля задержки.
— Наклон/производная GFT как фильтр силы тренда: взять сглаженную производную (см. производная гаусса) и применять порог (например, |slope| > T) для отсева слабых движений.
— Зоны консолидации: малый абсолютный наклон + низкая волатильность → откладывать входы или применять скальпинг/диапазонную стратегию.
— Тейк-профит/стоп-лосс: использовать расстояние между ценой и GFT в качестве динамической меры (ATR-normalized) — например, стоп за N·ATR от GFT при входе по откату к GFT.
Управление рисками
Благодаря своим сглаживающим свойствам этот показатель также служит ценным компонентом стратегий управления рисками. Четко указывая направление тренда, трейдеры могут более эффективно устанавливать стоп-лосс-ордера и целевые показатели прибыли, снижая подверженность резкому развороту рынка.
Практические правила фильтрации и повышения надёжности
Совместное подтверждение:
— Объём: усиление сигнала при росте объёма на направлении пересечения.
— Волатильность: активировать сигналы только при ATR выше минимального порога (иначе много «шумных» срабатываний).
— Мультифрейм: направление старшего TF должно совпадать с сигналом младшего (например, дневной GFT подтверждает часовой сигнал).
Нормировка порогов:
— Нормируйте наклон по текущей волатильности: slope_norm = slope / ATR (или /σ_price). Это делает порог устойчивым к смене режимов рынка.
— Для сравнения производных при разных σ полезна приведённая нормировка: slope_scaled = slope * σ (поскольку амплитуда производной ∝ 1/σ, смещая влияние ширины ядра).
Шумозащита:
— Сглаживание наклона: применяйте короткий медианный фильтр или EMA к последовательности наклонов, чтобы убрать одиночные выбросы.
— Пороговая фильтрация (SNR-подход): рассчитывайте относительную «силу» наклона как SNR = |slope| / (std_noise), где std_noise можно оценивать как стандартное отклонение остатков P_t
GFT_t за скользящее окно. При SNR < SNR_min не принимать сигналы.
- Буферизация/ожидание подтверждения: после пересечения требуйте удержания направления в течение k баров или подтверждение по объёму/свечной структуре.
- Адаптивные пороги: строите порог T(t) = c · ATR(t) или T(t) = c · rolling_std(residuals), где c подбирается по оптимизации на истории.
- Комбинация с фильтром по времени/регламентом (time-of-day, новости) для уменьшения ложных срабатываний в низкой ликвидности.
Управление задержкой и калибровка параметров
Оцените лагающие свойства каузальной реализации: delay ≈ центр массы каузального ядра (delay = sum k·w_k). Используйте это при расчёте уровня входа/выхода (например, смещайте сигналы на delay при оценке прибыльности в ретроспективных тестах).
Подбор σ и окна N:
— Короткие TF (минутные) — маленькое σ (например, 1.5–3), N ≈ 6–20.
— Средние TF (часовые)


















