Backtesting Without Fooling Yourself
A step-by-step path from what your backtest really optimizes to proving an edge survives overfitting, multiple testing, and live execution. Read top to bottom — each part builds on the last.
- 01
Jul 2, 2026 #algotradingObjective-Function Design: Metrik yang Anda Optimalkan Diam-Diam Memilih Strategi Anda
Untuk mencari strategi 'terbaik' Anda harus lebih dulu mendefinisikan 'terbaik' — dan skalar itu diam-diam memilih pemenangnya. Pada data sintetis dengan edge yang diketahui (600 seed, T=2000, 80 threshold), per-trade Sharpe yang naif menobatkan sebuah lotre: ia memilih pemenang ber-eksposur di bawah 5% pada 56% seed dan berdegenerasi pada 57% — pada seed paling ekstrem, 8 trade mencetak Sharpe in-sample 21.09 yang runtuh menjadi 0.13 out-of-sample. Perbaikan yang jujur nyaris membosankan: ukur pada seluruh timeline, yang tidak pernah berdegenerasi (out-of-sample 1.71). Shrinkage jumlah-trade (conf_k) dan sebuah exposure floor bisa merombak metrik per-trade, tetapi bahkan setelah sepenuhnya diperbaiki keduanya hanya menyamai full-timeline Sharpe (1.70 vs 1.71) — tidak pernah mengalahkannya. Hukum Goodhart, dalam sebuah backtest, dengan ground truth terkontrol.
- 02
Mar 15, 2026 #algotradingWalk-Forward Optimization: Satu-Satunya Uji Strategi yang Jujur
Mengapa pemisahan train/test tunggal tidak melindungi dari overfitting, bagaimana walk-forward optimization secara sistematis memverifikasi ketahanan parameter, dan mengapa strategi dengan PnL +3342%@ML pada 21 parameter adalah bom waktu tanpa WFO.
- 03
Mar 12, 2026 #algotradingAnalisis Plateau: Cara Membedakan Optimum yang Robust dari Overfitting
Mengapa menemukan parameter strategi terbaik hanyalah separuh dari pekerjaan. Cara membedakan plateau yang stabil dari puncak yang rapuh secara visual dan kuantitatif, serta mengapa contour plot Optuna adalah langkah wajib sebelum meluncurkan strategi yang dioptimalkan ke produksi.
- 04
Mar 6, 2026 #algotradingMonte Carlo Bootstrap: Cara Mendapatkan Confidence Interval untuk Backtest dalam 10 Baris Kode
Mengapa estimasi titik tunggal dari backtest adalah ilusi yang berbahaya. Bagaimana Monte Carlo bootstrap dalam 2 detik komputasi memberikan Anda confidence interval 95% untuk PnL dan MaxDD, dan mengapa ini adalah langkah wajib sebelum meluncurkan strategi ke produksi.
- 05
Jul 2, 2026 #algotradingProbability of Backtest Overfitting: Apakah Pencarian Anda Mengalahkan Lemparan Koin?
Deflated Sharpe Ratio memberi harga pada strategi pemenang; PBO memberi harga pada pencarian yang memilihnya. Combinatorially Symmetric Cross-Validation menjalankan C(16,8) = 12,870 pemisahan train/test di atas matriks performa 1000x200 dan bertanya: apakah pemenang in-sample mendarat di separuh bawah out of sample? Jebakan yang hampir semua orang lewatkan — null PBO adalah 0.5, bukan 1. Pada 200 strategi ber-edge nol, Sharpe tahunan in-sample terbaik sebesar 1.98 runtuh menjadi 0.06 out of sample dan PBO = 0.476: sebuah lemparan koin, sepenuhnya overfit. Tanamkan edge nyata (Sharpe tahunan 2.38) dan PBO turun ke 0.001, angka in-sample 3.73 bertahan menjadi 2.34 out of sample. Grid moving-average pada random walk murni juga tidak memiliki skill out-of-sample — PBO 0.463 dirata-ratakan atas 60 matriks, secara statistik tak terbedakan dari null — dan pada satu matriks representatif fatamorgananya jelas: Sharpe in-sample terbaik sebesar 2.33 runtuh menjadi median out-of-sample -0.22, PBO 0.573, peluang 63% mengalami kerugian.
- 06
Jul 2, 2026 #algotradingDeflated Sharpe Ratio: Berapa Banyak 'Pemenang' Backtest Anda yang Selamat dari Multiple Testing?
Pencarian parameter adalah mesin pembuat keberuntungan. Pada noise murni — 1,000 strategi dengan edge sejati nol — Sharpe tahunan terbaik rata-rata 1.63 dan uji signifikansi naif menandai penemuan 100% dari waktu. Kami membangun ground truth terkontrol dan menunjukkan bahwa Deflated Sharpe Ratio, haircut Harvey-Liu, dan Reality Check milik White memulihkan kejujuran: penemuan palsu turun dari 1.000 menjadi 0.001-0.057, edge sejati di atas plafon noise dipertahankan dengan power ~1 — dan satu jebakan nyata (grid berkorelasi) di mana DSR mentah over-deflate dan vonisnya harus dibaca melintasi seluruh rentang estimator effective-trial, bukan satu angka saja.
- 07
Mar 7, 2026 #algotradingParitas backtest-live: mengapa bot Anda berdagang berbeda dari backtest
Taksonomi lengkap perbedaan antara backtesting dan trading live: dari slippage dan partial fill hingga desinkronisasi kodebase. Pola arsitektur untuk mencapai paritas, contoh Python dari modul inti bersama, dan daftar periksa monitoring produksi.