Зміст статті

Докази та сфера застосування

Біржова документація встановлює значення полів; дослідження потоку замовлень надає контекст. Жодне з цих джерел не підтверджує прибутковість запропонованих детекторів поглинання або дивергенції.

Дані та ринкиПотрібна стрічка угод конкретного торгового майданчика з надійною класифікацією сторони, що забирає ліквідність. Синхронізована глибина стакана додає контекст; самих OHLCV недостатньо для відновлення справжньої дельти обсягів угод.
Таймфрейми дослідженняВікно вимірювання 30 секунд та однохвилинні бари підтвердження — приклади. Перевіряйте фактичну деталізацію та затримку даних, доступні реалізації.
Обсяг досягає 120, а дельта дорівнює −80; кандидат на поглинання все ще потребує подальшого повернення ціни за рівень до входу в довгу позицію.Відкрити ілюстрацію в повному розмірі
Синтетичні дельта та сумарний обсяг за вікнами. Основна вісь — обсяг агресивних купівель мінус обсяг агресивних продажів, а не ціна; позначки руху й повернення ціни за рівень стосуються числового прикладу.

Практична послідовність дій

Порядок дій: Поглинання та дивергенція CVD: сильний потік і слабкий рух ціни
Повні кроки наведено нижче. На кожному етапі потрібно записати причину відхилення, якщо бракує даних або не виконано умови.
  1. Перевірте стрічкуПеревірте сторону тейкера, одиниці вимірювання і часові мітки.
  2. Виміряйте окремі гіпотезиОбчисліть поглинання або дивергенцію CVD без їх об'єднання.
  3. Зачекайте підтвердження ціниПовернення ціни за рівень має відбутися після доступності потрібних ознак.
  4. Змоделюйте виконання та захистВикористовуйте виконувані котирування, спред та екстремум події.
  5. Перевірити поза вибіркоюПорівняйте з варіантом лише за ціною та перевірте стійкість до затримок.

Два різних спостереження

Кожна угода має покупця і продавця. Знак дельти визначає агресивна сторона, що забирає ліквідність: обсяг агресивних купівель мінус обсяг агресивних продажів. CVD накопичує дельту від визначеної точки скидання. Поле S у публічній стрічці угод Bybit означає сторону тейкера [1]; однойменне поле у стрічці ліквідацій може мати інше значення.

Гіпотеза бичачого поглинання описує значні агресивні продажі, що зустрічаються з обмеженим просуванням вниз. У цій ситуації CVD може досягти набагато нижчого мінімуму. Бичача дивергенція CVD натомість вимагає нижчого цінового мінімуму, що супроводжується вищим значенням CVD за цим ціновим мінімумом. Умови не є взаємозамінними та можуть суперечити одна одній.

Повторне поповнення заявок на купівлю дає спостереження про видиму ліквідність, але не встановлює особу учасника. Зникнення котирування може означати скасування або виконання [2]. Називайте це непрямим показником поглинання і перелічуйте вимірювання, а не стверджуйте, що певна установа захищає ціну.

Окремі детектори для поглинання та дивергенції

Запропонований непрямий показник бичачого поглинання шукають біля заздалегідь відомої підтримки S. За вікно W=30 секунд обсяг агресивних продажів має перевищити історичний 95-й процентиль для того самого часу доби; sell/(buy+sell) має бути щонайменше 0.70; зниження середини спреду від початку вікна — не більше 0.15 від попереднього ATR на хвилинних барах. Потрібні достатній сумарний обсяг і безперервна стрічка. Ці пороги запропоновано для дослідження.

Після появи непрямого показника чекайте не більш як K=3 завершені хвилинні бари на закриття вище S+buffer. Вхід можливий лише за котируванням, доступним після цього закриття. Захисний стоп розміщують нижче мінімуму всієї події мінус буфер. Ведмежий варіант змінює напрямки потоку та ціни на протилежні.

Для дивергенції використовуйте два цінові півоти-мінімуми з left=right=2. Після підтвердження другого вимагайте P2<P1−buffer та CVD(time_P2)>CVD(time_P1)+delta_min. Порівнюйте CVD саме в моменти цих цінових півотів, а не у двох незалежно вибраних привабливих мінімумах CVD. Обидві точки мають належати до одного інтервалу накопичення між скиданнями. Другий півот стає доступним лише після двох барів праворуч від нього.

Вікно поглинання та вікно повернення ціни за рівень потребують правила зв’язку. Під час активації кандидата зберігайте початкову підтримку, початок події та мінімум. Не пересувайте початок знову й знову до останнього вікна інтенсивних продажів, доки нарешті не з’явиться вигідний відскок.

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

on_trade(tr):
  if tr.id in seen_ids: return
  if tr.taker_side not in {BUY,SELL} or not valid_size_and_feed(tr):
    mark_window_and_cumulative_segment_unavailable_until_reset_or_rebuild(); return
  seen_ids.add(tr.id)
  signed_size = (+1 if tr.taker_side == BUY else -1)*normalized_size(tr)
  delta_bucket += signed_size
  CVD += signed_size
on_window_close(t):
  if not full_window_and_prior_baseline_available(t): return
  absorption = near_frozen_support and total_size>=configured_minimum
  absorption &= sell_share>=0.7 and sell_size>past_p95
  absorption &= downward_excursion<=0.15*ATR_before_window
  if absorption and no_active_event:
    arm_reclaim_candidate(known_at=window_data_ready_at,expiry=fixed_deadline)
