Iceberg order: що це та як працює прихована ліквідність
Що таке iceberg order, як працюють видима частина й прихований резерв, чому кожне оновлення втрачає позицію в черзі та як це видно на стрічці угод.
Iceberg order — це один лімітний ордер, розміщений у біржовому стакані, з двома обсягами: видимим, який увесь ринок бачить у котируванні, та прихованим резервом, який matching engine автоматично виставляє частинами в міру виконання видимого обсягу. Назва описує форму: невелика верхівка над поверхнею води та більша частина обсягу під нею. Приховування має ціну — втрата позиції в черзі: кожна оновлена частина отримує нову часову мітку й опиняється позаду всіх ордерів, які вже чекали за цією ціною.
Що таке iceberg order?
Припустімо, фонд хоче купити 50 000 акцій і готовий заплатити до $50.00. Якщо ввести звичайний лімітний ордер, у стакані всі побачать попит на 50 000 акцій за цією ціною. Якщо ввести iceberg order із display size 500, у стакані буде видно 500 акцій. Коли ці 500 акцій будуть виконані, matching engine забере з резерву ще 500, розмістить їх у стакані й повторюватиме цей процес, доки резерв не вичерпається або ордер не буде скасовано.
Протягом усього процесу незмінними залишаються дві характеристики. Це один ордер за однією ціною на одному майданчику, а біржа утримує весь обсяг із моменту подання ордера.
Найпоширеніший опис — трейдер ділить великий ордер на частини й подає їх протягом годин або днів — стосується іншої техніки. Це schedule виконання, яким керує алгоритм. Він надсилає багато окремих child orders через кілька майданчиків і оцінює результат щодо benchmark, наприклад VWAP. Iceberg — це атрибут ордера на конкретному майданчику. Поділ на частини відбувається всередині matching engine, за мікросекунди, в одному стакані.
Термінологія залежить від майданчика. Видиму частину називають display quantity або tip, решту — reserve або non-displayed portion. У rulebook Nasdaq цей атрибут має назву Reserve Size.
Яким малим може бути видимий обсяг?
Майданчики встановлюють мінімальний розмір видимої частини та виражають його в round lots, а не у фіксованій кількості акцій. Nasdaq вимагає, щоб display size reserve order на момент подання становив одну або більше стандартних торгових одиниць. Змішаний лот округлюється вниз до найближчого round lot. У стакані Cboe BZX видимий обсяг поповнюється після того, як він зменшився до менш ніж одного round lot. Формулювання відрізняються залежно від майданчика й можуть змінюватися, тому слід читати rulebook майданчика, на який ви маршрутизуєте ордер, а не покладатися на цифру, наведену з чужих слів.
Round lot більше не означає фіксовані 100 акцій. Відповідно до оновленого визначення Regulation NMS, чинного з 3 листопада 2025 року, його розмір залежить від ціни: 100 акцій за ціною $250.00 і нижче, 40 акцій у діапазоні від $250.01 до $1,000.00, 10 акцій у діапазоні від $1,000.01 до $10,000.00 і одна акція вище цього рівня. Біржі двічі на рік перепризначають кожній акції відповідний round lot на основі її середньої ціни закриття за період оцінювання у березні або вересні. Повідомлення постачальника Nasdaq про зміну містить рівні та відповідні дати. Для акції з чотиризначною ціною найменший дозволений tip становить 10 акцій.
Чи втрачають iceberg orders пріоритет у черзі?
Так. Саме цей момент у більшості пояснень пропускають. У стаканах американських акцій ордери, що очікують виконання, ранжуються спочатку за ціною, а потім за часом. Якщо ви прибули раніше за тією самою ціною, ви торгуєтеся раніше.
Видима частина iceberg order при розміщенні входить у цю чергу. Після її виконання й поповнення з резерву нова частина входить як новий видимий ордер із новою часовою міткою — у кінець черги за цією ціною. Правило Nasdaq прямо описує цю асиметрію:
Коли Reserve Order розміщується, і проти його видимого ордера відбувається виконання, унаслідок якого його обсяг зменшується до рівня, нижчого за стандартну торгову одиницю, буде введено новий видимий ордер із новою часовою міткою. Водночас обсяг невидимого ордера зменшиться на ту саму величину, але нової часової мітки не отримає.
Це Nasdaq Equity 4, Rule 4703(h), процитоване з рішення SEC про затвердження зміни правила щодо reserve orders від 18 лютого 2021 року. Резерв зберігає початкову позицію, тоді як видимий tip скидає її після кожного поповнення. Ордер на 50 000 акцій, який показується частинами по 500 акцій, оновлюється до ста разів. Кожне оновлення знову починає рух у черзі позаду всіх видимих ордерів, які вже чекали за цією ціною. Це і є реальна ціна приховування.
Багато майданчиків додають ще одну втрату. Видимий інтерес має пріоритет над невидимим інтересом за тією самою ціною. Тому reserve поступається будь-якому видимому ордеру на цьому рівні, навіть якщо reserve надійшов раніше.
Iceberg order, hidden order і dark pool
- Iceberg розміщується на публічній біржі та додає свою видиму частину до публічного котирування. Ця частина може формувати national best bid or offer. Резерв за нею в котируванні не відображається.
- Повністю hidden order взагалі нічого не показує. Він розміщується на тій самій публічній біржі, виконується за лімітною ціною, а в публічних даних з’являється лише після виконання. Зазвичай майданчики ставлять його позаду видимих ордерів за тією самою ціною.
- Dark pool — це окремий майданчик, який узагалі не має публічного котирування. Print потрапляє на стрічку постфактум через trade reporting facility.
- Block trade переміщує весь обсяг одним узгодженим print. Це максимальний обсяг і мінімальна тривалість — протилежний підхід до поступового виведення ордера на ринок.
Кожен із цих способів дає змогу перемістити обсяг без попереднього розкриття. Різниця полягає в тому, де розміщений ордер і яку його частину публічне котирування взагалі показує. Прихований інтерес може стояти за цінами, яких котирування не відображає. Тому видимий стакан завжди є лише неповною картиною доступної ліквідності. Це важливо враховувати разом із locked and crossed markets.
Яка частка print у стрічці має малий обсяг?
Перш ніж аналізувати слід iceberg order, потрібно зрозуміти звичайну структуру стрічки. Панель нижче ділить місячний обсяг акцій на кількість угод за цей місяць для двох відомих компаній, щодо яких у відповідному періоді не було stock split.
Точний SQL-код для кожного числа
SELECT
toString(month_start) AS month,
formatDateTime(month_start, '%b %Y') AS month_label,
round(sumIf(volume, ticker = 'MSFT') / sumIf(transactions, ticker = 'MSFT'), 1) AS msft_shares_per_print,
round(sumIf(volume, ticker = 'KO') / sumIf(transactions, ticker = 'KO'), 1) AS ko_shares_per_print
FROM
(
SELECT
toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York'))) AS month_start,
ticker,
volume,
transactions
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('MSFT', 'KO')
AND window_start >= toDateTime('2019-01-01 00:00:00', 'UTC')
AND window_start < toDateTime('2026-07-01 00:00:00', 'UTC')
)
GROUP BY month_start
HAVING sumIf(transactions, ticker = 'MSFT') > 0
AND sumIf(transactions, ticker = 'KO') > 0
ORDER BY month_startУ Jan 2019 середнє виконання ордера Microsoft становило 137.4 акцій. До Jun 2026 середній показник зріс до 39.5 акцій, тоді як для Coca Cola за той самий місяць він становив 47.7. Інституційні ордери не стали меншими. Зменшився розмір print. Тепер один parent order потрапляє на стрічку у вигляді сотень або тисяч невеликих виконань — незалежно від того, чи він приховується, виконується за schedule, чи використовує обидва підходи.
Якщо наблизити окрему сесію, видно ту саму структуру. Наступна панель групує кожен AAPL print за 17 червня 2026 року за розміром.
Точний SQL-код для кожного числа
WITH tape AS
(
SELECT size
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-17 04:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-18 04:00:00', 'UTC')
)
SELECT
multiIf(size < 100, 'under 100',
size < 200, '100 to 199',
size < 500, '200 to 499',
size < 1000, '500 to 999',
size < 5000, '1000 to 4999',
'5000 and up') AS print_size_bucket,
count() AS prints,
round(100 * count() / sum(count()) OVER (), 2) AS pct_of_prints,
round(100 * sum(size) / sum(sum(size)) OVER (), 2) AS pct_of_shares
FROM tape
GROUP BY print_size_bucket
ORDER BY min(size)Print менше ніж 100 акцій становили 88.99% усіх виконань того дня, але припадали на 22.84% загального обсягу акцій. На іншому кінці розподілу bucket 5000 and up становив 0.02% усіх print і 48.77% обсягу. Print на 500 акцій у цьому розподілі не є незвичним. Це перша причина, чому виявити iceberg order складно.
Як виявити iceberg order за стрічкою?
Консолідована стрічка містить ціну, обсяг, час і майданчик для кожного виконання. У ній немає ідентифікаторів ордерів, display quantity або резервів. Вона може показати лише слід: один і той самий обсяг багаторазово друкується за однією ціною протягом періоду, який один видимий ордер такого розміру рідко пережив би. Панель нижче зіставляє кожну ціну з розміром кожного print за ту саму сесію та підраховує повторення.
Точний SQL-код для кожного числа
SELECT
concat(toString(size), ' shares at $', toString(round(toFloat64(price), 2))) AS level_and_size,
count() AS prints,
formatDateTime(toTimeZone(min(sip_timestamp), 'America/New_York'), '%H:%i') AS first_et,
formatDateTime(toTimeZone(max(sip_timestamp), 'America/New_York'), '%H:%i') AS last_et,
round(dateDiff('minute', min(sip_timestamp), max(sip_timestamp)) / 60.0, 1) AS hours_spanned
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-17 04:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-18 04:00:00', 'UTC')
AND size >= 200
GROUP BY price, size
ORDER BY prints DESC
LIMIT 12Найчастіше повторювалася комбінація 300 shares at $300.54 — вона з’явилася 67 разів у період між 09:34 і 09:58 ET, що становить 0.4 годин. Простежимо цю комбінацію протягом сесії у півгодинних інтервалах, щоб побачити, чи повторення розподілялися протягом усього дня, чи зосередилися в одному періоді.
Точний SQL-код для кожного числа
WITH top_level AS
(
SELECT
price,
size
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-17 04:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-18 04:00:00', 'UTC')
AND size >= 200
GROUP BY price, size
ORDER BY count() DESC, size DESC, price DESC
LIMIT 1
)
SELECT
formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
count() AS prints,
sum(count()) OVER (ORDER BY et_time) AS cum_prints
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-17 04:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-18 04:00:00', 'UTC')
AND (price, size) IN (SELECT price, size FROM top_level)
GROUP BY et_time
ORDER BY et_timeВони зосередилися в одному періоді. Слід зводиться до одного півгодинного bucket — того, що починається о 09:30 ET. Він містив 67 print і довів накопичений показник за сесію до 67. Тридцять хвилин повторень за однією ціною — це сплеск, а не присутність протягом усього дня. Тому такий короткий слід є слабшим доказом, ніж може здатися спочатку. Видимий ордер такого розміру за такою ціною в настільки активній акції зазвичай виконали б за секунди. Щось постійно виставляло його знову.
Чому виявлення iceberg order ненадійне
Фраза «щось постійно виставляло його знову» чесно описує межі того, що підтверджує стрічка. Такий самий слід може мати звичайні пояснення, які взагалі не передбачають reserve order:
- Execution algorithm ділить parent order на однакові child orders і надсилає їх по одному із власного сервера брокера.
- Незалежні учасники за замовчуванням використовують однаковий круглий обсяг за однаковою круглою ціною, оскільки круглі числа до цього спонукають.
- Market maker багаторазово повторно котирує той самий обсяг на рівні, який готовий утримувати.
- Кількість print і кількість ордерів не збігаються, оскільки один ордер, що очікує виконання, може бути виконаний sweep-ордером, який відображається як кілька print.
Є також непомітний сценарій. Iceberg, який жодного разу не виконується, не залишає жодного сліду, а стрічка фіксує лише виконання. Будь-який показник прихованої ліквідності, побудований на основі print, вимірює тільки частину, яка була виконана, а не частину, яка чекала. Сприймайте таку структуру як гіпотезу, яку потрібно перевірити за складом майданчиків і котируванням, а не як факт щодо конкретного ордера.
FAQ
Що таке iceberg order у трейдингу?
Це лімітний ордер із двома обсягами: невеликим видимим обсягом, який відображається у публічному котируванні, і більшим прихованим резервом, який біржа автоматично випускає щоразу після виконання видимої частини. Це один ордер за однією ціною на одному майданчику.
Чи втрачають iceberg orders своє місце в черзі?
Видима частина — так. Кожне поповнення розміщується як новий видимий ордер із новою часовою міткою, позаду всіх ордерів, які вже чекали за цією ціною. За правилом Nasdaq невидимий резерв зберігає початкову часову мітку.
Чи можна побачити iceberg orders у Level 2?
Ні. Відображення глибини стакана показує лише видиму частину, яка виглядає як звичайний невеликий лімітний ордер. Резерв залишається невидимим, доки не буде виконаний, і ніколи не відображається окремим рядком.
Чи є iceberg order тим самим, що ордер у dark pool?
Ні. Iceberg розміщується на публічній біржі та публікує частину свого обсягу в публічному котируванні. Ордер у dark pool розміщується на майданчику без публічного котирування, а угода з’являється в публічних даних лише після її print.
Чи законні iceberg orders?
Так. Reserve orders — це документовані атрибути ордерів у rulebooks бірж, поданих до SEC та доступних компаніям — членам бірж і їхнім клієнтам. Приховування частини обсягу ордера є розкритою характеристикою цього типу ордера.
Кожна панель у цій статті містить SQL, за допомогою якого її побудовано, тому можна побачити, як було підраховано кожне число. Щоб запустити сканування повторюваних print для обраних вами ticker і дати, надішліть запит звичайною англійською мовою в терміналі Strasmore.