Metodologia di backtest
Come Drogo simula la performance storica delle strategie, quali assunzioni sono incorporate e quali bias controlliamo esplicitamente.
Ultima revisione:
Sorgenti dati e risoluzione
I backtest di Drogo girano contro gli stessi dati barrali storici che alimentano i grafici live: OHLCV end-of-day da Polygon per azioni ed ETF statunitensi, con risoluzioni intraday (1m, 5m, 15m, 60m) disponibili per gli stessi strumenti. Le coppie crypto usano i dati spot di Binance. Le coppie Forex usano Polygon FX. Tutti i dati sono erogati attraverso l'endpoint /history della Drogo data API e sono cachati al bordo per garantire coerenza di lettura all'interno di una singola esecuzione di backtest.
Ogni strumento è indicizzato dalla sua quotazione primaria — le corporate action (split, dividendi straordinari in contanti, cambi di ticker) sono applicate alla serie storica così che una posizione di 100 azioni AAPL acquistata nel 2014 sia riflessa come 700 azioni ai prezzi odierni, con il cost basis aggiustato di conseguenza. Gli spin-off sono applicati come proventi cash-equivalent alla data dello spin-off quando Polygon pubblica il rapporto; altrimenti la posizione viene chiusa al close del giorno precedente lo spin-off e una nota viene emessa nel run log.
Modello degli ordini e slippage
Per default, Drogo simula ordini market che si eseguono all'apertura della barra successiva dopo che un segnale è scattato sul close della barra. Questo evita il look-ahead bias: una strategia che scatta alle 15:30 sul timeframe giornaliero non può tradare al close delle 16:00 dello stesso giorno.
Lo slippage è modellato come una frazione fissa del range di barra, con default di 5 bps per azioni statunitensi liquide, 10 bps per titoli meno liquidi (ADV < $20M), 15 bps per crypto major e 30 bps per crypto altcoin. Lo slippage è applicato simmetricamente in entrata e uscita, così i costi round-trip sono il doppio della cifra single-leg. Gli utenti possono sovrascrivere questi default per singolo run.
Gli ordini limit e stop sono simulati contro l'high/low della barra: un buy-stop a $101 scatta solo se l'high è ≥ $101 sulla barra in questione, con prezzo di esecuzione fissato a max(stop, open). Gli stop-loss sulle posizioni long scattano se il low ≤ stop, con esecuzione a min(stop, open) per modellare onestamente le perdite da gap-down.
Esempio numerico: il segnale AAPL scatta sul close del 2024-01-10 a $185.92. Il tier di slippage di default è 5 bps. La barra successiva apre a $186.40. Esecuzione simulata = $186.40 × (1 + 0.0005) = $186.49. All'uscita cinque giorni dopo all'apertura $192.10, esecuzione simulata = $192.10 × (1 − 0.0005) = $192.00. Costo di slippage round-trip = ($186.49 − $186.40) + ($192.10 − $192.00) = $0.19 per azione, ≈ 10 bps round trip. P&L riportato = $192.00 − $186.49 = $5.51 per azione, prima delle commissioni SEC/FINRA sul lato vendita.
Commissioni e funding
Azioni statunitensi: commissione $0 (in linea con i broker retail moderni). Le SEC fee dello 0.00229 % sulle vendite e la FINRA TAF di $0.000119/azione sulle vendite sono applicate a meno che l'utente non le disabiliti. Crypto: 10 bps maker / 10 bps taker per default (Binance VIP-0). Forex: commissione $0, spread incorporato nel modello di slippage.
Margine e short-funding: l'engine carica funding overnight sulle posizioni short al SOFR + 50 bps annualizzato, prorato giornalmente. Le posizioni long sono unfunded per default (cash account). Gli utenti possono passare a un modello di conto a margine che carica SOFR + 200 bps sul cash preso in prestito oltre il 100 % di utilizzo dell'equity.
Controlli su survivorship e look-ahead bias
L'universo storico di Drogo include ticker delistati e falliti ovunque il provider dati li fornisca, così una strategia che fa backtest su "azioni S&P 500 2015–2024" gira effettivamente contro la composizione storica dell'indice di ciascun anno, non contro la composizione odierna. Gli eventi di reconstitution dell'indice sono presi dai file storici di indice di Polygon quando disponibili; altrimenti facciamo fallback su un CSV curato che aggiorniamo trimestralmente.
Le date earnings, le date dividendo e altri eventi corporate sono presi dal timestamp di annuncio di ciascun evento, non dal timestamp di report. Una strategia che si basa su "compra 2 giorni prima degli earnings" conosce quindi la data degli earnings solo dopo che è stata annunciata pubblicamente, non dopo il fatto.
Non viene usato alcun dato fundamental più giovane di 75 giorni dalla fine trimestre, dato che le revisioni ai bilanci GAAP sono comuni nei primi 75 giorni post-deposito. Questo è conservativo; gli utenti possono abbassarlo.
Statistiche riportate
Ogni esecuzione di backtest riporta: total return, CAGR, max drawdown, Sharpe (rf = T-bill 1Y, ritorni giornalieri), Sortino (semi-deviazione downside), Calmar (CAGR / |max DD|), win rate, profit factor (gross profit / gross loss), winner / loser medio, expectancy per trade, holding period medio, exposure (% di tempo a mercato) e l'intera curva equity.
Sharpe e Sortino sono annualizzati per √252 per le strategie giornaliere e per √(365×24×60) per le strategie crypto a 1m. Non calcoliamo lo "Sharpe mensile" per default perché gonfia il numero per le strategie ad alta frequenza; se ti serve, fai opt-in esplicito.
Il drawdown è calcolato sulla curva equity inclusa la P&L non realizzata, non solo realizzata. Questo corrisponde a quel che un titolare di conto reale vedrebbe giorno per giorno.
Cosa i backtest non possono dirti
I backtest assumono che la strategia che hai eseguito in codice sia la strategia che avresti eseguito in tempo reale, senza alcun override comportamentale. In pratica la maggior parte dei trader retail sovrascrive la propria strategia dopo 3–4 perdite consecutive. Il max drawdown riportato è un limite inferiore di quel che un essere umano sperimenterebbe.
I backtest non possono modellare eventi di liquidità che non sono accaduti: una strategia che ha sempre tradato $10k di AAPL avrebbe mosso i mercati se scalata a $100M. Non riduciamo automaticamente la dimensione della posizione in base al volume medio giornaliero; questa è responsabilità dell'utente.
I backtest non sono consulenza in materia di investimenti e non stabiliscono che la strategia funzionerà in futuro. Drogo non esegue review di rischio a livello di portafoglio e non agisce come fiduciario.
Cronologia delle modifiche
- — Initial publication.
- — Added survivorship-bias and look-ahead-bias control sections; clarified default slippage tiers.
Riferimenti
Drogo Research — Redazione quantitativa
Reviewed for factual accuracy; methodology linked below.