Scommesse
Consideriamo una serie di scommesse sull'esito di una moneta senza sapere se sia squilibrata e quanto, perdendo, se non si indovina, quanto si vince indovinando.
Affidandoci a una teoria basata sulle ipotesi Hi = "esce T con probabilità i %" per i=0,10,20,..,100, inizialmente considerate equiprobabili, potremmo affidarci a una strategia bayesiana come la seguente:
- per la prima puntata decideremo completamente a caso;
- per le puntate seguenti
- sulla base dell'esito della puntata precedente si aggiornano le \(p(H_i);\)
- le successive puntata saranno coerenti con la fiducia nelle ipotesi così rinnovata, ad esempio considerando l'ipotesi che gode della maggior fiducia - come nella simulazione a seguire -, oppure puntando su Testa solo se \(p(H_{50})+p(H_{60})+\dots+p(H_{100})>0.50.\)
lanci,
Distribuzione di perdite e guadagni
in media -Ne possiamo dedurre che la strategia è utile quando la moneta non è equilibrata.
C'è tuttavia da aggiungere che non si discosta molto da una strategia frequentista secondo cui, dopo una prima puntata del tutto casuale, si punta poi sulla faccia uscita con più frequenza.
Distribuzione di perdite e guadagni con strategia su frequenze
in media -La decisione compra/vendi di un asset è analogo allo scommettere testa/croce con il bias della moneta che cambia nel tempo; nel caso finanziario l'analogo della moneta è la direzione del prossimo rendimento, il regime di mercato, la volatilità attesa.
Ad ogni istante \(t\) si ha una credenza sullo stato del mercato, si osserva il nuovo rendimento \(r_t,\) si aggiorna la credenza, e si prende la decisione:
$$\underbrace{p(\theta | r_{1:t-1})}_{\text{prior}} \xrightarrow{\;\text{osservo } r_t\;} \underbrace{p(\theta | r_{1:t})}_{\text{posterior}} \xrightarrow{\;\text{decisione}\;} \{+1,\, 0,\, -1\}$$
dove \(\theta\) è il parametro latente di interesse e la decisione è long, flat, o short.
Si possono seguire diverse strategie.
- Stima Bayesiana del Drift Il modello più semplice: i rendimenti sono i.i.d. gaussiani con media \(\mu\) ignota (il drift) e varianza \(\sigma^2\) nota. $$r_t \sim \mathcal{N}(\mu, \sigma^2), \qquad \mu \sim \mathcal{N}(\mu_0, \tau^2)$$ La prior gaussiana è coniugata alla likelihood gaussiana, e la posterior dopo \(n\) osservazioni è ancora gaussiana: $$\mu \mid r_{1:n} \sim \mathcal{N}(\mu_n, \tau_n^2)$$ con aggiornamento esplicito: $$\frac{1}{\tau_n^2} = \frac{1}{\tau_0^2} + \frac{n}{\sigma^2}, \qquad \mu_n = \tau_n^2 \left(\frac{\mu_0}{\tau_0^2} + \frac{\sum r_t}{\sigma^2}\right)$$ La regola di trading naturale è: $$\text{segnale}_t = \text{sign}\bigl(P(\mu > 0 \mid r_{1:t})\bigr) = \text{sign}\!\left(1 - \Phi\!\left(\frac{-\mu_t}{\tau_t}\right) - 0.5\right)$$ Ovvero: compra se la posterior probability che il drift sia positivo supera una soglia, vendi (o esci) altrimenti. La soglia può incorporare i costi di transazione — non si cambia posizione se la probabilità è vicina al 50%.
- Hidden Markov Model (HMM) con Filtro di Bayes
Il mercato alterna regimi — bull, bear, alta volatilità — che non si osservano direttamente. Il modello: $$S_t \in \{1, 2, \ldots, K\}, \qquad S_t \mid S_{t-1} \sim \text{Markov}(\Pi)$$ $$r_t \mid S_t = k \sim \mathcal{N}(\mu_k, \sigma_k^2)$$ Ad ogni passo il filtro di Bayes aggiorna la probabilità di essere in ciascun regime: $$p(S_t = k \mid r_{1:t}) \propto p(r_t \mid S_t = k) \sum_j \Pi_{jk}\, p(S_{t-1} = j \mid r_{1:t-1})$$ Questo è esattamente il filtro di Hamilton (1989), usatissimo in econometria. La regola di trading usa la probabilità filtrata del regime bull: $$\text{peso}_t = p(S_t = \text{bull} \mid r_{1:t})$$ Si va long proporzionalmente alla credenza di essere in un regime favorevole — non tutto dentro / tutto fuori, ma una posizione graduata. - Thompson Sampling (Bandit Bayesiano)
Questo è il collegamento più diretto con testa/croce. Si trattano le decisioni di trading come un problema multi-armed bandit: ogni "braccio" è una strategia (momentum, mean-reversion, buy-and-hold), e si vuole allocare il capitale imparando qual è la migliore. Per ogni strategia \(i\) si mantiene una Beta posterior sulla sua probabilità di generare un rendimento positivo: $$p_i \sim \text{Beta}(\alpha_i, \beta_i)$$ Ad ogni periodo:- si campiona \(\tilde{p}_i \sim \text{Beta}(\alpha_i, \beta_i)\) per ogni strategia,
- si alloca capitale alla strategia con \(\tilde{p}_i\) più alto,
- si osserva il rendimento e si aggiorna \(\alpha_i\) o \(\beta_i.\)
- Bayesian Portfolio con Incertezza sui Parametri
Il problema classico di Markowitz assume \(\mu\) e \(\Sigma\) noti. In realtà sono stimati con errore, e ignorare questa incertezza porta a over-concentration nei portafogli ottimizzati.
L'approccio bayesiano di Black-Litterman (e la sua estensione di Pástor-Stambaugh) pone: $$\mu \sim \mathcal{N}(\pi, \tau \Sigma)$$ dove \(\pi\) è il rendimento di equilibrio CAPM (prior "di mercato"). Le views dell'investitore — "mi aspetto che l'asset A sovraperformi B del 2%" — si esprimono come likelihood aggiuntive e aggiornano la prior tramite Bayes: $$\mu_{\text{post}} = \left[(\tau\Sigma)^{-1} + P^\top \Omega^{-1} P\right]^{-1} \left[(\tau\Sigma)^{-1}\pi + P^\top \Omega^{-1} q\right]$$ dove \(P\) codifica le views e $\Omega$ la fiducia in esse. Il peso bayesiano bilancia il mercato e le proprie opinioni in modo coerente.
Tutto questo è matematicamente elegante, ma in pratica:
- la distribuzione dei rendimenti cambia nel tempo per cui una posterior costruita su 5 anni di dati può riflettere un regime ormai passato; così si usano prior con "dimenticanza" esponenziale o finestre rolling.
- un modello con molti parametri latenti si adatta ai dati storici ma non generalizza. La scelta della prior diventa cruciale e non neutrale (Overfitting bayesiano);
- nei regimi di switch rapido (es. crash del 2020), il filtro di Bayes impiega diversi periodi per aggiornare la credenza (latenza della posterior) e nel frattempo si è già dalla parte sbagliata;
- più è alta l'incertezza sui parametri (prior vaga), più la t predittiva ha code pesanti, più il modello suggerisce posizioni conservative (paradosso dell'incertezza); in certi regimi questo è corretto; in altri fa perdere rendimento.
In particolare il Filtro HMM a Due Regimi postula che il mercato si trovi sempre in uno di due stati nascosti — Bull ovvero compra prevedendo rialzo del rendimento (\(S=0\)) o Bear ovvero vendi prevedendo ribasso (\(S=1\)) — che non si osservano direttamente. Si osservano solo i rendimenti \(r_t,\) rumorosi e ambigui.
Il modello ha tre componenti:
- la distribuzione iniziale dove si pensa di essere al tempo zero $$\pi_0 = [P(S_0 = \text{Bull}),\; P(S_0 = \text{Bear})] = [0.5,\; 0.5];$$
- la matrice di transizione — quanto è probabile passare da un regime all'altro in un passo $$\Pi = \begin{pmatrix} 1-p_{b \to be} & p_{b \to be} \\ p_{be \to b} & 1-p_{be \to b} \end{pmatrix} = \begin{pmatrix} \Pi_{BB} & \Pi_{BBe} \\ \Pi_{BeB} & \Pi_{BeBe} \end{pmatrix},$$ dove se \(p_{b \to be} = 0.05,\;\;p_{be \to b} = 0.10,\) il regime Bull dura in media \(1/0.05 = 20\) periodi, il Bear \(1/0.10 = 10\) periodi;
- il likelihood di emissione — la distribuzione dei rendimenti dato il regime: $$r_t \mid S_t = \text{Bull} \sim \mathcal{N}(\mu_B, \sigma_B^2)$$ $$r_t \mid S_t = \text{Bear} \sim \mathcal{N}(\mu_{Be}, \sigma_{Be}^2).$$
- Predict (Chapman-Kolmogorov)
Prima di osservare \(r_t\) si propaga la belief di ieri attraverso la matrice di transizione: $$\bar{\pi}_t^{(k)} = P(S_t = k \mid r_{1:t-1}) = \sum_j \pi_{t-1}^{(j)} \cdot \Pi_{jk}$$ In forma matriciale: $$\bar{\pi}_t = \pi_{t-1} \cdot \Pi$$ Questo stadio aumenta l'incertezza: se ieri ero sicuro al 90% di essere in Bull, oggi — prima di vedere il rendimento — devo tenere conto che con probabilità \(p_{b \to be}\) il mercato potrebbe essere transitato in Bear. - Update (Bayes)
Arrivato il rendimento \(r_t\) si calcola la likelihood sotto ciascun regime considerando che i rendimenti seguono una gaussiana con parametri \((\mu_k, \sigma_k):\) $$\ell_t^{(k)} = p(r_t \mid S_t = k) = \frac{1}{\sigma_k\sqrt{2\pi}} \exp\!\left(-\frac{(r_t - \mu_k)^2}{2\sigma_k^2}\right)$$ Si aggiorna per Bayes — esattamente come testa/croce, moltiplicando prior per likelihood e normalizzando: $$\pi_t^{(k)} = \frac{\bar{\pi}_t^{(k)} \cdot \ell_t^{(k)}}{\sum_j \bar{\pi}_t^{(j)} \cdot \ell_t^{(j)}}$$ Il denominatore \(Z_t = \sum_j \bar{\pi}_t^{(j)} \cdot \ell_t^{(j)}\) è la verosimiglianza marginale del rendimento osservato — utile anche per la stima dei parametri via EM (algoritmo di Baum-Welch).
Stato iniziale: \(\pi_0 = [0.7, 0.3]\) — leggera preferenza per Bull.
Arriva \(r_t = -1.8\%\) — un rendimento molto negativo: $$\ell^{(\text{Bull})} = \frac{1}{0.5/100\sqrt{2\pi}} \exp\!\left(-\frac{(-1.8/100 - 0.8/100)^2}{2(0.5/100)^2}\right) \approx 0.0679$$ $$\ell^{(\text{Bear})} = \frac{1}{1.2/100\sqrt{2\pi}} \exp\!\left(-\frac{(-1.8/100 + 0.10/100)^2}{2(1.2/100)^2}\right) \approx 12.19$$ La likelihood Bear è circa 180 volte più alta. Dopo l'update: $$\pi_t^{(\text{Bull})} \propto 0.7 \times 0.0679 \approx 0.0475$$ $$\pi_t^{(\text{Bear})} \propto 0.3 \times 12.19 \approx 3.657$$ Normalizzando: \(\pi_t \approx [0.013,\; 0.987]\) — un singolo rendimento di \(-1.8\%\) ha spostato la belief da \([0.7, 0.3]\) a \([0.013, 0.987]\) — filtro reagisce immediatamente.
La regola per il segnale di trading è diretta: $$\text{posizione}_t = \begin{cases} \text{Long} & \text{se } \pi_t^{(\text{Bull})} \geq \theta \\ \text{Flat} & \text{altrimenti} \end{cases}$$ dove \(\theta\) è la soglia (default 0.65). Non si va mai short in questo schema, ma si può estendere facilmente introducendo un'opportuna soglia inferiore per la posizione Short.
La soglia \(\theta\) ottimale in presenza di costi di transazione \(c\) si trova risolvendo un problema di stopping ottimo: non conviene cambiare posizione se il guadagno atteso è inferiore al costo. Questo genera naturalmente una banda di inattività \([\theta_{\text{sell}}, \theta_{\text{buy}}]\) con \(\theta_{\text{sell}} < 0.5 < \theta_{\text{buy}}.\)
Il filtro di Bayes per HMM a stati discreti è esatto, non un'approssimazione. Con stati continui (es. volatilità stocastica) il filtro sarebbe intrattabile e si userebbe un filtro a particelle. Con due stati, si mantengono esattamente due numeri ad ogni passo, con costo computazionale \(O(K^2)\) per passo dove \(K=2.\)
In pratica \(\mu_k,\;\sigma_k,\; \Pi\) sono ignoti e vanno stimati dai dati. Si usa l'algoritmo Baum-Welch, che è l'algoritmo EM applicato agli HMM:
- E-step: dato \(\Pi\) e le emissioni correnti, calcola le probabilità di occupazione di ogni stato (forward-backward algorithm)
- M-step: aggiorna \(\mu_k,\; \sigma_k,\; \Pi\) come medie pesate con pesi dati dall'E-step Si itera fino a convergenza della log-likelihood \(\sum_t \log Z_t.\)