← Torna agli articoli
July 5, 2026
5 min di lettura

Il Fidelity Gate: il Backtesting dal Grossolano al Fine Ti Inganna Più in Fretta a Meno che il Proxy Economico non Classifichi Come Quello Costoso

Il Fidelity Gate: il Backtesting dal Grossolano al Fine Ti Inganna Più in Fretta a Meno che il Proxy Economico non Classifichi Come Quello Costoso
#trading algoritmico
#backtest
#multi-fedeltà
#hyperband
#ASHA
#dimezzamento successivo
#overfitting
#validazione
Part 6 of 10 · Collection
High-Performance Backtest Engines

Parte della serie "Backtest Senza Illusioni".

Ogni ricerca seria di parametri si scontra con lo stesso muro: lo spazio è enorme e ogni valutazione onesta è costosa. Una strategia multi-timeframe con una dozzina di soglie e tre periodi di indicatori, valutata su uno split walk-forward multi-fold, può costare secondi per configurazione. Diecimila configurazioni sono ore. Quindi cerchi una scorciatoia, e la scorciatoia è sempre la stessa idea: valuta a basso costo, promuovi solo i sopravvissuti al test costoso. Filtra diecimila configurazioni su un fold, tieni le migliori poche centinaia, esegui quelle su tutti i fold. Filtra su candele orarie, scendi in profondità a 1 secondo solo per i finalisti.

Questa è la ricerca dal grossolano al fine — drill-down, multi-fedeltà, successive halving, Hyperband, ASHA — ed è una delle idee genuinamente buone dell'ottimizzazione. Può trasformare un giorno di calcolo in un'ora. La usiamo. Ma nasconde una trappola così silenziosa che la maggior parte di chi la implementa non la verifica mai, e la trappola è questa: l'intero metodo presuppone che il tuo proxy economico classifichi le configurazioni nello stesso modo della valutazione costosa. Se non lo fa, non stai cercando più velocemente. Stai buttando via i tuoi futuri vincitori al primo cancello e promuovendo rumore — ti stai solo ingannando più in fretta.

Questo articolo riguarda l'unica misurazione che ti dice se il tuo drill-down è reale o un'illusione. L'abbiamo eseguita sulla nostra ricerca multi-timeframe, e la risposta è stata scomoda: alla fedeltà più economica, il nostro proxy classificava le configurazioni quasi a caso (Spearman ρ ≈ 0.03). Se avessimo potato in modo aggressivo a quella fedeltà — come invita a fare ogni default ASHA pronto all'uso — avremmo scartato i vincitori finali al primo round. La soluzione è un gate obbligatorio che gira prima della ricerca: misura la correlazione di rank, e rifiuta di potare sotto la fedeltà in cui essa è affidabile.

Cos'è davvero la ricerca multi-fedeltà

Una cascata di ricerca dal grossolano al fine: migliaia di configurazioni economiche a bassa fedeltà filtrate ampiamente a sinistra, solo i migliori sopravvissuti promossi verso destra attraverso valutazioni complete progressivamente più costose — il dimezzamento successivo che restringe un ampio campo smeraldo di candidati fino a pochi finalisti luminosi

La famiglia di metodi ha una forma unica. Definisci una fedeltà (chiamata anche risorsa o budget): una manopola dal economico al costoso che, al suo massimo, fornisce il vero obiettivo. Poi esegui le configurazioni a bassa fedeltà, le classifichi, tieni la frazione migliore, e ri-esegui solo quei sopravvissuti a fedeltà più alta — ripetendo finché un piccolo numero di finalisti non è stato valutato a piena fedeltà.

Il dimezzamento successivo (Jamieson & Talwalkar, 2016) è il nucleo: avvia N configurazioni alla risorsa minima, tieni il primo 1/η, moltiplica la risorsa per η, ripeti. Hyperband (Li et al., 2018) avvolge il dimezzamento successivo in un ciclo esterno che copre diverse risorse di partenza, così non devi indovinare quanto aggressivamente potare. ASHA (Li et al., 2020) è la versione asincrona, adatta al parallelismo. Il tasso di eliminazione η è l'unica manopola che condividono; il default canonico è η = 3 — tieni il primo terzo a ogni livello, triplica il budget.

