Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

Cara Estimasi Posisi Antrean dari Data L2

Posisi antrean menentukan apakah order pasif memperoleh spread. Pelajari cara mengestimasi posisi dari data buku agregat serta kapan sebaiknya beralih ke data MBO.

Mengapa posisi antrean adalah satu-satunya keunggulan

Order pasif berdiam di dalam book dan menunggu pihak lain untuk melakukan crossing spread ke arahnya. Berdasarkan price-time priority, mesin pencocokan (matching engine) mengurutkan order yang ada berdasarkan harga terlebih dahulu, kemudian berdasarkan waktu kedatangan. Jika sudah ada 10.000 saham yang bid di harga $10,00 dan Anda menambahkan 100 saham di belakangnya, 10.000 saham tersebut harus terjual atau dibatalkan sebelum giliran Anda tiba. Jika Anda membatalkan dan memasukkan kembali order di harga yang sama, Anda akan kembali ke posisi paling belakang.

Peringkat tersebut menentukan sisi ekonomisnya. Di posisi depan, Anda sering bertransaksi dan mengumpulkan spread ditambah rabat penambahan likuiditas, yang merupakan subjek dari maker-taker fees and rebates. Di posisi belakang, Anda hanya bertransaksi setelah semua orang di depan Anda selesai bertransaksi, yang terjadi ketika arus satu arah masuk dalam volume besar. Eksekusi di posisi belakang biasanya terkumpul sesaat sebelum harga menembus level Anda. Harga yang sama, order yang sama, namun hasil yang berbeda.

Apa yang bisa dan tidak bisa ditunjukkan oleh data Level 2

Level 1 adalah bid dan offer terbaik beserta volumenya. Level 2, yang juga disebut market by price, menambahkan kedalaman: daftar level harga dengan total volume yang ada di setiap level. Keduanya adalah agregat, dan Level 1 vs Level 2 market data membandingkan keduanya secara lengkap. Ketika bid di harga $10,00 turun dari 10.000 saham menjadi 8.500, feed melaporkan 1.500 saham telah hilang. Data tersebut tidak menyebutkan apakah saham itu terjual, apakah satu order yang keluar atau empat puluh, atau di posisi mana mereka berada dalam antrean.

Eksekusi adalah bagian yang terlihat: tape mencatat setiap transaksi dengan volume tertentu, sehingga Anda dapat menguranginya secara tepat. Sisanya adalah pembatalan, dan pembatalan adalah titik di mana estimasi dimulai. Panel di bawah ini menghitung pesan di bagian atas book yang terkonsolidasi dibandingkan dengan print pada tape untuk satu saham likuid selama satu sesi perdagangan biasa, Rabu, 10 Juni 2026.

QueryPesan top of book dibandingkan prints pada tape, AAPL, 10 Juni 2026
SQL tepat di balik setiap angka
SELECT
    q.et_time                            AS et_time,
    q.quote_updates                      AS quote_updates,
    t.trades                             AS trades,
    round(q.quote_updates / t.trades, 1) AS updates_per_trade
