← All Collections
4 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
    La Scala di Velocità del Backtest: 298x su una CPU da Laptop, PnL Identico Fino all'Ultimo Trade
    Jul 1, 2026 #algotrading

    La Scala di Velocità del Backtest: 298x su una CPU da Laptop, PnL Identico Fino all'Ultimo Trade

    Cinque implementazioni dello stesso sweep di parametri a 80 combo, tutte verificate per produrre lo stesso PnL: pandas rolling.apply impiega 69.9 secondi, numpy 3.1, numba 2.0, numba parallelo 0.23 — uno speedup misurato di 298x su un Apple M2 Max a parità di hardware, e ancora ~13x rispetto a una baseline vettorizzata competente. Cosa guadagna ogni gradino, perché una GPU non è il pezzo mancante, e dove si trova il vero collo di bottiglia nella ricerca massiva di parametri.

  2. 02
    Cache Parquet Aggregata: Come Accelerare i Backtest Multi-Timeframe di Centinaia di Volte
    Mar 16, 2026 #algotrading

    Cache Parquet Aggregata: Come Accelerare i Backtest Multi-Timeframe di Centinaia di Volte

    Come precalcolare i timeframe e gli indicatori dalle candele al minuto, salvarli in parquet e utilizzarli per il testing di massa delle strategie senza ricalcoli ridondanti.

  3. 03
    Drill-Down Adattivo: Backtest con Granularità Variabile dai Minuti ai Trade Grezzi
    Mar 17, 2026 #algotrading

    Drill-Down Adattivo: Backtest con Granularità Variabile dai Minuti ai Trade Grezzi

    Come la granularità adattiva dei dati accelera i backtest e risparmia spazio di archiviazione: drill-down da 1m a 1s, 100ms e trade grezzi solo dove il prezzo si è mosso significativamente o il volume è aumentato, non sull'intera serie storica.

  4. 04
    La Tassa IPC: Metti il Motore di Backtest Dietro un Socket e Perdi il 13% — Ma Quasi Nulla è Colpa del Socket
    Jul 2, 2026 #algotrading

    La Tassa IPC: Metti il Motore di Backtest Dietro un Socket e Perdi il 13% — Ma Quasi Nulla è Colpa del Socket

    Abbiamo portato un kernel di backtest numba riga per riga in Rust e lo abbiamo chiamato attraverso un confine di processo in quattro modi diversi, con un gate di equivalenza che conferma un PnL identico fino all'ultimo trade. Spedire l'intera serie di prezzi da 1.2 MB attraverso un Unix socket costa ~2 ms — circa lo 0.1% del lavoro. Codificare lo stesso payload in JSON costa 1348 volte più dei byte raw, le chiamate chatty per-combo rispediscono i dati 80 volte, e un pattern di chiamata per-barra pagherebbe 2.1 s di puro IPC su un job da 2.0 s. Il confine è economico; la tassa sta in come lo attraversi.