La fedeltà stessa può essere quasi qualsiasi cosa che vada dall'economico al costoso convergendo verso la verità:

  • Numero di fold walk-forward. Valuta su 1 fold, poi 2, poi 3, fino a K. Questa è la fedeltà che studiamo di seguito, perché è quella naturale per un backtest con uno split rolling out-of-sample.
  • Risoluzione delle candele. Filtra su barre a 1 ora, promuovi a 1 minuto, scendi in profondità a 1 secondo o ai trade grezzi solo per i finalisti. Questa è l'idea del drill-down adattivo di risoluzione applicata alla ricerca piuttosto che alla simulazione dei fill.
  • Lunghezza della storia, epoche, sottocampione del dataset — le classiche fedeltà del ML.

In un backtest, i fold e la risoluzione sono i due che contano, e — questo è il punto di tutto l'articolo — non sono ugualmente sicuri. Uno dei due ha un bias che seleziona silenziosamente i parametri sbagliati per quanto attentamente lo si controlli.

L'unica assunzione su cui tutto si regge

Il collasso silenzioso del drill-down: una classifica economica a bassa fedeltà che non concorda con la classifica completa costosa, così i veri vincitori smeraldo vengono potati via al primo cancello mentre il rumore rosso-arancio viene promosso verso l'alto — e non viene mai sollevato alcun errore

Scrivi cosa serve davvero al dimezzamento successivo per essere corretto. Non serve che la fedeltà economica fornisca il valore giusto dell'obiettivo — a nessuno importa che un fold riporti uno Sharpe diverso da sei fold. Serve qualcosa di più debole ma molto più specifico: la fedeltà economica deve classificare le configurazioni nello stesso modo di quella costosa. Se la configurazione A batte la configurazione B a piena fedeltà, A dovrebbe tendenzialmente battere B anche a bassa fedeltà. Questo è tutto. Ed è anche tutto quello che conta.

Formalmente, la quantità che governa se il drill-down funziona è la correlazione di rank tra l'obiettivo a bassa fedeltà e quello ad alta fedeltà, attraverso lo spazio delle configurazioni. Se quella correlazione è alta, i sopravvissuti del round economico sono le stesse configurazioni che avrebbero vinto il round costoso, e hai risparmiato calcolo gratuitamente. Se è bassa, il round economico è un filtro casuale: scarta buone configurazioni e promuove quelle cattive, e hai speso il tuo budget per accelerare verso una risposta peggiore. Non c'è un'impostazione intermedia di η che ti salvi — un proxy scadente potato delicatamente perde comunque vincitori; potato aggressivamente li emorragia.

Il fallimento è invisibile nel solito modo. La ricerca si completa, riporta un campione, il campione sembra a posto in-sample. Nulla solleva un errore. Scopri che il proxy stava mentendo solo quando il campione crolla out-of-sample — e a quel punto hai attribuito il fallimento alla strategia, non alla ricerca che l'ha selezionata. Quindi la disciplina è la stessa a cui questa serie continua ad arrivare: misura ciò che il metodo presuppone, prima di fidarti del metodo. Per il drill-down, la cosa da misurare è la correlazione di rank, e la misurazione è economica.

Misurarla: il fidelity gate

Il fidelity gate come checkpoint: prima che qualsiasi livello sia considerato affidabile, circa duecento configurazioni casuali vengono valutate a ogni livello di fedeltà e la correlazione di rank tra il proxy economico e la valutazione completa viene misurata a un cancello luminoso che si apre solo quando le due classifiche concordano

