Formazione sui metodi di ricerca · Quantic Eagle opera solo con capitale proprio. Non gestisce fondi di terzi né offre consulenza finanziaria o segnali di trading.

Un backtest sembra migliore. Che cosa è cambiato davvero?

Stai sviluppando un sistema di trading e vuoi capire se il suo backtest rappresenta le regole che intendi usare. Due versioni possono assegnare gli stessi punteggi a ciascun titolo e poi scegliere acquisti diversi; un profitto riportato può nascondere perdite sulle posizioni ancora aperte. Se usi un assistente AI per esaminare i file della ricerca, devi controllare anche quali file ha analizzato e che cosa ha ripetuto. Qui trovi casi interni ed esercizi inventati per verificare questi passaggi. Parti dal caso con tre acquisti o scegli una delle verifiche qui sotto.

QE-RESEARCH-03 / 1.0

Migliorare non significa guadagnare

Hai modelli che usano diverse variabili come dati di ingresso e vuoi verificare se servano tutte. In questo caso di ricerca interna sono state addestrate due varianti, A e B, con meno variabili della configurazione di riferimento, qui chiamata «controllo». Una variante può perdere meno del controllo: il profitto migliora, ma rimane negativo. A migliora il profitto mediano in 15 confronti su 22 e B in 16. Prima di scegliere quale sottoporre a nuove prove, controlla anche quanti risultati sono positivi e quali gruppi stai confrontando.

Ricerca interna, fotografia del 22 settembre 2026. I risultati osservati dal 1° agosto al 14 settembre 2026 erano già stati consultati durante la ricerca: servono a esaminare le scelte fatte, non costituiscono una conferma indipendente. Gli importi sono in USD; capitale iniziale delle simulazioni: 100.000 USD. Sono aggregati di simulazioni interne, calcolati con le ipotesi di costo usate allora. Descrivono i confronti registrati; non dimostrano redditività netta né idoneità all’operatività reale.

Per confrontare configurazioni simili, i risultati sono raggruppati per condizioni di addestramento. Ogni riga del file contiene le mediane dei modelli appartenenti a uno stesso gruppo di condizioni di addestramento. Non rappresenta un singolo modello. Ogni variante ha 22 confronti: 21 gruppi sono presenti per entrambe, mentre G07 compare solo per A e G08 solo per B, per un totale di 23 gruppi distinti (44 righe complessive nel CSV). I pesi appresi e altre scelte dell’ottimizzazione possono differire: il confronto non isola perfettamente l’effetto del numero di input.

La mediana è il valore centrale dopo aver ordinato i risultati; con un numero pari di risultati si fa la media dei due centrali.

Variante A · 22 confronti
Variante A · 22 confronti
Variante B · 22 confronti
Variante B · 22 confronti

Per ogni riga sottrai il profitto del controllo da quello della variante. Conta prima le differenze maggiori di zero, poi i profitti della variante maggiori di zero. Uno zero non è un profitto positivo. Il file conserva la precisione originale; arrotonda soltanto quando presenti il risultato.

Confronta il tuo ragionamento

A migliora 15 confronti ma ha profitto mediano positivo in 9; B migliora 16 confronti ma è positiva in 7. In ciascuna serie di 22 confronti, il controllo ha profitto mediano positivo in 6 gruppi. Nel gruppo G01, A passa da −3.271,15 a −858,60 USD: migliora di 2.412,55 USD e rimane in perdita. B passa a −441,84 USD: anche in questo caso il miglioramento non elimina la perdita.

Confronta ora A e B soltanto nei 21 gruppi comuni. A ha profitto registrato maggiore in 10 gruppi, B in 10 e una coppia è pari; la mediana delle differenze B meno A è zero. I conteggi 15 e 16 rispondono invece a due confronti separati con il controllo, ciascuno su 22 gruppi. I risultati non stabiliscono una variante vincente. Si confrontano mediane aggregate, con 1–2 modelli per gruppo: non sono 21 prove indipendenti né una stima del profitto ottenibile.

Tabella completa

Nel CSV, variant e group identificano variante e gruppo. control_pnl e variant_pnl sono profitti mediani in USD; control_dd_pct e variant_dd_pct sono drawdown mediani, espressi in percentuale (5 significa 5%). control_models e variant_models indicano quanti modelli sono stati riassunti. Profitto e drawdown sono mediane separate: non descrivono necessariamente lo stesso modello.

Variante / GruppoControllo · USDVariante · USDΔ USDDrawdown mediano · % · C / VModelli · C / V
A / G01-3.271,15-858,602.412,554,87 / 1,292 / 2
B / G01-3.271,15-441,842.829,314,87 / 0,822 / 2
A / G02-747,79-2.441,32-1.693,530,95 / 2,772 / 2
B / G02-747,790,00747,790,95 / 0,002 / 1
A / G031.733,65-192,08-1.925,734,80 / 1,192 / 1
B / G031.733,65316,08-1.417,574,80 / 1,922 / 2
A / G04-5.411,15-639,064.772,086,45 / 1,192 / 2
B / G04-5.411,15184,955.596,106,45 / 0,272 / 2
A / G05-5.720,53-561,375.159,167,93 / 0,872 / 2
B / G05-5.720,53-140,455.580,087,93 / 1,042 / 2
A / G06-998,06309,451.307,523,38 / 3,332 / 2
B / G06-998,061.204,122.202,193,38 / 1,022 / 1
A / G07-3.343,460,003.343,465,17 / 0,002 / 1
B / G08-3.232,70-166,503.066,205,84 / 0,432 / 1
A / G09-1.570,60-187,011.383,594,31 / 0,961 / 1
B / G09-1.570,60-1.380,28190,324,31 / 1,381 / 1
A / G10-4.155,302.448,716.604,006,90 / 4,312 / 1
B / G10-4.155,30-244,203.911,106,90 / 0,272 / 2
A / G11-1.879,9490,281.970,223,84 / 0,281 / 1
B / G11-1.879,94-471,971.407,983,84 / 3,991 / 2
A / G12-1.269,57-6.298,88-5.029,317,36 / 8,272 / 2
B / G12-1.269,57-207,141.062,437,36 / 0,982 / 1
A / G131.982,88-2.514,02-4.496,901,38 / 3,992 / 2
B / G131.982,88170,23-1.812,651,38 / 1,092 / 2
A / G14444,751.388,46943,702,79 / 3,312 / 2
B / G14444,751.388,46943,702,79 / 3,312 / 2
A / G15-4.711,13581,985.293,106,67 / 0,621 / 2
B / G15-4.711,13-869,613.841,526,67 / 0,951 / 2
A / G161.971,01-2.878,14-4.849,151,04 / 3,011 / 2
B / G161.971,01-1.494,31-3.465,331,04 / 2,111 / 2
A / G17430,201.721,461.291,260,69 / 0,991 / 2
B / G17430,20996,15565,960,69 / 3,271 / 1
A / G18-3.540,103.025,236.565,336,83 / 3,781 / 1
B / G18-3.540,10-189,553.350,556,83 / 0,661 / 2
A / G1919,61-491,79-511,410,28 / 0,492 / 1
B / G1919,61-771,72-791,340,28 / 0,972 / 2
A / G20-377,91-310,2267,692,14 / 1,292 / 2
B / G20-377,91-533,01-155,102,14 / 0,832 / 2
A / G21-483,67267,15750,821,69 / 0,452 / 2
B / G21-483,67-646,01-162,341,69 / 1,042 / 2
A / G22-635,74718,171.353,911,05 / 4,531 / 2
B / G22-635,74523,801.159,541,05 / 0,171 / 1
A / G23-142,35-644,23-501,890,20 / 0,752 / 2
B / G23-142,350,00142,350,20 / 0,002 / 1

Salva il CSV e il programma nella stessa cartella. Il collegamento al programma propone il nome QE-RESEARCH-03.py; se il browser conserva .txt, rinominalo. Apri un terminale in quella cartella ed esegui il comando. Il programma legge il CSV e stampa i conteggi; non invia dati e non esegue operazioni di trading.

python QE-RESEARCH-03.py QE-RESEARCH-03.csv

Il download permette di ricalcolare questi aggregati. Non contiene prezzi, operazioni e modelli necessari a ripetere i backtest originari. Fonte: QE-RESEARCH-03 / 1.0, estrazione anonima della ricerca interna.

Tre problemi che hanno cambiato il nostro lavoro

Replicare le previsioni, distribuire compiti e aggiornare un report sembravano operazioni semplici. Questi casi interni mostrano quale controllo mancava.

Le previsioni coincidevano. Le regole decisionali erano diverse.

Hai già una funzione che decide gli ordini e ne stai costruendo un’altra, per esempio per eseguire le simulazioni in un ambiente diverso. Prima di sostituirla vuoi verificare che, con gli stessi dati e le stesse regole, scelga gli stessi ordini. Nel caso interno coincidevano modelli, input e previsioni. Ma in un momento in cui le regole rendevano possibili sia un acquisto sia una vendita, le due implementazioni risolvevano quel conflitto con criteri diversi. Sceglievano quindi direzioni diverse pur partendo dalle stesse previsioni. Il controllo trovò questa divergenza nella simulazione; non ricalcolò il risultato economico dopo la correzione.

Schema didattico · Non rappresenta risultati di trading

Dove nasce la divergenza

Dove nasce la divergenzaPunteggi identici. Scelta diversa. Portafogli diversi. Verificare il percorso fra previsione e ordine.
01Punteggi identici
02Scelta diversa
03Portafogli diversi
Verificare il percorso fra previsione e ordine.

Per confrontare una riscrittura devi ripartire dallo stesso conto iniziale, non soltanto controllare un’ora isolata. Guarda questo esempio inventato: il sistema può detenere un solo titolo alla volta. Alle 10 la versione in uso compra A e lo terrà fino alle 12; la riscrittura non lo compra. Alle 11 arriva una possibilità di comprare B. La versione in uso deve escluderla perché ha ancora A; la riscrittura può valutarla perché non ha posizioni aperte. La differenza delle 10 ha cambiato ciò che era possibile fare alle 11. Segui quindi gli ordini in sequenza e confronta, dopo ciascuno, titoli detenuti e denaro disponibile.

La guida mostra come individuare il primo punto in cui due versioni producono risultati diversi e decidere quali calcoli debbano essere ripetuti. Rifare tutto può essere inutile; riutilizzare risultati senza verificare da quali dati dipendono può essere altrettanto sbagliato.

L’agente ripeteva analisi già assegnate ad altre richieste

Qui passiamo a un altro lavoro: chiedere a un assistente AI di esaminare i materiali della ricerca. Non è il modello che prevede i mercati e non esegue ordini; usa un modello linguistico per svolgere le analisi assegnate. Le analisi della giornata erano divise in piccoli gruppi, chiamati batch. Ogni richiesta all’AI riceveva però l’elenco completo. Il programma che raccoglieva le risposte non controllava fino in fondo quali elementi appartenessero a ciascun incarico e quali fossero già comparsi. Poteva quindi ripetersi lavoro assegnato ad altre richieste.

Prima di un nuovo backtest devi decidere quali esportazioni correggere: cerchi date incoerenti e valori mancanti in dodici CSV. Dividi il lavoro fra quattro agenti: A–C al primo, D–F al secondo, G–I al terzo e J–L al quarto. Possono scrivere i propri programmi di controllo. Nel caso inventato li avvii però sulla cartella intera e ciascuno controlla tutti e dodici i file, ignorando l’assegnazione. Ricevi 48 schede per gli stessi dodici CSV: hai fatto ripetere ogni controllo quattro volte e devi leggere e riconciliare rapporti aggiuntivi prima di correggere le fonti. Le 48 schede non sono 48 file diversi e non dimostrano quattro verifiche indipendenti. Limita i file accessibili a ciascun incarico, registra quelli effettivamente letti e confronta le consegne con i file assegnati. Nel dossier gratuito, QE-BATCH-01 controlla gli identificativi dichiarati degli incarichi e delle risposte, non la qualità delle analisi. Il Museo affronta un altro obiettivo: un secondo parere sugli stessi originali senza mostrare il verdetto precedente.

La domanda economica viene dopo: abbiamo registrato abbastanza informazioni per capire se il componente aiuta? Nel caso interno, no. La spesa era reale e il beneficio non dimostrabile con le prove conservate; il componente è stato sospeso.

Per stimare se un agente AI fa risparmiare lavoro, prepara due prove sugli stessi compiti e con gli stessi criteri di accettazione: una con il tuo procedimento abituale, l’altra con l’agente. È un confronto da progettare, non un risultato già ottenuto da Quantic Eagle. In entrambe registra tempo umano, costo delle chiamate, tentativi ripetuti e analisi dei file accettate dopo averne verificato la correttezza. Il tempo di controllo e riparazione fa parte del costo. Se fai entrambe le prove di persona, annota anche l’ordine: ciò che impari nella prima può rendere più rapida la seconda.

Quando scrivere il report blocca i calcoli

Avevamo diversi calcoli da eseguire e un programma che li assegnava ai processi di lavoro disponibili. Lo stesso programma preparava anche il report. Mentre scriveva il report, non assegnava il calcolo successivo: alcuni processi restavano in attesa, anche se c’era altro lavoro pronto. Salvare risultati già calcolati o avviare più processi non eliminava quell’attesa. Il punto da correggere era l’assegnazione bloccata dalla preparazione del report.

Per far proseguire i calcoli, il programma che assegna i lavori deve poter avviare il successivo mentre un altro prepara il rapporto. Ogni risultato completato va salvato e collegato all’incarico che lo ha prodotto, con versione dei dati e del programma. Dopo un’interruzione, questi riferimenti permettono di distinguere i lavori da riprendere da quelli già finiti. Il caso gratuito qui sotto confronta i minuti impiegati dai due modi di organizzare il lavoro.

Sei domande da portare nel tuo progetto

  1. Quali informazioni erano disponibili quando veniva presa la decisione?
  2. Quali risultati avevi già osservato quando hai scelto il modello?
  3. La curva include il valore delle posizioni ancora aperte e sottrae i costi? Versamenti e prelievi sono distinti da guadagni e perdite?
  4. Il confronto cambia una sola cosa o più condizioni contemporaneamente?
  5. Un'altra persona può riprodurre il risultato dai materiali conservati?
  6. Quale esito ti farebbe abbandonare l'ipotesi?

Per ogni risposta mancante, definisci quale dato devi raccogliere o quale confronto devi eseguire prima di proseguire.

Edizione di ricerca · Aggiornata il 14 ottobre 2026

Il profitto migliora. Anche il rischio?

Confrontiamo due applicazioni della stessa regola di rischio nelle simulazioni di 672 combinazioni di modelli. Per ogni confronto manteniamo identici membri e periodi. Il profitto migliora in 439 confronti, il drawdown si riduce in 239, ma entrambe le misure migliorano insieme soltanto in 145. Il confronto mostra perché «più profitto» e «meno rischio» sono conclusioni diverse.

Qui OOS indica un periodo non usato per addestrare questi modelli. È però già stato consultato per scegliere i candidati: non è una prova finale indipendente. Il drawdown misura il calo dal massimo precedente della curva del conto simulato.

Profitto OOS maggiore: 439 / 672; Drawdown OOS minore: 239 / 672; Entrambi migliorano: 145 / 672
Profitto OOS maggiore439 / 672 · 65,3%439 / 672
Drawdown OOS minore239 / 672 · 35,6%239 / 672
Entrambi migliorano145 / 672 · 21,6%145 / 672
Lo stesso insieme di 672 confronti, tre criteri diversi.
Gli stessi 672 confronti, divisi in quattro gruppi senza sovrapposizioni
Rispetto alla simulazione precedenteDrawdown minoreDrawdown non minoreTotale
Profitto maggiore145294439
Profitto non maggiore94139233
Totale239433672

Le quattro caselle interne sommano a 672: 145 + 294 + 94 + 139. I 439 casi con profitto maggiore comprendono i 145 che migliorano anche il drawdown; i 239 con drawdown minore comprendono gli stessi 145. «Non maggiore» e «non minore» includono anche risultati invariati: non significano necessariamente peggioramento. Migliorare rispetto alla propria versione precedente non equivale a essere redditizi, robusti o pronti per operare. Sono aggregati del confronto interno già usato per selezionare candidati.

Ricerca interna, istantanea del 19 settembre 2026. Periodo OOS: 1 agosto 2025–31 luglio 2026. Confronti appaiati su tutti i 672 ensemble; i tre conteggi del grafico si sovrappongono e non vanno sommati. Questi aggregati non permettono di riprodurre il replay proprietario. Sono aggregati di simulazioni interne, calcolati con le ipotesi di costo usate allora. Descrivono i confronti registrati; non dimostrano redditività netta né idoneità all’operatività reale.

Dati aggregati e perimetro · JSON

ESERCIZI GRATUITI · DATI INVENTATI

Tre decisioni da provare nel tuo laboratorio

Cambi il punteggio minimo richiesto per comprare: quali calcoli devi ripetere? Preparare un rapporto fa aspettare il calcolo successivo: quanto tempo puoi recuperare preparando il rapporto con un processo separato? Applichi una nuova regola al passato: che cosa puoi scrivere nel registro delle decisioni originali? Tre esercizi inventati ti permettono di provare queste scelte.

Hai cambiato una regola: quali risultati puoi riutilizzare?

Stai provando una regola per selezionare azioni da comprare. Per ogni titolo e giorno, il programma fornisce al modello i prezzi passati; il modello restituisce un punteggio, cioè un numero usato per ordinare i titoli e confrontarli con una soglia. Dopo la prima esecuzione fai salvare al programma un CSV con una riga per data e titolo: per esempio «5 gennaio, A, 0,65». Conservi anche i punteggi dei titoli non comprati. Il numero 0,65 non indica qui una probabilità di guadagno. Con la regola «punteggio almeno 0,70» A è esclusa; con «almeno 0,60» diventa ammissibile. Il modello e i prezzi sono identici: serve produrre di nuovo il CSV dei punteggi?

  1. Dati e modello Prezzi letti dal modello
  2. Punteggi Un numero per azione e data
  3. Scelte e importi Quali azioni comprare e quante
  4. Operazioni e report Costi e valore del conto

Se la tabella non entra nello schermo, scorri in orizzontale. Da tastiera, selezionala e usa i tasti freccia.

ModificaPuoi conservareDevi rifare
Soglia dei segnalidati, modello, punteggiazioni scelte, quantità da comprare, registro di ordini e spese, profitto e cali del conto, report
Regola per segnali in conflittodati, modello, punteggiazioni scelte, quantità da comprare, registro di ordini e spese, profitto e cali del conto, report
Importo per operazionedati, modello, punteggi, azioni sceltequantità da comprare, registro di ordini e spese, profitto e cali del conto, report
Costo addebitatodati, modello, punteggi, azioni scelte, quantità da comprareregistro di ordini e spese, profitto e cali del conto, report
Membri del modello combinatodatimodello, punteggi, azioni scelte, quantità da comprare, registro di ordini e spese, profitto e cali del conto, report

No: in questo esempio il calcolo del punteggio usa soltanto i prezzi, che non hai modificato. Per A ottieni ancora 0,65 e puoi leggere quel valore dal CSV prodotto nella prima esecuzione. Cambia invece la selezione: ora A soddisfa il punteggio minimo. Riparti dallo stesso conto iniziale e simula nuovamente le decisioni in ordine di data. Applica le regole dichiarate per importo, prezzo di acquisto e momento della vendita, poi registra quantità, incassi e commissioni. Questi passaggi ricostruiscono le posizioni e il denaro della seconda prova; non basta sostituire la soglia nel rapporto finale.

La tabella descrive un programma semplificato: il modello riceve soltanto prezzi, gli importi non dipendono dal denaro rimasto e le commissioni vengono sottratte a ordini già scelti. Per questo, in quella tabella, cambiare soltanto le commissioni non modifica la lista degli ordini. Un programma che rifiuta una posizione quando non ha denaro sufficiente richiede un controllo in più: un ordine da 200 € con commissione di 1 € non è acquistabile con soli 200 €. Se cambi la commissione da zero a 1 €, devi ripetere anche la decisione di eseguire quell’ordine.

Abbassi la soglia di acquisto e la nuova simulazione compra azioni per 800 €, lasciando 200 € prima dei costi. Puoi riusare il punteggio salvato per la decisione successiva? Confronta gli input che lo avevano prodotto con quelli della nuova simulazione. Se il modello legge soltanto prezzi rimasti uguali, il nuovo acquisto non cambia quegli input. Se legge anche i contanti disponibili, invece, ora riceve 200 dove prima riceveva 1.000: il vecchio punteggio non è stato verificato per questa situazione. Esegui di nuovo lo stesso modello con gli input nuovi; il risultato potrebbe coincidere oppure cambiare. Questo non richiede automaticamente un nuovo addestramento. Controlla poi se il denaro basta per l’ordine, inclusi i costi. Nell’ultima riga della tabella si assume che sostituire un modello richieda di addestrare nuovamente il programma che combina i modelli: verifica questa dipendenza nel tuo sistema.

Il calcolo dura dieci minuti. Perché ne aspetti quattordici?

Hai tre test pronti e un processo di calcolo. Ogni test richiede 10 minuti, ma i risultati arrivano ai minuti 10, 24 e 38. Prima di avviare altri processi, vuoi capire dove si accumulano gli otto minuti di attesa prima del terzo risultato. Quali orari registri per distinguere calcolo lento, mancanza di lavori pronti e attesa di un rapporto?

Apri il caso e la soluzione

Se la tabella non entra nello schermo, scorri in orizzontale. Da tastiera, selezionala e usa i tasti freccia.

