Un Backtesting mostra un percorso storico; una simulazione esplora percorsi generati da ipotesi dichiarate. Ordine degli esiti, ricampionamento e Dimensione della posizione possono modificare il Drawdown. Il risultato è condizionato al modello: non è una probabilità di rovina verificata per un conto reale non specificato.

Quale esperimento stai simulando

Monte Carlo usa estrazioni casuali ripetute. Permutare una lista fissa di esiti monetari cambia il percorso ma conserva la somma; estrarre con reinserimento può cambiare entrambi. Un modello parametrico con probabilità di vincita e importi assegnati produce un’altra distribuzione. Dichiara procedura, costi e modo in cui il volume cambia con il patrimonio.

Prima prova un percorso a mano: capitale iniziale 1000 unità monetarie, esiti +200, −100, −100. Il capitale segue 1000 → 1200 → 1100 → 1000; massimo drawdown 200/1200≈16,67%. Riordinando −100, −100, +200 ottieni 1000 → 900 → 800 → 1000 e drawdown 20%. Stesso finale, rischio di percorso diverso. Includi il capitale iniziale fra i picchi: ometterlo sottostima la prima discesa.

Una soglia può cambiare anche il risultato finale

Modello USD separato: capitale 1000, esiti netti campionati +300, −150, −150, nessun flusso o reinvestimento. Dopo ogni passo completo arresta la prova se il capitale è al massimo 850 USD. A esegue 1000 → 1300 → 1150 → 1000, tutti e tre i passi. Nell’ordine B, −150, −150, +300, il primo passo porta a 850: la prova termina e gli altri due esiti non vengono eseguiti. Non sono due operazioni da zero.

La lista campionata non è sempre la lista eseguita

La lista campionata non è sempre la lista eseguitaDue pannelli con scala 0,2 pixel per USD e passi equidistanti. A:1000,1300,1150,1000,tre passi. B:1000 poi 850,arresto dopo il primo passo; soglia 850 controllata dopo ciascun risultato. Gli esiti successivi non sono aggiunti. Modello fittizio senza probabilità stimate.Stessa lista, regola di arresto esplicitaA:+300,−150,−150 USD1000130011501000B:−150,poi arresto1000850Soglia 850 USDA:3 passi, fine 1000 USDB:1 passo, fine 850 USDDue esempi non stimano probabilità future.
I punti sono passi realmente eseguiti nel modello. La linea tratteggiata indica una soglia didattica, non una raccomandazione o un prezzo garantito.

Scorri orizzontalmente o ingrandisci il diagramma per leggere i dettagli.

Se esistono arresto, vincoli di capitale o variazioni di volume, sommare ogni esito storico dopo averlo permutato non riproduce automaticamente la strategia. Conserva separatamente lista estratta, passi eseguiti e motivo della terminazione.

La dipendenza cambia la coda EURDue esiti da ±10 EUR ciascuno, costi esclusi; modelli inventati, non dati di mercato.ESEMPIO DI CALCOLOIndipendenti+20; 0; 0; −20Segni collegati+20 oppure −20Informazione necessariaRegola di dipendenza
La dipendenza cambia la coda EUR. Due esiti da ±10 EUR ciascuno, costi esclusi; modelli inventati, non dati di mercato.

Media zero in entrambi non significa stessa distribuzione della perdita.

Indipendenti
+20; 0; 0; −20 – Quattro casi equiprobabili: perdita 25%, varianza 200 EUR².
Segni collegati
+20 oppure −20 – Due casi equiprobabili: perdita 50%, varianza 400 EUR².
Informazione necessaria
Regola di dipendenza – Non ricavabile dalla sola media o dal numero di simulazioni.

Domande e quantili da tenere distinti

Un modello definito può stimare distribuzioni di drawdown massimi, attraversamenti di soglie e risultati terminali. Calcola prima il massimo drawdown di ciascun percorso, poi il percentile della loro distribuzione. Una fascia di percentili del patrimonio punto per punto non è un percorso eseguito. Indica convenzione del quantile: interpolazione e distribuzioni discrete possono cambiare la frazione di scenari sotto una soglia.

Modello EUR esplicito del materiale di partenza: 200 operazioni indipendenti, probabilità di vincita 0,55, vincita fissa 100 EUR, perdita fissa 80 EUR. Profitto medio teorico 0,55 × 100−0,45 × 80 = 19 EUR per operazione, 3800 complessivi. Con K vincite il profitto terminale è 180 K −16000. Definendo quantile binomiale come il più piccolo K con probabilità cumulata almeno pari al livello richiesto, i profitti sono 920 EUR all’1%, 1640 al 5%, 3800 al 50% e 5960 al 95%. Sono valori della distribuzione calcolata, non risultati attribuiti a un esperimento osservato. Una simulazione finita oscillerà rispetto a essi.

Esercizio Excel con stato iniziale conservato

Questo esempio mantiene la sintassi inglese del foglio di origine: lingua dell’applicazione e separatori possono richiedere adattamenti verificati. Non cambiare silenziosamente formule o unità. Inserisci A1=0.55, A2=100, A3=−80, A4=10,000: probabilità, due esiti netti fissi e capitale iniziale. In C1 usa =$A$4, in D1 =C1, in E1 zero. La riga 1 rappresenta lo stato prima delle operazioni.

