Reversion System for the Cointegration Spread of Two Currency Pairs"

Reversion System for the Cointegration Spread of Two Currency Pairs"

2 августа 2026, 15:51
Vitaly Muzichenko
0
9
Mean Reversion System для коинтеграционного спреда двух валютных пар

Mean Reversion System — это система статистического парного трейдинга, предназначенная для поиска моментов, когда взаимосвязанное движение двух валютных пар временно отклоняется от своего нормального равновесия.

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

На основе исторических данных система определяет нормальное состояние спреда, рассчитывает его текущее отклонение в виде Z-Score и отслеживает выход за динамические границы Bollinger Bands.

Когда спред достигает экстремального значения и начинает возвращаться обратно, система формирует торговый сигнал. Таким образом, стратегия не пытается угадать направление рынка, а использует принцип Mean Reversion — возврата статистического отклонения к среднему значению.

Логика работы

Две валютные пары → Коинтеграционный анализ → Hedge Ratio → Spread → Z-Score → Bollinger Channel → Экстремальное отклонение → Сигнал на возврат → Выход при возвращении к среднему.

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

Mean Reversion System объединяет коинтеграционный анализ, статистическую нормализацию, динамические границы и четкие правила входа и выхода в единую модель для Pairs Trading, Statistical Arbitrage и Mean Reversion Strategies.


Техническая концепция

Mean Reversion System — система статистического парного трейдинга, которая анализирует взаимосвязь двух валютных пар и ищет моменты, когда их совместное движение отклоняется от статистического равновесия. Основная идея заключается в том, что после экстремального отклонения спред имеет тенденцию возвращаться к своему среднему значению.

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

1. Логарифмическая модель

Для двух валютных пар используются логарифмы цен:

Y t = ln ( P 1 , t ) Y_t=\ln(P_{1,t})Yt=ln(P1,t) X t = ln ( P 2 , t ) X_t=\ln(P_{2,t})Xt=ln(P2,t)

где:

  • P 1 , t P_{1,t}P1,t — цена первой валютной пары;
  • P 2 , t P_{2,t}P2,t — цена второй валютной пары;
  • t tt — текущий бар.

В системе используется скользящее окно

2. Расчет коэффициента хеджирования

Между логарифмами цен строится линейная регрессия:

Y t = α + β X t + ε t Y_t=\alpha+\beta X_t+\varepsilon_tYt=α+βXt+εt

где:

  • β \betaβкоэффициент хеджирования (Hedge Ratio);
  • α \alphaα — константа регрессии;
  • ε t \varepsilon_tεt — остаток модели.

Коэффициент β \betaβ рассчитывается методом наименьших квадратов:

β = N X Y X Y N X 2 ( X ) 2 \beta = \frac{N\sum XY-\sum X\sum Y} {N\sum X^2-(\sum X)^2}β=NX2(X)2NXYXY

а:

α = Y β X N \alpha = \frac{\sum Y-\beta\sum X}{N}α=NYβX

Именно такая регрессионная модель реализована в коде.


3. Формирование коинтеграционного Spread

После определения α \alphaα и β \betaβ система рассчитывает спред:

S p r e a d t = ln ( P 1 , t ) β ln ( P 2 , t ) α \boxed{ Spread_t = \ln(P_{1,t}) -\beta\ln(P_{2,t}) -\alpha }Spreadt=ln(P1,t)βln(P2,t)α

Это центральная формула системы.

Она позволяет перейти от анализа двух отдельных цен к анализу отклонения их статистического соотношения.

В коде формула реализована непосредственно через:

log_y - beta * log_x - alpha


4. Стандартизация Spread — Z-Score

Сам по себе Spread не имеет универсального масштаба. Поэтому система стандартизирует его относительно среднего значения и стандартного отклонения.

Среднее:

μ S p r e a d = 1 N i = 1 N S p r e a d i \mu_{Spread}= \frac{1}{N}\sum_{i=1}^{N}Spread_iμSpread=N1i=1NSpreadi

Стандартное отклонение:

σ S p r e a d = 1 N i = 1 N ( S p r e a d i μ S p r e a d ) 2 \sigma_{Spread}= \sqrt{ \frac{1}{N} \sum_{i=1}^{N} (Spread_i-\mu_{Spread})^2 }σSpread=N1i=1N(SpreadiμSpread)2

После этого рассчитывается:

Z t = S p r e a d t μ S p r e a d σ S p r e a d \boxed{ Z_t= \frac{Spread_t-\mu_{Spread}} {\sigma_{Spread}} }Zt=σSpreadSpreadtμSpread

Интерпретация

Z = 0 Z=0Z=0

— спред находится около среднего.

Z > 0 Z>0Z>0

— спред выше среднего.

Z < 0 Z<0Z<0

— спред ниже среднего.

Например:

Z = + 2.5 Z=+2.5Z=+2.5

означает сильное положительное статистическое отклонение

=================================================================================================================

Прилагаю 3 индикатора, работают только в паре с индикатором i-Spr_Signal.mq5

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


--- Продолжение следуют


Файлы: