← All Collections
10 parts

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.

  1. 01
    Tangga Kelajuan Enjin Backtest: 298x pada CPU Laptop, PnL Identik hingga Dagangan Terakhir
    Jun 26, 2026 #algotrading

    Tangga Kelajuan Enjin Backtest: 298x pada CPU Laptop, PnL Identik hingga Dagangan Terakhir

    Lima pelaksanaan bagi sapuan parameter 80-kombo yang sama, semuanya disahkan menghasilkan PnL identik: pandas rolling.apply mengambil masa 69.9 saat, numpy 3.1, numba 2.0, numba selari 0.23 — kelajuan terukur 298x pada Apple M2 Max tanpa sebarang perubahan perkakasan, dan masih ~13x berbanding garis dasar vektor yang cekap. Apa yang diperoleh setiap anak tangga, mengapa GPU bukan bahagian yang hilang, dan di mana kesesakan sebenar dalam carian parameter besar-besaran berada.

  2. 02
    Cukai Rangka Kerja: Bila Pustaka Backtest Anda Lebih Perlahan Daripada Gelung Pandas Naif
    Jul 2, 2026 #dagangan algo

    Cukai Rangka Kerja: Bila Pustaka Backtest Anda Lebih Perlahan Daripada Gelung Pandas Naif

    Kami menanda aras lapan enjin backtest pada satu sapuan parameter yang sama — 150k bar, 80 kombinasi silang HMA, pariti kiraan dagangan dikunci pada 2707. Dua daripada rangka kerja dipacu peristiwa yang paling popular ternyata lebih perlahan daripada gelung pandas yang ditulis tangan, manakala enjin tervektor/terkompil menjalankan kerja yang sama ~13,000× lebih pantas. Satu kajian tentang overhed per-bar yang pustaka popular memang tidak pernah dibina untuk melunaskan.

  3. 03
    Cache Parquet Teragregat: Cara Mempercepatkan Backtest Pelbagai Jangka Masa Ratusan Kali
    Mar 16, 2026 #algotrading

    Cache Parquet Teragregat: Cara Mempercepatkan Backtest Pelbagai Jangka Masa Ratusan Kali

    Cara mengira awal jangka masa dan penunjuk daripada lilin minit, menyimpannya ke parquet, dan menggunakannya untuk ujian strategi besar-besaran tanpa pengiraan semula yang berlebihan.

  4. 04
    Ruang Parameter Dua Paksi: Mengapa Sebahagian Besar Sapuan Anda Sepatutnya Hampir Percuma
    Jul 3, 2026 #dagangan algoritma

    Ruang Parameter Dua Paksi: Mengapa Sebahagian Besar Sapuan Anda Sepatutnya Hampir Percuma

    Bukan semua parameter sama kosnya untuk dicari. Parameter sesebuah strategi terbahagi kepada paksi mahal (penunjuk — dikira semula merentasi keseluruhan siri) dan paksi murah (ambang keputusan — satu laluan O(n) ke atas isyarat prakira). Oleh sebab penunjuk invarian terhadap ambang, anda mengiranya sekali dan menyapu beribu-ribu konfigurasi ambang pada ~5,600 cfg/s — kira-kira 1,600x lebih murah daripada mengira semula bagi setiap konfigurasi. Satu penilaian harga semula terhadap sumpahan kedimensian.

  5. 05
    Adaptive Drill-Down: Backtest dengan Granulariti Pemboleh ubah dari Minit hingga Dagangan Mentah
    Mar 17, 2026 #algotrading

    Adaptive Drill-Down: Backtest dengan Granulariti Pemboleh ubah dari Minit hingga Dagangan Mentah

    Bagaimana granulariti data adaptif mempercepatkan backtest dan menjimatkan storan: drill-down dari 1m ke 1s, 100ms, dan dagangan mentah hanya di mana harga bergerak dengan ketara atau volum melonjak, bukan di seluruh siri sejarah.

  6. 06
    Pintu Gerbang Fideliti: Backtesting Kasar-ke-Halus Menipu Anda Lebih Pantas Melainkan Proksi Murah Menyusun Kedudukan Sama Seperti yang Mahal
    Jul 5, 2026 #dagangan algo

    Pintu Gerbang Fideliti: Backtesting Kasar-ke-Halus Menipu Anda Lebih Pantas Melainkan Proksi Murah Menyusun Kedudukan Sama Seperti yang Mahal

    Carian drill-down / multi-fideliti (ASHA, successive halving, Hyperband) menyaring ribuan konfigurasi secara murah dan hanya menaikkan taraf konfigurasi yang terselamat kepada penilaian penuh yang mahal. Ini adalah pempercepatan yang tulen — tetapi ia runtuh secara senyap jika kedudukan pada fideliti rendah tidak sepadan dengan kedudukan pada fideliti tinggi. Kami mengukur korelasi kedudukan-fold: pada satu fold, Spearman ρ boleh serendah 0.03 (kedudukan hampir rawak), meningkat kepada 0.43, 0.67, 0.78, 0.91 apabila fold bertambah. Penyelesaiannya ialah satu pintu gerbang wajib — ukur ρ(murah, penuh) dahulu, dan naikkan secara automatik fideliti minimum kepada tahap pertama di mana ρ ≥ 0.5.

  7. 07
    Carian Rawak lawan Carian Pintar: Titik Persilangan Ialah Kos Penilaian, Bukan Algoritma
    Jul 4, 2026 #algotrading

    Carian Rawak lawan Carian Pintar: Titik Persilangan Ialah Kos Penilaian, Bukan Algoritma

    Apabila satu backtest itu murah, Sobol scrambled yang 'bodoh' menang dari segi throughput mentah — sampler pintar (TPE, CMA-ES, ASHA) menanggung cukai ask/tell Python yang menjatuhkan mereka 20x, jadi mereka menilai jauh lebih sedikit titik pada wall-clock yang sama dan kalah. Jadikan setiap penilaian mahal (multi-TF + lipatan walk-forward) dan titik persilangan itu berbalik. Kami mengukur kedua-dua rejim, dan sebab mengapa fideliti kedudukan-lipatan (fold-rank fidelity) (ρ@1 meningkat 0.03→0.43) adalah prasyarat untuk pruning memberi hasil.

  8. 08
    Perangkap Ketepatan GPU: Bagaimana Backtest fp32 pada Apple Metal Diam-diam Memulangkan Sampah
    Jul 6, 2026 #algotrading

    Perangkap Ketepatan GPU: Bagaimana Backtest fp32 pada Apple Metal Diam-diam Memulangkan Sampah

    GPU Metal Apple tiada float64. Alih backtest tervektor kepadanya secara naif dan WMA prefix-sum yang menggoda itu melimpah fp32 — ralat relatif maksimum 211× — namun ia tetap berjalan dan memulangkan angka yang kelihatan munasabah. Penyelesaiannya bukan ketepatan lebih tinggi; ia adalah rumusan yang berbeza: konvolusi berjendela terus, selamat-fp32 sehingga 8×10⁻⁷ dan 55.9× lebih pantas daripada numba benang-tunggal. Perangkap itu, aritmetiknya, dan cara membuktikan anda tidak terjebak.

  9. 09
    Apabila GPU Berbaloi: Roofline Sapuan Parameter, di Mana Tajuk Utama 167x Sebenarnya 27x Algoritma Darab 6.2x Perkakasan
    Jul 7, 2026 #algotrading

    Apabila GPU Berbaloi: Roofline Sapuan Parameter, di Mana Tajuk Utama 167x Sebenarnya 27x Algoritma Darab 6.2x Perkakasan

    Kelebihan GPU berbanding CPU tumbuh dengan saiz kelompok — 54.5x pada satu kombo setiap panggilan hingga 359.6x pada 61 dalam prapengiraan penunjuk pelbagai jangka masa kami — kerana sapuan kecil tidak dapat mengamortisasi overhead pelancaran kernel dan pemindahan. Kami menguraikan tajuk utama 167x kepada kemenangan algoritma 27x yang turut membantu CPU dan kemenangan perkakasan 6.2x, menunjukkan kelebihan sebenar GPU-berbanding-CPU-terbaik hanyalah 3.2x untuk jangka masa tunggal dan 6.2x untuk pelbagai jangka masa, dan memberikan panduan keputusan tentang berapa lebar sapuan perlu sebelum GPU berbaloi dibeli.

  10. 10
    Cukai IPC: Letakkan Enjin Backtest di Sebalik Soket dan Rugi 13% — Hampir Tiada Kaitan dengan Soket Itu
    Jun 30, 2026 #algotrading

    Cukai IPC: Letakkan Enjin Backtest di Sebalik Soket dan Rugi 13% — Hampir Tiada Kaitan dengan Soket Itu

    Kami mengalihkan (port) kernel backtest numba baris demi baris ke Rust dan memanggilnya merentasi sempadan proses dalam empat cara, dengan get kesetaraan yang mengesahkan PnL yang identik hingga dagangan terakhir. Menghantar keseluruhan siri harga 1.2 MB melalui soket Unix hanya berkos ~2 ms — sekitar 0.1% daripada kerja tersebut. Mengekod payload yang sama dalam JSON berkos 1348x lebih mahal daripada bait mentah, panggilan chatty setiap kombo menghantar semula data sebanyak 80 kali, dan corak panggilan setiap bar akan membayar 2.1 s IPC tulen pada kerja 2.0 s. Sempadan itu murah; cukainya terletak pada cara anda merentasinya.