Коінтеграційний підхід до парного трейдингу

Що таке коінтеграція?

(і чому нам не так сильно важлива кореляція)

Отже, у нас є дві акції А та В та їх ціни за певний період часу (тимчасовий ряд цін). Ціни цих двох акцій будуть називатися коінтегрованими, якщо вони можуть бути лінійно скомбіновані в один ряд, що володіє властивістю стаціонарності.

Запишемо це формулою. І потім розберемо все по порядку:

Але оскільки ми працюємо з великим набором цін за певний період, а не за якийсь конкретний день, то ціни акцій А та B записуються як:

Далі ми говоримо

«якщо вони можуть бути лінійно скомбіновані».

Що означає лінійно?

Для простоти це коли ми складаємо «+» або віднімаємо «-» ціну акції А з або В з А. При цьому можемо ціни однієї з акцій помножити на деяке значення. Як бачите у формулі ціна акцій B домножена на деякий коефіцієнт γ (буде не зовсім правильно, але для простоти я поки називатиму коефіцієнт фіксованим числом, хоча насправді це ненульовий вектор). Так ось ми проводимо нехитру маніпуляцію з цінами, примножуємо ціни акції B на якусь кількість і віднімаємо ці ціни від цін акцій А.

Розжуємо ще докладніше:

γ – ми обчислили що це число цих акцій, одно 2. (як обчислювати ми поговоримо нижче). Насправді цей коефіцієнт називається коефіцієнтом коінтеграції.

Це називається лінійною комбінацією. Думаю, розібралися.

«скомбіновані в один ряд»

«що володіє властивістю стаціонарності»

Для простоти: стаціонарність це коли графік постійно ходить навколо одного й того ж значення:

Стаціонарний ряд:

акції

Нестаціонарний ряд:

парного

Стаціонарний:

трейдингу

Нестаціонарний:

коінтеграційний

Якщо правильно говорити стаціонарність це коли ймовірнісні властивості постійні.

Чому нам важливо, щоб він був стаціонарним?

Та тому що його рух як бачите зі стаціонарних графіків вище, легко передбачити.

ВАЖЛИВО!

Стаціонарність це статистичне властивість! І наприклад ось такий рядми не назвемо стаціонарним :

значення

Незважаючи на те, що начебто ми можемо передбачити його рух (!).

ВАЖЛИВО!