SchemaPrimo risultatoSecondo risultatoTerzo risultatoUltimo report
Il calcolo aspetta il report10 min24 min38 min42 min
Il report procede separatamente10 min20 min30 min34 min

Il registro del caso rivela che il processo aspetta quattro minuti per preparare ogni rapporto prima di avviare il test successivo. Con un processo separato per i rapporti, il calcolo successivo può partire subito. Il terzo risultato arriva al minuto 38 nel primo schema e al minuto 30 nel secondo. I tre calcoli richiedono sempre 30 minuti: hai eliminato 8 minuti di attesa prima del terzo risultato. L’ultimo report arriva al minuto 42 oppure 34. Risultato pronto e report pronto sono eventi diversi.

L’esempio suppone che scrivere il report non rallenti i tre calcoli e che ogni risultato venga salvato prima di preparare il report. Su un computer reale, i due processi possono contendersi processore, memoria o disco e diventare più lenti. Misura i tempi con e senza report. Se la scrittura richiede più tempo dei calcoli, verifica anche quanti report restano in attesa.

La decisione di allora e la simulazione di oggi

In questo esempio inventato, il 5 gennaio alle 10:00 UTC il modello assegna all’azione A un punteggio di 0,62. È il numero che il programma confronta con il punteggio minimo richiesto per comprare. La regola v1 richiede almeno 0,65: A non viene comprata. Il giorno dopo abbassi il punteggio minimo a 0,60 e simuli di nuovo il 5 gennaio. Il modello legge gli stessi prezzi e assegna ancora 0,62. Che cosa puoi scrivere nel registro delle decisioni?

Se la tabella non entra nello schermo, scorri in orizzontale. Da tastiera, selezionala e usa i tasti freccia.

DocumentoRegolaEsito
Registro del 5 gennaiov1 · ≥ 0,65Nessun acquisto
Nuova simulazione del 6 gennaiov2 · ≥ 0,60Acquisto simulato

Conservi entrambi: «v1 non comprò» e «v2, applicata oggi a quei dati, avrebbe comprato». Non sostituisci il registro originale. Se hai scelto 0,60 dopo aver visto il risultato del 5 gennaio, quel giorno ha già influenzato la scelta: non è più una prova nuova.

Il registro documenta ciò che hai conservato. Da solo non prova che i dati fossero disponibili allora, che un ordine sarebbe stato eseguito o che la nuova soglia funzioni in futuro.

Per ripetere i calcoli, salva il programma e avvialo con Node.js. Il JSON rende visibili le ipotesi e i risultati attesi.

node QE-WORK-01.js

QE-WORK-01 / 1.0. Questi esempi controllano soltanto il sistema descritto. Non ricostruiscono la tua architettura e non valutano se una strategia sia redditizia.

Dal dato alla decisione: che cosa devi poter ricostruire

Un modello è una parte del sistema. Questa mappa didattica collega ogni passaggio a un errore possibile, a un controllo e a un documento da conservare. Non descrive l’architettura proprietaria di Quantic Eagle.

  1. 1 Quando potevi conoscere il dato

    Rischio
    Il test compra alle 10 usando una notizia uscita alle 12.
    Controllo
    Confronta l’ora dell’acquisto con quella in cui potevi ricevere la notizia.
    Da conservare
    Fonte della notizia, versione del file e orari.
  2. 2 Che cosa legge e impara il modello

    Rischio
    La media dei prezzi include domani, oppure il modello impara da una vendita non ancora avvenuta.
    Controllo
    Per ogni numero in ingresso elenca i prezzi usati. Per ogni esito da imparare indica quando la vendita lo rende noto.
    Da conservare
    Formula, righe utilizzate e ora in cui l’esito diventa conoscibile.
  3. 3 Quali dati usi per imparare e per valutare

    Rischio
    Simuli un acquisto di lunedì con un modello che ha già imparato dal risultato del venerdì successivo.
    Controllo
    Prima dell’addestramento, separa le righe e controlla quando si conosce l’esito di ciascuna.
    Da conservare
    Righe assegnate a ogni periodo e motivo delle esclusioni.
  4. 4 Come scegli la versione da provare

    Rischio
    Guardi il risultato del test finale e cambi il punteggio minimo richiesto per comprare per migliorarlo.
    Controllo
    Usa un periodo per scegliere fra le versioni. Riserva un altro periodo alla valutazione successiva e non consultarlo per ritoccare la scelta.
    Da conservare
    Tutte le versioni provate, impostazioni e risultati già guardati.
  5. 5 Dai punteggi agli ordini

    Rischio
    Due programmi assegnano gli stessi numeri ad A e B, ma uno compra A e l’altro B.
    Controllo
    Confronta quali azioni possono essere comprate, l’ordine di priorità, la scelta finale e le quantità. Poi verifica prezzi e costi simulati.
    Da conservare
    Registro delle decisioni, ordini e ipotesi sui prezzi di esecuzione.
  6. 6 Quanto vale il conto durante la prova

    Rischio
    Il saldo ignora una perdita sulle azioni ancora in conto, oppure un versamento sembra un guadagno.
    Controllo
    Somma denaro e valore delle posizioni aperte. Registra a parte depositi e prelievi e quanto spesso osservi il conto.
    Da conservare
    Serie del valore del conto, movimenti esterni, spese e metodo per calcolare il rendimento.
  7. 7 Che cosa accade su dati non usati per scegliere

    Rischio
    Presenti come conferma nuova lo stesso periodo che ti ha fatto scegliere il vincitore.
    Controllo
    Salva la versione scelta prima della nuova prova. Confrontala anche con scenari sfavorevoli dichiarati, distinguendoli dalle osservazioni reali.
    Da conservare
    Risultati della nuova prova, ipotesi degli scenari e storia delle scelte.
  8. 8 Come conservi la decisione e prosegui

    Rischio
    Rifai il passato con una regola nuova e perdi la traccia di ciò che il programma decise allora.
    Controllo
    Conserva entrambe le versioni e attribuisci ogni decisione alla regola che l’ha prodotta. Definisci la prossima prova prima di vederne i risultati.
    Da conservare
    Versioni datate, decisioni originali, nuove simulazioni e verifiche ancora mancanti.

