Разработка алгоритма mean reversion

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1306 услуг
Разработка алгоритма mean reversion
Средний
~1-2 недели
Часто задаваемые вопросы

Направления блокчейн-разработки

Этапы блокчейн-разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1288
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    902
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1122
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    859

Разработка алгоритма mean reversion

Mean reversion — торговая концепция: цена актива после отклонения от своего исторического среднего склонна возвращаться обратно. Это противоположность momentum-торговле. Алгоритм открывает позицию против краткосрочного движения, рассчитывая на возврат к среднему.

Когда работает mean reversion

Стратегия эффективна в конкретных рыночных условиях:

  • Флэт/боковик — цена колеблется вокруг определённого уровня
  • High-frequency движения — краткосрочные отклонения, после которых market makers возвращают цену
  • Overextended moves — движение значительно превысило ATR, вероятен откат
  • Фундаментально устойчивые активы — активы с сильным спросом на конкретных уровнях

Стратегия плохо работает в тренде: открыв шорт на отклонении вверх, можно «поймать» продолжение тренда.

Индикаторы для mean reversion

Bollinger Bands: классический инструмент. Цена касается нижней полосы (−2σ) → покупка. Касается верхней (+2σ) → продажа. Выход при возврате к средней (SMA 20).

RSI (Relative Strength Index): RSI < 30 → oversold → потенциальная покупка. RSI > 70 → overbought → потенциальная продажа.

Z-score от rolling mean:

def zscore_signal(prices, window=20):
    rolling_mean = prices.rolling(window).mean()
    rolling_std = prices.rolling(window).std()
    z = (prices - rolling_mean) / rolling_std
    return z

Сигнал покупки при Z < -2, продажи при Z > +2, закрытие при |Z| < 0.5.

Mean Reversion Index (MRI): собственный индикатор на основе расстояния от EMA и исторического ATR:

MRI = (Price - EMA(n)) / ATR(n)

Фильтр тренда

Без фильтра тренда mean reversion алгоритм разрушителен на трендовых рынках. Добавляем фильтры:

  • ADX < 25: торгуем только когда тренд слабый (ADX — индикатор силы тренда)
  • Price in range: цена между EMA(50) и EMA(200) — флэтовая зона
  • Choppiness Index > 61.8: рынок в состоянии хаоса, а не тренда

Entry и exit логика

Entry: открытие позиции при достижении порогового Z-score + подтверждение разворотной свечи (pin bar, hammer, engulfing).

Exit:

  • Profit target: возврат к rolling mean (Z-score = 0)
  • Stop-loss: дальнейшее расширение отклонения до Z = ±3.5 (или фиксированный % от ATR)
  • Time-based exit: если через N свечей позиция не закрылась в прибыль — закрываем

Частичный take profit: закрываем 50% позиции при Z = ±1.0, остаток при Z = 0.

Оптимизация параметров

Параметры (window для mean/std, entry Z-score, exit Z-score) оптимизируются через walk-forward анализ на исторических данных. Важно избегать overfitting: тестируем на нескольких независимых периодах.

Стек: Python (pandas, numpy, ta-lib), CCXT для биржевого подключения, PostgreSQL для хранения сигналов и сделок. Параметры конфигурируются через YAML файл без изменения кода.