Sinyal entry Anda mungkin adalah hal yang paling tidak menentukan dalam backtest. Saya bisa mengambil satu aturan momentum yang biasa saja, membiarkan setiap timestamp entry dan exit tetap sama, lalu hanya mengubah fungsi yang menentukan jumlah kontrak yang dipegang, dan menggeser Sharpe net dari 0.41 ke 0.71 serta drawdown maksimum dari 31% ke 13%. Trade yang sama. Fill yang sama. Strategi berbeda.
Klaim itu membuat orang kesal, dan memang seharusnya begitu, karena artinya sebagian besar waktu yang dihabiskan untuk menyetel lookback dan ambang filter hanya berkutat pada komponen kecil. Jadi, saya akan tunjukkan hasil uji sebenarnya, lalu menanggapi para pengkritik dengan adil, karena ada versi argumen ini yang keliru dan penting untuk memahami versi mana yang saya kemukakan.
1 sinyal, 6 cara memegang posisi
Sinyalnya: perpetual ETHUSDT di Binance USDⓈ-M, bar 1 jam, long saat EMA 12 jam berada di atas EMA 96 jam, selain itu posisi kosong, tanpa short. Juli 2022 hingga Juni 2026. 431 transaksi pulang-pergi. Fee taker di kedua sisi sebesar 5.0 bps, funding dibayar atau diterima setiap 8 jam sesuai posisi aktual, slippage dimodelkan berdasarkan kedalaman order book teratas. Sinyalnya sengaja dibuat membosankan — saya memilihnya karena tak seorang pun akan membelanya, sehingga cocok untuk pengujian yang bersih.
Setiap baris di bawah memakai timestamp bar entry dan exit yang sama persis. Satu-satunya perbedaan adalah fungsi sizing.
| Aturan sizing | Sharpe net | DD maks. | Notional yang diperdagangkan/tahun (× posisi rata-rata) | Biaya sebagai % dari PnL bruto | Leverage puncak |
|---|---|---|---|---|---|
| Notional tetap $10k | 0.41 | 18.2% | 246× | 14% | 1.0× |
| Fraksi tetap, 100% dari ekuitas | 0.44 | 30.8% | 251× | 15% | 1.0× |
| Volatilitas terealisasi 20 hari invers | 0.68 | 14.1% | 690× | 29% | 4.4× |
| Target volatilitas tahunan 20%, rebalance tiap jam, tanpa batas | 0.71 | 12.9% | 1,180× | 41% | 6.3× |
| Target volatilitas 20%, batas tanpa transaksi 20%, batas leverage 3× | 0.66 | 15.3% | 402× | 19% | 3.0× |
| Half-Kelly berdasarkan rata-rata/varians bergulir 60 hari | 0.52 | 24.6% | 830× | 33% | 8.1× |
Perhatikan rentangnya. Antara baris terburuk dan terbaik ada selisih relatif Sharpe sebesar 73% dan faktor 2.4 pada drawdown. Sekarang coba temukan parameter sinyal entry pada dataset ini yang menggeser Sharpe sebesar 0.30 tanpa sekaligus menunjukkan overfitting yang jelas. Saya sudah mencarinya. Panjang pasangan EMA menggesernya sekitar 0.12 di seluruh rentang nilai yang masuk akal, dan sebagian besar pergeseran itu hanyalah noise yang tak bertahan di luar sampel.
Mengapa inverse-vol tampak begitu bagus, dan seberapa banyak yang nyata
Mekanismenya tidak misterius. Dengan notional tetap, ukuran posisi Anda tidak berkorelasi dengan volatilitas terealisasi, artinya risiko dalam dolar per trade sebanding dengan tingkat volatilitas pasar pada minggu itu. Untuk ETH dalam periode ini, volatilitas terealisasi 20 hari berkisar dari 31% hingga 118% secara tahunan. Uji notional tetap mengambil risiko dolar 3.8× lebih besar pada Maret 2024 dibandingkan Juli 2023, bukan karena sinyalnya lebih meyakinkan, melainkan karena pasar sedang lebih bergejolak. Hampir seluruh drawdown-nya terkonsentrasi di kuintil volatilitas tertinggi. Sizing inverse-vol menghilangkan keterkaitan itu, dan hasilnya memang memperbaiki bentuk aliran imbal hasil.
Namun, sebagian kenaikan Sharpe adalah artefak pengukuran, dan jika Anda tidak memisahkan keduanya, keputusan berikutnya bisa keliru. Sharpe membagi dengan deviasi standar imbal hasil. Penargetan volatilitas, secara definisi, adalah tindakan menstabilkan deviasi standar imbal hasil. Anda secara langsung mengoptimalkan penyebutnya. Aturan yang menskalakan posisi untuk mencapai volatilitas ex-ante konstan akan meningkatkan Sharpe pada hampir semua aliran imbal hasil dengan pengelompokan volatilitas, termasuk aliran tanpa edge. Saya sudah memverifikasinya pada sinyal yang diacak: acak timestamp entry, pertahankan overlay target volatilitas, dan Sharpe tetap meningkat sekitar 0.06 dibandingkan notional tetap pada basis dengan rata-rata nol. Kecil, tetapi bukan nol, dan itu murni akibat mekanis.
Jadi, saat membandingkan aturan sizing secara internal, Sharpe tak pernah menjadi satu-satunya angka di laporan. Saya ingin Calmar, PnL net per unit notional rata-rata yang digunakan, dan perincian dari bruto ke net, karena ketiganya jauh lebih sulit dimanipulasi dengan trik penyebut.
Estimasi volatilitas adalah model, dan bisa mengalami kebocoran data
Penyebab paling umum hasil sizing yang bagus ternyata palsu: estimasi volatilitas memakai informasi dari bar yang sedang diukur sizing-nya. Jika seri volatilitas dihitung dengan jendela terpusat, atau dengan `rolling().std()` bawaan pandas setelah resampling yang menyertakan bar berjalan yang belum lengkap, atau dari standardisasi seluruh sampel, berarti terjadi kebocoran data. Ini sulit dideteksi karena volatilitas persisten, sehingga kebocoran pada setiap baris tampak kecil dan kurva ekuitas tetap masuk akal. Hanya saja, kurvanya sedikit terlalu mulus tepat pada minggu-minggu yang paling penting.
Agen kami memeriksa 4 hal pada setiap aturan sizing sebelum hasilnya dimasukkan ke antrean paper trading:
- Ketersediaan pada waktu pengambilan keputusan. Ukuran posisi untuk bar yang dibuka pada 14:00 harus bisa dihitung dari data yang timestamp penutupannya ≤ 13:59:59.999. Kami memastikan ini dengan menghitung ulang seri ukuran posisi dari kerangka data yang dipangkas pada sampel acak berisi 200 titik keputusan, lalu membandingkan hasilnya.
- Periode lookback estimator adalah parameter sungguhan. Jendela volatilitas 20 hari dan jendela volatilitas 60 hari adalah 2 strategi berbeda. Lookback dimasukkan ke grid walk-forward bersama parameter lain, dan jika hasilnya hanya bagus pada satu panjang jendela, itu menunjukkan kerapuhan strategi.
- Lintasan leverage, bukan hanya puncaknya. Tampilkan distribusi penuh leverage bruto. Uji target volatilitas tanpa batas di atas menghabiskan 4% jam pengamatan dengan leverage di atas 5×. Hal seperti ini tak pernah muncul di tabel ringkasan dan sepenuhnya menentukan apakah strategi bisa diterapkan.
- Sensitivitas sizing sebagai uji ketahanan. Jika Sharpe ambruk saat target volatilitas diubah dari 20% menjadi 25%, strategi itu bukan ditargetkan pada volatilitas, melainkan disetel berdasarkan leverage. Anda menemukan edge dengan memilih satu angka.
Batas leverage bukan sekadar pelengkap manajemen risiko, melainkan bagian dari definisi strategi. Tier Binance untuk ETHUSDT menurunkan leverage maksimum saat notional posisi meningkat, dan tingkat margin pemeliharaan ikut naik. Backtest yang membiarkan aturan target volatilitas berjalan hingga 6.3× pada notional $400k menggambarkan posisi yang tak diizinkan venue pada tingkat margin tersebut. Baris dengan batas leverage mengorbankan 0.05 Sharpe dan menjadi satu-satunya dari 2 baris itu yang menggambarkan sesuatu yang nyata.
Rebalance adalah tempat uang mengalir keluar
Perhatikan kolom biaya. Rebalance tiap jam untuk mencapai target volatilitas menghasilkan Sharpe utama terbaik sekaligus menyerahkan 41% PnL bruto ke bursa. Itu setara dengan notional posisi rata-rata yang diperdagangkan sebesar 1,180× per tahun, dengan biaya 5 bps per sisi ditambah spread dan dampak pasar. Solusi naifnya adalah mengurangi frekuensi rebalance dengan jadwal tetap. Solusi yang lebih baik adalah batas tanpa transaksi: ubah ukuran posisi hanya saat posisi saat ini menyimpang dari target lebih dari ambang tertentu.
Batas 20% memangkas notional tahunan yang diperdagangkan dari 1,180× menjadi 402× — turun 66% — dengan pengorbanan Sharpe sebesar 0.05. Saya sudah mengujinya pada 8 sinyal, dan polanya berulang: batas antara 15% dan 25% mempertahankan sebagian besar manfaat pengendalian risiko dengan sepertiga turnover, sedangkan batas di bawah 10% berarti membayar fee demi presisi kosmetik untuk nilai yang toh Anda estimasikan dengan jendela 20 hari. Anda tak bisa rebalance hingga 3 angka desimal berdasarkan angka dengan galat baku 15%.
Pada Februari, pernah ada uji yang laporannya ditulis seorang agen dan mengaitkan peningkatan Sharpe 0.22 dengan "filter entry yang ditingkatkan." Perubahannya hanya 1 baris di modul sizing. Filternya tidak berubah. Sekarang saya menyuruh laporan mencantumkan hash konfigurasi sizing di bagian atas, karena atribusi memerlukan disiplin dan model senang mengarang cerita yang rapi seperti siapa pun.
Dampak paper trading terhadap aturan sizing Anda
Di sinilah kesenjangan antara backtest dan paper paling lebar, dan penyebabnya terutama aritmetika. Sizing yang merespons volatilitas membuat ukuran posisi Anda berubah dengan faktor 4 hingga 8 di sepanjang sampel. Kedua ujung rentang itu terbentur batasan venue yang tidak pernah dimodelkan dalam backtest.
Di sisi ukuran kecil: step size dan notional minimum. Perpetual ETHUSDT memiliki step kuantitas 0.001 dan minimum $5. Jika ukuran posisi Anda pada rezim volatilitas rendah adalah 0.0004 ETH, backtest mengeksekusinya, sedangkan paper tidak memegang posisi apa pun. Kedengarannya seperti kasus pinggiran sampai Anda sadar bahwa aturan target volatilitas menempatkan ukuran terkecilnya di pasar yang paling tenang, yang pada sinyal tren sering kali justru menjadi tempat entry yang bagus. Di sisi ukuran besar: batas posisi, tier margin, dan fakta bahwa posisi 6× memerlukan disiplin isolated margin yang model likuidasinya tidak Anda uji dalam backtest.
Kami pernah menemukan satu kasus ketika kurva ekuitas paper mengikuti backtest dengan selisih kurang dari 3% selama 6 minggu, lalu menyimpang tajam. Penyebabnya pembulatan: pemotongan oleh `int()` alih-alih pembulatan ke step pada pengatur ukuran order, yang diterapkan pada posisi dengan rata-rata 1.4 step. Backtest menghitung ukuran posisi dalam rentang kontinu, sedangkan pengatur ukuran live mengurangi 20-30% dari posisi yang dituju pada setiap trade kecil. Tidak ada model fill eksotis, tidak ada cerita latensi. Hanya pemotongan.
Bagian yang benar dari kritik para pengkritik
Ada 3 keberatan yang tepat sasaran, dan saya tak ingin mengabaikannya.
Pertama, dan yang paling penting: sizing mengalokasikan edge, bukan menciptakannya. Jika ekspektasi bruto sinyal Anda nol atau negatif setelah fee dan funding realistis, setiap aturan di tabel itu akan merugi — aturan yang lebih canggih hanya menghasilkan profil varians yang lebih cantik saat merugi. Saya memilih sinyal dengan edge net kecil tetapi positif pada periode ini. Terapkan 6 aturan yang sama pada sinyal dengan −1.2 bps net per trade, dan urutannya tetap sama, sementara ekuitas akhir semuanya berada di bawah titik awal. Sizing adalah pengali untuk sesuatu. Sesuatu itu tetap Anda perlukan.
Kedua, penargetan volatilitas punya kelemahan nyata yang sudah terdokumentasi dengan baik: mengurangi leverage menjelang akhir aksi jual cepat, lalu menaikkannya kembali setelah pantulan. Dalam pembalikan berbentuk V yang tajam, notional tetap unggul, kadang dengan selisih besar. Pasar saham pada Maret 2020 dan aksi jual kripto pada Agustus 2024 sama-sama menghukum sizing yang merespons volatilitas pada fase pemulihan. Periode ETH selama 4 tahun yang saya gunakan kebetulan mencakup lebih banyak pergerakan berlarut-larut dengan volatilitas berkelompok daripada gejolak berbentuk V, sehingga hasil baris inverse-vol tampak lebih baik. Periode lain bisa membalik sebagian urutannya, dan jika saya memulai dengan tabel dari 2020, argumen ini akan jauh lebih lemah.
Ketiga, aturan sizing sama rentannya terhadap overfitting seperti komponen lain. Half-Kelly berdasarkan estimasi bergulir menjadi contoh nyata di tabel saya: tampak canggih, punya landasan teori, tetapi menghasilkan drawdown terburuk kedua karena estimasi rata-rata bergulir dari seri imbal hasil yang penuh noise itu tak berguna, sementara Kelly sangat peka terhadapnya. Aturan sizing apa pun yang menerima estimasi ekspektasi imbal hasil sebagai input akan mewarisi kesalahan estimasi tersebut dan memperbesarnya. Aturan yang hanya memakai estimasi varians jauh lebih stabil, karena varians adalah satu-satunya momen yang benar-benar bisa Anda estimasi dari data tiap jam selama 4 tahun.
Yang akan saya ambil dari semua ini: saat hasil backtest mengejutkan Anda, periksa modul sizing sebelum mencari ide cemerlang pada sinyal. Dan saat melaporkan Sharpe, sertakan lintasan leverage dan perincian biaya dari bruto ke net, karena angka yang sangat bergantung pada keputusan sizing sama sekali bukan karakteristik sinyal itu.
← Semua artikel
