Incertezze


L'incertezza di chi investe in un asset, quindi in buona parte il rischio che corre, è legato alla variabilità del rendimento, quantificabile considerando un opportuno indice di dispersione.
Come per determinare il valore centrale di un insieme di dati si può scegliere, a seconda del particolare contesto, tra a diverse modalità, la media aritmetica, geometrica, armonica, la mediana, la moda, ... , così, a seconda della specifica esigenza, si può ricorrere a numerosi indici di dispersione per valutare quanto i dati sono "sparpagliati".

Nel seguito sono elencati gli indici di dispersione principali, dal più semplice al più sofisticato, con esempio di uso in ambito finanziario.

Indicatore Formula Unità Sensibilità ai valori estremi Uso tipico in finanza
Range Campionario \( \max - \min \) Come i dati Massima Volatilità storica massima, usata nel trading come Average True Range(ATR), media mobile smussata a 14 periodi del "True Range".
Range Interquartile
(IQR)
\( Q_3 - Q_1 \) Come i dati Bassa Ignora il 25% dei valori più piccoli e il 25% dei più grandi, dando una misura di dispersione robusta (resistente agli outlier); usata per identificare i giorni anomali: un rendimento che supera \( Q_3 + 1.5 \times IQR \) è un potenziale outlier.
Scostamento semplice medio \( \frac{1}{n}\sum |x_i - \bar{x}| \) Come i dati Moderata A volte usata come misura di volatilità alternativa, ma meno comune della deviazione standard.
Scostamento medio dalla mediana \(\text{m}\) \(\displaystyle \frac{1}{n}\sum_i|x_i - \text{m}| \) Come i dati Molto bassa Versione robusta della volatilità, è sempre inferiore allo scostamento semplice medio dalla media aritmetica poiché la mediana minimizza la somma degli scarti assoluti. Se c'è un crollo del mercato la deviazione standard esplode mentre lo scostamento medio dalla mediana rimane molto più stabile.
Varianza
(σ²)
\( \frac{1}{n-1}\sum (x_i - \bar{x})^2 \) Al quadrato Alta Variabilità teorica.
Deviazione Standard
(σ)
\( \sqrt{σ²} \) Come i dati Alta Indicatore standard della volatilità, base del modello Black-Scholes, è additiva per variabili indipendenti (la varianza di una somma è la somma delle varianze) e ha proprietà matematiche eccellenti. Elevare al quadrato le differenze dà peso enorme agli outlier. Un singolo rendimento del -10% influisce sulla varianza 100 volte più di un rendimento dell'1%.
Coefficiente di Variazione
(CV)
\( \frac{\sigma}{\bar{x}} \) Adimensionale Alta Consente il confronto tra volatilità di asset diversi. È adimensionale, quindi permette di confrontare la dispersione relativa di asset con scale diverse. Ad esempio confrontando due asset:
  • rendimento medio 10% annuo e volatilità 15%, CV = 1.5;
  • rendimento medio 20% annuo e volatilità 20%, CV = 1.0.
Anche se la volatilità assoluta del secondo è più alta, la sua dispersione relativa è minore.
Il reciproco del CV è, approssimato, lo Sharpe Ratio.
Entropia (di Shannon) \( -\sum p_i \log p_i \) Bits/nats Bassa Misura la complessità informazionale, il grado di "disordine" o "incertezza" della distribuzione. Un titolo che ha rendimenti sempre tra -0.5% e +0.5% ha bassa entropia (comportamento prevedibile). Un titolo con rendimenti sparsi su tutto l'intervallo -10% a +10% ha alta entropia (comportamento complesso).
Gini (concentrazione) \( \frac{\sum\sum |x_i - x_j|}{2n^2\bar{x}} \) Adimensionale Moderata Misura quanto la distribuzione è concentrata (0 quando i dati sono tutti uguali, 1 quando tutta la concentrazione in un solo dato). Misura la concentrazione dei flussi in un portafoglio o la disuguaglianza tra i rendimenti dei singoli asset.

Ecco come questi indicatori si comportano su un campione di rendimenti giornalieri dell'S&P 500 i cui dati vengono scaricati con yfinance.download() e sui quali si utilizzano i metodi disponibili per gli oggetti DataFrame e quelli disponibili nel modulo scipy.stats.

import numpy as np import pandas as pd import yfinance as yf from scipy.stats import entropy, iqr # Scarica dati sp500 = yf.download('^GSPC', period='1y') returns = sp500.Close.pct_change().dropna() * 100 # in percentuale # Calcola indicatori mean_val = returns.mean().item() std_val = returns.std().item() max_val = returns.max().item() min_val = returns.min().item() median_val = returns.median().item() skew_val = returns.skew().item() kurtosis_val = returns.kurtosis().item() hist, bins = np.histogram(returns, bins=50, density=True) prob = hist / hist.sum() entropy_value = entropy(prob) # in nats statistics = { 'Range (max-min)': max_val - min_val, 'IQR (Q3-Q1)': iqr(returns.values), # iqr aspetta un array-like, non un DataFrame/Series 'MAD dalla media': np.mean(np.abs(returns.values - mean_val)), 'Median Absolute Deviation': np.median(np.abs(returns.values - median_val)), 'Deviazione Standard (σ)': std_val, 'Coefficiente di Variazione (CV)': std_val / mean_val if mean_val > 0 else np.nan, 'Asimmetria (Skew)': skew_val, 'Curtosi (Kurtosis)': kurtosis_val, 'Entropia': entropy_value, # in nats } statistics
{'Range (max-min)': 5.9670455960421975, 'IQR (Q3-Q1)': np.float64(0.8952298975840267), 'MAD dalla media': np.float64(0.5836916842363395), 'Median Absolute Deviation': np.float64(0.45029967892123435), 'Deviazione Standard (σ)': 0.7874578737222645, 'Coefficiente di Variazione (CV)': 7.138437081273342, 'Asimmetria (Skew)': 0.06885172354935369, 'Curtosi (Kurtosis)': 1.9556516211188497, 'Entropia': np.float64(3.1380598732771174)}

Riferimenti sito/bibliografici