on_price_pivot_confirmation(p2,t):
  p1 = previous_confirmed_price_low(p2)
  if p1 is None or not same_cvd_reset(p1,p2): return
  if missing_cvd_at_either_pivot(p1,p2): return
  if not complete_classified_flow_between(p1.occurred_at,p2.occurred_at): return
  if not cumulative_segment_valid(p1,p2): return
  divergence = p2.price<p1.price-buffer and cvd_at(p2)>cvd_at(p1)+dmin
  if divergence and no_active_event:
    arm_candidate(known_at=received_confirmation_time(t))
# Unclassified trades never default to SELL; overlapping windows do not reset TTL.

Часові мітки, класифікація та одиниці обсягу

Зберігайте час події та отримання даних, ідентифікатори угод і стан з’єднання. Оцінка за кольором свічки або підвищенням ціни відносно попередньої угоди (uptick) — інший показник; називайте його відповідно. Зокрема, з майже незмінного цінового ряду така оцінка не може надійно визначити інтенсивні агресивні продажі. Не враховуйте окремі угоди та їх агреговане представлення двічі.

Приведіть обсяги до сталої одиниці вимірювання. CVD у монетах і в грошовому номіналі може поводитися по-різному за значної зміни ціни. Інверсні контракти потребують власної специфікації кількості замість універсального множення кількості на ціну. Історична база для процентиля має виключати поточне вікно вимірювання.

CVD описує вже виконаний агресивний потік. Дослідження OFI дає підстави враховувати також зміни котирувань [3], але додавання L2 не встановлює власника айсберг-заявки. Статистика поповнення заявок на купівлю біля S може бути корисною, однак пакетна передача даних і прихована ліквідність роблять її неповною. Збережіть це розмежування в назві ознаки й описі доказів.

Синтетичні приклади: прибуток на поглинанні та збиток на дивергенції

Нехай S=100, попередній ATR=2 та buffer=0.10. За 30 секунд обсяг агресивних купівель дорівнює 20, продажів — 100: отримуємо delta−80 та частку продажів 83.3%. Історичне значення процентиля обсягу продажів — 70. Середина спреду знижується від 100.10 до мінімуму 99.85: рух 0.25 менший за межу 0.30. Умова непрямого показника поглинання виконується, хоча CVD різко падає.

Наступний бар закривається на 100.20. Купівля за 100.25 зі стопом 99.75 і ціллю 101.25 має ризик 0.50 та потенційний прибуток 1.00, тобто 2R до витрат. Якщо доступне котирування вже становить 100.60, потенційний прибуток до незмінної цілі падає до 0.65, а ризик зростає до 0.85. Заздалегідь визначене мінімальне співвідношення прибутку до ризику може відхилити вхід; бектест не може зберегти недоступне виконання за 100.25.

В окремому прикладі збиткової дивергенції цінові мінімуми дорівнюють 100 та 99.50, а CVD−500 та −420 у межах однієї сесії. Після підтвердження і повернення ціни за рівень купівля виконується за 100.15 зі стопом 99.40. Ціна продовжує знижуватися, захисний ордер виконується за 99.35, збиток становить 0.80. Дивергенція не запобігла зникненню пасивних заявок на купівлю або появі нової хвилі продажів.

Підтвердження ціни та виконання все ще мають значення

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

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

Фіксована ціль у R, відома на той момент ціль VWAP та структурна ціль — окремі варіанти виходу. Ранкова угода не може використовувати підсумковий VWAP усієї сесії. Враховуйте комісії, прослизання та funding, якщо позиція залишається відкритою в момент його нарахування.

Виміряйте, наскільки ціна відскочила під час очікування підтвердження півота. Візуально переконлива дивергенція може бути економічно запізнілою. Кандидатів, чия ціль була досягнута ще до сигналу, обліковуйте як упущені можливості; не вважайте попередній відскок прибутком, доступним стратегії після підтвердження.

Виміряйте додаткову цінність дельти

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

Перевірте стійкість до додаткової затримки, наприклад 100–500ms, якщо це відповідає цільовій системі; окремо аналізуйте інтервали втрати з’єднання. Ці затримки — запропоновані тести, а не універсальні припущення. Якщо витрати величиною в один спред усувають результат, опишіть цю нестійкість.

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

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

Поширені помилки

Об'єднання механізмів

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

Вважати один торговий майданчик усім ринком

Інший майданчик може мати інший або протилежний агресивний потік.

Вважати будь-яке зменшення обсягу заявки продажем

Видимий обсяг заявки може зникнути через її скасування; для дельти агресивних угод потрібні дані про виконані угоди.

Список перевірки перед застосуванням методу

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

0/7 пунктів

Поширені запитання

Чи достатньо високого торгового обсягу та довгої тіні свічки для доказу поглинання?

Це лише слабший проксі-індикатор OHLCV. Це визначення вимагає класифікованого агресивного потоку та вимірювання цінового руху.

Чи може дивергенція CVD призвести до негайної торгівлі?

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

Джерела дослідження

Кожне джерело підтверджує визначення або докази, описані поруч. Псевдокод, штучні приклади та запропоновані параметри потребують окремої перевірки.

  1. Public TradeBybit. Прочитано описи сторони тейкера, часу угоди та ідентифікатора; це документація даних, а не стратегія. Перевірено: .
  2. OrderbookBybit. Прочитано описи видимого обсягу, повідомлень snapshot/delta та обмежень публічного стакана. Перевірено: .
  3. The price impact of order book eventsCont, Kukanov and Stoikov. Прочитано дослідження потоку заявок і котирувань; воно не перевіряє ці детектори поглинання/CVD. Перевірено: .

Пов’язані методи

Примітка про ризики

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

Перевірте правила, перш ніж ризикувати реальним капіталом

Перевірте можливості застосунку, дані й кожну змодельовану угоду; складні детектори можуть потребувати окремої реалізації.

Завантажити Backtest в App Store