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:
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)}
- Increasing Risk: A Definition and Its Economic Consequences, by Michael Rothschild, Joseph E. Stiglitz