5 September 2026 · risiko

Backtest Anda tak pernah dilikuidasi: margin, mark price, dan batas leverage yang Anda abaikan

Backtest Anda tak pernah dilikuidasi: margin, mark price, dan batas leverage yang Anda abaikan

Bulan lalu, sebuah strategi hasil generasi menghasilkan kurva ekuitas dengan drawdown 63%. Dalam, buruk, lalu pulih dengan mulus selama 6 minggu berikutnya — bentuk kurva yang membuat peneliti mengamatinya lekat-lekat dan memutuskan risikonya masih bisa ditoleransi jika ukuran posisi diperkecil. Saya menjalankannya ulang melalui mesin margin yang memahami tingkatan maintenance margin. Akun itu dilikuidasi pada hari ke-41, di tengah drawdown, dan semua yang terjadi setelah hari ke-41 hanyalah rekaan.

Ini jenis bug backtest paling mahal yang saya tahu, karena dampaknya bukan sekadar menggeser imbal hasil beberapa basis poin. Bug ini menghapus keadaan menyerap dari simulasi. Strategi yang bisa kehilangan seluruh modal dan strategi yang tidak bisa adalah dua strategi berbeda, dan backtest yang tidak pernah memeriksa margin tak bisa memberi tahu Anda strategi mana yang sedang Anda miliki.

Saya terus melihat 3 cara yang keliru.

Cara keliru pertama: leverage sebagai angka pengali imbal hasil

Ini bentuk yang paling umum. Anda menghitung rangkaian imbal hasil dari sinyal, memutuskan akan menjalankannya pada 10x, lalu mengalikannya. Kadang modelnya sedikit lebih canggih — ukuran posisi adalah equity * leverage / price — tetapi keadaan akun tetap hanya sebuah angka yang naik dan turun. Tidak ada saldo margin, batas nilai nosional, maupun kondisi gagal.

Dampaknya samar, sehingga lolos dari peninjauan. Sharpe tidak berubah terhadap skala, jadi angka utama Anda tidak bergeser saat leverage diubah dari 3x menjadi 30x. Peneliti pun menyimpulkan bahwa leverage adalah pengatur gratis yang menukar volatilitas dengan imbal hasil. Drawdown maksimum meningkat secara linear dan tetap di bawah 100% karena kebetulan aritmetika: rangkaian imbal hasil yang dikalikan mendekati nol secara asimtotik dan tak pernah melewatinya. Kalikan hari dengan imbal hasil -9% dengan 12, dan versi yang jujur menghasilkan -108%, sementara versi naif menghasilkan "-108%, tetapi kurva ekuitas tetap positif", bergantung pada apakah Anda mengompaun atau menjumlahkan. Saya pernah melihat keduanya.

Yang terlewat adalah leverage tidak diterapkan pada imbal hasil Anda. Leverage diterapkan pada jaminan Anda, dan jumlah jaminan terbatas yang dipantau bursa setiap detik. Begitu jumlahnya turun di bawah persyaratan maintenance, posisi itu bukan lagi milik Anda.

Tandanya: jika simulasi Anda tak bisa menghasilkan kerugian total pada leverage berapa pun, berarti simulasi itu tidak memodelkan leverage.

Cara keliru kedua: harga likuidasi yang diturunkan hanya dari leverage

Tingkat kecanggihan berikutnya menambahkan pemeriksaan likuidasi, biasanya seperti ini: pada 20x, pergerakan berlawanan sebesar 5% menghabiskan margin, jadi likuidasi terjadi pada harga masuk × 0.95 untuk posisi long. Sederhana, intuitif, dan keliru dalam 4 hal sekaligus.

Bursa perp tidak menggunakan pengaturan leverage Anda untuk menentukan kapan posisi berakhir. Mereka menggunakan tingkat maintenance margin yang meningkat mengikuti nilai nosional posisi, berdasarkan tabel tingkatan. Perkiraan bentuk BTCUSDT USDⓈ-M, yang berubah saat bursa memperbaruinya:

Nilai nosional posisi (USDT)Tingkat maintenance marginLeverage maksimum
0 – 50,0000.40%125x
50,000 – 600,0000.50%100x
600,000 – 3,000,0001.00%50x
3,000,000 – 12,000,0002.50%20x
12,000,000 – 70,000,0005.00%10x