Il gate è un piccolo esperimento che esegui una volta, prima della ricerca vera e propria, sullo stesso spazio che stai per esplorare. La procedura:

  1. Estrai qualche centinaio di configurazioni a caso dallo spazio dei parametri (noi usiamo ~200 — sufficienti per una stima Spearman stabile, abbastanza economiche da permettersi).
  2. Valuta ciascuna a ogni livello di fedeltà: a 1 fold, 2 fold, … fino ai K fold completi. Per una fedeltà basata sul conteggio dei fold questo è quasi gratuito, perché i fold calcolati per i livelli economici vengono riutilizzati in quello costoso — una media cumulativa.
  3. Per ogni livello r, calcola la correlazione di rank di Spearman tra la classifica a r fold e quella completa a K fold, attraverso quelle ~200 configurazioni.
  4. Il primo livello in cui ρ supera una soglia (usiamo ρ ≥ 0.5) è la fedeltà più superficiale a cui ti è permesso potare. Sotto di essa, la classifica è troppo rumorosa per fidarsene; non devi eliminare configurazioni lì.

Il tutto sta in un paio di dozzine di righe. Il cuore:

def fidelity_check(cache, n_probe, seed=7):
    """Spearman ρ: cumulative mean over the first r folds (in FOLD_ORDER)
    vs the full K-fold objective, on n_probe random configs."""
    rng = np.random.default_rng(seed)
    k = len(FOLDS)
    per_fold = np.empty((k, n_probe))
    order_win = np.array([list(FOLDS[fi]) for fi in FOLD_ORDER], np.int64)
    for j in range(n_probe):
        p = _unit_to_params(rng.random(len(PNAMES)))       # random config
        scores, *_ = eval_group(cache, p, _sp_of(p)[None, :], order_win, False)
        per_fold[:, j] = scores[0]                          # score on each fold
    cums = np.cumsum(per_fold, axis=0) / np.arange(1, k + 1)[:, None]  # r-fold mean
    rhos = []
    for r in range(1, k):
        rho = spearmanr(cums[r - 1], cums[-1]).statistic    # r folds vs all K
        rhos.append(0.0 if math.isnan(rho) else rho)
    return rhos

Nota un dettaglio deliberato: i fold sono presi in FOLD_ORDER, un ordine interlacciato che alterna fette iniziali e finali del calendario (fold 0, poi un fold centrale, poi il fold 1, poi uno più tardo, …). Questo conta enormemente ed è l'argomento di una sezione successiva: significa che "1 fold" è una fetta che copre il centro della storia, e "2 fold" è una fetta iniziale più una finale — mai una finestra recente contigua. La fedeltà economica diventa più economica usando meno fold, non fold più recenti.

Risultati: un fold classifica quasi a caso

La correlazione di rank che sale con il numero di fold: una curva crescente dello Spearman rho che parte vicino a una dispersione da lancio di moneta a un fold e si inclina verso un accordo quasi perfetto a cinque fold, con una linea orizzontale del gate tracciata a metà, sotto la quale la potatura è vietata e sopra la quale è permessa

Ecco cosa ha riportato il gate, eseguito su due delle nostre configurazioni multi-timeframe. Il numero è lo Spearman ρ tra la classifica a r fold e quella completa a K fold su ~200 configurazioni casuali — quanto fedelmente il rank a bassa fedeltà predice il rank a piena fedeltà.

Fold r Run multi-TF Un regime più difficile
1 +0.43 +0.03
2 +0.67 +0.43
3 +0.78 +0.78
4 +0.82
5 +0.91 +0.91

Leggi prima la colonna del regime più difficile, perché è quella allarmante. A un fold, ρ = 0.03. Non è una correlazione debole; è nessuna correlazione — la classifica a un fold di duecento configurazioni è statisticamente indistinguibile dal mescolarle a caso. Un'esecuzione di dimezzamento successivo configurata (come lo sono la maggior parte, di default) per iniziare a potare a min_resource = 1 farebbe, in questo regime, il suo primo e più aggressivo taglio su un lancio di moneta. Le configurazioni che alla fine vincerebbero a piena fedeltà hanno una probabilità del 50/50 di sopravvivere al primissimo round. Quando raggiungi la fedeltà in cui la classifica significa qualcosa (ρ = 0.78 a tre fold), la maggior parte di esse è già sparita.

