22 вересня 2026 · ф’ючерси

Ваш безперервний графік ф’ючерсів показує контракт, яким ніхто не міг торгувати

Ваш безперервний графік ф’ючерсів показує контракт, яким ніхто не міг торгувати

Безперервний ряд ф’ючерсів об’єднує контракти, термін дії яких спливає один за одним, в одну історію. Цю історію можна використовувати для дослідження сигналів, але прямий розрахунок торгового P&L за змінами її ціни може вигадувати прибутки й збитки під час кожного перенесення. Такий ряд не показує, яким саме контрактом ви володіли.

Розгляньмо особливо суворий приклад: нафту WTI на NYMEX 20 квітня 2020 року. Травневий контракт закрився за ціною мінус $37.63 за барель. Червневий — плюс $20.43. Обидві ціни були реальними. Реальною була й різниця в $58.06 між ними. Але перехід на графіку з травневого контракту на червневий не приніс довгій позиції цього прибутку.

Розберімо це з’єднання. Це історичні розрахункові ціни; наведені нижче умовні приклади обліку використовують їх, щоб показати арифметику, а не стверджують, що за цими цінами можна було виконати ордер.

CLK20 і CLM20: ідентифікатори, які графік приховав

ПоказникТравневий контрактЧервневий контракт
Ідентифікатор контрактуCLK20CLM20
Місяць поставкитравень 2020 рокучервень 2020 року
Розрахункова ціна 20 квітня, доларів за барель−37.6320.43
Розмір контракту1,000 барелів1,000 барелів

Код місяця важливіший за префікс тикера. K означає травень, M — червень. Ці контракти передбачали різні зобов’язання щодо поставки й мали різні ціни. Термін дії травневого контракту добігав кінця на тлі надзвичайного дефіциту місць для зберігання. Червневий давав ще один місяць.

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

До того ж універсальної безперервної історії не існує. Постачальник може переносити контракт за фіксовану кількість робочих днів до завершення терміну дії, під час перетину обсягів торгів або за іншим розкладом. У багатьох рядах перехід із травневого контракту відбувся ще до 20 квітня. У нашому прикладі ці два розрахунки навмисно з’єднані, щоб показати проблему; це не твердження про графік перенесення якогось конкретного постачальника.

1,000 барелів: множник для кожної ціни

Стандартний ф’ючерсний контракт NYMEX WTI охоплює 1,000 барелів. Тому рух ціни на $1 змінює вартість довгої позиції в одному контракті на $1,000. Тик у $0.01 дорівнює $10.

Для незмінної позиції в одному контракті базовий розрахунок такий:

gross_pnl = contracts × 1,000 × (ending_price − starting_price)

Цей розрахунок працює й за від’ємних цін. Відсоткові доходності від котируваної ціни ф’ючерсу стають значно менш корисними: перетин нуля може зробити їх невизначеними або змінити їхній видимий зміст. Доходність стратегії слід розраховувати за капіталом рахунку та прийнятим правилом обліку грошових потоків. Котирувана ціна бареля — це не капітал, вкладений у стратегію.

$58.06: розрив у місці з’єднання

Уявімо, що наївний рушій бачить розрахункову ціну травневого контракту, а потім — червневого, і застосовує цю формулу так, ніби інструмент не змінився:

invented_pnl = 1 × 1,000 × (20.43 − (−37.63))
             = $58,060

У цьому порівнянні час не минув. Це ціни двох контрактів за одну й ту саму торгову сесію. Рушій сприйняв різницю між цінами контрактів як прибуток за період утримання позиції.

У реальному щоденному з’єднанні ціна старого контракту за вчора й ціна нового контракту за сьогодні також містять звичайний ринковий рух. Через це помилку складніше помітити. Зафіксована зміна поєднує рух старого контракту з різницею між контрактами в момент переходу.

І віднімання $58,060 як нібито грошових «витрат на перенесення» теж не виправляє модель. Ф’ючерси не купують, сплачуючи всю котирувану номінальну вартість. Закриття одного контракту й відкриття іншого змінює позиції та породжує реалізований або розрахований P&L, комісії, витрати на виконання й вимоги до маржі. Різниця між рівнями цін не стає автоматично списанням коштів.