I casi della mappa sono inventati. Se standardizzi i prezzi per addestrare un modello, stima media e deviazione standard sui soli dati ammessi all’addestramento. Una previsione su una riga esclusa da quello specifico addestramento si chiama out-of-fold (OOF). Controlla però anche le trasformazioni e le scelte che hanno usato l’esito di quella riga; inoltre, addestrare sulle altre righe non elimina informazioni future se quelle righe vengono da date successive. Un periodo escluso dal calcolo dei pesi, detto out-of-sample (OOS), può comunque essere già stato consultato per scegliere il sistema.

La curva che non mostrava tutto

Equity è il valore complessivo del conto in un dato momento: comprende anche profitti e perdite non realizzati sulle posizioni ancora aperte. Il saldo, o balance, non include questi risultati non realizzati. Le convenzioni su credito, commissioni e altre componenti dipendono dalla fonte. Nell’esempio di confronto qui sotto, equity e saldo sono osservati agli stessi istanti. Il calcolo usa solo quei valori: non ricostruisce ciò che è accaduto fra un’osservazione e l’altra né verifica come la fonte li abbia calcolati.

Per confrontare le curve di un conto inventato, riportiamo il valore iniziale a 100: i numeri del grafico sono un indice, non importi in euro. Guardando soltanto il saldo dopo le operazioni chiuse, l’indice non scende e termina a 104. Il report calcola quindi un drawdown del saldo pari a zero.

Ora guarda le stesse osservazioni includendo le posizioni aperte: l'equity sale a 101, scende a 87 e termina a 104. Il drawdown osservato è il 13,86%. Il risultato finale non cambia; cambia ciò che riesci a vedere lungo il percorso.

Esempio sintetico · Non rappresenta risultati di Quantic Eagle

Due curve. Lo stesso valore finale.

Trade chiusiEquity con posizioni aperte
Indice, base 100
901001051612
Osservazione
Stesso punto finale: 104. DD trade chiusi: 0%. DD equity osservata: 13,86%.

Questo esempio è sintetico, non rappresenta risultati di Quantic Eagle. Mostra perché la definizione di una metrica conta quanto il numero. Nella pratica devi conoscere frequenza delle osservazioni, costi, flussi di capitale e copertura delle posizioni. Una serie giornaliera può non vedere il minimo intraday.

La prima verifica è semplice: il report misura il rischio che vuoi capire oppure soltanto quello che i dati disponibili consentono di calcolare?

La classifica preliminare non coincideva con quella dei backtest

Quando hai molti modelli da provare, un calcolo preliminare rapido può aiutarti a scegliere a quali dedicare una simulazione completa. Questa misura preliminare è un proxy del risultato che ti interessa. In una campagna interna, la classifica preliminare e quella dei backtest ordinavano diversamente gli stessi 192 candidati. L’osservazione documenta un disaccordo fra classifiche; non dimostra che un metodo di selezione sia superiore all’altro.

Il confronto storico sui 192 candidati non fornisce le formule delle classifiche preliminari, la metrica dei backtest, periodo e convenzioni sui costi, la popolazione completa prima della selezione né i risultati per candidato. Senza questi elementi non puoi ricostruirlo. I candidati erano inoltre scelti durante una ricerca che si adattava a risultati già consultati: quel periodo non costituisce una prova finale indipendente.

Osservazione interna: la classifica preliminare e quella dei backtest non coincidevano. Il materiale pubblico non fornisce definizioni e risultati dei singoli candidati sufficienti per quantificare indipendentemente quel disaccordo.

Nel tuo confronto, registra gli stessi identificativi dei candidati nelle due classifiche, definisci ogni misura di ordinamento con il relativo periodo e conserva costi e regole di selezione. Prova anche alcuni candidati fuori dalla lista preliminare: altrimenti non puoi osservare i risultati di quelli che il filtro esclude.

Un proxy può misurare una parte del problema. Un portafoglio include anche costi, posizioni contemporanee, rischio e concentrazione. La differenza diventa visibile quando confronti le due graduatorie alle stesse condizioni.

Esperimento sintetico · Dati interamente inventati

Il primo in classifica perde sul periodo che conta per la scelta

Hai due backtest su periodi della stessa durata e con le stesse convenzioni di capitale e costi. A guadagna 3.000 unità monetarie inventate nel periodo usato per imparare e perde 20 in quello usato per scegliere. B guadagna 200 e 100. Se sommi il 10% del primo risultato e il 90% del secondo, chi arriva primo?

A: 300 − 18 = 282. B: 20 + 90 = 110. A arriva primo perché la formula include 300 unità di profitto ottenuto sugli stessi dati usati per addestrare il modello; il contributo del secondo periodo è invece −18. Sul solo secondo periodo B viene prima, con 100 contro −20. Questo non lo rende pronto per il trading: restano da valutare rischio, attività e altri periodi. E il periodo consultato per scegliere è ormai selezione, non una prova finale intatta.

