DepthFeed/Polymarket·Backtesting

Cara Backtest Strategi Polymarket di Order Book

Last price yang diambil sekali sejam tidak bisa memberi tahu apakah order Anda akan terisi. Berikut cara backtest Polymarket terhadap book yang benar-benar akan menjadi lawan transaksi Anda.

DepthFeed··8 min

Untuk melakukan backtest strategi Polymarket dengan benar, Anda memutar ulang order book historis yang akan menjadi lawan transaksi strategi tersebut — seluruh tangga bid/ask pada setiap perubahan — dan menentukan ukuran fill terhadap likuiditas yang benar-benar tersedia saat itu. Backtest yang hanya bersandar pada last price atau satu nilai mid secara sistematis melebih-lebihkan edge Anda karena menyembunyikan spread dan slippage yang sebenarnya dibayar oleh order nyata.

Mengapa backtest berbasis last price menipu

Sebagian besar data Polymarket yang tersedia gratis adalah harga transaksi terakhir (last traded price), sering kali diambil sekali setiap jam. Itu cukup untuk menggambar chart dan tidak lebih dari itu. Sebuah backtest perlu menjawab pertanyaan yang lebih sulit: jika order saya sedang menunggu di book (atau melintasi spread) pada saat itu, apakah ia akan terisi, dalam ukuran berapa, dan pada harga berapa?

Menjawab pertanyaan itu membutuhkan order book — setiap bid dan ask yang menunggu beserta ukurannya — bukan satu angka tunggal. Strategi yang di-backtest terhadap mid mengasumsikan ia selalu terisi pada harga mid dengan slippage nol, yang tidak pernah benar. Pada pasar kripto berjangka pendek, di mana spread melebar menjelang settlement, asumsi tersebut bisa membalik strategi yang merugi menjadi tampak menguntungkan.

Langkah 1 — Ambil data order book full-depth

Mulailah dari data yang merekam book lengkap di kedua sisi, ditangkap pada setiap perubahan dan bukan pada interval waktu tetap. DepthFeed menangkap Polymarket secara event-driven langsung dari websocket CLOB, sehingga setiap event book dan perubahan harga direkam dengan seluruh tangga bid/ask — bukan sampel per jam atau per menit yang melewatkan masa hidup pasar berdurasi lima menit.

Tarik pasar yang Anda inginkan melalui REST API: temukan pasarnya dengan GET /v3/{coin}/markets, lalu ambil depth dari /v3/{coin}/markets/{id}/snapshots. Setiap snapshot membawa array harga dan ukuran bid/ask serta timestamp exchange dan receive dalam epoch-millis.

Langkah 2 — Rekonstruksi book pada tiap momen

Putar ulang snapshot dalam urutan timestamp untuk membangun kembali book persis seperti kondisinya pada setiap saat. Karena datanya event-driven, rekonstruksinya akurat di antara event — tidak ada tebakan interpolasi. Inilah keadaan yang menjadi reaksi strategi Anda: best bid, best ask, depth di belakang masing-masing, dan spread.

Langkah 3 — Modelkan fill terhadap depth nyata

Sekarang simulasikan eksekusi secara jujur. Sebuah order marketable menyusuri book: ia terisi di level terbaik lebih dulu, lalu level berikutnya, sampai ukurannya habis — sehingga harga rata-ratanya lebih buruk dari touch setiap kali ia menyerap lebih dari level teratas. Sebuah resting order ikut antrean dan baru terisi jika pasar bertransaksi menembus harganya dengan ukuran yang cukup di belakangnya.

Menentukan ukuran fill terhadap tangga yang terekam adalah inti dari semuanya: ia memberi Anda slippage dan probabilitas fill yang realistis, bukan fiksi bahwa Anda selalu bertransaksi pada harga mid.

Langkah 4 — Gabungkan harga underlying

Pasar crypto up/down Polymarket digerakkan oleh pergerakan spot aset yang menjadi dasarnya. Setiap snapshot DepthFeed digabungkan ke harga referensi Binance berfrekuensi tinggi berdasarkan timestamp epoch-millis, sehingga Anda dapat menyelaraskan keadaan book dengan pergerakan spot yang me-reprice kontrak — hal yang esensial untuk strategi apa pun yang memperdagangkan hubungan antara harga kripto dan probabilitas implisit pasar.

Langkah 5 — Live dengan kode yang sama

REST API historis dan stream WebSocket live memancarkan objek JSON snapshot yang identik. Artinya, loader yang Anda tulis untuk memutar ulang riwayat membaca feed live tanpa perubahan sedikit pun — tidak ada penulisan ulang antara riset dan produksi. Backtest, validasi, lalu arahkan kode yang sama ke wss://api.depthfeed.com/v3/stream dan mulai bertransaksi.

Kesalahan umum

  • Menggunakan data last price: menyembunyikan spread dan slippage; menggelembungkan return hasil backtest.
  • Snapshot interval tetap: sampel per jam atau per menit melewatkan sebagian besar masa hidup pasar berdurasi 5 menit.
  • Mengabaikan posisi antrean: mengasumsikan resting order selalu terisi melebih-lebihkan strategi pasif.
  • Look-ahead bias: hanya bereaksi pada data yang memiliki receive timestamp pada atau sebelum waktu keputusan Anda.
  • Melewatkan underlying: edge crypto up/down biasanya terletak pada hubungan spot-ke-probabilitas.

Key takeaways

  • 01Backtest terhadap order book, bukan last price — depth-lah yang menentukan fill.
  • 02Gunakan data event-driven: sampel interval tetap melewatkan masa hidup pasar berjangka pendek.
  • 03Modelkan order marketable yang menyusuri book dan resting order yang menunggu di antrean.
  • 04Gabungkan harga kripto underlying untuk menangkap hubungan spot-ke-probabilitas.
  • 05Pilih data yang riwayat dan feed live-nya berbagi satu format, sehingga Anda menjalankan kode yang Anda backtest.

Last price yang diambil sekali sejam tidak bisa memberi tahu apakah order Anda akan terisi. Berikut cara backtest Polymarket terhadap book yang benar-benar akan menjadi lawan transaksi Anda.

Mulai gratis

Pertanyaan, terjawab.

Hanya sebagian. API publik Polymarket menyediakan pasar yang sedang berjalan, transaksi, dan endpoint prices-history, tetapi ia tidak menyajikan snapshot order book historis — sehingga Anda tidak bisa memutar ulang resting book yang akan menjadi lawan transaksi strategi. Depth historis itulah celah spesifik yang diisi oleh data order book pihak ketiga.