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

Anonim

У цій статті, я викладу основу-основ статистичного арбітражу - коінтеграційних підхід. Незважаючи на те, що тут вже була стаття про Коінтеграція і парний трейдинг, я спробую викласти матеріал, трохи більше системно, і може бути від цього більш складно. Але, зате сподіваюся у Вас складеться комплексне розуміння базового методу стат. арбітражу. Можливо це буде циклом статей з базових алгоритмам. Який долучить ще більшу кількість людей до цього чудового стилю торгівлі.

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

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

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

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

Отже, позначимо:

- ряд цін акції А. Де t цей час. Наприклад якщо 16го березня акція "А" коштує 100 доларів. Це буде записано як:

а якщо 14го березня вона коштувала 101 долар, то ми це запишемо як:

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

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

"Якщо вони можуть бути лінійно скомбіновані"

Що значить лінійно?

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

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

14го березня акція А коштувала 101 рубль. Акція В 14го березня коштувала 30 рублів.

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

Тоді ми маємо 14го березня:

101 - 2 * 30 = 41

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

Підемо далі:

"Скомбіновані в один ряд"

Я навів приклад для 14го березня. Але припустимо що ми робимо таке віднімання цін (комбінуємо) для кожного дня березня (з 1 березня по дванадцятий березня). Тоді кожен раз віднімаючи ціни ми отримаємо 16 чисел. Ці 16 чисел називаються "тимчасовим поруч" тільки вже не самих цін, а їх різниці. І позначаються як:

Йдемо далі:

"Володіє властивістю стаціонарності"

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

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

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

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

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

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

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

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

ВАЖЛИВО!

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

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

ВАЖЛИВО!

ДАЛЕКО не всі пари інструментів (акцій, ФЬЮЧЕ і тд), можуть бути коінтегріровани. Цією властивістю володіють обмежена кількість інструментів на ринку.

ВАЖЛИВО!

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

Пара: 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 або будь-яким іншим методом. Можна попередньо працювати з рядами цін для отримання більш точних входів. І фільтрувати сам спред. І багато багато іншого.

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

P. S. Не забувайте комментить, поправляти і задавати питання.