Traduzione in Italiano
Come colonie decentralizzate di agenti stupidi risolvono problemi che la matematica chiusa non può affrontare, e perché il mercato stesso è lo sciame più grande mai costruito
C'è una strana dualità al centro della finanza quantitativa. Da un lato c'è il sogno dell'ingegnere: una funzione obiettivo pulita, un insieme ammissibile convesso, una soluzione in forma chiusa che puoi dimostrare essere ottimale. Dall'altro lato c'è il mercato reale: non lineare, non stazionario, pieno di minimi locali, code pesanti, cambi di regime e cicli di feedback dove le tue stesse azioni modificano ciò che stai cercando di prevedere.
L'intelligenza dello sciame vive nel secondo lato. È una famiglia di metodi che rinuncia all'eleganza e alla dimostrazione in cambio di qualcosa che il mercato effettivamente premia: la capacità di cercare in paesaggi brutti, ad alta dimensionalità e ingannevoli senza rimanere intrappolati, e di farlo con agenti così semplici che nessuno di loro individualmente comprende il problema.
Questo articolo copre entrambe le metà della storia. La prima metà è l'intelligenza dello sciame come strumento di ottimizzazione che punti verso problemi finanziari: Ottimizzazione a Sciame di Particelle per il tuning di portafogli e strategie, Ottimizzazione delle Colonie di Formiche per il routing e la selezione combinatoria. La seconda metà è l'idea più profonda e scomoda: il mercato è uno sciame, e i modelli basati su agenti ti permettono di simulare le bolle emergenti, i crolli e l'imitazione di massa che nessun modello di equilibrio produce da solo.
Matematica, codice e diagrammi ovunque. Niente è lasciato alla suggestione.
Le mie risorse:
Canale TG:
GitHub:
Trading qui:
https://polymarket.com/?r=zostaff
Parte 0: Cosa significa realmente "intelligenza dello sciame"
Uno sciame è una popolazione di agenti semplici che seguono regole locali, senza un controllore centrale, e che collettivamente producono un comportamento globale intelligente. Gli esempi canonici sono biologici: colonie di formiche che trovano percorsi più brevi tramite feromoni, stormi di uccelli che mantengono coesione tramite tre regole locali, colonie di api che allocano foraggiatrici a chiazze di fiori.
Tre proprietà definiscono il paradigma e spiegano perché si adatta alla finanza:
- Decentralizzazione. Nessun agente ha una visione globale. Ognuno agisce su informazioni locali più una piccola quantità di segnale condiviso. Questo rispecchia i mercati reali, dove nessun partecipante vede il flusso completo degli ordini.
- Esplorazione stocastica con attrazione sociale. Gli agenti si muovono semi-casualmente ma sono attratti verso dove lo sciame ha trovato valore. Questo equilibrio tra esplorazione e sfruttamento è esattamente ciò di cui hai bisogno su un paesaggio pieno di ottimi locali, come sono le superfici di rendimento corretto per il rischio.
- Emergenza. Il comportamento interessante non è programmato in nessun agente. Appare a livello di popolazione. Nell'ottimizzazione questo significa sfuggire a trappole in cui cadono i metodi basati sul gradiente. Nella modellazione dei mercati significa bolle che nessun singolo agente "razionale" ha inteso.
Il contrasto con i metodi classici è il punto centrale. La discesa del gradiente ha bisogno di una funzione obiettivo differenziabile e trova il minimo più vicino, che spesso è quello sbagliato. L'ottimizzazione convessa ha bisogno di convessità, che gli obiettivi finanziari raramente hanno una volta che aggiungi costi di transazione, vincoli di cardinalità o limiti di drawdown. I metodi a sciame non hanno bisogno di nulla di tutto questo. Trattano l'obiettivo come una scatola nera: inserisci un candidato, ottieni un numero, tutto qui.
Parte 1: Ottimizzazione a Sciame di Particelle
1.1 Il meccanismo
L'Ottimizzazione a Sciame di Particelle (PSO), introdotta da Kennedy e Eberhart nel 1995, modella lo sciame come un insieme di particelle che volano attraverso lo spazio di ricerca. Ogni particella i ha una posizione x_i (una soluzione candidata) e una velocità v_i. Ricorda la posizione migliore che ha visitato personalmente (pbest_i) e conosce la posizione migliore che qualsiasi particella ha trovato (g, il best globale).
Ad ogni passo, ogni particella aggiorna la sua velocità come somma pesata di tre spinte:
1v_i(t+1) = w · v_i(t) inerzia: continua a fare quello che stavi facendo2 + c1 · r1 · (pbest_i − x_i(t)) cognitivo: torna al tuo personale migliore3 + c2 · r2 · (g − x_i(t)) sociale: muoviti verso il migliore dello sciame45x_i(t+1) = x_i(t) + v_i(t+1)
dove w è il peso d'inerzia, c1 e c2 sono coefficienti di accelerazione, e r1, r2 sono numeri casuali uniformi freschi in [0,1] estratti indipendentemente per dimensione. Quella casualità è il motore dell'esplorazione; senza di essa lo sciame collassa deterministicamente.
Vale la pena vedere le tre forze geometricamente. Una singola particella è simultaneamente spinta dal suo stesso slancio, tirata indietro verso il suo personale migliore e attratta verso il best globale. Il vettore risultante è dove effettivamente va dopo.

1.2 Perché sfugge ai minimi locali
La magia sta nella tensione tra i termini cognitivo e sociale. All'inizio, le particelle sono sparse e i loro personali migliori differiscono enormemente, quindi lo sciame esplora ampiamente. Man mano che vengono scoperte buone regioni, g attira tutti, ma l'inerzia e la memoria personale di ogni particella le impediscono di collassare istantaneamente su g. Lo sciame circonda, supera e sonda il vicinato prima di impegnarsi. Su una superficie multimodale questo significa che lo sciame può abbandonare un decente minimo locale se una particella si imbatte in un bacino migliore.
Ecco PSO sulla funzione Rastrigin, un test di tortura standard con un minimo globale all'origine circondato da un reticolo di minimi locali ingannevoli. Guarda lo sciame disperdersi, raggrupparsi e convergere mentre la fitness globale migliore scende di sei ordini di grandezza.

Un metodo del gradiente lasciato cadere ovunque su quella superficie muore nella prima conca locale che tocca. Lo sciame no.
1.3 Applicazione: ottimizzazione di portafoglio sotto vincoli realistici
L'ottimizzazione media-varianza di Markowitz ha una soluzione in forma chiusa. Nel momento in cui aggiungi qualcosa di realistico, non ce l'ha più. Vincoli di cardinalità ("detieni al massimo 20 titoli"), dimensioni minime delle posizioni, penalità per costi di transazione e limiti di turnover rompono tutti la convessità e l'integralità. Questo è esattamente dove PSO dà il meglio di sé.
Vogliamo massimizzare l'indice di Sharpe di un portafoglio long-only. Ogni particella è un vettore di pesi; lo ripariamo al simplesso (non negativo, somma a uno) e valutiamo.
1import numpy as np23rng = np.random.default_rng(0)4n = 8 # numero di asset5mu = rng.normal(0.08, 0.04, n) # rendimenti annuali attesi6A = rng.normal(0, 1, (n, n))7cov = (A @ A.T) / n * 0.04 # una matrice di covarianza valida8rf = 0.02 # tasso privo di rischio910def neg_sharpe(w):11 """Obiettivo: Sharpe negativo (minimizziamo). Ripara i pesi al simplesso."""12 w = np.clip(w, 0, None) # long-only13 s = w.sum()14 if s == 0:15 return 1e916 w = w / s # somma a uno17 ret = w @ mu18 vol = np.sqrt(w @ cov @ w)19 return -(ret - rf) / (vol + 1e-9)2021# ---- PSO ----22P, ITERS = 30, 10023w_inertia, c1, c2 = 0.72, 1.49, 1.492425X = rng.random((P, n)) # posizioni = portafogli candidati26V = rng.normal(0, 0.1, (P, n)) # velocità27pbest = X.copy()28pbest_val = np.array([neg_sharpe(x) for x in X])29g = pbest[pbest_val.argmin()].copy()3031for _ in range(ITERS):32 r1, r2 = rng.random((P, n)), rng.random((P, n))33 V = w_inertia * V + c1 * r1 * (pbest - X) + c2 * r2 * (g - X)34 X = np.clip(X + V, 0, None)35 val = np.array([neg_sharpe(x) for x in X])36 improved = val < pbest_val37 pbest[improved] = X[improved]38 pbest_val[improved] = val[improved]39 g = pbest[pbest_val.argmin()].copy()4041w_opt = np.clip(g, 0, None); w_opt /= w_opt.sum()42print("miglior Sharpe:", round(-pbest_val.min(), 3))43print("pesi:", np.round(w_opt, 3))
Eseguendo questo codice si ottiene uno Sharpe vicino a 3.5 e un vettore di pesi sparso e sensato che somma a uno. Il punto cruciale non è il numero. È che neg_sharpe potrebbe contenere qualsiasi cosa. Aggiungi un termine per i costi di transazione - lambda * np.sum(np.abs(w - w_prev)), aggiungi un limite di cardinalità azzerando i pesi più piccoli prima di normalizzare, aggiungi una penalità per il drawdown calcolata da un backtest. Nessuna di queste ha gradienti che vuoi calcolare, e nessuna di esse ferma PSO. L'ottimizzatore non guarda mai dentro l'obiettivo; chiede solo "questo portafoglio è migliore di quello?"
1.4 Applicazione: iperparametri e tuning di strategie
Il secondo uso principale è il tuning delle strategie di trading. Una strategia ha parametri: finestre di lookback, soglie di entrata e uscita, distanze di stop-loss, coefficienti di dimensionamento delle posizioni. L'obiettivo è una statistica di backtest come il rendimento corretto per il rischio dopo i costi. Questa superficie è brutalmente non convessa, discontinua (un cambiamento di un tick in una soglia può capovolgere un'operazione) e costosa da valutare. PSO tratta l'intero backtest come l'obiettivo a scatola nera e cerca lo spazio dei parametri direttamente.
Come si confronta con le alternative? Gli algoritmi genetici (crossover evolutivo e mutazione) sono il concorrente più vicino e spesso comparabili. La ricerca casuale è il baseline onesto che sorprendentemente spesso batte la ricerca a griglia. Su un tipico obiettivo di tuning di strategia, lo sciame tende a convergere più velocemente e a un ottimo migliore di entrambi, perché il termine di attrazione sociale concentra le valutazioni dove contano piuttosto che campionare alla cieca.