Jadi, pergerakan berlawanan yang dapat ditahan posisi long isolated kira-kira 1/L − MMR, bukan 1/L. Pada 20x di tingkatan kedua, angkanya 5% − 0.5% = 4.5%. Setengah persen terdengar seperti pembulatan. Pada BTC di 84,000, itu setara pergerakan harga 420 dolar, dan dalam jam yang penuh gejolak, 420 dolar menentukan apakah sebuah wick melikuidasi posisi Anda atau tidak. Setiap wick menjadi lemparan koin, dan semua peluangnya sudah Anda miringkan agar menguntungkan Anda.

Lalu ada biaya. Biaya taker saat masuk dipotong dari margin Anda begitu order terisi: 0.045% dari nilai nosional 500,000 adalah 225 USDT dari saldo margin 25,000, yang menggeser harga likuidasi sebelum posisi bergerak sedikit pun. Funding memberi dampak serupa secara terus-menerus, dan pada nilai nosional berleverage, dampaknya jauh lebih besar daripada perkiraan peneliti:

4.55%pergerakan berlawanan yang sebenarnya memicu likuidasi pada 20x, termasuk biaya masuk
0.60%beban funding harian pada margin di 20x, 0.01%/8h
18%dari margin itu habis dalam bulan tanpa pergerakan harga

Posisi yang tidak melakukan apa-apa selama 30 hari — tak ada pergerakan berlawanan, tak ada transaksi — telah menghabiskan hampir seperlima jaminannya dan secara signifikan mendekatkan harga likuidasinya. Dua hal lain yang keliru: tingkatan berubah saat posisi ditambah, jadi posisi yang dimulai pada tingkatan 0.5% lalu diperbesar hingga masuk tingkatan 1.0% mendapat harga likuidasi yang lebih buruk daripada hasil perhitungan saat masuk; dan cross margin menggabungkan jaminan antarposisi, jadi kelangsungan posisi long BTC Anda bergantung pada kondisi posisi short ETH Anda. Jika Anda menyimulasikan cross margin sebagai sekumpulan posisi isolated yang berdiri sendiri, struktur korelasi akun Anda sendiri sudah terbalik.

Cara keliru ketiga: menyelesaikan likuidasi berdasarkan harga yang keliru, pada waktu yang keliru, dengan harga eksekusi yang keliru

Anggap saja Anda sudah mendapatkan level pemicunya dengan benar. Sekarang: harga mana yang melewatinya, kapan Anda memeriksanya, dan pada harga berapa posisi Anda terisi?

Likuidasi dipicu oleh mark price, yaitu indeks dari beberapa bursa spot dengan komponen basis yang dihaluskan, sengaja dirancang agar tidak bereaksi berlebihan terhadap wick di satu bursa. Stop-loss Anda, bergantung pada konfigurasinya, kemungkinan dipicu oleh harga transaksi terakhir. Kedua angka ini berbeda justru pada saat paling menentukan. Saat terjadi likuidasi berantai, harga terakhir perp bisa menyimpang 1–2% di bawah mark selama puluhan detik. Backtest yang menggunakan low OHLCV yang sama untuk stop maupun likuidasi memodelkan bursa yang tidak ada.

Kedua kesalahan ini terjadi di sini, dan dampaknya tidak saling meniadakan. Jika menggunakan harga terakhir, posisi Anda dilikuidasi akibat wick yang diabaikan bursa. Jika menggunakan mark price, Anda melewatkan kasus saat mark sendiri bergerak — dislokasi indeks di bursa spot adalah penyebab nyata likuidasi pada harga yang tak pernah tercatat di pasar perp tempat Anda bertransaksi.

Lalu ada harga eksekusi. Mesin naif menutup posisi pada harga likuidasi dan mencatat kerugiannya seolah-olah itu stop. Kenyataannya: posisi diambil alih oleh mesin likuidasi pada harga kebangkrutan — level saat margin Anda tepat nol, yang lebih buruk daripada harga pemicu — lalu dikenai biaya penyelesaian likuidasi tambahan, yang berbeda menurut tingkatan dan berkisar sekitar 1% dari nilai nosional pada tingkatan bawah. Pada 20x, 1% dari nilai nosional berarti 20% dari sisa margin Anda. Jika mesin mengisi di bawah harga kebangkrutan, dana asuransi menutup selisihnya; di beberapa bursa, jika dana itu habis, kerugian yang disosialisasikan dapat menjangkau sisi buku order yang menguntungkan. Kerugian terealisasi Anda bukan sekadar drawdown hingga harga likuidasi. Kerugiannya lebih besar, dan selisihnya paling besar tepat pada hari-hari saat buku order cukup tipis sehingga memperburuk dampaknya.