Esempio inventato; pesi e risultati non appartengono alla ricerca operativa di Quantic Eagle. La formula serve a mostrare il problema, non è una regola di selezione consigliata.

Esplora il programma e gli esercizi →

Prima di scegliere il modello, scegli che cosa deve imparare

Devi scegliere un modello e il report favorisce quello che distingue meglio acquisti vincenti e perdenti. Il tuo sistema però può comprare un solo titolo: verifica quale sceglie e quanto guadagna o perde, dopo le spese. Immagina quattro acquisti possibili nello stesso momento. Puoi farne uno solo, sempre dello stesso importo. Due modelli inventati assegnano punteggi per stabilire la priorità: ciascuno sceglie il punteggio più alto. I guadagni e le perdite della tabella si conoscono solo dopo; non sono dati forniti ai modelli. Importi e costi sono espressi nella stessa unità monetaria inventata.

Su uno schermo piccolo, scorri la tabella orizzontalmente.

AcquistoEsito lordo, noto dopoPunteggio APunteggio B
1+10,90,6
2+80,70,9
3−10,80,7
4−80,60,8

A sceglie l’acquisto 1: guadagna 1 e paga 0,10 di costo, quindi resta +0,90. B sceglie il 2: guadagna 8 e paga lo stesso costo, quindi resta +7,90. I punteggi non sono probabilità e nessun modello è stato addestrato per questo esempio.

Ora confronta ogni acquisto vincente con ciascuno dei due perdenti: ottieni quattro coppie. A assegna al vincente il punteggio maggiore in tre coppie su quattro; B in due. Questa quota è l’AUC dell’esempio: 0,75 per A e 0,50 per B. A ordina meglio vincitori e perdenti, ma B sceglie l’acquisto che qui guadagna di più. La misura della classifica e il risultato dell’acquisto rispondono a domande diverse. Il caso non dice quale modello funzionerà meglio in futuro. Le coppie sono 1–3, 1–4, 2–3 e 2–4. Per A, 0,90 supera 0,80 e 0,60; 0,70 supera 0,60 ma non 0,80. Per B, 0,60 non supera né 0,70 né 0,80; 0,90 supera entrambi.

AUCRisultato nettoAB0,750,50+0,90+7,900 → 10 → 8
Esempio sintetico: quattro opportunità, una sola scelta per modello, stessa dimensione e costo di 0,10 unità. AUC: A 0,75, B 0,50. Risultato netto: A +0,90, B +7,90. Le due colonne hanno scale diverse. Nessun modello è stato addestrato per questo esempio.

Il sistema cerca di riconoscere una direzione, oppure di prendere una decisione economicamente utile? La risposta cambia il significato delle metriche con cui lo giudichi.

La funzione di perdita (loss) guida l’addestramento. L’AUC (area sotto la curva ROC) misura quanto bene un punteggio colloca gli esempi positivi prima di quelli negativi; non misura direttamente quanto valgono le decisioni, quanto costano o quanto capitale assorbono. Una loss che approssima un obiettivo economico può attribuire un peso diverso a errori che una metrica direzionale tratta allo stesso modo.

Una buona AUC non basta a scegliere un sistema di trading; un’AUC bassa non ne dimostra la convenienza economica. Se l’AUC è molto alta sui dati usati per imparare, verifica se gli esempi sono davvero facili da distinguere, se il modello ha memorizzato caratteristiche di quel campione o se ha ricevuto informazioni che non avrebbe avuto al momento della decisione. Cambiare la funzione di perdita non trasforma il risultato di addestramento in una prova su dati nuovi.

Nella nostra ricerca distinguiamo tre passaggi: l’obiettivo di addestramento, il punteggio che aiuta a scegliere i candidati e il risultato del backtest di portafoglio. Anche un proxy economico può ordinare male i candidati quando il sistema completo applica costi, limiti e regole di esecuzione. Il confronto sui 192 candidati descritto qui riguarda il proxy e la graduatoria del backtest: non è uno studio sull’AUC e non dimostra che la loss abbia causato il disaccordo.

L’idea di addestrare su obiettivi economici esiste anche nella ricerca accademica: Lim, Zohren e Roberts descrivono reti addestrate per ottimizzare l’indice di Sharpe, con una penalizzazione del turnover per tenere conto dei costi di transazione. Il nostro contributo didattico è il percorso di progettazione e verifica, non la rivendicazione di aver inventato questa categoria. Studio originale: Enhancing Time Series Momentum Strategies Using Deep Neural Networks.

La domanda utile diventa: quale comportamento sto premiando, e quanto somiglia a quello che il sistema dovrà eseguire?

Separare le date non basta: guarda quando diventano noti gli esiti

Esempio inventato: vuoi addestrare un modello prima del periodo 5 e usarlo per decidere nei periodi 5 e 6. Fra i dati di addestramento c’è un acquisto del periodo 4, venduto soltanto nel periodo 6. Il guadagno o la perdita di quell’acquisto è la risposta che vuoi insegnare al modello, chiamata etichetta o label. Prima del periodo 5 non puoi conoscerla: la vendita deve ancora avvenire. Ordinare le righe per data di acquisto non basta; devi controllare anche quando diventa noto ogni risultato.

T = addestramento · V = valutazione · × = riga esclusa · — = non utilizzato. I numeri indicano periodi ipotetici, non date o rendimenti reali.

Divisione casuale ingenua

  1. 1T
  2. 2V
  3. 3T
  4. 4T
  5. 5V
  6. 6T
  7. 7—
  8. 8—

Addestra il modello anche su osservazioni successive ad alcune delle decisioni valutate. Non ricostruisce il compito di prevedere il futuro dal passato.

Walk-forward, senza verificare le etichette

  1. 1T
  2. 2T
  3. 3T
  4. 4T
  5. 5V
  6. 6V
  7. 7—
  8. 8—

I dati di addestramento precedono quelli di test per data iniziale, ma l’esito della riga 4 arriva nel periodo 6. La sola cronologia delle righe non risolve il problema.

Walk-forward con esclusione della sovrapposizione

  1. 1T
  2. 2T
  3. 3T
  4. 4×
  5. 5V
  6. 6V
  7. 7—
  8. 8—

Si esclude la riga 4. In questo esempio gli esiti delle righe 1–3 sono già noti prima del periodo 5; in un dataset reale si controlla ogni intervallo.

Purging, embargo e distanza prima del test

Il purging esclude dai dati di addestramento le osservazioni i cui intervalli temporali delle etichette si sovrappongono alla valutazione. Un embargo può escludere un tratto successivo al test quando il disegno di cross-validation ammette dati di addestramento successivi: serve a limitare dipendenze residue, per esempio dovute a finestre informative sovrapposte. Nel walk-forward strettamente causale non si usano quei dati futuri per addestrare il modello; un eventuale intervallo di esclusione prima del test è invece un gap. Durata e confini dipendono da etichette, disponibilità dei dati e finestre delle variabili: non esiste un numero universale di giorni.

Queste esclusioni non correggono dati pubblicati in ritardo, parametri di normalizzazione stimati sull’intero dataset o selezioni ripetute sul test. Conserva righe escluse e motivi, includi un caso difettoso che il controllo deve rilevare e registra quali risultati avevi già visto prima di decidere.

Prova su carta: la riga parte nel periodo 4 e il suo esito si chiude nel 6. Puoi usarla per addestrare un modello che decide all’inizio del 5? No. Cambia poi la chiusura dell’esito al periodo 4: quella specifica sovrapposizione scompare, ma disponibilità delle variabili e storia della selezione restano da verificare.

In TimeSeriesSplit, gap indica un numero di campioni, non automaticamente un numero di giorni.

Per la separazione cronologica e il parametro gap: documentazione ufficiale di TimeSeriesSplit. Per i rischi della selezione fra molti backtest: Bailey e coautori. Nessuno dei due riferimenti certifica questo progetto o garantisce risultati futuri.

scikit-learn: TimeSeriesSplit · Bailey et al.: The Probability of Backtest Overfitting

Due file identici. In entrambi manca il prezzo del 3 marzo

Esempio inventato: due copie di prices.csv coincidono byte per byte, ma in entrambe manca la chiusura del 3 marzo, richiesta da una media mobile. Se il programma prende le ultime tre righe presenti, può sostituire quel prezzo con uno più vecchio: il modello o la regola ricevono una media diversa da quella prevista. Nel caso del Museo il prezzo attuale di 10 supera la media errata di 9, ma non quella corretta di 11: parte un acquisto che la regola avrebbe escluso. Confrontare le impronte dei file, dette hash, non scopre questa lacuna; serve confrontare le sedute presenti con quelle richieste. Segui il dato mancante fino alla decisione d’acquisto.

Per calcolare un indicatore, verifica sia quali date richiede sia quante osservazioni precedenti servono. Un file può contenere tutte le date del periodo di test e non avere abbastanza storia prima del suo inizio.

Esempio sintetico · Non rappresenta risultati di Quantic Eagle

Tre condizioni da distinguere

— Assenza iniziale prevista · ✓ Disponibile · ! Lacuna inattesa

Dati sintetici: due assenze previste, tre valori presenti, un’assenza da indagare.

Per una media delle ultime tre sedute, nelle prime due non esistono ancora tre prezzi: l’indicatore è assente per una ragione prevista. Se invece un prezzo manca mesi dopo, quando le tre sedute dovrebbero esserci, occorre cercare la causa. Eliminare indistintamente tutte le righe incomplete nasconde questa differenza e cambia quali casi stai valutando.

Dal caso guidato al tuo progetto

Negli esercizi hai visto come cambiano gli ordini dopo una modifica, perché un report può ritardare il lavoro e perché conservare le decisioni originali. La guida in preparazione ti accompagna nel ripetere questi controlli sul tuo programma, con istruzioni, esempi svolti e schede da compilare.

Esamina il programma della guida →

Fonti e perimetro

Il caso dei 192 backtest deriva da ricerca interna Quantic Eagle del 16 settembre 2026, non sottoposta a revisione indipendente. Le figure didattiche sono schemi o esempi sintetici; il confronto QE-RESEARCH-02 riporta invece aggregati del confronto interno registrato il 19 settembre 2026, con fonte e limiti indicati accanto al grafico. La guida raccoglie circa dieci anni di esperienza accumulata nella ricerca, con contributi del fondatore e di collaboratori esterni, anche prima della costituzione della società. Non si tratta di dieci anni di risultati di trading reale.

Per il problema della selezione fra molti backtest: Bailey et al., The Probability of Backtest Overfitting. Quantic Eagle opera con capitale proprio e non riceve denaro da investire per conto di terzi né gestisce i loro investimenti. Questa è formazione metodologica generale, non una raccomandazione d'investimento.

Confronta gli altri difetti e le correzioni nel Museo dei falsi verdi.

A cura di Quantic Eagle LTD · Formazione generale sui metodi di ricerca. Chi siamo.

Torna su