La cautela qui è reale e il professionista deve interiorizzarla: una convergenza più veloce su un obiettivo di backtest è una convergenza più veloce verso l'overfitting. PSO troverà felicemente l'insieme di parametri che spiega perfettamente il rumore nel tuo campione storico. La validazione walk-forward, i holdout fuori campione e la penalizzazione della complessità dei parametri non sono guarnizioni opzionali; sono la differenza tra un artefatto di ricerca e una strategia che sopravvive al contatto con i mercati reali.
Parte 2: Ottimizzazione delle Colonie di Formiche
2.1 Il meccanismo
L'Ottimizzazione delle Colonie di Formiche (ACO), dovuta a Dorigo nei primi anni '90, attacca problemi combinatori dove la risposta è un percorso o una selezione discreta. Le formiche reali trovano percorsi brevi depositando feromone mentre camminano; i percorsi più brevi vengono percorsi più spesso per unità di tempo, accumulano più feromone e attirano più formiche, in un ciclo di feedback positivo. Fondamentalmente, il feromone evapora, il che permette alla colonia di dimenticare percorsi obsoleti e adattarsi quando l'ambiente cambia.
Le formiche artificiali costruiscono soluzioni passo dopo passo su un grafo. Al nodo i, una formica sceglie il nodo successivo j probabilisticamente, influenzata dal feromone tau_ij su quel bordo e da una desiderabilità euristica eta_ij:
1(tau_ij)^alpha · (eta_ij)^beta2P(i -> j) = ----------------------------------------3 somma su k consentiti di (tau_ik)^alpha · (eta_ik)^beta
alpha controlla quanto le formiche si fidano del feromone accumulato (sfruttamento della memoria collettiva); beta controlla quanto si fidano dell'euristica immediata (qualità locale greedy). Dopo che tutte le formiche hanno finito, il feromone si aggiorna:
1tau_ij <- (1 - rho) · tau_ij + somma su formiche di delta_tau_ij
rho è il tasso di evaporazione. Il deposito delta_tau_ij è maggiore per le formiche che hanno costruito soluzioni migliori, quindi i bordi buoni vengono rinforzati. L'evaporazione previene il blocco prematuro ed è ciò che rende ACO adattivo su problemi non stazionari, cioè, sui mercati.