La colonna multi-TF è più mite ma fa lo stesso punto in modo diverso. Anche lì, un fold dà ρ = 0.43 — sotto il nostro gate di 0.5. Sembra una correlazione decente, ed è esattamente questo il pericolo: 0.43 è abbastanza alto da cullarti e abbastanza basso da far perdere le tue migliori configurazioni. Solo a due fold (ρ = 0.67) la classifica diventa affidabile.

Due cose si generalizzano da questo. Primo, ρ a un fold dipende dal regime ed è inaffidabile — abbiamo misurato valori tra 0.03 e 0.43 tra le configurazioni, e in nessun caso un singolo fold ha superato la soglia. Secondo, ρ sale in modo monotono e veloce: a tre fold entrambe le configurazioni sono a 0.78, e a cinque convergono a 0.91. Il segnale c'è; devi solo spendere abbastanza fedeltà per vederlo. Il compito del gate è trovare esattamente il livello in cui inizia l'"abbastanza" — e vietare la potatura sotto di esso.

Perché un singolo fold è così rumoroso

Il rumore non è un difetto nella nostra costruzione dei fold; è intrinseco, e capire perché ti impedisce di "aggiustarlo" nel modo sbagliato. Un singolo fold walk-forward è una finestra breve — settimane di un regime di mercato. Il punteggio di una strategia su quella finestra è dominato da quanto bene i suoi parametri si adattano per caso a quel regime, cosa solo debolmente collegata a quanto bene generalizzino. Due configurazioni genuinamente diverse in qualità possono scambiarsi di posto su un singolo fold solo perché una di esse ha catturato un trend che quel fold conteneva per caso. L'obiettivo su un fold è uno stimatore ad alta varianza dell'obiettivo che ti interessa davvero, e la correlazione di rank è esattamente ciò che l'alta varianza distrugge per prima — puoi preservare la media di uno stimatore mentre il suo ranking è puro rumore.

Aggiungere fold fa scendere quella varianza mediando. Ogni fold è un'estrazione parzialmente indipendente delle condizioni di mercato; la media a r fold è uno stimatore a varianza più bassa, e la sua classifica converge verso la classifica a piena fedeltà. Questa è esattamente la salita ρ = 0.03 → 0.43 → 0.78 → 0.91: non è l'obiettivo che cambia, ma la sua stima di rank che si stabilizza man mano che la fortuna specifica del regime si media via. La lezione è che la fedeltà, per un backtest, riguarda fondamentalmente quanti regimi indipendenti hai campionato — e uno quasi non basta mai per classificare.

Questo spiega anche perché il regime più difficile parte da 0.03 mentre l'esecuzione multi-TF parte da 0.43. Nel regime più difficile, il singolo fold è più idiosincratico rispetto al regime — i punteggi a un fold delle configurazioni sono guidati più dalla fortuna e meno da un vantaggio duraturo, quindi classificano più vicino al caso. Il gate legge automaticamente quella differenza e risponde richiedendo più fold prima di potare. Non devi sapere in anticipo in quale regime ti trovi; misuri.

Il gate nel codice: alzare automaticamente la fedeltà minima

L'output del gate è un singolo intero: min_resource, la fedeltà più superficiale a cui ASHA è autorizzato a potare. La regola è meccanica — percorri i livelli, prendi il primo il cui ρ supera la soglia:

RHO_GATE = 0.5
min_res = len(FOLDS)                      # default: pruning OFF (full fidelity)
rhos = fidelity_check(cache, n_probe=200) # [ρ@1, ρ@2, …, ρ@(K-1)]
passing = [r for r, rho in enumerate(rhos, 1) if rho >= RHO_GATE]
if passing:
    min_res = passing[0]                  # first rung that clears the gate

pruner = SuccessiveHalvingPruner(min_resource=min_res, reduction_factor=3)

