Antrean di Dalam Tembok: Menganalisis Posisi Order di Kerapatan Order Book
Pendahuluan: Mengapa Order Book Agregat Berbohong
Setiap trader yang berdagang berdasarkan order book melihat gambaran yang sama: bid di kiri, ask di kanan, dan di setiap level harga — sebuah angka yang menunjukkan total volume order limit. Misalnya:
Harga 10001 | 150 lot
Harga 10000 | 2.400 lot ← tembok
Harga 9999 | 80 lot
2.400 lot di level 10000 — itulah "tembok" (kerapatan). Dan di sinilah pertanyaan yang sangat penting yang diabaikan oleh sebagian besar trader: di mana tepatnya di antara 2.400 lot itu order kita berada?
Harga 10000 [ 1.800 lot SEBELUM kita ][ ORDER KITA 10 lot ][ 590 lot SETELAH kita ]
Ini bukan sekadar rasa ingin tahu akademis. Ini adalah perbedaan antara order yang terisi dan yang tidak terisi. Antara keuntungan dan kerugian. Antara backtest yang menampilkan kurva ekuitas yang indah dan kenyataan di mana strategi Anda tidak berfungsi.
Apa Itu Posisi Antrean dan Mengapa Menghitungnya
Visualisasi antrean FIFO: posisi trader di antara order-order lain pada suatu level harga
FIFO dan Realitas Bursa
Sebagian besar bursa — baik tradisional (CME, NASDAQ) maupun kripto (Binance, Bybit, OKX) — menggunakan aturan Price-Time Priority (FIFO). Artinya: pada harga yang sama, order yang ditempatkan lebih dahulu akan dieksekusi lebih dahulu.
Ketika market sell order datang dan "memukul" level harga bid kita, ia secara berurutan mengisi order limit dari kepala antrean ke ekor. Jika market order tidak cukup besar untuk mencapai posisi kita dalam antrean — kita tetap tidak terisi.
Dua Komponen Nilai Posisi Antrean
Penelitian akademik (Moallemi & Yuan, Columbia Business School, 2017) mengidentifikasi dua komponen nilai posisi antrean:
-
Komponen statis — pertukaran antara penangkapan spread dan adverse selection. Semakin jauh kita berada di antrean, semakin tinggi probabilitas bahwa kita terisi oleh order besar yang terinformasi (bukan noise). Sederhananya: jika Anda terisi terakhir dalam antrean — harga kemungkinan besar sudah bergerak melawan Anda.
-
Komponen dinamis — optionalitas yang diberikan oleh peningkatan posisi antrean dari waktu ke waktu. Ketika order di depan kita dibatalkan atau terisi, posisi kita membaik tanpa tindakan apa pun dari pihak kita.
Data empiris menunjukkan bahwa untuk instrumen dengan ukuran tick besar, nilai posisi antrean dapat sebanding dengan ukuran spread. Ini adalah besaran yang luar biasa.
Cara Memperkirakan Posisi Antrean Anda
Masalah Estimasi
Kita menempatkan order limit berukuran S pada harga P. Pada saat penempatan, sudah ada Q lot di level harga tersebut. Estimasi posisi awal kita:
V̂(t₀) = Q(t₀) — jumlah lot di depan kita
Selanjutnya, kita melacak semua perubahan volume di level harga kita. Inilah algoritma kunci yang dijelaskan oleh Erik Rigtorp dan diimplementasikan dalam produk-produk Trading Technologies (TT), Bookmap, dan lainnya.
Algoritma Pembaruan
Untuk setiap penurunan ΔQ di level harga, kita perlu menentukan: apakah order tersebut berada di depan kita atau di belakang kita?
Jika kita dapat membedakan fill (eksekusi) dari pembatalan:
- Fill (eksekusi): tanpa keraguan mengurangi antrean di depan kita →
V̂ = max(V̂ + ΔQ, 0) - Cancel (pembatalan): ketidakpastian — order yang dibatalkan bisa saja berada di depan atau di belakang kita
Untuk pembatalan, digunakan model probabilistik:
V̂(n+1) = max(V̂(n) + p(n) × ΔQ(n), 0)
di mana p(n) adalah probabilitas bahwa order yang dibatalkan berada di depan kita. Salah satu keluarga model:
p(n) = f(V̂(n)) / (f(V̂(n)) + f(max(Q(n) - S - V̂(n), 0)))
di mana f(x) adalah fungsi yang meningkat, seperti ln(1+x) atau fungsi identitas. Intuisinya: semakin besar volume di depan kita relatif terhadap volume di belakang kita, semakin besar kemungkinan pembatalan terjadi di depan kita.
Level Data dan Realitas Pasar Kripto
Kualitas estimasi sangat bergantung pada granularitas data:
| Level Data | Yang Kita Lihat | Akurasi Estimasi PIQ |
|---|---|---|
| Level 1 (BBO) | Bid/ask terbaik + volume | Tidak mungkin diestimasi |
| Level 2 (Price-aggregated) | Volume di setiap level harga | Estimasi probabilistik |
| Level 3 (Market-by-Order, MBO) | Setiap order individual dengan ID | Posisi tepat |
Di kripto, situasinya adalah sebagai berikut:
- Binance — menyediakan stream kedalaman L2 dengan pembaruan setiap 100ms. Data L3 (MBO) tidak tersedia secara publik.
- Coinbase — salah satu dari sedikit CEX yang menawarkan stream L3 via WebSocket dengan data order-by-order lengkap.
- CME (futures BTC/ETH) — data MBO lengkap melalui feed ITCH.
Sebagian besar trader kripto bekerja dengan L2, yang berarti mereka mengandalkan estimasi probabilistik. Namun bahkan estimasi probabilistik jauh lebih baik daripada tidak ada sama sekali.
Visualisasi: Tembok sebagai Order Book Internal
Kami mengusulkan untuk memvisualisasikan setiap kerapatan signifikan (tembok) sebagai mini order book di dalam order book:
╔════════════════════════════════════════════════════════════════╗
║ Harga 10001 │ 150 lot ║
╠════════════════════════════════════════════════════════════════╣
║ Harga 10000 │ [████████████░░░▓▓░░░░░░░] 2.400 lot ║
║ │ ↑ 1.800 sebelum kita ↑ kita ↑ 590 sesudah║
║ │ drain rate: ~120 lot/detik ║
║ │ ETA hingga terisi: ~15 detik ║
╠════════════════════════════════════════════════════════════════╣
║ Harga 9999 │ 80 lot ║
╚════════════════════════════════════════════════════════════════╝
Apa yang Dihitung secara Real Time
-
Lot di depan order kita — estimasi volume yang harus terisi atau dibatalkan sebelum mencapai kita.
-
Lot di belakang order kita — volume yang ditempatkan setelah kita. Jika tembok dengan cepat "membengkak" dari ekor — peserta lain menganggap level ini menarik.
-
Tingkat pengosongan antrean — dihitung dari perdagangan aktual (eksekusi) di level harga ini. Dinyatakan dalam lot/detik.
-
Estimated Time to Fill (ETF) — perkiraan waktu hingga order kita terisi, dihitung sebagai
lot_didepan / drain_rate. -
Beberapa order dalam satu kerapatan — bot dapat melacak posisi masing-masing ordernya jika ada beberapa dalam tembok yang sama.
Penerapan dalam Scalping
Perbandingan backtesting naif vs yang sadar antrean: probabilitas fill aktual vs estimasi optimis
Masalah dengan Backtesting Berbasis Candlestick
Backtest klasik pada candle OHLCV bekerja sebagai berikut: jika harga mencapai order limit kita — hitung sebagai terisi. Tetapi ini adalah kesalahan kritis:
Contoh. Kita memiliki buy-limit di 10000. Dalam candle 1 menit, low = 10000. Backtest candlestick menghitungnya sebagai fill. Namun pada kenyataannya:
- Ada tembok 5.000 lot di level 10000
- Order kita berada di ekor antrean (posisi 4.800)
- Hanya 2.000 lot yang diperdagangkan di level tersebut selama menit ini
- Pada kenyataannya, order kita TIDAK akan terisi
Backtesting yang sadar antrean memecahkan masalah ini: ia memodelkan posisi antrean, menghitung volume perdagangan di level dari data tick, dan menentukan apakah volume yang diperdagangkan cukup untuk mencapai posisi kita.
Lebih dari Satu Fill per Menit
Dalam scalping aktif, sebuah order dapat terisi dan ditempatkan ulang beberapa kali dalam satu menit. Backtest berbasis candlestick sama sekali tidak dapat memodelkan ini. Hanya analisis level tick dengan pemodelan antrean yang memungkinkan Anda untuk:
- Menentukan waktu tepat setiap fill
- Memahami apakah kita punya waktu untuk menempatkan ulang order
- Memperkirakan berapa kali strategi sebenarnya akan terpicu dalam suatu interval
Memprediksi Waktu hingga Terisi
Bot yang mengetahui posisi antreannya dan tingkat "pengosongan" tembok saat ini dapat:
- Menghitung ETA — perkiraan waktu hingga terisi
- Membandingkan ETA dengan prediksi pergerakan harga — jika ETA = 30 detik, tetapi model kita memprediksi pembalikan dalam 10 detik, kita harus membatalkan order
- Mengadaptasi ukuran order — order yang lebih besar lebih dekat ke kepala antrean di bursa pro-rata (CME), tetapi di bursa FIFO, ukuran tidak memengaruhi posisi antrean
Membandingkan Drain Rate dengan Rata-rata
Metrik yang sangat berharga untuk scalper: tingkat pengosongan antrean saat ini vs tingkat rata-rata selama N candle.
- Tingkat di atas rata-rata → agresivitas market order tinggi → tembok mungkin "ditembus" → fill kita lebih mungkin terjadi
- Tingkat di bawah rata-rata → pasar "terhenti" → tembok akan bertahan → order akan tergantung, dan harga mungkin bergerak menjauh
Di Mana Ini Sudah Diimplementasikan: Tinjauan Pasar
Trading Technologies (TT) — Position In Queue (PIQ)
Implementasi paling matang. TT menampilkan PIQ untuk setiap order trader di kolom Floating Order Book. Untuk bursa yang menyediakan data posisi antrean langsung melalui feed mereka (CME, ICE), nilai tepat ditampilkan. Untuk yang lain — estimasi konservatif.
Bookmap Quant
Versi profesional dari Bookmap ($499/bulan) mencakup visualisasi posisi antrean order dan ekspor event. Bookmap Quant menggunakan data MBO, dan API L0-nya memungkinkan pembangunan adapter kustom untuk sumber data apa pun.
CQG — Estimasi Posisi Antrean
CQG menyediakan estimasi posisi antrean untuk pasar futures. Platform menghitung estimasi PIQ probabilistik berdasarkan data L2/L3 dan menampilkannya di antarmuka DOMTrader.
Rithmic — Data Antrean Order
Rithmic adalah penyedia data pasar yang menawarkan akses latensi rendah ke data untuk estimasi posisi antrean. Ini digunakan sebagai lapisan infrastruktur oleh banyak perusahaan prop trading dan trader algoritmik untuk membangun model PIQ mereka sendiri.
Jigsaw Trading — Visualisasi Order Flow
Jigsaw Trading berspesialisasi dalam visualisasi order flow dengan estimasi posisi antrean. Alat Depth & Sales dan Reconstructed Tape-nya membantu trader melihat gambaran eksekusi nyata di level harga.
Model Akademik
- Moallemi & Yuan (2017) — model formal untuk penilaian posisi antrean berdasarkan data NASDAQ ITCH
- Cont, Stoikov & Talreja (2010) — model limit order book sebagai sistem proses birth-death
- Gould & Bonart (2015) — ketidakseimbangan antrean sebagai prediktor pergerakan mid-price
- Pendekatan Deep Learning — model RNN (Columbia, 2022) untuk memperkirakan probabilitas fill dan waktu fill
Apa yang BELUM Ada di Pasar
Tidak ada produk yang ada saat ini yang menawarkan visualisasi struktur internal tembok untuk pasar kripto dalam format yang disesuaikan untuk bot scalping. Inilah ceruk yang dapat diisi oleh Marketmaker.cc.
Melawan Strategi Manipulator
Mendeteksi tembok palsu: order asli vs blok spoofing dengan tingkat pembatalan tinggi
Memahami struktur internal tembok bukan hanya tentang mengoptimalkan eksekusi Anda sendiri. Ini adalah alat untuk perlindungan dari manipulasi dan, bila digunakan dengan terampil, alat untuk membaca niat pemain besar.
Spoofing: Tembok Palsu
Spoofing adalah penempatan order besar dengan niat membatalkannya sebelum eksekusi. Tujuannya adalah menciptakan kesan palsu tentang penawaran/permintaan.
Bagaimana analisis PIQ membantu:
- Kecepatan akumulasi tembok. Tembok asli terbentuk secara bertahap. Tembok spoofing muncul seketika.
- Perilaku saat harga mendekat. Tembok asli bertahan. Tembok spoof "melarikan diri."
- Tingkat pembatalan. Spoofer membatalkan order sebelum eksekusi. Melacak rasio penempatan/pembatalan memungkinkan deteksi spoof secara real time.
- Siklikalitas. Spoofing sering menunjukkan pola berulang: muncul → menghilang → muncul di level baru.
Layering: Level Palsu Berjenjang
Layering adalah bentuk spoofing yang lebih canggih di mana order palsu ditempatkan di beberapa level harga.
Bagaimana analisis PIQ membantu:
- Pembatalan yang berkorelasi. Jika order di 5 level berturut-turut dibatalkan secara bersamaan — hampir pasti itu adalah layering oleh satu peserta.
- Asimetri order book. Likuiditas asli biasanya terdistribusi kurang lebih merata.
- Reaksi terhadap fill. Order asli terisi dan tidak "melarikan diri."
Iceberg Orders: Likuiditas Tersembunyi
Iceberg adalah order besar yang dibagi menjadi bagian-bagian kecil yang terlihat. Setelah satu bagian terisi, bagian berikutnya secara otomatis muncul.
Bagaimana analisis PIQ membantu:
- Pola level "abadi". Volume terus-menerus terisi tetapi tidak berkurang.
- Analisis absorpsi. Harga memukul tembok, mengisi volume yang terlihat, tetapi tembok beregenerasi.
- Perilaku antrean selama absorpsi. Posisi kita "meluncur" ke depan setiap kali irisan iceberg terisi dan ditempatkan ulang di ekor antrean.
Market Maker sebagai Peserta "Tak Terlihat" dalam Tembok
Market maker profesional menggunakan beberapa taktik:
- Quote stuffing — penempatan dan pembatalan order secara massal untuk "mencemari" data pesaing
- Penny jumping — menempatkan order satu tick lebih baik dari pesaing untuk menangkap prioritas
- Dynamic quoting — mengadaptasi order secara real time seiring perubahan ketidakseimbangan antrean
- Level defense — menambahkan likuiditas saat harga mendekat
Implementasi: Arsitektur Modul Queue Position Tracker
Data Input
1. Stream order book WebSocket (kedalaman L2):
- Pembaruan bid/ask terbaik
- Pembaruan kedalaman (volume di setiap level harga)
2. Stream perdagangan WebSocket:
- Setiap perdagangan: harga, volume, sisi (beli/jual), timestamp
3. Order sendiri (dari bot trading):
- order_id, harga, ukuran, timestamp penempatan
Algoritma Inti (Pseudocode Python-like)
class QueuePositionTracker:
def __init__(self, order_price, order_size, initial_depth):
self.price = order_price
self.size = order_size
self.queue_ahead = initial_depth # V̂(t₀) = Q(t₀)
self.queue_behind = 0
self.fill_velocity = EMA(span=30) # EMA dari tingkat fill
def on_trade(self, trade_price, trade_size):
"""Dipanggil pada setiap perdagangan di level harga kita"""
if trade_price == self.price:
self.queue_ahead = max(self.queue_ahead - trade_size, 0)
self.fill_velocity.update(trade_size)
def on_depth_change(self, new_depth, change_type):
"""Dipanggil ketika kedalaman berubah di level harga kita"""
if change_type == 'cancel':
total = self.queue_ahead + self.size + self.queue_behind
p_ahead = log(1 + self.queue_ahead) / (
log(1 + self.queue_ahead) + log(1 + self.queue_behind)
)
cancelled = abs(new_depth - total)
self.queue_ahead = max(
self.queue_ahead - p_ahead * cancelled, 0
)
self.queue_behind = max(
self.queue_behind - (1 - p_ahead) * cancelled, 0
)
elif change_type == 'new_order':
added = new_depth - (self.queue_ahead + self.size + self.queue_behind)
self.queue_behind += added
@property
def estimated_time_to_fill(self):
"""Perkiraan waktu hingga terisi dalam detik"""
if self.fill_velocity.value <= 0:
return float('inf')
return self.queue_ahead / self.fill_velocity.value
@property
def fill_probability(self, horizon_sec=60):
"""Probabilitas terisi dalam horizon tertentu"""
expected_volume = self.fill_velocity.value * horizon_sec
return min(expected_volume / max(self.queue_ahead, 1), 1.0)
Kasus Edge yang Kritis
- Tembok sepenuhnya "ditelan" — jika
queue_aheadturun ke 0, market order berikutnya mengisi kita - Pembatalan massal (wall pull) — tembok tiba-tiba menghilang,
queue_aheadberubah tajam - Order kita dipindahkan — setelah pembatalan dan penempatan ulang, kita pergi ke ekor antrean
- Beberapa order dalam tembok yang sama — setiap order dilacak secara independen
Metrik untuk Dashboard dan Backtesting
Real-Time (Terminal Scalping)
| Metrik | Formula | Warna |
|---|---|---|
| Queue Position % | queue_ahead / total_depth × 100 |
Hijau < 30%, kuning 30-70%, merah > 70% |
| ETA hingga Terisi | queue_ahead / fill_velocity |
Detik |
| Wall Health | depth_now / depth_5sec_ago |
Stabilitas tembok |
| Absorption Rate | filled_volume / visible_depth |
Keberadaan likuiditas tersembunyi |
| Spoof Score | cancel_rate × sudden_appear × distance_from_price |
0-100, indikator kepalsuan |
Untuk Backtesting (Simulasi Sadar Antrean)
- Queue-adjusted fill rate — persentase order yang benar-benar terisi dengan memperhitungkan posisi antrean
- Effective fill latency — waktu aktual dari penempatan hingga eksekusi
- Adverse selection per fill — pergerakan harga rata-rata melawan kita setelah fill
- Queue velocity correlation — korelasi antara tingkat pengosongan antrean dan pergerakan harga selanjutnya
Social Order Book: Order Tim di Dalam Tembok
Model visibilitas tiga tingkat: order personal, langganan, dan posisi tim di dalam tembok
Tingkat 1: Bursa atau Platform Trading
Jika Anda adalah bursa atau terminal trading, Anda memiliki pengetahuan absolut tentang posisi order setiap pengguna. Platform dapat menunjukkan kepada setiap pengguna berapa banyak volume "lain" yang berdiri sebelum dan sesudah order mereka, tanpa mengungkapkan identitas peserta lain.
Tingkat 2: Platform Marketmaker.cc — Order Personal + Lapisan Sosial
Di Marketmaker.cc, kami berencana mengimplementasikan model visibilitas order tiga tingkat di dalam tembok:
Order personal — lapisan dasar. Setiap trader melihat semua order mereka sendiri dengan metrik individual.
Order langganan (penyedia sinyal) — trader yang berbagi posisi melalui langganan. Mekanisme opt-in: pemimpin memutuskan apakah akan menampilkan posisi.
Order tim (tim trading / dana) — lapisan paling berharga untuk kelompok profesional. Memecahkan masalah: konflik order, alokasi likuiditas, pemantauan risiko tim, pelatihan.
Model Izin
┌─────────────────────────────────────────────────────────────┐
│ Order trader │
│ │
│ Terlihat oleh: │
│ ├── Trader itu sendiri → SELALU │
│ ├── Pelanggan → jika trader mengaktifkan │
│ │ ├── Penundaan tampilan → dapat dikonfigurasi (0d–60d)│
│ │ ├── Tampilkan ukuran → ya / sembunyikan / bulatkan │
│ │ └── Tampilkan ETA → ya / tidak │
│ └── Tim → jika bagian dari tim │
│ ├── Penundaan → dapat dikonfigurasi (0d–5d) │
│ ├── Tampilkan ukuran → ya (untuk manajemen risiko) │
│ └── Visibilitas peran → trader / manajer / pengamat │
└─────────────────────────────────────────────────────────────┘
Transparansi Penuh: Bursa DEX dan Order Book On-Chain
Di bursa DEX dengan order book on-chain — terutama Hyperliquid — setiap order terikat pada alamat wallet tertentu. Kita dapat melihat bukan hanya tembok agregat, tetapi setiap order individual dari setiap peserta.
Namun, bekerja dengan data ini secara real time memerlukan menjalankan node blockchain Hyperliquid Anda sendiri.
Identifikasi Otomatis Order Manipulator
Lapisan visualisasi keempat — klasifikasi order algoritmik berdasarkan jenis peserta: market maker, spoofer, retail. Algoritma klasifikasi beroperasi pada beberapa level: deteksi spoofing, klasifikasi market maker, deteksi skenario squeeze, dan sidik jari digital trader.
Lebih lanjut tentang ini di artikel berikutnya dalam seri: "Sidik Jari Digital Trader: Cara Mengidentifikasi Market Maker Berdasarkan Perilaku Order Book Mereka"
Kesimpulan
Menganalisis posisi order di dalam kerapatan order book adalah langkah evolusi berikutnya dari "melihat order book" menuju "memahami mikrostruktur pasar." Ini adalah wilayah di mana hal-hal berikut bersinggungan:
- Teori antrean — untuk memodelkan antrean
- Model order flow stokastik — untuk memperkirakan probabilitas fill
- Machine learning — untuk deteksi spoofing dan prediksi perilaku tembok
- Rekayasa latensi rendah — untuk menerima dan memproses data secara real time
Hingga saat ini, tidak ada produk di pasar kripto yang menawarkan visualisasi komprehensif dari "tembok sebagai mini order book" dengan posisi order pengguna, estimasi ETA, deteksi spoofing, dan backtesting yang sadar antrean dalam satu antarmuka.
Di Marketmaker.cc, kami bekerja untuk membuat analitik ini dapat diakses oleh setiap trader — dari scalper individu hingga tim prop trading.
Sumber dan Bacaan Lebih Lanjut
- Moallemi C.C., Yuan K. — "A Model for Queue Position Valuation in a Limit Order Book" (Columbia Business School, 2017)
- Cont R., Stoikov S., Talreja R. — "A Stochastic Model for Order Book Dynamics" (2010)
- Gould M.D., Bonart J. — "Queue Imbalance as a One-Tick-Ahead Price Predictor" (2015)
- Rigtorp E. — "Estimating Order Queue Position" (rigtorp.se)
- Do B.L., Putniņš T.J. — "Detecting Layering and Spoofing in Markets" (SSRN, 2023)
- Trading Technologies — PIQ Documentation
- Bookmap — Iceberg Orders Tracker Knowledge Base
Penulis
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.