2.2 Dove si inserisce ACO nella finanza
PSO è per problemi continui; ACO è per quelli discreti e a forma di percorso. In finanza questo include:
- Selezione di asset come problema di attraversamento di un grafo. Scegliere quale sottoinsieme di un universo detenere, dove i bordi codificano correlazione o transizioni di settore, e il feromone impara quali combinazioni hanno storicamente fornito buoni rendimenti corretti per il rischio.
- Routing ed esecuzione degli ordini. Dividere un grande ordine padre tra diversi mercati e fette temporali per minimizzare l'impatto di mercato e il costo è naturalmente un problema di percorso. Il feromone rinforza le decisioni di routing che storicamente hanno ottenuto buone esecuzioni, e l'evaporazione permette al router di adattarsi mentre la liquidità del mercato cambia intraday.
- Costruzione di regole di trading. Ogni nodo è una condizione o un indicatore; il percorso di una formica attraverso il grafo è una regola composita. La colonia cerca lo spazio combinatorio delle strutture di regole, rinforzando le catene di regole che funzionano bene nei backtest.
Il diagramma sopra mostra il caso dell'esecuzione: la liquidità inattiva deve raggiungere un'esecuzione completata, e la colonia rinforza il percorso (liquidità ad AAPL a NVDA a esecuzione) che ha storicamente minimizzato il costo, con lo spessore dei bordi proporzionale al feromone accumulato.
Lo stesso avvertimento sull'overfitting di PSO si applica con uguale forza. Una colonia che ha rinforzato una catena di regole alla perfezione sui dati storici ha memorizzato il passato, non scoperto il futuro.
Parte 3: Il mercato come sciame
3.1 L'inversione concettuale
Le Parti 1 e 2 hanno usato l'intelligenza dello sciame come uno strumento che puntiamo verso il mercato. La Parte 3 fa un'affermazione più profonda: il mercato è uno sciame, e probabilmente il più grande e consequenziale che gli umani abbiano costruito.
Guarda di nuovo le proprietà che definiscono uno sciame. Decentralizzazione: milioni di partecipanti, nessun controllore centrale, ognuno agisce su informazioni locali parziali. Regole locali semplici: la maggior parte dei partecipanti non sta eseguendo la teoria dei giochi fino alla convergenza; seguono euristiche, momentum, paura, il comportamento dei loro vicini. Emergenza: bolle, crolli, flash crash, clustering di volatilità e rendimenti con code pesanti non sono progettati da nessuno. Emergono dall'interazione.
Questa riformulazione è importante perché la tradizione teorica dominante, l'ipotesi dei mercati efficienti e l'equilibrio delle aspettative razionali, fatica a produrre questi fenomeni endogenamente. In quei modelli, i prezzi equivalgono al valore fondamentale più rumore, e grandi deviazioni richiedono grandi shock esogeni. Ma i mercati crollano senza notizie. Il crollo del 1987, il flash crash del 2010, innumerevoli episodi minori: il prezzo si è mosso violentemente mentre i fondamentali stavano fermi. I modelli di equilibrio spiegano questo assumendo uno shock che nessuno può identificare. I modelli a sciame lo spiegano come emergente, cioè, come il comportamento normale di un sistema di agenti euristici interagenti.
3.2 Modelli basati su agenti
I modelli basati su agenti (ABM) rendono questo concreto. Popoli un mercato simulato con agenti eterogenei, dai a ciascuno regole comportamentali semplici, lasciali negoziare e guarda cosa emerge nel prezzo. Il design più influente è il modello fondamentalista-cartista (Brock e Hommes, Lux e Marchesi, e altri).
- I fondamentalisti credono che il prezzo torni al valore fondamentale. Comprano quando il prezzo è sotto il valore e vendono quando è sopra. Agendo da soli, stabilizzano il mercato.
- I cartisti (seguaci di trend) credono che i movimenti recenti continuino. Comprano perché il prezzo sta salendo e vendono perché sta scendendo. Agendo da soli, destabilizzano.
L'ingrediente decisivo è il cambio: gli agenti non sono bloccati in un tipo. Adottano la strategia che è stata più redditizia di recente e imitano ciò che fanno i loro vicini. Questo è il meccanismo di scelta discreta: la frazione di cartisti aumenta quando il trend-following ha ripagato ultimamente. Questo singolo ciclo di feedback è sufficiente per generare l'intero zoo di fatti stilizzati che i mercati reali mostrano e i modelli di equilibrio no.
Ecco una simulazione fondamentalista-cartista minima ma completa nello spazio dei log-prezzi, con cambio guidato dal profitto:
1import numpy as np23rng = np.random.default_rng(4)4T = 5205log_fund = np.log(100.0) # valore fondamentale costante6logp = [log_fund, log_fund] # log prezzo, necessita di due ritardi7frac_chartist = [0.5] # frazione di popolazione che sono cartisti8beta = 6.0 # intensità di scelta (quanto velocemente gli agenti cambiano)910for t in range(1, T):11 lp, lp1 = logp[-1], logp[-2]12 dev = lp - log_fund # deviazione del prezzo dal fondamentale13 mom = np.clip(lp - lp1, -0.2, 0.2) # momentum recente (ultimo log-rendimento)1415 # Redditività realizzata di ogni regola rispetto all'ultimo movimento effettivo16 actual = mom17 pi_c = np.tanh(60 * mom * actual) # il cartista aveva ragione se il trend continuava18 pi_f = np.tanh(60 * (-0.05 * dev) * actual) # il fondamentalista aveva ragione se invertiva1920 # Scelta discreta: gli agenti fluiscono verso la regola recentemente redditizia (logit)21 ec, ef = np.exp(beta * pi_c), np.exp(beta * pi_f)22 target = ec / (ec + ef)23 target = np.clip(target + 1.8 * abs(mom), 0, 1) # grandi movimenti attirano un gregge che insegue il trend2425 # Inerzia del gregge: la folla si sposta gradualmente, non istantaneamente26 share = np.clip(0.55 * frac_chartist[-1] + 0.45 * target + rng.normal(0, 0.025), 0.02, 0.98)2728 # Impatto sul prezzo: i cartisti estrapolano il momentum, i fondamentalisti tirano verso il valore29 dl = share * 0.95 * mom + (1 - share) * (-0.05 * dev) + rng.normal(0, 0.014)30 dl = np.clip(dl, -0.12, 0.12)3132 logp.append(lp + dl)33 frac_chartist.append(share)3435price = np.exp(np.array(logp[1:]))
Niente in questo codice istruisce il mercato a formare una bolla. Non c'è una variabile "crollo". Eppure, eseguendolo, appaiono bolle e crolli, e si allineano con impennate nella frazione di cartisti: quando il trend-following inizia a pagare, la folla si accumula, il prezzo si stacca dal fondamentale, il distacco alla fine rende il mean-reversion estremamente redditizio, la folla si capovolge e la bolla collassa.