Pertanyaan soal waktu dalam mekanisme intrabar berlaku di sini dengan konsekuensi yang lebih tajam daripada biasanya. Jika bar 1-minute mencakup level take-profit sekaligus level likuidasi Anda, backtest yang memeriksa exit sebelum margin akan dengan mudah mencatat kemenangan. Bursa memeriksa margin pada setiap pembaruan mark price, kira-kira sekali per detik, sebelum hal lain yang mungkin Anda harapkan terjadi.

Hal-hal yang harus dilacak oleh mesin margin

Semua ini tak perlu rumit. Yang dibutuhkan adalah status yang terus diperbarui. Akun adalah objek dengan saldo, bukan rangkaian imbal hasil, dan setiap bar statusnya diperbarui sesuai urutan yang digunakan bursa:

  1. Saldo dompet dan PnL belum terealisasi, dicatat terpisah. Rasio margin adalah maintenance margin dibagi saldo margin, dan saldo margin mencakup PnL belum terealisasi. Mencampuradukkan keduanya membuat posisi yang merugi terlihat memiliki jaminan lebih kuat daripada kenyataannya.
  2. Tabel tingkatan untuk setiap simbol, diberi versi berdasarkan tanggal. Tingkatan diperbarui. Backtest 2023 yang dijalankan dengan tingkatan 2026 mengandung look-ahead yang samar — biasanya menguntungkan, karena bursa secara umum melonggarkan persyaratan untuk aset utama dari waktu ke waktu.
  3. Rangkaian mark price, bukan hanya kline. Jika Anda tak bisa mendapatkan riwayat mark price, jelaskan keterbatasan itu dalam hasil dan gunakan proksi yang konservatif. Jangan pernah diam-diam menggantinya dengan harga terakhir.
  4. Pemeriksaan margin dilakukan pertama dalam urutan kejadian pada bar, sebelum stop, target, sinyal, atau penyeimbangan ulang.
  5. Eksekusi pada harga kebangkrutan ditambah biaya penyelesaian, dengan tingkat biaya diambil dari baris tingkatan yang sama dengan MMR.
  6. Keadaan terminal yang menyerap. Saat ekuitas mencapai nol, simulasi berakhir. Tanpa menghitung ulang saldo, tanpa "anggap trader menambah dana," tanpa melanjutkan rangkaian dengan nilai nosional baru.

Poin terakhir itulah yang paling sering diperdebatkan. Selalu ada yang berpendapat bahwa desk sungguhan akan menambahkan jaminan, sehingga mengakhiri simulasi terlalu keras dan tidak realistis. Mungkin. Namun, "strategi ini berhasil jika Anda terus menyuntikkan uang setelah modalnya habis" adalah klaim yang patut dinyatakan secara gamblang dan diuji dengan sengaja, dengan penambahan dana sebagai input eksplisit, bukan diam-diam diselipkan sebagai asumsi bawaan. Begitu dituliskan dengan jujur, kebanyakan orang sadar bahwa bukan itu maksud mereka.

Manfaat praktis dari semua ini: saat Anda menjalankan strategi yang sama di atas kertas melawan bursa live, rasio margin yang dilaporkan bursa dan yang dihitung simulator Anda seharusnya selaras dalam selisih 1 atau 2 basis poin, sepanjang hari. Keselarasan itu bisa diperiksa setiap menit, untuk setiap posisi terbuka, tanpa biaya. Ini uji paritas termurah di seluruh stack dan hampir tak ada yang menjalankannya — saat kedua angka menyimpang, bursa yang benar, dan Anda punya bug yang layak ditemukan sebelum drawdown menemukannya untuk Anda.

futures perpetualleveragelikuidasimesin marginbacktesting
← Semua artikel