Минулого місяця хтось із дослідницької команди запитав мене, чому наші опціонні агенти постійно відхиляють цілком обґрунтовану ідею з довгою гаммою. Сигнал був нормальний. Прогноз волатильності теж. Проблема полягала у двох полях стрічки ринкових даних і одному числі, якого в ній узагалі немає.
Ось той самий об’єкт, який ми обговорювали. Відповідь Deribit на запит тікера BTC-25SEP26-110000-C, отримана о 11:20 UTC у понеділок, за вісімнадцять днів до експірації контракту. Я прибрав застарілі поля й залишив усе важливе.
{
"instrument_name": "BTC-25SEP26-110000-C",
"index_price": 96412.18,
"underlying_price": 96980.44,
"underlying_index": "SYN.BTC-25SEP26",
"estimated_delivery_price": 96412.18,
"mark_price": 0.0041,
"mark_iv": 42.14,
"best_bid_price": 0.0038, "best_bid_amount": 4.9,
"best_ask_price": 0.0045, "best_ask_amount": 12.1,
"bid_iv": 40.42, "ask_iv": 43.94,
"last_price": 0.0043,
"interest_rate": 0.0,
"open_interest": 812.7,
"greeks": {
"delta": 0.0962, "gamma": 0.0000189,
"vega": 36.77, "theta": -42.91, "rho": 4.61
},
"stats": { "volume": 61.2, "high": 0.0051, "low": 0.0036 }
}
instrument_name: чотири факти в одному рядку
BTC-25SEP26-110000-C. Базовий актив — BTC, експірація — 25 вересня 2026 року, страйк — 110,000, кол-опціон. У цьому рядку не вказано решту специфікації контракту, про яку кожен новий бектест опціонів помиляється бодай раз: один контракт дорівнює 1 BTC базового активу, премію котирують і сплачують у BTC, а експірація відбувається о 08:00 UTC, а не о 16:00 за якимось місцевим часом.
Саме котирування в BTC тут і створює проблему. Марк 0.0041 означає 0.0041 BTC, або приблизно $395 за індексом. Якщо зберегти це поле як ціну, а потім об’єднати його з P&L стратегії, вираженим у USD, то непомітно отримаєте позицію, чия доларова вартість змінюється разом зі спотовою ціною, навіть коли ціна опціону не змінюється. Я бачив бектест, у якому довга позиція в кол-опціоні заробила в день падіння BTC лише тому, що премію помилково трактували як долари: насправді дослідник мав коротку позицію в премії, номінованій у монеті, а облік вів у доларах. На пошук помилки пішло два дні.
index_price проти underlying_price: різниця у 568 доларів, і правильна лише одна ціна
Між ними різниця $568.26, і це не помилка. index_price — індекс BTC на Deribit: спотовий орієнтир, розрахований на основі даних великих бірж, до якого зрештою прив’язана виплата за контрактом. underlying_price — ціна синтетичного форварда з конкретною датою експірації, SYN.BTC-25SEP26, розрахована за ф’ючерсним ринком на цю дату. Вісімнадцять днів перенесення позиції за приблизно 12% річних і дають ці $568.
Усі греки в наборі даних і mark IV розраховані на основі форварда. Якщо ви самі обчислите implied volatility за спотовою ціною, бо саме цей ряд ви завантажили, отримаєте інше значення для кожного страйку. Причому похибка матиме систематичний напрямок: кол-опціони здаватимуться дешевшими за волатильністю, ніж вони є, а пут-опціони — дорожчими. Для 18-денного контракту з базисом 0.6% ви помилитеся в оцінці mark IV приблизно на півтора пункти на цьому страйку. Це більше за більшість переваг за волатильністю, навколо яких будують стратегії.
interest_rate: 0.0 — це повідомлення від Deribit, що дисконтовані грошові потоки розраховуються через форвард, а не через ставку. Не шукайте безризикову криву, щоб підставити її у формулу: так ви врахуєте цей ефект двічі.
mark_price і mark_iv: ціна без контрагента
0.0041 BTC. Ніхто за такою ціною не платив. Deribit розраховує марк на основі підігнаної поверхні волатильності, орієнтуючись на книгу заявок, але згладжуючи дані між страйками й експіраціями, щоб маржинальні вимоги та ліквідації не стрибали через одну широку котировку. Марк використовується для маржі й нереалізованого P&L та відображається в кожному ендпоінті позицій.
Саме тому він такий спокусливий як ціна виконання в дослідженнях криптоопціонів — і такий хибний. Бектест, який купує за марком і продає за марком, торгує проти згладжувального сплайна. Він покаже Sharpe. Цей Sharpe описує роботу моделі поверхні й нічого не говорить про те, чи змогли б ви справді укласти угоду.
Ось правило, яке ми зрештою заклали в код: марк потрібен для маржі, ризику й атрибуції прибутку та збитку за середніми цінами. Це ніколи не ціна виконання. Якщо бектесту потрібна ціна виконання, але для цієї позначки часу немає знімка книги заявок, запуск позначається як такий, де ціну не визначено, замість виконання за марком. Краще втратити цей рядок.
best_bid 0.0038 / best_ask 0.0045: спред у трьох одиницях
Сім тіків у BTC. Це $67.50 для опціону вартістю $395, або 17% премії. У волатильності спред дорівнює 3.5 пунктам: 40.4 на купівлю проти 43.9 на продаж. Саме таку цифру назве опціонний трейдер, якщо запитати, наскільки широкий спред.
Обсяги важливі не менше за ціни: 4.9 контракту на купівлю, 12.1 — на продаж. Обсяг опціонів Deribit зазначається в контрактах, тож це 4.9 BTC базового активу, приблизно $472k номіналу, але лише 0.47 BTC дельти за цього страйку. Для відчутної гамми стратегії потрібні десятки контрактів, а видима книга за найкращими цінами дає лише частину цього обсягу. Наступний рівень зазвичай віддалений ще на два-три тіки. Бектесту опціонів із моделлю обсягу потрібно або пройтися книгою заявок, або припустити ціноутворення через RFQ чи блокові угоди. Ці припущення дають зовсім різні результати.
last_price: 0.0043 — це угода, що відбулася в якийсь момент за останні 24 години, можливо, дев’ятнадцять годин тому за зовсім іншої спотової ціни. За самою своєю природою ці дані застарілі для інструмента з обсягом торгів 61 контракт на день. Не будуйте на них часовий ряд дохідності.
greeks: п’ять чисел, чотири системи одиниць
Цей блок завдає більше непомітної шкоди, ніж решта набору даних разом узята: кожне значення розмірнісно правильне, але жодне не виражене в тих одиницях, яких ви б очікували.
| Поле | Значення | Одиниці | Типове хибне трактування |
|---|---|---|---|
| delta | 0.0962 | BTC базового активу на контракт | Трактують як дельту в доларах |
| gamma | 0.0000189 | Δdelta на кожен рух базового активу на $1 | Вважають, що це значення для руху на 1% |
| vega | 36.77 | USD на 1 пункт волатильності | Вважають, що це значення на 100% волатильності або в BTC |
| theta | -42.91 | USD на календарний день | Вважають, що це значення на торговий день |
| rho | 4.61 | USD на 1% ставки | Ігнорують, і правильно роблять |
Дельта вимірюється в монетах, vega і theta — у доларах, gamma — на долар руху спотової ціни. Якщо додати дельту, номіновану в монетах, до сукупного ризику в доларах, то на папері портфель буде нейтральним, а насправді матиме довгу позицію на 40 BTC. А theta в розрахунку на календарний день особливо дошкуляє стратегіям, що тримають позиції у вихідні: від закриття в п’ятницю до відкриття в понеділок минає три дні тета-розпаду — тут це близько $129 на контракт — хоча торгових сесій за цей час немає. Якщо бектест крокує барами й застосовує theta на кожному кроці, вихідні зникають, і кожна стратегія з короткою премією непомітно показує гірший результат, ніж мала б.
open_interest 812.7, volume 61.2: де зосереджений ринок опціонів
Відкритий інтерес — вісімсот контрактів на страйку, де вчора проторгували шістдесят один. Це справжній активний страйк: 110,000 — кругле число за три тижні до експірації, саме там і зосереджується потік заявок. Відійдіть на два страйки до 120,000 — і відкритий інтерес зменшиться на порядок. Перейдіть до некруглого страйку з експірацією не наприкінці місяця — і знайдете інструменти з ціною купівлі, ціною продажу на відстані 40% одна від одної та без жодної угоди протягом тижня.
Бектест на всьому ланцюжку опціонів, який перебирає кожен зареєстрований інструмент, без проблем виконає угоди за всіма ними. Ми запровадили фільтр із трьома умовами одночасно: спред котирувань менший за 20% марку, щонайменше 1 контракт з обох боків і ненульовий обсяг за попередні 24 години. У типовий день цей фільтр пропускає приблизно третину зареєстрованого ланцюжка BTC. Решта дві третини — місце, де живе фальшива альфа.
Поле, якого немає в наборі даних
Жодне поле цього об’єкта не показує, скільки коштує угода. Deribit стягує 0.0003 BTC за опціонний контракт — однакову суму з maker і taker, тобто 0.03% від базового активу, а не від премії, — з обмеженням у 12.5% ціни опціону. Для цього контракту це $28.92 за сторону без застосування ліміту: 12.5% від 0.0041 дорівнює 0.000513, а фіксована комісія менша.
Коли комісія нараховується на номінал, а премія залежить від волатильності, її частка від сплаченої суми різко зростає, щойно опціон виходить за межі грошей.
Купіть за ціною продавця 0.0045 ($434), продайте за ціною покупця 0.0038 ($366), двічі сплатіть комісію: повний цикл обійдеться у $125.80 на контракті, марк якого дорівнює $395. Ваш прогноз має виправдати 31% премії, перш ніж ви вийдете в нуль. Саме тому ідею з довгою гаммою відхилили — сигнал тут ні до чого.
Ще цікавіше подивитися, скільки коштує дельта, адже комісії залежать від кількості контрактів, а кількість контрактів обернено пропорційна дельті. Для розрахунку припустімо, що mark IV дорівнює 42.1% на всіх страйках. У реальному ланцюжку є скіс, а в криптовалютах дальні кол-опціони зазвичай торгуються вище ATM, тож ця таблиця дає оптимістичну оцінку:
| Інструмент | Марк (BTC) | Дельта | Контрактів на 1 BTC дельти | Комісія за сторону | Вартість на 1 BTC дельти |
|---|---|---|---|---|---|
| 97000-C (ATM) | 0.0373 | 0.518 | 1.93 | $28.92 | $55.80 |
| 110000-C | 0.0041 | 0.096 | 10.4 | $28.92 | $301 |
| 120000-C | 0.0004 | 0.013 | 79.4 | $4.82 (з лімітом) | $383 |
| BTC perp | — | 1.0 | 1.0 | $48.21 | $48.21 |
У нижньому рядку ліміт 12.5% відіграє важливу роль: без нього дальній страйк коштував би $2,300 на BTC дельти, і стратегії з лотерейним шансом були б математично неможливими, а не просто невигідними. Навіть із лімітом купувати експозицію через страйк 120,000 приблизно у вісім разів дорожче, ніж через perpetual. Опціони — не дешевий спосіб зіграти на напрямок, і будь-який бектест, що стверджує протилежне, пропустив цю таблицю.
08:00 UTC, 25 вересня
Останнє, чого не повідомляє тікер, — що станеться з позицією наприкінці. Deribit розраховує опціони за 30-хвилинним середнім індексу перед 08:00 UTC у день експірації та стягує комісію за поставку 0.00015 BTC з контрактів у грошах, також обмежену 12.5% суми розрахунку.
Для бектесту це має два наслідки. По-перше, це вікно усереднення справді має значення, і тут можна помилитися: опціон, що о 07:59 коштує на $300 у грошах, може завершити торги без вартості, якщо останні пів години були невдалими. Бектест із розрахунком за ціною на 08:00 не збігатиметься з вашим симуляційним рахунком на кілька базисних пунктів у більшості експірацій і значно сильніше — у деяких. По-друге, комісія за поставку стягується незалежно від того, чи хотіли ви отримати розрахунок. Тож стратегія, яка тримає позицію до експірації, сплачує три комісії за цикл, а стратегія, що закривається о 07:30, — дві комісії та спред. Що дешевше, залежить від страйку; межа проходить десь біля премії 0.0012 BTC. Ми обчислюємо це для кожної позиції окремо, а не запроваджуємо єдине правило.
Я хотів написати цей пост про прогнозування волатильності. Натомість витратив тиждень на одиниці виміру й ліміти комісій — приблизно таке співвідношення гучних і буденних речей і має бути в дослідженнях опціонів.
Двадцять полів. Дві ціни, що навмисно не збігаються, одна ціна, за якою ніхто не торгував, греки в чотирьох системах одиниць, а модель витрат — десь за межами набору даних, на сторінці документації. Якщо ви запускаєте бектест опціонів, присвятіть перший день написанню однієї функції, яка перетворює такий об’єкт на позицію з усіма витратами й правильними одиницями: спред, комісія, ліміт, поставка, монета чи долар. Успадковані від цієї функції припущення визначатимуть кожну стратегію, яку ви напишете потім.
← Усі статті