Il pannello superiore è il prezzo che oscilla attorno a un fondamentale piatto di 100, con bolle verso 120 e crolli verso 80. Il pannello inferiore è la frazione di cartisti. I picchi nella quota di gregge che insegue il trend precedono e guidano gli estremi di prezzo. Questo è l'imitazione di massa resa come meccanismo piuttosto che come metafora.
3.3 I fatti stilizzati che emergono gratuitamente
I rendimenti finanziari reali hanno firme statistiche ben documentate che i modelli di cammino casuale gaussiano non riescono a riprodurre. I modelli a sciame basati su agenti li producono endogenamente, senza assunzioni extra:
- Code pesanti (curtosi in eccesso). I rendimenti estremi sono molto più comuni di quanto una distribuzione normale preveda, perché l'imitazione sincronizza gli agenti e amplifica i movimenti.
- Clustering di volatilità. Grandi movimenti seguono grandi movimenti. Quando domina il regime cartista, la volatilità è alta e persistente; quando dominano i fondamentalisti, il mercato è calmo. Il cambio produce il clustering.
- Assenza di autocorrelazione lineare nei rendimenti insieme a forte autocorrelazione nei rendimenti assoluti. Il mercato è imprevedibile nella direzione ma altamente prevedibile nella turbolenza, esattamente come generano gli ABM.
Che un modello di agenti stupidi interagenti riproduca l'impronta statistica precisa dei mercati reali, mentre eleganti modelli di equilibrio hanno bisogno di shock esogeni aggiunti, è la prova più forte che la cornice dello sciame cattura qualcosa di vero su come i prezzi sono realmente fatti.
Parte 4: Un'architettura di riferimento
Se volessi operazionalizzare tutto questo, gli strumenti di ottimizzazione e la lente di simulazione si inseriscono in un unico stack. Il nucleo dello sciame tratta le strategie come particelle e cerca lo spazio delle strategie; il valutatore di fitness esegue backtest walk-forward; un gate di rischio impone vincoli rigidi che nessun ottimizzatore può violare; ACO gestisce il routing dell'esecuzione; e il simulatore basato su agenti può essere usato sia per stress-testare le strategie contro mercati sintetici ma realistici, sia per generare scenari che il record storico non ha mai contenuto.