+58.06: коригування, внесене в історію

Один зі звичних способів побудови безперервного ряду — додати різницю під час перенесення до давніших цін. За цим правилом ціна травневого контракту −37.63 стає 20.43, тож у місці з’єднання розриву немає. Попередні спостереження в тому самому історичному сегменті також підвищуються на 58.06.

Спосіб побудовиЩо відбувається в місці з’єднанняНаслідок для дослідження
Без коригуванняРозрив у $58.06 зберігаєтьсяІндикатори можуть сприйняти зміну контракту як рух ринку
Адитивне коригування назадДо старішого сегмента додається 58.06Зміни в доларах усередині сегмента зберігаються; історичні рівні й відсоткові зміни зсуваються
Мультиплікативне коригування назадСтаріший сегмент множиться на 20.43 / −37.63, тобто приблизно на −0.543Від’ємний множник змінює знак цінових змін усередині сегмента

Останній рядок пояснює, чому я не приймаю термін «скоригований за співвідношенням» як повну специфікацію даних. Метод, що добре працює лише за суто додатних цін, має передбачати чітке правило для нульових і від’ємних цін.

Адитивне коригування теж має наслідки. Сигнал на купівлю, коли ціна нижча за фіксований поріг у $30, може змінитися, якщо подальші перенесення переписують попередні рівні. Сигнал за різницею швидкої та повільної ковзних середніх може залишитися незмінним за спільного адитивного зсуву, якщо обидва вікна зазнають однакового зсуву. Вікна, що перетинають межу коригування, потрібно перевіряти окремо.

Зберігайте разом із результатом дослідження метод коригування, графік перенесень і версію даних. Для сигналів, чутливих до скоригованих рівнів, відновлюйте історію, доступну на кожну дату ухвалення рішення. У поточному завантаженні можуть бути коригування за перенесеннями, які на той час іще не відбулися.

Два рядки ордерів, яких немає на безперервному графіку

Ось навмисно спрощений журнал. Припустімо, що перед перенесенням один травневий контракт оцінювали за ціною −30.00. Припустімо також, що травневу позицію закрили, а червневу відкрили за наведеними вище історичними розрахунковими цінами, після чого червневий контракт оцінили за ціною 21.00. Ці умовні ціни виконання наведені лише для ілюстрації обліку.

Подія в журналіРозрахунокВаловий P&L
Закриття однієї довгої позиції в травневому контракті за −37.631,000 × (−37.63 − (−30.00))−$7,630
Відкриття однієї довгої позиції в червневому контракті за 20.43На вході руху ціни немає$0
Оцінка червневого контракту за 21.001,000 × (21.00 − 20.43)+$570
РазомДо витрат на виконання й комісій−$7,060

Різниця в $58.06 ніде не обліковується як окремий дохід або витрата. Щоденна варіаційна маржа визначає, коли P&L за ф’ючерсами надходить у грошові кошти; вона не створює його копію.

У реальній торгівлі перенесення може виконуватися ордером на календарний спред, а не двома незалежними ордерами. Симулятор має відтворювати обраний механізм разом із передбаченими цінами виконання й витратами та зберігати окремий облік позицій за кожним контрактом.

Моя проста перевірка така: кожен долар P&L від торгівлі ф’ючерсами має бути прив’язаний до конкретного контракту, кількості, множника й двох цін саме цього контракту. Також потрібні час ухвалення рішення про перенесення та вхідні дані для нього. Правило на основі обсягу, яке використовує завершений обсяг торгів за сьогоднішню сесію, не може непомітно відкрити позицію раніше того самого дня.

Для контексту побудуйте графік безперервного ряду. Під ним покажіть фактично утримувані контракти й позначте кожен перехід між ними. Якщо під час переходу крива капіталу стрибає, я насамперед перевіряю саме ті два рядки ордерів.

безперервні ф’ючерсибектестингперенесення ф’ючерсних контрактівринкові даніоблік P&L
ПоділитисяXLinkedInFacebookRedditHacker NewsWhatsAppTelegramEmail
← Усі статті