← All Collections
🎯 9 parts

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.

  1. 01
    Objective-Function Design: Metrik yang Anda Optimalkan Diam-Diam Memilih Strategi Anda
    Jun 28, 2026 #algotrading

    Objective-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.

  2. 02
    Membuktikan Tidak Ada Look-Ahead pada Backtest Multi-Timeframe: Ganggu Masa Depan, Buktikan Masa Lalu Tidak Bisa Melihatnya
    Jul 8, 2026 #algotrading

    Membuktikan Tidak Ada Look-Ahead pada Backtest Multi-Timeframe: Ganggu Masa Depan, Buktikan Masa Lalu Tidak Bisa Melihatnya

    Backtest multi-timeframe membocorkan masa depan lewat bar timeframe lebih tinggi yang sedang terbentuk, yang close akhirnya belum ada. Anda tidak bisa meraih keyakinan hanya lewat code review — Anda harus mengujinya. Kami mereproduksi persis aturan closed-bar milik bot live, lalu membuktikan tidak ada kebocoran dengan probe shifted-future: mengganggu setiap bar masa depan dan memastikan setiap sinyal serta trade di masa lalu tidak berubah sama sekali (bitwise unchanged). 25/25 pemeriksaan parity lolos, dan probe ini punya taring.

  3. 03
    Walk-Forward Optimization: Satu-Satunya Uji Strategi yang Jujur
    Mar 15, 2026 #algotrading

    Walk-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.

  4. 04
    Analisis Plateau: Cara Membedakan Optimum yang Robust dari Overfitting
    Mar 12, 2026 #algotrading

    Analisis 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.

  5. 05
    Monte Carlo Bootstrap: Cara Mendapatkan Confidence Interval untuk Backtest dalam 10 Baris Kode
    Mar 6, 2026 #algotrading

    Monte 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.

  6. 06
    Probability of Backtest Overfitting: Apakah Pencarian Anda Mengalahkan Lemparan Koin?
    Jul 1, 2026 #algotrading

    Probability 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.

  7. 07
    Deflated Sharpe Ratio: Berapa Banyak 'Pemenang' Backtest Anda yang Selamat dari Multiple Testing?
    Jun 29, 2026 #algotrading

    Deflated 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.

  8. 08
    Paritas backtest-live: mengapa bot Anda berdagang berbeda dari backtest
    Mar 7, 2026 #algotrading

    Paritas 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.

  9. 09
    Negatif yang Jujur: Puluhan Ribu Backtest, Lima Koin Utama, Tanpa Edge yang Robust
    Jul 9, 2026 #algotrading

    Negatif yang Jujur: Puluhan Ribu Backtest, Lima Koin Utama, Tanpa Edge yang Robust

    Puncak dari rangkaian pencarian-dan-overfit, dan berakhir dengan hasil negatif — hasil yang benar. Pencarian dual-timeframe satu simbol pada ETHUSDT menemukan konfigurasi bernilai +16.35% out-of-sample dan +2.62% pada holdout yang belum tersentuh; Deflated Sharpe Ratio, dengan memperhitungkan ~37,000 trial, mendeflasinya menjadi 0.00. Lintasan lintas-instrumen atas lima koin utama (ETH/BTC/SOL/BNB/XRP, masing-masing ~1.18 juta bar 1 menit), diseleksi berdasarkan median out-of-sample, membunuhnya untuk selamanya: DSR dual 0.24 / PBO 0.264, DSR triple 0.14 / PBO 0.327 — keduanya gagal gate. Sang juara profitabel pada 1 dari 5 simbol dan negatif pada sisanya. Inilah tujuan aparatus anti-overfit: mencegah Anda mengirimkan yang terbaik dari noise sebagai alpha.