High-Performance Backtest Engines
How to build a backtest engine that runs hundreds of times faster without changing a single PnL number — data layout, caching, adaptive resolution, and architecture, from first speedups to production internals.
- 01
Jun 26, 2026 #algotradingTangga Kecepatan Engine Backtest: 298x pada CPU Laptop, PnL Identik hingga Transaksi Terakhir
Lima implementasi dari sweep parameter 80-kombinasi yang sama, semuanya diverifikasi menghasilkan PnL identik: pandas rolling.apply membutuhkan 69.9 detik, numpy 3.1, numba 2.0, numba paralel 0.23 — percepatan terukur 298x pada Apple M2 Max tanpa perubahan hardware sama sekali, dan tetap ~13x lebih cepat dibanding baseline vektorisasi yang kompeten. Apa yang didapat dari setiap anak tangga, mengapa GPU bukan bagian yang hilang, dan di mana bottleneck sebenarnya dalam pencarian parameter skala besar berada.
- 02
Jul 2, 2026 #algotradingPajak Framework: Saat Library Backtest Anda Lebih Lambat daripada Loop Pandas yang Naif
Kami membandingkan delapan mesin backtest pada satu parameter sweep yang identik — 150 ribu bar, 80 kombinasi HMA-cross, paritas jumlah trade dikunci di 2707. Dua framework event-driven paling populer ternyata lebih lambat daripada loop pandas buatan tangan, sementara mesin vectorized/compiled menjalankan pekerjaan yang sama ~13.000× lebih cepat. Sebuah kajian tentang overhead per-bar yang memang tidak pernah dirancang untuk diamortisasi oleh library-library populer.
- 03
Mar 16, 2026 #algotradingCache Parquet Teragregasi: Cara Mempercepat Backtest Multi-Timeframe Ratusan Kali Lipat
Cara pra-komputasi timeframe dan indikator dari candle per menit, menyimpannya ke parquet, dan menggunakannya untuk pengujian strategi massal tanpa perhitungan ulang yang tidak perlu.
- 04
Jul 3, 2026 #trading algoritmikRuang Parameter Dua Sumbu: Mengapa Sebagian Besar Sweep Anda Seharusnya Nyaris Gratis
Tidak semua parameter sama mahalnya untuk dicari. Parameter sebuah strategi terbelah menjadi sumbu mahal (indikator — dihitung ulang atas seluruh deret) dan sumbu murah (ambang keputusan — satu lintasan O(n) atas sinyal yang sudah dihitung sebelumnya). Karena indikator invarian terhadap ambang, Anda menghitungnya sekali lalu menyisir ribuan konfigurasi ambang pada ~5,600 cfg/s — kira-kira 1,600x lebih murah dibanding menghitung ulang per konfigurasi. Sebuah penaksiran ulang harga kutukan dimensionalitas.
- 05
Mar 17, 2026 #algotradingDrill-Down Adaptif: Backtest dengan Granularitas Bervariasi dari Menit hingga Trade Mentah
Bagaimana granularitas data adaptif mempercepat backtest dan menghemat penyimpanan: drill-down dari 1m ke 1s, 100ms, dan trade mentah hanya di tempat harga bergerak signifikan atau volume melonjak, bukan di sepanjang seluruh deret historis.
- 06
Jul 5, 2026 #algotradingFidelity Gate: Backtesting Coarse-to-Fine Menipu Anda Lebih Cepat, Kecuali Proxy Murah Memberi Peringkat yang Sama dengan yang Mahal
Pencarian drill-down / multi-fidelitas (ASHA, successive halving, Hyperband) menyaring ribuan konfigurasi secara murah dan hanya mempromosikan yang bertahan ke evaluasi penuh yang mahal. Ini adalah percepatan yang nyata — tetapi runtuh secara diam-diam jika peringkat fidelity rendah tidak sesuai dengan peringkat fidelity tinggi. Kami mengukur korelasi peringkat antar-fold: pada satu fold, Spearman ρ bisa hanya 0.03 (mengurutkan hampir secara acak), lalu naik menjadi 0.43, 0.67, 0.78, 0.91 seiring bertambahnya fold. Solusinya adalah satu gate wajib — ukur ρ(murah, penuh) terlebih dahulu, lalu naikkan otomatis fidelity minimum ke rung pertama di mana ρ ≥ 0.5.
- 07
Jul 4, 2026 #algotradingRandom vs Smart Search: Titik Crossover Ada di Biaya Evaluasi, Bukan Algoritma
Ketika satu backtest murah, scrambled Sobol yang 'bodoh' menang telak dalam throughput mentah — sampler pintar (TPE, CMA-ES, ASHA) membayar pajak ask/tell Python yang menurunkan kecepatannya 20x, sehingga mereka mengevaluasi jauh lebih sedikit titik pada wall-clock yang sama dan kalah. Buat setiap evaluasi menjadi mahal (multi-TF + fold walk-forward) dan titik crossover-nya berbalik. Kami mengukur kedua rezim ini, dan mengapa fidelity fold-rank (ρ@1 naik dari 0.03→0.43) menjadi prasyarat agar pruning membuahkan hasil.
- 08
Jul 6, 2026 #algotradingJebakan Presisi GPU: Bagaimana Backtest fp32 di Apple Metal Diam-Diam Mengembalikan Sampah
GPU Metal dari Apple tidak memiliki float64. Porting backtest tervektorisasi ke sana secara naif dan trik prefix-sum WMA yang menggoda akan overflow di fp32 — kesalahan relatif maksimum 211× — namun ia tetap berjalan dan mengembalikan angka yang tampak masuk akal. Solusinya bukan presisi yang lebih tinggi; melainkan formulasi yang berbeda: konvolusi berjendela langsung, aman di fp32 hingga 8×10⁻⁷ dan 55,9× lebih cepat daripada numba single-thread. Jebakannya, aritmetikanya, dan cara membuktikan bahwa Anda tidak terjebak di dalamnya.
- 09
Jul 7, 2026 #algotradingKapan GPU Terbayar: Roofline Sweep Parameter, di Mana Headline 167x Sebenarnya adalah 27x Algoritma Kali 6.2x Hardware
Keunggulan GPU atas CPU tumbuh seiring ukuran batch — 54.5x pada satu kombo per panggilan hingga 359.6x pada 61 di precompute indikator multi-timeframe kami — karena sweep kecil tidak bisa mengamortisasi overhead peluncuran kernel dan transfer. Kami mengurai headline 167x menjadi kemenangan algoritmik 27x yang juga membantu CPU kali kemenangan hardware 6.2x, menunjukkan bahwa keunggulan sejati GPU-vs-CPU-terbaik hanya 3.2x untuk single-timeframe dan 6.2x untuk multi, dan memberikan panduan keputusan seberapa lebar sweep yang dibutuhkan sebelum GPU layak dibeli.
- 10
Jun 30, 2026 #algotradingPajak IPC: Taruh Engine Backtest di Balik Socket dan Rugi 13% — Nyaris Tak Ada yang Disebabkan oleh Socket-nya
Kami mem-port kernel backtest numba baris demi baris ke Rust dan memanggilnya lintas batas proses dengan empat cara, dengan gerbang ekuivalensi yang mengonfirmasi PnL identik hingga transaksi terakhir. Mengirim seluruh seri harga 1.2 MB melalui Unix socket berbiaya ~2 ms — sekitar 0.1% dari total pekerjaan. Meng-encode payload yang sama sebagai JSON berbiaya 1348x lebih mahal daripada raw bytes, panggilan chatty per-kombo mengirim ulang data 80 kali, dan pola panggilan per-bar akan membayar 2.1 s IPC murni pada pekerjaan 2.0 s. Batasnya murah; pajaknya ada pada cara Anda menyeberanginya.