Il ciclo di feedback è l'anima del design. La fitness e il rischio rimodellano continuamente lo sciame, proprio come in natura l'ambiente rimodella continuamente la colonia. Il gate di rischio non è negoziabile e si trova al di fuori dell'ottimizzazione: uno sciame che ottimizza lo Sharpe, data la possibilità, prenderà una posizione che è ottimale nel backtest e rovinosa in una coda. Il gate è ciò che lo ferma.
Parte 5: Limiti onesti
I metodi a sciame non sono magici, e le modalità di fallimento sono specifiche:
L'overfitting è il rischio dominante. Ogni ottimizzatore a scatola nera è una macchina per trovare l'insieme di parametri che spiega meglio il tuo campione, incluso il suo rumore. Più veloce e potente è l'ottimizzatore, più pericoloso è questo. L'analisi walk-forward e la disciplina fuori campione sono obbligatorie.
Nessuna garanzia di ottimalità. PSO e ACO sono metaheuristica. Di solito trovano soluzioni eccellenti; non dimostrano nulla. Per problemi genuinamente convessi, usa un risolutore convesso e ottieni l'ottimo certificato. Ricorri agli sciami solo quando la struttura di cui i metodi classici hanno bisogno è assente.
Sensibilità agli iperparametri. Peso d'inerzia, coefficienti di accelerazione, dimensione dello sciame, tasso di evaporazione: questi contano, e mettere a punto il tuner rischia un altro strato di overfitting. I default sensati (i valori di costrizione w=0,72, c1=c2=1,49 per PSO) esistono per una buona ragione.
Gli ABM sono esplicativi, non predittivi. I modelli basati su agenti riproducono brillantemente il comportamento qualitativo dei mercati, le bolle e le code pesanti. Non ti dicono il prezzo del prossimo martedì. Il loro valore è nella comprensione del meccanismo, nello stress-test e nella generazione di scenari, non nella previsione puntuale.
La trappola della riflessività. Quando abbastanza capitale gestisce strategie simili scoperte dallo sciame, quelle strategie diventano parte delle dinamiche del mercato e erodono il loro stesso vantaggio. La mappa altera il territorio. Questo non è un difetto del metodo; è la verità più profonda che la cornice dello sciame insegna. Non stai analizzando uno sciame dall'esterno. Sei un agente al suo interno, e la tua scia di feromone cambia dove tutti gli altri andranno dopo.
Finale
Le due metà di questo articolo sono in realtà un'unica idea vista da due angolazioni. L'ottimizzazione a sciame funziona sui problemi finanziari perché quei problemi vivono su paesaggi brutti, ingannevoli e non convessi, e la ricerca stocastica decentralizzata con attrazione sociale è costruita proprio per quel terreno. E la ragione per cui i mercati producono tali paesaggi in primo luogo è che i mercati sono essi stessi sciami: vaste popolazioni di agenti semplici, imitanti e che cambiano, la cui interazione genera emergentemente le bolle, i crolli e le code pesanti che nessun modello di equilibrio intende.
Comprendere il secondo punto ti rende migliore nel primo. Quando ricordi che la superficie che stai ottimizzando è stata generata da uno sciame, smetti di fidarti di un singolo ottimo, rispetti la non stazionarietà, costruisci il gate di rischio e non dimentichi mai che nel momento in cui la tua strategia muove dimensioni reali, hai smesso di essere un osservatore dello sciame e ne sei diventato parte.