ДАЛЕКО не всі пари інструментів (акцій, ф'ючів тощо) можуть бути коінтегровані. Ця властивість має обмежену кількість інструментів на ринку.

ВАЖЛИВО!

Для обчислення коінтеграції важливо, який період часу ми візьмемо. І який таймфрейм. Тобто наприклад:

Пара: ISBC & STI коінтегрована на проміжку 01-02-2012 – 01-03-2015 (за денними закриттями). Але не коінтегрована на проміжку 01-01-2010 – 01-03-2015.

ВАЖЛИВО!

Недарма ми використовували у формулі цей коефіцієнт . Справа в тому, що сама по собі різниця цін ISBC - STI як і звичайні різниці інших пар. Не мають властивості стаціонарності (не ходять навколо однієї осі(лінії)).

Як визначити коінтегровану пару і цей коефіцієнт?

Для цього використовується тест Engle-Granger.

Крок 1. Визначити чи є ціна (тимчасова низка цін) акції «А» за певний період стаціонарної. Якщо НЕ є, то: Визначити чи є самі собою ціни акції «В» стаціонарними. Якщо НЕ є, переходимо до кроку 2.

Крок 2. Будуємо лінійну регресію пари А і B і виділяємо залишки (регресії в окремий ряд).

Крок 3. Перевіряємо на стаціонарність ряд«залишків» регресії, якщо він стаціонарний, то два ряди цін коінтегровані.

Тепер по порядку.

«Чи є ціна акції «А» за певний період стаціонарної».

Для визначення чи є ряд стаціонарним (тобто зберігаються його ймовірні властивості протягом часу, чи простими словами ходить він навколо деякої лінії чи ні) використовується тест ADF (Augmented Dickey Fuller test). Він найпопулярніший. Про те, як з ним можна познайомитися, вкажу наприкінці статті.

Для продвинутых: відсутність стаціонарності це наявність одиничного кореня I(1), тобто інтеграція першого порядку. Присутність стаціонарності - це відсутність одиничного кореня I(0). Перевірити можна будь-яким unit root тестом.

«Будуємо лінійну регресію пари А і B, і виділяємо залишки регресії в окремий ряд».

Регресія – це просто пошук залежності між двома тимчасовими рядами. Тобто наскільки потрібно збільшити величину, щоб величина А збільшилася на одиницю.

Пам'ятаєте початковий вираз?

Якщо ми перенесемо у правий бік:

Це буде рівняння регресії. Розберемо докладніше.

Що таке регресія?

Приклад для розуміння:

У нас є два ряди даних:

  • Щоденна виручка продуктового магазину протягом місяця.
  • Кількість людей, що заходять в магазин щодня протягом місяця.

Очевидно, що кожна людина витрачає в магазині певну суму грошей. Хтось більший, хтось менший. Однак практично завжди збільшення кількості покупців веде до збільшення виручки. Щоб визначити як у середньому змінюється виручка від кількості людей і будується регресійне рівняння. Де головне це підсумковий коефіцієнт γ, який і покаженаскільки рублів у середньому зміниться виручка, якщо в магазин зайде 1 додаткова людина.

Але оскільки ми знаходимо лише «середнє\усереднене» значення, а кожна людина витрачає різну кількість грошей у магазині, ми постійно матимемо деяке відхилення від прогнозованого значення. Це означає, що навіть якщо в магазин заходитиме рівно 100 чоловік на день, виручка буде щодня різною, хоч і коливається навколо одного значення. Тобто зі 100 осіб ми можемо прогнозувати виторг 100 тисяч рублів. Але якогось дня вона буде 93 тисячі в іншій 108 тисяч. Виторг різний, але коливається навколо 100 тисяч.

Так ця сама «помилка» (різниця) прогнозу і реально отриманої виручки, і називається залишком регресії і позначається як:

І чим краще у нас побудовано лінійну регресійну модель (знайдено відповідний коефіцієнт γ). Тим менше «гулятиме» значення залишку. Тобто тим менше ми помилятимемося у своїх прогнозах.

Лінійна регресія будується з допомогою Методу Найменших Квадратів (МНК, англ: OLS). Його суть у тому, що він шукає те саме значення коефіцієнта так, щоб помилка (залишок) була мінімальною.

Ідемо далі.

Отже, у нас є дві акції А та B та їх ціни за період 2 роки. Ми побудували лінійну регресію і побачили, що в середньому залежність між цінами акцій можна описати як:

Де μ – це значення ціни акції А, якщо значення ціни акції буде дорівнює 0. Це просто константа (число яке не змінюється в часі наприклад воно може бути дорівнює «3» або «298» або бути негативним).

Для того щоб перевірити чи є акції коінтегрованими, нам необхідно взяти окремо ряд залишків за деякий період часу, наприклад 2 роки. Незважаючи на те, що ми вирахували якакції "в середньому" залежать один від одного, протягом 2х років ціна, практично щодня, відхилялася від середнього. Ми беремо ці відхилення окремо, а також перевіряємо їх на тест ADF (перевіряємо залишки на стаціонарність). І якщо цей ряд стаціонарний, то ціни А і В коінтегровані.

Що все це означає і як торгувати?

Ми можемо припустити що якщо акції на протязі 2х років коінтеговані (між їх значеннями є деяка рівновага), то швидше за все ця рівновага буде зберігатися далі. А ми можемо торгувати короткострокові відхилення від цієї рівноваги. Знаючи, що в результаті вони прийдуть до своєї довгострокової рівноваги. Що означає відхилення від рівноваги? Це ті самі залишки:

Оскільки ці відхилення стаціонарні, то ми можемо сподіватися, що відхилившись від рівноваги, залишок повернеться до рівноважного значення.

Ще раз поясню на картинці. В ідеалі графік залишків має виглядати так:

акції

Як ми можемо бачити, відхилившись від 0, через деякий час він стабільно до нього повертається. Тобто значення легко прогнозоване.

Стандартна реалізація торгівлі це побудова торгівлі на відхиленні z-score.

Щоб не сильно перевантажувати статтю, скажу тільки що в статистиці є метод оцінити розкид випадкової величини від його середнього значення іменований дисперсією. Корінь дисперсії називається Стандартним відхиленням і зазвичай записується як σ. Так ось z-score насправді вимірює поточне значення до рівноваги в стандартних відхиленнях.

Типовий графік z-score виглядає так:

Відповідно звідси будуємо стратегію:

    якщо Z-score≥2 (Червона пунктирна лінія зверху) відкриття короткої позиції А, довгою В де B береться в кількості рівному коефіцієнту γ, закриття позиції приZ-score=0 (зелений пунктир посередині);

  • якщо Z-score≤-2 (Нижня червона пунктирна лінія) відкриття довгої позиції А, короткої по Вде B береться в кількості рівному коефіцієнту γ, закриття позиції при Z-score=0 (зелений пунктир посередині);
  • За основою все. Кордон z-score від якого походить вхід, для деяких пар може бути більше, може бути менше, для її визначення треба дивитися на історичні дані.

    Тепер коротко про те як можна вже зараз руками доторкнутися методики розрахунку (вам доведеться погуглити):

      Для побудови ADF та Engle-Granger можна скористатися пакетом EViews (на ньому багато чого цікавого з економетрики можна робити).

    Однак зручніше скористатися пакетом MATLAB або Rstudio (він може завантажувати котирування прямо з яху, і є вбудована функція adf). Також вони зручні тим що можна відразу розрахувати швидкість повернення спреда до рівноваги. І відповідно заздалегідь відбирати акції з більш швидкою збіжністю. Що означає більшу і впевненішу кількість угод.

    Побудувати регресію також можна EXCEL для цього треба підключити пакет аналізу даних.

  • Стандартне відхилення - це функція =СТАНДОТКЛОН. Також вона є в thinkorswim.
  • Описаний вище коінтеграційний підхід, напевно, найпростіший. Але це лише підхід, даний для розуміння, хоч і робітник. Ускладнювати його вам самим. Наприклад, регресію і стд. відхилення потрібно перераховувати щодня, тобто вікно розрахунку має рухатися, для різних пар розмір вікна може бути різним. МНК можна замінити Total або будь-яким іншим способом. Можна попередньо працювати з цінами для отримання більш точних входів. І фільтрувати сам спред. І багато багато іншого.

    Також єНайцікавіші динамічні моделі розрахунку входів, для інтрадея. І ймовірні підходи до стат арбітражу, які зараз у процесі тесту.