FROM
(
    SELECT
        formatDateTime(toStartOfHour(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_time,
        count() AS quote_updates
    FROM global_markets.cache_stocks_quotes
    WHERE ticker = 'AAPL'
      AND sip_timestamp >= '2026-06-10 12:00:00'
      AND sip_timestamp <  '2026-06-10 20:00:00'
    GROUP BY et_time
) AS q
INNER JOIN
(
    SELECT
        formatDateTime(toStartOfHour(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS trade_hour,
        count() AS trades
    FROM global_markets.stocks_trades
    WHERE ticker = 'AAPL'
      AND sip_timestamp >= '2026-06-10 12:00:00'
      AND sip_timestamp <  '2026-06-10 20:00:00'
    GROUP BY trade_hour
) AS t ON q.et_time = t.trade_hour
ORDER BY et_time
Run this yourself

Jam 08:00 berada sebelum bel pembukaan: bagian atas book berubah sebanyak 0.8 kali per print di sana, jumlah pesan lebih sedikit daripada print. Di dalam sesi reguler, rasionya berbalik. Pada jam 15:00, bagian atas book berubah sebanyak 1.6 kali per print, di seluruh 233433 pesan pada jam tersebut saja. Sebagian besar aktivitas pada level harga di pasar terbuka adalah order yang masuk dan keluar tanpa pernah terjadi transaksi, dan setiap kejadian tersebut menggeser posisi Anda dalam antrean dengan jumlah yang tidak dinyatakan oleh feed agregat mana pun.

Asumsi pembatalan seragam, dan di mana hal itu menguntungkan Anda

Langkah awal standar mengasumsikan pembatalan tersebar merata di seluruh antrean. Sebut x sebagai kedalaman fraksional Anda: jumlah saham di depan Anda dibagi dengan total saham yang ada di harga Anda. Model seragam menetapkan peluang bahwa setiap saham yang dibatalkan berada di depan Anda sama dengan x, ditulis p(x) = x. Jika Anda berada di tengah antrean 10.000 saham, dan melihat 1.000 saham dibatalkan tanpa ada print, model tersebut akan memajukan posisi Anda sebanyak 500 tempat.

Antrean nyata cenderung tidak merata (skew). Order yang sudah lama berada di book cenderung dimiliki oleh pihak yang sabar menunggu, sementara order yang baru saja ditambahkan jauh lebih mungkin merupakan quote sementara yang hilang dalam hitungan detik. Pembatalan terkonsentrasi ke arah belakang antrean, di dekat Anda dan di belakang Anda. Dari 1.000 saham yang dibatalkan tersebut, mungkin hanya 200 yang berada di depan Anda, sementara model mengkreditkan 500 untuk Anda. Jika ini terjadi sepanjang hari, antrean simulasi akan maju lebih cepat daripada antrean nyata. Kesalahan ini hanya terjadi satu arah: lebih banyak eksekusi, pada momen yang lebih baik, daripada yang didapatkan oleh order riil.

Bagaimana antrean terkuras

Pembatalan menggeser posisi Anda secara tidak terlihat. Transaksi menggeser posisi Anda secara terlihat, sesuai dengan volume print.

QueryRincian prints AAPL berdasarkan ukuran perdagangan, 10 Juni 2026
SQL tepat di balik setiap angka
SELECT
    multiIf(size < 100,  'under 100 shares',
            size = 100,  'exactly 100 shares',
            size <= 499, '101 to 499 shares',
            size <= 999, '500 to 999 shares',
                         '1000 shares or more')             AS trade_size_group,
    round(100 * count() / sum(count()) OVER (), 1)          AS share_of_prints_pct,
    round(100 * sum(size) / sum(sum(size)) OVER (), 1)      AS share_of_shares_pct
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
  AND sip_timestamp >= '2026-06-10 14:00:00'
  AND sip_timestamp <  '2026-06-10 20:00:00'
GROUP BY trade_size_group
ORDER BY min(size)
Run this yourself

Print di bawah satu lot standar (round lot) adalah 90% dari jumlah pada sesi ini dan 42.5% dari total saham. Blok seribu saham atau lebih adalah 0.2% dari print dan 19.9% dari volume. Antrean terkuras dalam potongan kecil, sehingga jarak antara posisi 2.000 dan 3.500 adalah ratusan print penantian. Simulator yang memberikan eksekusi setelah dua transaksi besar telah melewatkan sebagian besar tape.

Order yang tidak dapat Anda lihat

Feed kedalaman (depth feed) memiliki batasan. Jika Anda menerima sepuluh level harga dan order Anda berada di level kesebelas, order Anda berada di luar data: tidak terlihat volume di depannya, dan tidak terlihat order yang bergabung di belakangnya. Pada titik itu, Anda sedang mengarang angka, bukan mengestimasinya. Situasi ini adalah hal yang lumrah, karena order yang tidak mengejar pasar akan segera menjauh dari bagian dalam book.

QueryBest bid dan level harga yang dikunjungi, AAPL, interval 15 menit
SQL tepat di balik setiap angka
SELECT
    formatDateTime(toStartOfFifteenMinutes(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_time,
    round(avg(toFloat64(bid_price)), 2) AS best_bid,
    uniqExact(bid_price)                AS bid_levels_touched
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
  AND sip_timestamp >= '2026-06-10 14:00:00'
  AND sip_timestamp <  '2026-06-10 20:00:00'
  AND bid_price > 0
GROUP BY et_time
ORDER BY et_time
Run this yourself

Dalam bucket 10:00, bid terbaik rata-rata berada di $290.29 dan mengunjungi 187 harga berbeda dalam waktu lima belas menit. Setiap harga tersebut adalah level terpisah pada saham yang dikutip dalam sen, sehingga tampilan sepuluh level mencakup sepuluh sen dari book. Order yang ditinggalkan di satu harga selama sesi seperti ini dapat menghabiskan waktu lama di bawah level terdalam yang dapat dilihat pemiliknya.

Di mana posisi antrean paling berharga

Posisi antrean paling berharga di tempat di mana perbaikan harga (price improvement) tidak dimungkinkan. Saham yang terpaku pada spread satu sen tidak menyisakan ruang untuk mendahului antrean dengan harga yang lebih baik: semua orang menumpuk di tick yang sama, dan waktu kedatangan yang menentukan sisanya. Di tempat di mana spread selebar beberapa sen, seorang trader dapat mendahului seluruh antrean dengan selisih satu sen, dan keputusan harga lebih diutamakan daripada antrean.

QueryRata-rata quoted spread dan durasi pada spread satu sen, tengah hari 10 Juni 2026
SQL tepat di balik setiap angka
SELECT
    ticker                                                AS symbol,
    round(avg(toFloat64(ask_price - bid_price)) * 100, 2) AS avg_spread_cents,
    round(100 * countIf(round(toFloat64(ask_price - bid_price) * 100) <= 1) / count(), 1) AS one_cent_pct
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'KO', 'NVDA', 'MSFT', 'BKNG')
  AND sip_timestamp >= '2026-06-10 15:00:00'
  AND sip_timestamp <  '2026-06-10 19:00:00'
  AND bid_price > 0
  AND ask_price > bid_price
GROUP BY ticker
ORDER BY avg_spread_cents
Run this yourself

Selama empat jam tengah hari pada sesi yang sama, saham yang paling ketat dari enam nama, KO, rata-rata selebar 1.18 sen dan menunjukkan spread satu sen pada 82.5% dari pembaruannya. Yang paling lebar, MSFT, rata-rata 8.46 sen, dengan spread satu sen pada 1.1% dari pembaruan. Model antrean yang dikalibrasi pada nama pertama tidak memberikan informasi berguna tentang nama kedua. Order yang berada di antara quote, yang dibahas dalam midpoint peg orders, membentuk antrean mereka sendiri di bawah aturan yang sama.

Empat diagnostik untuk backtest Anda sendiri

  1. Bandingkan tingkat eksekusi simulasi dengan tingkat eksekusi riil Anda pada nama yang sama selama jam yang sama. Simulator yang mengeksekusi 70% order yang secara riil hanya terisi 40% sedang menggambarkan asumsi Anda, bukan pasar.
  2. Bagi eksekusi simulasi menjadi dua tumpukan: eksekusi di mana level harga tetap bertahan setelahnya, dan eksekusi yang terjadi hanya saat level tersebut benar-benar habis. Tumpukan yang condong ke jenis kedua berarti simulator memberikan eksekusi tepat saat harga menembus posisi Anda.
  3. Berikan batasan pada asumsi. Jalankan ulang dengan setiap pembatalan diambil dari depan antrean, kemudian dengan setiap pembatalan diambil dari belakang. Kedua hasil tersebut adalah batas kesalahan yang jujur di sekitar p(x) mana pun yang Anda pilih.
  4. Ukur seberapa sering harga Anda berada di luar kedalaman yang disediakan feed Anda. Eksekusi di sana adalah hasil karangan. Look-ahead bias in backtesting menjelaskan kegagalan yang sama dari sudut pandang lain: hasil yang didasarkan pada informasi yang tidak pernah dimiliki strategi tersebut.

Kapan harus berhenti membuat model dan membeli data order

Data market-by-order (MBO) membawa pesan untuk setiap order individu, dari saat tiba hingga saat dieksekusi atau dibatalkan, masing-masing ditandai dengan pengenal uniknya sendiri. Putar ulang feed tersebut dan posisi Anda dalam antrean adalah angka pasti, bukan estimasi, setelah Anda mengasumsikan penundaan yang realistis untuk order Anda mencapai bursa. Data ini lebih mahal daripada feed kedalaman dan membutuhkan penyimpanan yang jauh lebih besar.

Diagnostik 3 adalah aturan pengambilan keputusan. Jika batas depan dan belakang sama-sama membuat strategi menguntungkan, asumsi tengah sudah cukup. Jika strategi menghasilkan uang di bawah satu batas dan merugi di bawah batas lainnya, model antrean adalah strateginya, dan membeli feed order-by-order lebih murah daripada mempertahankan tebakan.

Bursa pro-rata mengubah pertanyaan

Beberapa pasar berjangka dan opsi membagi order masuk ke seluruh order yang ada di suatu harga secara proporsional terhadap volume, bukan berdasarkan urutan kedatangan. Waktu jauh lebih tidak penting di sana, dan volume yang dikutip menjadi tuasnya: melipatgandakan volume Anda kira-kira melipatgandakan bagian Anda dari setiap eksekusi. Mode kegagalan bergeser bersamanya, ke arah mengutip volume yang lebih besar daripada yang ingin Anda miliki. Why options orders do not get filled membahas bagaimana hal itu terlihat dari sisi ritel di book opsi.

FAQ

Apa itu posisi antrean dalam trading?

Posisi antrean adalah peringkat Anda di antara order yang ada di harga yang sama pada bursa yang sama. Pada book dengan prioritas harga-waktu, order di depan Anda harus terjual atau dibatalkan sebelum order Anda dapat terjual.

Bisakah Anda menghitung posisi antrean dari data Level 2?

Tidak secara tepat. Level 2 menunjukkan total volume per level harga tanpa identitas order, jadi ketika volume menghilang tanpa print, Anda tidak dapat mengetahui apakah saham tersebut berada di depan atau di belakang Anda. Anda dapat mengestimasi angkanya dan memberikan batasan pada estimasi tersebut. Angka yang tepat memerlukan data order-by-order.

Mengapa tingkat eksekusi backtest biasanya terlalu tinggi?

Asumsi umum menyebarkan pembatalan secara merata di seluruh antrean, sementara pembatalan nyata terkonsentrasi ke arah belakang. Model yang merata memajukan order simulasi Anda lebih cepat daripada pergerakan antrean nyata, yang terlihat sebagai lebih banyak eksekusi, dan eksekusi yang lebih baik, daripada yang diberikan oleh trading riil.

Apa itu data MBO?

Data market-by-order memberikan setiap order individu pesannya sendiri, dari kedatangan hingga eksekusi atau pembatalan. Ini adalah feed di mana posisi Anda dalam antrean dapat dihitung, bukan dimodelkan, yang paling penting bagi strategi yang hidup pada spread satu tick.

Apakah posisi antrean penting di bursa pro-rata?

Kurang penting. Alokasi pro-rata membagi order masuk ke seluruh order yang ada berdasarkan volume, sehingga tiba lebih dulu tidak banyak membantu dan volume yang dikutip yang bekerja. Memeriksa model alokasi mana yang digunakan bursa harus dilakukan sebelum melakukan pemodelan antrean apa pun.


Setiap panel di sini memuat SQL yang menghasilkannya. Ubah ticker, pindahkan tanggal, dan ajukan pertanyaan yang sama tentang nama-nama yang Anda perdagangkan di terminal Strasmore.