Модернізація стратегії robot_uralpro
блог про біржових роботів
Модернізація стратегії robot_uralpro. Lead-lag relationship
Ті алготрейдери, хто не купував robot_uralpro, теж визнають цю статтю корисною, тому що lead-lag relationship може використовуватися в стратегіях парного трейдингу та їм подібним. Наприклад, визначивши таку взаємодію, можна виключити з парного трейдингу один з активів (з урахуванням того, звичайно, що відношення інструментів, що торгуються, було описано чіткою моделлю) і значно збільшити тим самим прибутковість стратегії.
Можу відразу відзначити, що на сучасній біржі здебільшого зміна ціни ф'ючерсу у напрямі подальшого руху ринку відбувається раніше, ніж зміна значення синтетичного індексу. Пояснюється це тим, що ф'ючерс торгується активніше, його волатильність більша, поріг входу менший. Однак це знання нічого не дає в плані побудови алгоритму, тому що нам треба точно визначити, коли ці випадки трапляються, скільки часу тривають, і коли індекс починає йти вперед. Зазвичай для цього пропонується використовувати крос-коваріацію прирощень цін активів, одержувану шляхом розрахунку коваріації, коли вибірка прирощень цін одного з активів зрушена в часі на деяку величину, яка називається лагом:
, де
- крос-коваріація для лага k;
- поточні збільшення цін першого та другого активів.
Якщо крос-коваріація позитивна при позитивному k, робиться висновок, що актив q випереджає актив p, якщо крос-коваріація позитивна при негативному k, то актив p випереджає актив q.
Однак правильне обчислення крос-коваріації можливе, якщо дані про збільшення ціни надходять через рівні інтервали часу t і не містять перепусток. Ні те, ні інше умова невиконується для високочастотних даних, які потрібні для HFT і просто intraday алгоритмів. Зазвичай цю проблему вирішують так - розбивають вибірку на рівні інтервали і якщо між ними не відбувалася зміна ціни, то вважають приріст ціни рівним 0. Це призводить до сильної залежності коваріації від частоти розбиття та загалом до неправильного її обчислення в динамічному режимі. Крім того, коваріація залежить і від величини збільшення цін, що у разі великої різниці між цінами активів також призводить до невірних результатів.
Позначимо спостереження ціни індексом i, ціни індексом j і загальна кількість спостережень N і M відповідно. Різниця між двома різними рівнями ціни може бути записана як сума прирощень неспостережуваного процесу зміни ціни в інтервалі між спостереженнями:
де означає тимчасову мітку i спостереження. Крос-твір збільшення цін між двома активами запишемо як:
Математичне очікування цього крос-твору є лінійна комбінація крос-коваріацій:
і це вираження залежить від моментів часу, що спостерігаються. Далі позначимо число разів, коли з'являється у наведеному вище виразі:
.
Важливою особливістю є те, що ці значення залежать тільки від моментів часу змін ціни і не залежать від ціни активів. Таким чином, ми можемо записати як лінійну комбінацію підступів:
Наведене вище вираз може розглядатися як вираз регресії з невідомими крос-коваріаціями у вигляді параметрів і коефіцієнтами у вигляді пояснюючих змінних. У векторному записі:
.
Таким чином, крос-коваріації можуть бути обчислені методом найменших квадратів за спостереженнями та розрахованими значеннями .
У розглянутому методі можуть бути використані будь-якіінтервали між цінами, що спостерігаються, в залежності від необхідної вами частоти угод. Також досить обмежитися інтервалами, де , де К - максимальний необхідний лаг.
У назві посту наведено графік крос кореляції між збільшеннями ціни індексу AEX амстердамської біржі та ф'ючерсу на цей індекс. Мінімальний крок лага k взятий рівним п'яти хвилин. Максимальне значення K=6, тобто збільшення цін вимірюються всередині інтервалу, що перетинається, тривалістю 30 хв. З цього графіка видно, що на інтервалах від 0 до 15 хвилин ф'ючерс випереджає індекс із максимальним значенням кореляції в районі 5 хв.
До речі, дуже перспективним є виявлення lead-lag relationship між ф'ючерсом та його опціонами. Хто зможе правильно виконати всі обчислення, отримає дуже цікавий алгоритм статистичного арбітражу.
Також дам рекомендацію тим, хто покращує алгоритм robot_uralpro. Не прагнете дуже високої частоти угод, збільште трохи інтервали розрахунків, там підуть багато мікроструктурних особливостей, які і не враховувалися в 2010 році цією стратегією, але мають сильний вплив зараз. Це значно полегшить вашу роботу. Але пам'ятайте, що надто великий інтервал між угодами також призведе до зменшення статистичної достовірності. На мої випробування цього алгоритму в тестуванні на сучасних даних виходило близько 500 угод на день при обсязі 5 контрактів RI, орієнтуйтеся на це значення.
- Tweet
- Share
- +1
- LinkedIn 0
- VKontakte
Поясніть причину вибору розрахунку крос-коваріації саме до збільшення ціни, а не до самих цін. Сам завжди вважав лаги без прирощень і досі не можу зрозуміти повсюдне використання цінових прирощень.
Щодо залежності розрахунків від квантування рядів. Можливо,варто подивитися у бік незалежних від квантування алгоритмів порівняння. Коли перший ЦВР залишається незмінним. А другому ЦВР як на виході дається вектор "масштабів часу".
Пригадую ваші статті ще на українському трейдері, на мою думку. Дуже були цікавими, я навіть щось у роботах використав. Чи не хочете на цьому сайті щось розмістити з нового? Було б чудово.
Зростають два папери, один росте швидше за інший, у такому разі в кроскововаріації буде кумулятивно накопичуватися помилка розрахунку.
різниця нівелює вплив трендів, які призводять до помилок у розрахунку кросковаріації.
Читав цю статтю рік тому, але так і не розібрався. Зараз друга спроба)))
Якщо я правильно зрозумів, то Xij вважається, виходячи з довжини інтервалу між спостереженнями.
Наприклад, перше спостереження 0 секунд, друге 10 секунд, лаг 2.
Тоді Xij = max(0, min(10, 10+2) - max(0, 0+2)) = 8;
Виходить, що в нас цей постійний коефіцієнт? Чи я помиляюся і неправильно розумію зміст цього коефіцієнта?
Чи ці періоди мають бути різними?
Дуже цікаво написано, дякую. Тим не менш, не зрозумів основну ідею: У статті зазначено, що в більшості випадків зміна ціни ф'ючерсу випереджає зміну індексу. Однак наприкінці ("500 угод на день при обсязі 5 контрактів RI") слід торгується все-таки ф'юч. З якої ідеї розраховується точка входу?
Це залежить від вибраного інструменту. На деяких базовий актив випереджає ф'ючерс, на деяких – навпаки. Іноді буває, що у певні періоди ф'ючерс йде вперед, а інші періоди - базовий актив. Для цього і потрібно динамічно визначати, хто лідирує зараз