Tracciala attraverso le due esecuzioni. Nella configurazione multi-TF, ρ@1 = 0.43 fallisce il gate ma ρ@2 = 0.67 lo supera, quindi min_resource viene alzato automaticamente a 2: ASHA esegue ogni configurazione su almeno due fold prima che gli sia permesso eliminare qualsiasi cosa, poi pota normalmente da lì. Nel regime più difficile, ρ@1 = 0.03 e ρ@2 = 0.43 falliscono entrambi; ρ@3 = 0.78 è il primo a superare la soglia, quindi min_resource diventa 3. E il fallback cruciale: se nessun livello raggiunge 0.5, passing è vuoto e min_resource resta a K — la potatura è disattivata del tutto, e la ricerca degrada elegantemente a una semplice ricerca a piena fedeltà invece che a una veloce ma sbagliata. Un drill-down che non può dimostrare il proprio proxy semplicemente si rifiuta di potare.

Questa è l'intera filosofia in una riga di flusso di controllo. Il default di ogni libreria di dimezzamento successivo è "pota da min_resource = 1, fidati del livello economico." Il gate lo sostituisce con "pota dal primo livello che i dati dicono essere affidabile, e se nessuno lo è, non potare." Costa una sonda iniziale di ~200 configurazioni e converte il drill-down da un atto di fede a una decisione misurata. Il tasso di eliminazione η = 3 resta invariato; il gate non tocca quanto aggressivamente poti, solo quanto presto ti è permesso iniziare.

Una nota di onestà visibile nel codice sopra: alzare min_resource erode l'accelerazione. Potare a 3 fold invece che a 1 significa che ogni configurazione — incluse quelle che scarterai — paga per tre fold. Questo è il prezzo della correttezza, ed è lo scambio giusto: un'accelerazione 2× più piccola su una ricerca che trova vincitori reali batte un'accelerazione 6× su una ricerca che li scarta. Il gate rende quello scambio esplicito invece di nasconderlo.

L'asse economico sbagliato: una storia più corta è una trappola

C'è una fedeltà economica che è allettante, ovvia, e distorta, e vale la pena chiamarla per nome perché tutti ci arrivano per primi: una storia più corta. Filtra le configurazioni sull'ultimo mese, promuovi i sopravvissuti ai due anni completi. È banalmente economico e sembra la stessa idea di meno fold. Non lo è.

Meno fold e una storia più corta differiscono in un modo decisivo. Una fedeltà basata sul conteggio dei fold, fatta bene, copre comunque l'intero calendario — lo campiona solo più grossolanamente. Una fedeltà a storia più corta campiona densamente un sotto-intervallo del calendario. E un sotto-intervallo della storia di mercato è un regime specifico. Quando classifichi le configurazioni sull'ultimo mese, non ottieni una stima rumorosa-ma-non-distorta del loro rank sull'intero periodo; ottieni una stima distorta che favorisce sistematicamente le configurazioni adattate al regime dell'ultimo mese. Aumenta pure la dimensione del campione — media su più configurazioni, più prove — e il bias non si riduce, perché non è varianza. Promuoverai le configurazioni che si adattano meglio alla finestra di screening, e quelle sono esattamente quelle più probabilmente overfittate a un regime transitorio.

Ecco perché la nostra fedeltà percorre i fold in ordine interlacciato piuttosto che cronologico. Con K fold distribuiti su tutta la storia, "1 fold" è una singola fetta vicino al centro, "2 fold" è una fetta iniziale e una finale, "3 fold" distribuisce inizio/centro/fine — ogni livello di fedeltà, anche il più economico, campiona attraverso l'intero calendario. Il proxy economico è una vista grossolana dell'intero periodo, mai una vista nitida di una sua fetta. Questo interlacciamento è ciò che rende la fedeltà a conteggio di fold semplicemente rumorosa (curabile dal gate) invece che distorta (cosa che nessun gate può correggere — un ρ alto contro un bersaglio distorto certifica solo che sceglierai in modo affidabile la configurazione adattata al regime). Se l'unico modo per rendere una fedeltà più economica è renderla più recente, non hai una fedeltà valida. Rendila piuttosto più grossolana.

La risoluzione come asse economico onesto

