Cos'è la Simulazione Monte Carlo nel Trading e a Cosa Serve in Excel?
La simulazione Monte Carlo nel trading è un metodo statistico che genera 10.000 scenari plausibili futuri partendo da media 0,684R e deviazione standard 1,42R dei 65.587 trade Oracle. Ricostruisce in Excel la distribuzione probabilistica dei drawdown attesi, dell'equity finale e della durata massima delle sequenze perdenti.
Il metodo Monte Carlo deve il nome al casinò di Monte Carlo dove fu sviluppato negli anni '40 dai fisici Stanislaw Ulam e John von Neumann durante il Progetto Manhattan. Veniva usato per simulare il comportamento di particelle subatomiche in scenari troppo complessi per soluzione analitica diretta. La logica è universale: quando la matematica chiusa non è risolvibile, si simulano numericamente migliaia di scenari aleatori e si estraggono le statistiche dei risultati. Nel trading questo approccio è prezioso perché le sequenze future di vincite e perdite sono intrinsecamente aleatorie — anche conoscendo perfettamente la distribuzione dei rendimenti, l'ordine in cui arriveranno è imprevedibile.
Perché il Backtest da Solo Non Basta
Un backtest tradizionale ti mostra un'unica curva equity: quella effettivamente accaduta nel passato. È utile ma incompleto. La storia ha seguito un percorso specifico fra infiniti possibili — la sequenza esatta dei trade vincenti e perdenti che si è verificata era una delle migliaia di sequenze ugualmente probabili. Se il sistema avesse incontrato gli stessi 65.587 trade in ordine diverso, il drawdown massimo storico avrebbe potuto essere 8% o 19% invece di 13,1%. Il backtest singolo è quindi un campione di dimensione 1 della distribuzione dei drawdown possibili — statisticamente povero per decisioni di money management.
La simulazione Monte Carlo risolve questo limite generando migliaia di sequenze alternative coerenti con le statistiche del sistema. Da queste si estrae la distribuzione completa dei drawdown attesi: il drawdown medio, il percentile 95, il percentile 99. Per Oracle v78 questi numeri sono rispettivamente 4,2%, 17,2% e 21,4%. Il drawdown storico di 13,1% si colloca al 78° percentile della distribuzione simulata — cioè è un risultato relativamente fortunato, non il caso peggiore. Pianificare il capitale operativo sul 13,1% sarebbe ottimismo; pianificare sul 21,4% del percentile 99 è prudenza statistica.
Quando Serve Davvero la Monte Carlo nel Trading
La simulazione Monte Carlo serve in tre momenti decisionali specifici. Primo: dimensionare il capitale di rischio prima di partire — quanto capitale serve per sopravvivere al peggior drawdown plausibile, non solo al drawdown storico. Secondo: confrontare due sistemi simili — due sistemi con stesso CAGR storico possono avere distribuzioni di rischio molto diverse, visibili solo in simulazione. Terzo: calibrare il rischio per trade — passare da 1% a 2% per trade non raddoppia solo il rendimento, raddoppia anche il drawdown atteso al percentile 99, e questo va visualizzato prima di decidere.
Come Si Imposta una Simulazione Monte Carlo in Excel Passo Passo?
Si imposta in cinque passaggi sequenziali. Prima si calcolano media e deviazione standard dei trade storici. Poi si genera una colonna di trade simulati con la formula Monte Carlo parametrica. Poi si costruisce l'equity progressiva e il drawdown istantaneo. Infine si replica l'intero foglio per ottenere migliaia di sequenze e si estraggono i percentili. Il foglio base funziona con sole funzioni native Excel, senza VBA né add-in.
Preparare il Campione Storico in Due Celle Chiave
Il primo passaggio è preparare il campione storico. Serve una colonna Excel contenente i rendimenti R-multipli di tutti i trade del sistema — per Oracle v78 sono 65.587 valori, per il tuo sistema saranno tipicamente meno. In due celle separate calcoli MEDIA e DEV.ST.C: =MEDIA(A2:A65588) restituisce 0,684 per Oracle, =DEV.ST.C(A2:A65588) restituisce 1,42. Questi due numeri sono i parametri della distribuzione che useremo per la simulazione. Più trade hai, più stabili sono i parametri — sotto 500 trade la stima è troppo rumorosa per simulazioni affidabili.
Il secondo passaggio è generare la prima sequenza simulata. In una nuova colonna scrivi 1.000 righe con la formula =$E$1 + INV.NORM.S(CASUALE()) * $E$2, dove E1 contiene la media e E2 la deviazione standard. Ogni riga produce un trade simulato in unità R. Premendo F9 l'intera colonna ricalcola — ogni F9 è una nuova sequenza alternativa di 1.000 trade. Già questo è informativo: vedi quanto cambia l'equity finale tra una sequenza e l'altra anche con stessi parametri statistici di partenza.
Costruire Equity Progressiva e Drawdown Istantaneo
Il terzo passaggio è la colonna equity progressiva. In B2 scrivi =A2 (primo trade), in B3 scrivi =B2+A3 e copi giù fino a B1001. Questo è il capitale cumulativo in unità R. Il quarto passaggio è il drawdown istantaneo. In C2 scrivi =MAX($B$2:B2)-B2 e copi giù — questa formula restituisce a ogni riga la differenza tra il massimo storico raggiunto e il valore corrente. Il drawdown massimo della sequenza è =MAX(C2:C1001). Questo è un singolo numero per una singola sequenza simulata, base di tutte le statistiche aggregate successive.
Il quinto passaggio è il più delicato: replicare la sequenza migliaia di volte. La via più semplice in Excel base è la "Tabella Dati a 1 variabile" (Data Table) che permette di calcolare automaticamente il valore di una formula per centinaia di iterazioni con valori di input diversi. In Excel moderno con LAMBDA e funzioni array dinamici si può fare anche con MAP e SEQUENCE. Per 10.000 iterazioni piene serve VBA — un loop che scrive il drawdown massimo di ogni sequenza in una colonna dedicata. Il foglio Excel completo è scaricabile dall'area riservata MTInvestments.
Estrarre i Percentili dei Drawdown Simulati
Una volta accumulati i 10.000 drawdown massimi (uno per sequenza simulata) in una colonna dedicata, l'analisi è banale con le funzioni statistiche di Excel. =MEDIA(D2:D10001) restituisce il drawdown medio atteso. =PERCENTILE.INC(D2:D10001;0,95) restituisce il drawdown al 95° percentile — soglia da non superare nel 95% degli scenari. =PERCENTILE.INC(D2:D10001;0,99) restituisce il drawdown al 99° percentile — il caso peggiore plausibile su cui dimensionare il capitale operativo. Per Oracle v78 questi tre numeri sono 4,2%, 17,2%, 21,4% — confrontati con il drawdown storico singolo di 13,1% mostrano quanto la storia sia stata generosa rispetto alle alternative possibili.
Quali Funzioni Excel Servono per Generare 10.000 Iterazioni Casuali?
Per costruire una simulazione Monte Carlo completa servono otto funzioni Excel native, organizzate in tre gruppi: generazione casuale, statistica della sequenza, estrazione dei percentili finali. Ogni funzione ha sintassi specifica e un ruolo non sostituibile. La conoscenza precisa di queste otto funzioni è il prerequisito per qualsiasi modello stocastico in Excel — non solo Monte Carlo trading ma anche pricing opzioni, simulazione scenari finanziari, analisi rischio progetti.
Il primo gruppo è la generazione casuale. CASUALE() restituisce un numero pseudo-casuale uniforme tra 0 e 1 — è la base di tutto. INV.NORM.S(probabilità) trasforma questo numero uniforme in un valore della distribuzione normale standard, fondamentale per il Monte Carlo parametrico. CASUALE.TRA(min;max) restituisce un intero casuale tra due estremi, utile per il bootstrap che pesca con reinserimento dai trade storici. Una variante moderna è MATR.CASUALE(righe;colonne) che genera direttamente una matrice di numeri casuali — utile quando vuoi mille trade in mille scenari senza copia-incolla manuale.
| Funzione Excel | Sintassi | Output | Quando Usarla |
|---|---|---|---|
| CASUALE() | =CASUALE() | Numero 0-1 uniforme | Base di ogni simulazione |
| INV.NORM.S() | =INV.NORM.S(CASUALE()) | Valore normale standard | Monte Carlo parametrico |
| CASUALE.TRA() | =CASUALE.TRA(2;65588) | Intero tra estremi | Bootstrap con reinserimento |
| INDIRETTO() | =INDIRETTO("A"&CASUALE.TRA(2;65588)) | Cella indirizzo dinamico | Pesca trade da archivio |
| MEDIA() | =MEDIA(A2:A65588) | Media aritmetica range | Calcolo aspettativa storica |
| DEV.ST.C() | =DEV.ST.C(A2:A65588) | Deviazione standard | Calcolo volatilità storica |
| MAX() | =MAX($B$2:B2) | Massimo progressivo | Equity peak per drawdown |
| PERCENTILE.INC() | =PERCENTILE.INC(D:D;0,99) | Valore al percentile | Estrazione DD percentile 95/99 |
| CONTA.SE() | =CONTA.SE(D:D;">15%") | Conta valori sopra soglia | Probabilità superare DD critico |
La Trappola della Distribuzione Normale e i Fat Tails
La funzione INV.NORM.S è centrale ma incorpora un'assunzione forte: che i rendimenti dei trade siano normalmente distribuiti. Questa assunzione è quasi sempre falsa nel trading reale. I trade veri presentano fat tails — code più spesse della normale, cioè eventi estremi più frequenti di quanto la curva gaussiana preveda. Sui 65.587 trade Oracle il rapporto tra drawdown massimo storico e deviazione standard è circa 9, mentre sotto distribuzione normale dovrebbe essere 4-5. La realtà è più cattiva del modello parametrico.
Come Manuel Trotta Usa Monte Carlo sui 65.587 Trade Reali Oracle?
L'utilizzo operativo di Monte Carlo su Oracle v78 segue un protocollo strutturato: ogni trimestre la simulazione viene rieseguita su 10.000 iterazioni, su orizzonte 1.000 trade futuri (corrispondenti a circa 18 mesi di operatività XAUUSD H4). I risultati alimentano due decisioni concrete — il rischio per trade da utilizzare nel trimestre successivo, e la soglia di drawdown oltre la quale il sistema viene messo in pausa per riesame strutturale.
Il Protocollo Operativo Trimestrale
Il protocollo standard parte dall'export dei 65.587 trade reali in CSV con colonne data, R-multiplo, asset. Power Query li carica in Excel e calcola in due celle dedicate la aspettativa matematica nel trading di +0,684R e la deviazione standard di 1,42R. Sopra questo dataset gira un modulo VBA che esegue 10.000 simulazioni bootstrap: ogni simulazione costruisce una sequenza di 1.000 trade pescati a caso con reinserimento dai 65.587 storici, calcola la curva equity, registra il drawdown massimo della sequenza. Output: 10.000 valori di drawdown massimo in una colonna dedicata.
Nel 2014, alla v12 del primissimo Oracle, ho introdotto la prima simulazione Monte Carlo strutturata sui dati di backtest disponibili — solo 4.200 trade allora. Il drawdown stimato al percentile 99 era 18,7%, contro un drawdown storico di 9,2%. Quella stima mi salvò: nei due anni successivi il drawdown reale arrivò a 16,4% — sotto il percentile 99 stimato ma molto sopra lo storico. Senza Monte Carlo avrei sottocapitalizzato il conto e mi sarei fermato per panico. Da allora ogni versione di UlcerZenith integra Monte Carlo come passo obbligatorio prima di rilascio.
Cosa Dicono i Tre Percentili Chiave
Sui 10.000 drawdown si estraggono i percentili chiave. Drawdown medio simulato: 4,2%. Percentile 95: 17,2% — significa che nel 95% degli scenari futuri plausibili il drawdown massimo sarà inferiore a questa soglia. Percentile 99: 21,4% — il caso peggiore plausibile, sotto cui devono restare il 99% degli scenari. Drawdown storico effettivo: 13,1% — sotto il percentile 78, conferma che la storia è stata moderatamente fortunata. L'aspettativa matematica preservata su 99,3% degli scenari simulati: significa che solo nello 0,7% dei casi peggiori l'EV reale futuro scende sotto +0,5R, soglia di profittabilità sostenibile.
La simulazione Monte Carlo bootstrap su 10.000 iterazioni con orizzonte 1.000 trade restituisce una distribuzione completa dei drawdown attesi futuri. Il drawdown storico singolo di 13,1% è sotto il 78° percentile della distribuzione simulata — significa che la storia accaduta è stata relativamente fortunata. Pianificare capitale operativo su 13,1% sarebbe ottimismo statistico.
Il dimensionamento prudente del capitale di rischio si fa sul percentile 99 = 21,4%. Su un conto da 10.000€ con rischio 1% per trade, significa pianificare per perdita massima di 2.140€ nella peggior sequenza plausibile. L'aspettativa matematica +0,684R è preservata nel 99,3% degli scenari — la profittabilità del sistema è strutturalmente robusta, è il drawdown intermedio che richiede capitale buffer adeguato.
Vuoi vedere Oracle in azione sul tuo conto?
Manuale UI Zenith €27 · PDF subito · soddisfatto o rimborsato. Vedi i 65.587 trade reali, la simulazione Monte Carlo trimestrale, i percentili di drawdown aggiornati.
Manuale UI Zenith Oracle €27 Chi è Manuel TrottaQuali Sono gli Errori Comuni nelle Simulazioni Monte Carlo Trading?
Quattro errori invalidano sistematicamente le simulazioni Monte Carlo applicate al trading. Ognuno di questi errori sembra tecnico ma ha conseguenze pratiche dirette sul dimensionamento del capitale e sulle aspettative di rischio. Il rischio non è solo accademico — un Monte Carlo eseguito male è peggio di nessuna simulazione, perché dà falsa fiducia in stime sbagliate.
I Quattro Errori che Invalidano Ogni Stima
Il primo errore è usare la distribuzione normale come unica assunzione, ignorando i fat tails. Come visto, il Monte Carlo parametrico con INV.NORM.S sottostima drawdown estremi del 5-15% rispetto al bootstrap su dati reali. Per simulazioni di stress test serve sempre il bootstrap. Il secondo errore è girare meno di 5.000 iterazioni, accontentandosi di 500 o 1.000. Sotto questa soglia gli intervalli di confidenza dei percentili sono troppo larghi per essere informativi — il percentile 99 può oscillare di ±3 punti percentuali tra ricalcoli, rendendo la stima inutile per decisioni di capitale.
Il terzo errore è usare bootstrap senza reinserimento — pescare un trade dall'archivio e poi escluderlo dalle pesche successive. Questo distrugge la varianza naturale del processo e produce stime artificialmente regolari, sottostimando la possibilità di sequenze sfortunate prolungate. Il bootstrap corretto è sempre con reinserimento: ogni trade può essere pescato più volte nella stessa sequenza simulata. Il quarto errore è cherry-picking sui ricalcoli — premere F9 venti volte e raccontare lo scenario più favorevole. Una Monte Carlo seria si esegue una volta sola, in modo strutturato, e il risultato è quello.
Il Confronto Stress Test: Bootstrap vs Parametrico Sui Dati Veri
Come Automatizzare la Monte Carlo con VBA o Power Query in Excel?
L'automazione della simulazione Monte Carlo in Excel ha due strade complementari: VBA per controllo procedurale fine e gestione di loop su 10.000+ iterazioni, Power Query per ETL pulito dei dati storici e refresh automatico del dataset. Le due tecnologie risolvono problemi diversi e nei progetti seri si usano insieme. Power Query alimenta i dati, VBA gira la simulazione, fogli ordinari visualizzano i risultati.
VBA per le 10.000 Iterazioni Piene
Il VBA è insostituibile per le 10.000 iterazioni piene. Una semplice procedura Sub apre un loop For i = 1 To 10000, dentro ogni iterazione ricalcola la sequenza simulata, registra il drawdown massimo in una colonna risultati. Il codice base è di 30 righe e gira in 8-12 secondi su una macchina moderna. L'alternativa "Tabella Dati a 1 variabile" funziona fino a 1.000-2.000 iterazioni ma è lenta e poco flessibile per 10.000+. Excel moderno con LAMBDA e MAP permette anche soluzioni puramente formula, ma sono opache da debuggare.
Power Query per il Pre-Processing dei Trade Storici
Power Query risolve il problema a monte: come arrivare al dataset pulito dei 65.587 trade. MetaTrader esporta history in HTML disordinato; Power Query lo parsa in 30 secondi con split colonne, conversione formati data, gestione timezone broker→italiana. Un'unica connessione cartella permette il refresh automatico — droppa nuovi CSV nella cartella, premi F5, l'intero dataset si aggiorna. Combinato con un foglio Power Pivot per dashboard delle performance, hai un sistema completo che si autogestisce dopo il setup iniziale.
L'Architettura Ibrida Production-Ready
L'architettura seria per Monte Carlo trading in produzione segue tre layer. Layer 1 — Power Query: connessione al CSV broker, pulizia, normalizzazione, output tabella trade strutturata. Layer 2 — VBA: lettura della tabella, ciclo Monte Carlo bootstrap su 10.000 iterazioni, scrittura risultati in foglio dedicato. Layer 3 — Excel formule + Power Pivot: estrazione percentili (PERCENTILE.INC), grafici fan chart per visualizzare la distribuzione delle equity simulate, dashboard riassuntiva con KPI critici. Il refresh completo del sistema (dati nuovi → simulazione → dashboard aggiornata) richiede circa 15 secondi sulla macchina di lavoro.
Nella v78 di UlcerZenith ho automatizzato l'intero ciclo settimanale: ogni domenica notte un task scheduler Windows lancia la macro VBA, salva il foglio aggiornato in cartella condivisa, manda email con i 3 percentili chiave. Lunedì mattina ho già i numeri sulla scrivania prima dell'apertura mercati. Per chi non vuole costruire da zero, l'criterio di Kelly per il position sizing è integrato nel calcolo finale del template scaricabile, per dimensionare il rischio per trade in funzione del drawdown stimato dal Monte Carlo.
Oppure vedi i 65.587 trade live nell'area riservata
Foglio Monte Carlo Excel scaricabile · Tool calcolatori statistici · Blog avanzato MTInvestments. Registrazione 30 secondi, zero carta richiesta.
Entra gratis (no carta richiesta)Riepilogo: Monte Carlo Excel Trading in 5 Punti Chiave
- Cos'è: simulazione di 10.000 sequenze trade alternative coerenti con media (0,684R Oracle) e deviazione standard (1,42R Oracle) storiche. Il Profit Factor sui 65.587 trade di Oracle è 1,44 — la simulazione mostra che è preservato nel 99,3% degli scenari futuri.
- Formula base: R_simulato = MEDIA + INV.NORM.S(CASUALE()) × DEV.ST. Per Oracle: 0,684 + INV.NORM.S(CASUALE()) × 1,42. Replica 1.000 volte per una sequenza, 10.000 volte per la distribuzione completa.
- Bootstrap vs parametrico: il bootstrap pesca con reinserimento dai 65.587 trade reali (CASUALE.TRA + INDIRETTO), conserva i fat tails, è più conservativo. Il parametrico assume normalità, è più veloce ma sottostima drawdown estremi del 5-15%.
- Risultati Oracle v78: drawdown medio simulato 4,2%, percentile 95 = 17,2%, percentile 99 = 21,4%. Drawdown storico 13,1% sotto 78° percentile — la storia è stata moderatamente fortunata. Capitale operativo va dimensionato su 21,4%, non su 13,1%.
- Funzioni Excel chiave: CASUALE(), INV.NORM.S(), CASUALE.TRA(), INDIRETTO(), MEDIA(), DEV.ST.C(), MAX(), PERCENTILE.INC(), CONTA.SE(). Per 10.000 iterazioni piene serve VBA con loop For-Next; per ETL dati storici Power Query con refresh automatico da CSV broker.
FAQ — Monte Carlo Excel Trading
- — CONSOB: "Educazione Finanziaria · Strumenti Finanziari e Rischio". consob.it/investor-education
- — Banca d'Italia: "Quaderni di Economia e Finanza · Risk Management Operativo". bancaditalia.it/pubblicazioni/qef
- — BIS Bank for International Settlements: "Working Papers · Monte Carlo Methods in Financial Risk". bis.org/research
- — Stanislaw Ulam, John von Neumann: "The Monte Carlo Method" (1949), Journal of the American Statistical Association.
- — Manuel Trotta: "Fare Trading con Excel" — Hoepli Editore 2019 (capitoli su simulazione e money management).