Pada Selasa pagi, strategi tren futures minyak mentah kami mengambil posisi long pada kontrak yang akan kedaluwarsa. Sinyalnya bekerja persis seperti yang kami minta: mempertahankan posisi selama tren tetap positif. Backtest menunjukkan keuntungan tipis. Akun paper mencatat penjualan, pembelian kontrak bulan berikutnya, dua biaya, dan harga masuk yang lebih buruk daripada yang ditunjukkan grafik.
Tidak ada yang misterius terjadi pada sinyal itu. Backtest memperlakukan “harga futures” seolah-olah merupakan satu hal yang berkesinambungan. Akun harus menutup satu kontrak dan membuka kontrak lain, di 2 order book berbeda, pada 2 harga berbeda.
Kami menemukan selisih itu saat meninjau posisi yang melewati periode roll. Strategi menggunakan kontrak bulan terdepan yang likuid dan mempertahankannya sampai aturan kalender memindahkannya ke bulan berikutnya. Aturan itu masuk akal. Pencatatan transaksinya tidak.
Seri berkesinambungan kami telah disesuaikan ke belakang untuk menghilangkan selisih antar kontrak. Itu membuat grafiknya berguna untuk menghitung tren. Namun, artinya seri tersebut tidak memuat harga nyata yang bisa kami gunakan untuk menutup kontrak lama atau membuka kontrak baru. Backtest menggunakan level yang telah disesuaikan untuk menilai posisi selama roll, lalu melanjutkan trading seolah-olah posisi itu tidak pernah berganti kontrak.
Untuk sinyal, seri berkesinambungan bisa menjadi ukuran yang berguna. Untuk eksekusi, seri itu fiksi. Roll terdiri atas 2 transaksi, dan spread antar kontrak merupakan bagian dari struktur pasar, bukan lonjakan kosmetik yang bisa dihaluskan begitu saja.
Kami merekonstruksi kejadian itu menggunakan kedua kontrak yang tercatat. Kontrak bulan lama memiliki bid 79.98 dan ask 80.00. Kontrak bulan berikutnya memiliki bid 80.42 dan ask 80.45. Posisi long kami harus menjual kontrak lama pada bid-nya, lalu membeli kontrak baru pada ask-nya. Calendar spread antara kedua sisi yang bisa dieksekusi itu adalah 44 sen.
Angka itu tidak otomatis berarti rugi 44 sen. Kedua kontrak memiliki bulan penyerahan yang berbeda, dan spread tersebut mencerminkan carry, penyimpanan, pembiayaan, serta ekspektasi pasokan. Posisi yang dipertahankan melewati roll tetap terekspos pada pergerakan harga kontrak baru; seluruh spread yang dikutip bukanlah biaya yang harus dibayar. Namun, strategi harus merealisasikan penutupan kontrak lama dan menetapkan posisi masuk di kontrak baru. Jika perhitungan imbal hasil membandingkan harga-harga itu seolah-olah berasal dari instrumen yang sama, P&L bisa tercipta atau terhapus secara keliru.
Kami memisahkan fungsi-fungsi itu dalam simulasi ulang. Seri berkesinambungan tetap menghasilkan sinyal tren. Harga khusus tiap kontrak menangani penilaian dan order. Saat roll, simulator mengirim order penutupan untuk bulan yang akan kedaluwarsa dan order pembukaan untuk bulan berikutnya, menerapkan biaya masing-masing kontrak, serta menggunakan spread dan kedalaman yang tersedia di setiap order book.
Simulasi ulang pertama masih berbeda dari akun paper. Kami menyinkronkan kedua eksekusi pada timestamp yang sama, padahal order dikirim secara berurutan. Penutupan kontrak bulan lama terisi, tetapi ask kontrak bulan berikutnya bergerak sebelum order beli mencapai order book. Roll bisa dieksekusi sebagai calendar spread jika venue mendukungnya, atau sebagai 2 kaki dengan jeda saat posisi terekspos. Keduanya menggunakan asumsi eksekusi yang berbeda. Untuk perbandingan, kami menggunakan urutan order aktual dari akun paper.
Lalu kami menyadari aturan kalender untuk roll itu sendiri belum dirumuskan dengan jelas. “Roll 5 hari sebelum kedaluwarsa” terdengar pasti sampai hari libur menggeser kalender trading, likuiditas berpindah lebih awal, atau konvensi kedaluwarsa berbeda antar kontrak. Di satu tempat, kode kami menghitung hari kalender; di tempat lain, hari kerja. Strategi paper melakukan roll pada sesi ke-5 sebelum hari perdagangan terakhir; backtest melakukannya 5 hari kalender sebelumnya.
Tanggal roll adalah aturan trading. Catat kalender bursa dan peristiwa yang memicunya, atau pada akhirnya backtest dan akun akan berbeda pendapat tentang kontrak yang Anda miliki.
Kami mengubah instruksi roll agar menyebut tanggal perdagangan terakhir kontrak, menghitung sesi berdasarkan kalender bursanya, dan mewajibkan pemeriksaan likuiditas minimum sebelum perpindahan. Ambang batas itu adalah pengaman praktis, bukan jaminan eksekusi yang lebih baik: volume dan open interest hanya petunjuk yang tidak sempurna tentang kemampuan order kami untuk dieksekusi. Kami mencatat kontrak yang dipilih dan harga kedua kaki agar setiap simulasi ulang dapat menjelaskan perpindahan posisi tersebut.
Setelah perubahan itu, imbal hasil historis strategi turun. Selisihnya bukan berasal dari satu kerugian roll besar. Selisih itu muncul dari banyak koreksi kecil: kontrak yang tepat, sesi trading yang tepat, biaya nyata pada kedua kaki, serta harga penutupan dan pembukaan yang berasal dari order book masing-masing. Satu roll saat likuiditas tipis sangat mahal, jadi kami membiarkannya terlihat alih-alih meratakannya.
Jika backtest futures Anda menggunakan grafik berkesinambungan, tanyakan apa yang boleh dilakukan grafik itu. Grafik tersebut dapat menyediakan input konsisten untuk sinyal. Namun, grafik itu tidak bisa menggantikan kontrak yang seharusnya bisa Anda beli atau jual. Untuk setiap posisi yang melewati kedaluwarsa, catatan riset harus mengidentifikasi kontrak lama, kontrak baru, pemicu roll, model eksekusi, dan 2 arus kas yang dihasilkan.
Transaksi hari Selasa itu bukan kegagalan yang rumit. Itu hanya garis yang tampak menguntungkan di grafik, tetapi melewatkan momen ketika akun harus mengganti apa yang dimilikinya. Setelah kami memasukkan kembali momen itu ke dalam simulasi ulang, hasilnya jadi kurang mengesankan dan jauh lebih berguna.
← Semua artikel