In B2 inserisci =IF(RAND()<$A$1,$A$2,$A$3). I riferimenti assoluti mantengono i parametri fissi copiando la formula. In C2 usa =C1+B2, D2 =MAX(D1,C2), E2 =(D2-C2)/D2. Copia B2: E2 fino alla riga 201: sono esattamente 200 operazioni, non 201. C201 è il capitale finale; =MAX(E1:E201) è il massimo drawdown del percorso. Duecento trade non equivalgono necessariamente a un anno. Per un uso operativo servono regole ulteriori su arresto, margine e insolvenza.

Per un’altra prova copia tutto il blocco B: E insieme alla riga iniziale, conservando i riferimenti $A$. Mantieni distinti percentili del capitale finale e percentili del massimo drawdown. =PERCENTILE.INC(range,0.95) usa la coda alta delle ampiezze positive di drawdown; per la coda avversa del capitale finale si usano invece livelli bassi, come 0.05 o 0.01. La funzione può interpolare. RAND ricalcola con il foglio: salva valori campionati e ipotesi della prova che vuoi riesaminare.

Bootstrap in Python e dipendenze

Python facilita ripetizioni, ma anche Excel può estrarre valori storici con formule appropriate. Il bootstrap ricampiona gli esiti registrati invece di assumere soltanto due importi fissi. Entrambi richiedono scelta esplicita di dipendenza, dimensionamento, oneri e storia considerata.

Per una cronologia non vuota di risultati monetari netti, il generatore NumPy può usare new_sequence = rng.choice(history,size=200,replace=True). Conserva lo stato iniziale: equity = np.concatenate(([initial_capital], initial_capital + np.cumsum(new_sequence))). Calcola picchi progressivi e drawdown per percorso prima di riassumere i massimi. Registra dati, seed, versione della libreria, orizzonte, costi e arresti. Più prove riducono rumore computazionale, non creano nuovi regimi di mercato osservati.

Un confronto controllato può condividere le estrazioni. U uniforme; esito +1 se U è sotto la soglia, altrimenti −1. Soglie assegnate A = 0,55 e B = 0,60: medie 0,10 e 0,20, differenza attesa 0,10. Con U condivisa, B−A vale +2 soltanto su 0,55≤U< 0,60, altrimenti 0. Varianza 4 × 0,05−0,10² = 0,19. Con estrazioni indipendenti si sommano le varianze 0,99+0,96 = 1,95. Questa costruzione riduce il rumore del confronto specificato, non l’incertezza sulle probabilità reali; non aiuta necessariamente ogni coppia di strategie.

Ricampionare operazioni singole con reinserimento conserva i valori osservati ma rompe l’ordine originale e non conserva gruppi di perdite. Non genera eventi assenti dalla storia. Se conta la dipendenza, considera blocchi e scenari di stress separati, dichiarando che neppure una storia limitata così trattata copre ogni regime futuro. Esiti monetari fissi e rischio ricalcolato sull’equity non sono lo stesso esperimento.

Limiti del modello e scenari mancanti

Indipendenza e distribuzione stabile appartengono all’esempio, non sono obblighi del metodo Monte Carlo. Puoi costruire modelli dipendenti o con regimi variabili, da specificare e valutare. Confronta comportamento e cronologia, esposizioni sovrapposte, costi, gap e fill mancanti; stress esplicitamente separati non vanno presentati come nuove osservazioni.

Nuovo controesempio EUR: due esiti da ±10 EUR, costi esclusi. Nel modello indipendente equiprobabile i totali sono +20,0,0,−20: media 0, probabilità modellata di perdita 25%, varianza 200 EUR². Se il modello collega perfettamente i segni, sono possibili soltanto +20 e −20 al 50% ciascuno: media ancora 0, perdita 50%, varianza 400 EUR². Stessi esiti marginali ±10 e stessa media totale, ma rischio congiunto diverso. È enumerazione di due modelli inventati, non stima di una correlazione forex.

Walk-forward: finestre, gap e limiti della valutazione organizza periodi successivi di sviluppo e valutazione; non rileva automaticamente deterioramento né rende nuovi dati già esaminati. Un percentile simulato non è un tetto garantito o un limite minimo probabilistico dimostrato del drawdown reale.

Definisci il fallimento prima dello studio. Nel modello ideale che perde esattamente 5% del capitale corrente a ogni perdita, dopo n perdite resta capitale iniziale × 0,95n, positivo per n finito. Una soglia pratica, un requisito minimo di margine o una perdita maggiore cambiano il modello. Il risultato teorico non garantisce sopravvivenza operativa. Il conto EUR e la lingua italiana non determinano regole di insolvenza o protezioni contrattuali.

Procedura minima riproducibile

  1. Raccogli una storia definita con conteggio, costi, rischio e copertura. Campioni piccoli rendono incerte le code, ma non esiste un limite universale di 100. Non operare soltanto per raggiungere un numero.
  2. Verifica a mano i due percorsi a tre trade e l’arresto USD, poi conserva un campione casuale prima di aumentare le ripetizioni. Un’ora di lavoro o 1000 prove non certificano il modello.
  3. Per drawdown come ampiezza positiva esamina la coda alta, ad esempio 95º percentile; se usi variazioni negative dichiara il segno. Includi capitale iniziale e dimensionamento. Ridurre il rischio richiede rieseguire e controllare il modello, non promette una riduzione proporzionale universale.
  4. Confronta nuove versioni solo dopo aver registrato cambiamenti di dati, unità, costi e regole. Una mediana più bassa del modello non identifica da sola un deterioramento causale dal vivo.