Validasi

Halaman ini ada untuk satu alasan: menguji enam strategi di sepuluh tahun data yang sama lalu memilih yang terbaik dijamin menghasilkan pemenang, bahkan kalau tidak satu pun punya edge. Selalu ada yang paling beruntung. Di bawah ini uji-uji yang dirancang untuk menjatuhkan keberuntungan itu.

Semua uji di halaman ini dijalankan dengan slippage nolsecara sengaja. Pertanyaannya di sini adalah polanya bertahan tidak di data yang belum pernah dilihat?bukan biayanya menelan tidak? Dua pertanyaan berbeda; dicampur, tidak ada yang jadi jelas. Biaya dinilai terpisah di bagian bawah.

Uji 1, Holdout

Latih di data sebelum 2023-01-01, uji di data sesudahnya yang tidak pernah ikut dalam pemilihan apa pun.

StrategiIS transaksiIS expectancyOOS transaksiOOS expectancyOOS CAGROOS max DD
donchian20883-0.0943529-0.0385-4.32%-36.1%
donchian55908-0.1112556+0.01160.51%-20.6%
ma_cross674-0.1487444-0.2019-12.24%-40.9%
volume_breakout908-0.0897586+0.01492.17%-28.1%
rsi2_pullback725-0.1424431-0.0738-3.72%-18.4%
momentum_pullback699-0.0767462-0.0296-3.45%-29.7%
Ini bukan pola overfitting yang biasa. Overfitting berbentuk: bagus di masa lalu, jelek di masa depan. Yang terjadi di sini kebalikannya, 6 dari 6 strategi rugi di jendela latih, lalu 2 berbalik positif di jendela uji (donchian55, volume_breakout).

Dua tafsiran, dan holdout sendirian tidak bisa memisahkannya: rezim pasar berubah dan strateginya cocok dengan rezim baru, atau tiga tahun terlalu pendek dan angka positifnya kebetulan. Uji berikutnya dirancang persis untuk itu.

Uji 2, Rolling walk-forward

Simulasi kebijakan yang sebenarnya akan lo jalankan: setiap tahun, pilih strategi dengan expectancy terbaik menurut 3 tahun terakhir, jalankan selama setahun ke depan, ulangi. Tidak ada informasi masa depan yang dipakai untuk memilih.

2019-08-19 ke 2020-08-19
volume_breakout-0.0912
Hasil nyata-0.3528 (139 tx)
Terbaik: momentum_pullback -0.1581
rugi
2020-08-19 ke 2021-08-19
momentum_pullback-0.0769
Hasil nyata-0.0752 (120 tx)
Terbaik: volume_breakout +0.1800
rugi
2021-08-19 ke 2022-08-19
volume_breakout-0.0854
Hasil nyata-0.0181 (165 tx)
Terbaik: donchian55 +0.0960
rugi
2022-08-19 ke 2023-08-19
donchian55-0.0393
Hasil nyata-0.1839 (144 tx)
Terbaik: momentum_pullback -0.0423
rugi
2023-08-19 ke 2024-08-19
volume_breakout+0.0176
Hasil nyata-0.1549 (152 tx)
Terbaik: rsi2_pullback -0.0119
rugi
2024-08-19 ke 2025-08-19
rsi2_pullback-0.0530
Hasil nyata+0.0598 (114 tx)
Terbaik: donchian55 +0.1016
untung
2025-08-19 ke 2026-08-19
rsi2_pullback-0.0536
Hasil nyata-0.1742 (124 tx)
Terbaik: volume_breakout +0.2167
rugi
Expectancy out-of-sample
-0.1314R
gabungan 958 transaksi
Lipatan yang untung
1 / 7
tahun demi tahun
Pilihannya tepat
0 / 7
memilih yang ternyata terbaik
Kalau bisa lihat masa depan
+0.0480R
batas atas yang mustahil dicapai
Kolom pilihannya tepat adalah inti masalahnya: memilih berdasarkan performa masa lalu hanya menebak benar 0 dari 7 kali. Selisih antara -0.1314R (yang lo dapat) dan +0.0480R (kalau bisa melihat masa depan) adalah harga dari ketidaktahuan, dan tidak ada jumlah backtest yang bisa menghapusnya.

Uji 3, Kontrol acak

Entry dilempar koin dengan frekuensi sama (1.502% per bar), aturan keluar identik. Kalau strategi tidak mengalahkan ini, tidak ada edge yang perlu didiskusikan, yang terlihat sebagai edge sebenarnya berasal dari aturan keluarnya.

Sinyal saja (tanpa biaya)
Entry acak-0.0213
volume_breakout-0.0437
Selisih -0.0224
Setelah fee + slippage
Entry acak-0.2692
volume_breakout-0.2140
Selisih +0.0552
Kontrol ini tidak bersih, dan hasilnya tidak mendukung keberadaan edge.

Entry acak jatuh pada saham dengan harga median Rp 276, entry strategi Rp 487. Karena satu tick adalah porsi yang jauh lebih besar di saham murah, baris setelah biaya sebenarnya mengukur sebaran harga, bukan kualitas sinyal, di situ strategi menang hanya karena lawannya kena slippage lebih parah.

Baris yang bisa dibaca adalah baris tanpa biaya. Di sana entry acak justru unggul 0.0224R atas strateginya. Tidak ada edge entry yang bisa ditunjukkan.

Biaya, bagian yang membunuh

Slippage diukur dalam fraksi harga (tick). Satu tick tiap sisi menyeberangi spread, asumsi wajar untuk order market.

SlippageTransaksiExpectancy RCAGRMax DD
0 tick / sisi1500-0.0437-2.79%-57.2%
0.25 tick / sisi1515-0.1188-10.04%-77.1%
0.5 tick / sisi1518-0.1682-14.16%-82.5%
1 tick / sisi1546-0.2140-17.10%-87.8%
Seperempat tick saja sudah memakan 0.0751R per transaksi. Di saham berharga rendah, dan universe IDX penuh dengan itu, satu tick adalah bagian besar dari seluruh anggaran risiko lo. Bukan biaya kecil yang bisa dibulatkan ke nol.

ARA / ARB

Bar diperiksa
664.517
Papan terkunci ARB
4
tidak bisa jual
Dibuka di ARA
92
tidak bisa beli
Menyentuh ARA
784
Auto rejection dimodelkan penuh: entry dibatalkan kalau bar dibuka di ARA, dan stop loss tidak tereksekusi kalau papan terkunci di ARB (posisinya terbawa ke hari berikutnya, biasanya lebih rugi).

Hasil pengukurannya: pengaruhnya nol untuk universe ini. Bukan karena aturannya tidak penting, tapi karena filter likuiditas sudah menyingkirkan saham-saham kecil yang justru sering kena ARA/ARB. Kalau filter itu dilonggarkan, angka ini akan berubah.

Dijalankan 2026-08-20 10:41 pada 362 emiten. Yang masih belum tertangani: survivorship bias, emiten yang delisting tidak ada di data, sehingga kerugian terbesar di dunia nyata tidak pernah muncul di sini.