L'altro asse economico evita del tutto il bias, ed è il partner naturale del drill-down adattivo che abbiamo descritto per la simulazione dei fill: la risoluzione delle candele. Filtra l'intero spazio su barre a 1 ora, promuovi i sopravvissuti a 1 minuto, e scendi in profondità a 1 secondo o ai trade grezzi solo per la manciata di finalisti. Candele più grossolane sulla stessa storia completa sono più economiche da valutare — meno barre, passaggi degli indicatori più veloci, simulazione più veloce — e, a differenza di una finestra più corta, una vista grossolana dell'intero calendario è non distorta: vede ogni regime, solo con meno dettaglio intrabarra.

Risoluzione e fold sono assi di fedeltà complementari, e il fidelity gate si applica a entrambi. Prima di fidarti di uno screening a 1 ora, esegui la stessa sonda: prendi ~200 configurazioni, valutale a 1h e a 1m, e misura la correlazione di rank. Se ρ(1h, 1m) è alto, filtrare sulle ore è sicuro e hai comprato una grande accelerazione onestamente. Se è basso — cosa che accade quando il vantaggio della strategia vive nella struttura intrabarra che le candele orarie sfumano via — allora lo screening orario è un filtro casuale per quella strategia, e il gate ti dice di iniziare più fine. La regola non cambia mai: ti è permesso potare a una fedeltà solo dopo aver misurato che la sua classifica concorda con la verità.

I due assi falliscono anche in modi opposti, il che è utile. La risoluzione grossolana perde informazione intrabarra; meno fold perdono informazione cross-regime. Una strategia momentum su orizzonti giornalieri può classificare perfettamente su candele orarie ma aver bisogno di molti fold per mediare via la fortuna del regime; una strategia scalping può classificare bene su pochi fold ma crollare sopra la risoluzione a 1 secondo. Il gate, eseguito per ciascun asse, ti dice su quale fedeltà puoi permetterti di essere economico per questa strategia — invece di assumere una risposta che risulta conveniente.

Da dove viene davvero il risparmio

Un avvertimento che mantiene il drill-down onesto: una fedeltà risparmia calcolo solo dove il costo vive davvero. Nel nostro motore multi-timeframe la parte costosa è il precalcolo degli indicatori — gli HMA multi-timeframe e i segnali di separazione — che viene pagato una volta per configurazione, prima che giri qualsiasi fold. La simulazione per-fold sui segnali in cache è comparativamente economica. Quindi potare sul conteggio dei fold risparmia solo il costo della simulazione, non il costo degli indicatori che domina; la fedeltà a conteggio di fold è reale ma il suo tetto è più basso di quanto suggerisca il rapporto grezzo dei fold.

L'asse della risoluzione, al contrario, attacca direttamente il costo dominante: candele più grossolane significano meno barre su cui calcolare gli indicatori, quindi sia il precalcolo costoso sia la simulazione economica si riducono insieme. Non è un dettaglio — decide quale drill-down valga la pena costruire. Prima di investire in una ricerca multi-fedeltà, chiediti dove vanno i tuoi secondi. Se il 90% è precalcolo di indicatori condiviso tra i fold, una fedeltà a conteggio di fold ti compra poco e una fedeltà di risoluzione ti compra molto. Profila prima; l'asse economico giusto è quello che rimuove il costo che hai davvero, e deve comunque superare il gate.

Dove si collega tutto questo

