Empat angka, semuanya diukur dari tumpukan paper trading kami sendiri, satu strategi, sinyal perpetual BTCUSDT 1 menit, 31 hari, dan 1,418 order. Median waktu dari penutupan bar hingga order diakui oleh bursa: 195 ms. Persentil ke-99: 2,970 ms. Median pada 1% menit dengan volatilitas terealisasi tertinggi: 840 ms. Dan konstanta latensi yang tercantum dalam konfigurasi backtest selama sebagian besar tahun sebelumnya: 0.
Tiga dari angka itu tidak mengejutkan. Semua orang tahu angka nol itu keliru, pada akhirnya semua orang menggantinya dengan angka tertentu, dan angka itu hampir selalu konstanta yang dipilih berdasarkan firasat. 100 ms, 250 ms, "ambil aman saja, 500." Angka yang benar-benar penting adalah 840, karena itu menunjukkan bahwa latensi Anda bergantung pada kondisi pasar, dan kondisi pasar saat latensi membengkak adalah kondisi pasar yang sama ketika sinyal Anda merasa telah menemukan peluang.
Ke mana perginya 195 milidetik
Berikut anggaran lengkapnya, diukur tahap demi tahap dengan cap waktu jam monoton yang dicatat pada setiap lompatan. Mesin kami adalah instans AWS di ap-northeast-1, satu region dengan endpoint bursa, yang kurang lebih merupakan konfigurasi ritel non-kolokasi sebaik mungkin.
| Tahap | p50 | p95 | p99 |
|---|---|---|---|
| Penutupan bar → event kline-closed WS diterima | 128 ms | 402 ms | 1,940 ms |
| Parsing + pembaruan status fitur | 3 ms | 9 ms | 28 ms |
| Keputusan: evaluasi model + pemeriksaan risiko | 11 ms | 22 ms | 60 ms |
| Pengiriman order → pengakuan bursa | 47 ms | 180 ms | 1,100 ms |
| Ujung ke ujung (diukur, bukan dijumlahkan) | 195 ms | 690 ms | 2,970 ms |
Ada 2 hal yang perlu dicatat sebelum masuk ke bagian menarik. Pertama, nilai median tidak bisa dijumlahkan begitu saja: 128 + 3 + 11 + 47 = 189, sedangkan median ujung ke ujung yang terukur adalah 195. Persentil tidak bersifat aditif, dan jika Anda membuat estimasi latensi dengan menjumlahkan p99 setiap tahap, hasilnya 3,128 ms, padahal p99 sebenarnya 2,970. Di sini cukup dekat; ketika tahap-tahap berkorelasi ke arah sebaliknya, hasilnya bisa jauh meleset. Ukur seluruh jalurnya.
Kedua, perhatikan baris teratas. Dua pertiga anggaran median habis untuk menunggu bursa memberi tahu bahwa bar telah ditutup. Bukan jaringan, bukan kode Anda, bukan perutean order. Bursa mengagregasi transaksi menjadi kline, memutuskan bahwa menit telah berakhir, lalu mengirimkannya. Pengiriman itu mengantre, dan antreannya dipakai bersama semua pelanggan lain pada stream tersebut.
Angka 840
Kelompokkan setiap 1,418 order berdasarkan volatilitas terealisasi pada menit yang menghasilkan sinyal, dan distribusinya langsung terlihat berbeda.
| Kelompok volatilitas bar sinyal | Order | p50 ujung ke ujung | p99 ujung ke ujung |
|---|---|---|---|
| Kuartil terbawah | 201 | 141 ms | 488 ms |
| Dua kuartil tengah | 796 | 183 ms | 1,210 ms |
| Kuartil teratas | 407 | 312 ms | 2,880 ms |
| 1% menit teratas | 14 | 840 ms | 4,100 ms |
Semua tahap melambat bersamaan, sehingga efeknya menumpuk. Beban matching engine turut membebani antrean agregasi dan siaran bursa, jadi menit dengan 11,000 transaksi dikirim lebih lambat daripada menit dengan 600 transaksi. Proses Anda sendiri juga menangani lebih banyak pembaruan depth dan cetakan transaksi dalam jendela waktu yang sama, sehingga pembaruan fitur yang biasanya memakan 3 ms menjadi 28. Jalur order REST bersaing dengan kepanikan semua orang, dan Anda mulai sesekali melihat 503 lalu percobaan ulang yang sendirian saja menghabiskan 1 detik penuh. Koefisien korelasi antara jumlah transaksi pada bar sinyal dan latensi ujung ke ujung dalam sampel kami adalah 0.41. Tidak terlalu besar. Cukup untuk merusak asumsi konstanta.
Strategi yang lolos penyaringan tahap pertama sebagian besar adalah strategi yang memperdagangkan breakout, pembalikan, dislokasi, dan rangkaian likuidasi. Strategi-strategi itu terpicu tepat pada kelompok dengan latensi terburuk. Sinyal momentum yang hanya terpicu ketika pergerakan menit mencapai 40 bps secara struktural memastikan bahwa sinyal itu selalu dilayani oleh tumpukan Anda yang paling lambat.
Pernah suatu kali kami menghabiskan sehari menelusuri pencilan 3.6 detik yang muncul kira-kira pada waktu yang sama setiap malam. Penyebabnya logrotate, yang menyalin lalu mengosongkan file 2 GB pada volume EBS yang sama dengan tempat proses menulis, sehingga event loop macet. Pasar tidak bersalah. Ukur dulu, baru salahkan mikrostruktur.
Dampaknya pada eksekusi order
Harga bergerak selama Anda menunggu. Pada menit acak, rata-rata pergerakan merugikan selama median 195 ms kami sekitar 1.1 bps berlawanan dengan arah sinyal. Pada menit kuartil teratas dengan latensi 312 ms, 5.8 bps. Pada menit 1% teratas dengan latensi 840 ms, pergerakan merugikan sekitar 14 bps terjadi sebelum order bahkan mencapai order book.
Pada perpetual BTC, spread nyaris tidak berpengaruh dalam hal ini: satu tick pada kuotasi 84,000 setara dengan 0.012 bps, jadi kerugiannya berasal dari pergerakan merugikan, bukan biaya melintasi spread. Pindahkan strategi yang sama ke perpetual mid-cap dan komponen kedua mulai terasa — spread top-of-book dalam sampel kami naik dari 1.4 bps pada menit tenang menjadi 6.2 bps pada kuartil teratas, sementara depth pada harga tersebut menipis lebih dari separuh. Anda menanggung pergerakan harga, spread yang lebih lebar, dan depth yang lebih tipis sekaligus, semuanya karena penyebab yang sama.
Saat kami memutar ulang 31 hari yang sama dengan latensi bersyarat per bar alih-alih 200 ms tetap, harga masuk rata-rata pada backtest memburuk 3.1 bps, hampir seluruhnya terkonsentrasi pada 9% transaksi. Selisih harga masuk antara backtest dan paper turun dari 4.2 bps menjadi 0.9 bps. Sharpe in-sample strategi itu turun dari 1.7 menjadi 1.1, angka yang jujur dan memang seharusnya demikian sejak awal.
Jadi, apa yang sebaiknya Anda masukkan ke konfigurasi
Bukan satu angka. Inilah yang kami gunakan sekarang:
- Ambil dari sampel, jangan tetapkan. Ambil latensi untuk setiap order simulasi dari distribusi empiris yang disesuaikan dengan aktivitas bar tersebut — jumlah transaksi dan imbal hasil absolut sudah cukup, dan keduanya tersedia di kline standar. Lakukan pencocokan sekali per bursa untuk setiap jenis order, lalu sesuaikan ulang setiap bulan.
- Pertahankan ekornya. Jangan mencocokkan distribusi lognormal lalu menganggap selesai; p99 berasal dari lonjakan percobaan ulang dan jeda GC yang tak dapat direproduksi oleh distribusi mulus. Kami menggunakan kuantil empiris dengan ekor yang diambil ulang dari sampel di atas p95.
- Latensi juga berlaku untuk pembatalan. Penggantian stop atau pembatalan hedge tunduk pada penundaan yang sama, dan di pasar cepat pembatalan Anda berlomba dengan eksekusi fill. Jika simulator Anda membatalkan order seketika, model risiko Anda hanyalah fiksi.
- Tambahkan batas kesegaran data dan simulasikan. Sistem kami membuang sinyal apa pun yang bar-nya sudah berumur lebih dari 1.5 detik saat tiba. Ini perilaku nyata dengan biaya nyata — transaksi terhapus diam-diam, dan transaksi yang sama harus dihapus dalam backtest.
- Kalibrasi ulang berdasarkan paper trading. Paper trading memberi Anda nilai acuan sebenarnya. Catat cap waktu keempat lompatan untuk setiap order dan bandingkan distribusinya dengan asumsi simulator setiap minggu.
Kelas aset lain, masalah yang sama. Saham AS: consolidated tape menambahkan jeda agregasinya sendiri di atas jeda broker Anda, dan jeda itu melebar saat laju pesan meningkat karena alasan struktural yang sama. Pasar prediksi: sebagian besar bursa hanya menerima order melalui REST, dan kami mengukur median di bawah 100 ms yang meningkat menjadi beberapa detik saat peristiwa resolusi terjadi dan semua orang datang bersamaan. Opsi kripto: kuotasi yang Anda gunakan untuk menentukan harga bisa saja sudah kedaluwarsa 2 detik tepat pada menit saat aset dasarnya bergerak.
Bentuk umum kesalahan ini adalah memperlakukan parameter eksekusi sebagai konstanta mandiri, padahal parameter itu bergantung pada variabel kondisi yang sama dengan pendorong sinyal Anda. Fee berperilaku konsisten; funding berperilaku konsisten; latensi tidak. Jika Anda hanya akan mengingat satu angka dari semua ini, ingat rasionya: p99 kami lima belas kali median, dan sinyal kami tiba secara tidak proporsional mendekati ujung p99.
Pasang instrumentasi pada keempat lompatan itu. Pekerjaannya hanya satu sore dan hasilnya akan memberi tahu lebih banyak tentang strategi Anda daripada satu minggu lagi mencari parameter.
← Semua artikel