Il fidelity gate si colloca in un punto specifico nella catena di igiene del backtest di questa serie:

  • È a monte del controllo dell'overfitting. Un drill-down che pota su un proxy scadente è un nuovo modo di fare overfitting — stai lasciando che un livello iniziale rumoroso selezioni i tuoi finalisti. Il campione deve comunque sopravvivere a Deflated Sharpe e PBO, e il conteggio delle prove che alimentano quei gate deve includere ogni prova potata, non solo i sopravvissuti — la potatura non rende una prova gratuita rispetto al registro dei test multipli.
  • Condivide il suo nemico con la plateau analysis: una configurazione che vince un fold o una finestra di screening e da nessun'altra parte è lo stesso artefatto adattato al regime che entrambi gli strumenti esistono per respingere. Il gate rifiuta di selezionare su un tale fold; la plateau analysis rifiuta di fidarsi di un campione che si regge su uno solo.
  • Presuppone l'onesto split walk-forward sottostante — fold che coprono l'intero calendario, con l'out-of-sample tenuto da parte — ed è il complemento a tempo di ricerca del drill-down che abbiamo costruito per la simulazione dei fill: stesso principio dal grossolano al fine, applicato a quali configurazioni valutare piuttosto che a quanto precisamente riempirle.
  • E dipende assolutamente dal fatto che la fedeltà sia priva di leak a ogni livello. Se il livello economico ha un bias di look-ahead che quello costoso non ha, ρ misura l'accordo con un bersaglio contaminato e il gate certifica un leak. Misura la correlazione di rank, sì — ma su un obiettivo onesto.

L'idea unificante, di nuovo, è quella che questa serie non smetterà di ripetere: un backtest è un esperimento statistico, e ogni scorciatoia al suo interno è un'ipotesi che sei obbligato a testare. L'ipotesi del drill-down è "rank economico ≈ rank costoso." È testabile in ~200 configurazioni. Testala.

Conclusioni chiave

  1. La ricerca dal grossolano al fine si regge su un'unica assunzione: il proxy economico classifica le configurazioni come quello costoso. Non lo stesso valore — la stessa classifica. Se la correlazione di rank è bassa, la potatura aggressiva scarta i tuoi futuri vincitori e promuove rumore. Cerchi più veloce verso una risposta peggiore.
  2. Misurala prima di fidartene. Estrai ~200 configurazioni casuali, valutale a ogni livello di fedeltà, e calcola lo Spearman ρ tra ogni livello economico e la classifica a piena fedeltà. Sono un paio di dozzine di righe e una sonda economica.
  3. Un fold classifica quasi a caso. Abbiamo misurato ρ@1 da 0.03 (un lancio di moneta) a 0.43 (ancora sotto la soglia di fiducia) a seconda del regime; sale a 0.67, 0.78, 0.82 e 0.91 man mano che i fold si accumulano. Il default min_resource = 1 di ogni ASHA pronto all'uso è, per un backtest, di solito sbagliato.
  4. Alza automaticamente la fedeltà minima al primo livello dove ρ ≥ 0.5, e se nessuno la supera, non potare affatto. Il gate è diventato min_resource = 2 per una configurazione e 3 per una più difficile; il fallback degrada elegantemente a una ricerca a piena fedeltà. La correttezza costa un po' di accelerazione — pagala.
  5. Scegli l'asse economico in base al fatto che sia distorto, non a quanto sia economico. Una storia più corta è distorta — seleziona parametri adattati al regime e nessuna dimensione del campione lo corregge. Usa meno fold che coprono l'intero calendario (interlacciati, non contigui) o una risoluzione più grossolana sull'intero periodo. E spendi l'asse economico dove il tuo costo vive davvero.

Il drill-down è una delle migliori accelerazioni nel backtesting, e una delle più facili da trasformare in un modo più veloce di ingannare te stesso. La differenza tra i due è un singolo numero che puoi misurare prima che la ricerca inizi. Se il tuo proxy non può dimostrare che classifica come la verità, non è un proxy — è un generatore di numeri casuali con un profilo di costo plausibile.

Disclaimer: le informazioni fornite in questo articolo hanno solo scopo didattico e informativo e non costituiscono consulenza finanziaria, di investimento o di trading. Il trading di criptovalute comporta un rischio significativo di perdita.

Autori

Eugen Soloviov
Eugen Soloviov

Trading-systems engineer

Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.

Newsletter

Resta un Passo Avanti al Mercato

Iscriviti alla nostra newsletter per approfondimenti esclusivi sul trading con IA, analisi di mercato e aggiornamenti sulla piattaforma.

Rispettiamo la tua privacy. Annulla l'iscrizione in qualsiasi momento.