La stima del rischio di perdite per una strategia di trading algoritmica, o portafoglio di strategie, è di estrema importanza per la crescita del capitale a lungo termine. Molte tecniche per la gestione del rischio sono state sviluppate per l’uso in contesti istituzionali. Una tecnica in particolare, nota come Value at Risk, o VaR, sarà l’argomento di questo articolo.
Applicheremo il concetto di VaR a una singola strategia o a una serie di strategie per aiutarci a quantificare il rischio nel nostro portafoglio di trading. La definizione di VaR è la seguente:
Il VaR fornisce una stima, con un certo grado di confidenza, delle dimensioni delle perdite di un portafoglio in un determinato periodo di tempo.
In questo caso, il “portafoglio” può riferirsi a una singola strategia, a un gruppo di strategie, agli ordini di un trader, a un desk, a un hedge fund o a un’intera banca d’investimento. Il “grado di confidenza” è un valore, di solito pari al 95% o 99%. Il “determinato periodo di tempo” sarà scelto come il periodo di tempo che produrrebbe il minimo market impact se un portafoglio dovesse essere liquidato, cioè, secondo un’altro punto di vista, la lunghezza del periodo di detenzione di un dato asset nel portafoglio (holding period).
Ad esempio, un VaR pari a 500.000 USD con un livello di confidenza del 95% per un periodo di tempo di un giorno significa semplicemente che esiste una probabilità del 95% di perdere non più di 500.000 USD nel giorno successivo. Matematicamente questo è affermato come:
\(\begin{eqnarray}
P(L \leq -5.0 \times 10^5) = 0.05
\end{eqnarray}\)
O, più in generale, per la perdita L che supera un valore VaR con un livello di confidenza c si ha:
\(\begin{eqnarray}
P(L \leq -VaR) = 1-c
\end{eqnarray}\)
L’uso del VaR come misura di rischio presuppone l’ipotesi di normalità dei rendimenti, secondo la quale le perdite e i ricavi dell’investimento si distribuiscono secondo una normale con media pari al rendimento medio e varianza pari alla volatilità dell’investimento. Per il calcolo della varianza di portafoglio è necessario conoscere le correlazioni reciproche fra i titoli facenti parte del portafoglio, facendo ricorso alla matrice di varianze e covarianze.
È importante notare che il VaR non può anticipare cambiamenti nella composizione del portafoglio durante la giornata. Invece, riflette il rischio del portafoglio, data l’attuale composizione del portafoglio.
Il calcolo “standard” del VaR formula le seguenti ipotesi:
- Condizioni di mercato standard – Il VaR non dovrebbe considerare gli eventi estremi o “risk tail”, piuttosto dovrebbe fornire l’aspettativa delle perdite durante la normale operatività zione normale “day per day”.
- Volatilità e correlazioni – Il VaR richiede la volatilità delle attività in esame, nonché le rispettive correlazioni. Queste due quantità sono difficili da stimare e sono soggette a cambiamenti continui.
- Normalità dei resi – il VaR, nella sua forma standard, presuppone che i rendimenti dell’asset o del portafoglio siano normalmente distribuiti. Ciò porta a calcoli analitici più semplici, ma approssima NON realisticamente per la maggior parte delle attività.
Vantaggi e Svantaggio
Il VaR è pervasivo nel settore finanziario, quindi dovresti avere familiarità con i vantaggi e gli svantaggi della tecnica. Alcuni dei vantaggi del VaR sono i seguenti:
- Il VaR è molto semplice da calcolare per le singole attività, le strategie algoritmiche, i portafogli quantistici, gli hedge fund e anche per i desk bancari.
- Il periodo di tempo associato al VaR può essere modificato per diverse strategie di trading che hanno orizzonti temporali diversi.
- Differenti valori del VaR possono essere associati a diverse forme di rischio, per esempio suddivise per classi di asset o tipologie di strumento. Ciò rende facile interpretare, ad esempio, dove si concentra la maggior parte del rischio del portafoglio.
- Le singole strategie possono essere limitate all’interno di interi portafogli in base al singolo VaR.
- Il VaR è semplice da interpretare dagli investitori e dei gestori di fondi esterni (potenzialmente) non tecnici.
Tuttavia, il VaR non è privo di svantaggi:
- Il VaR non quantifica l’entità della perdita attesa oltre al valore del VaR, cioè valuta la probabilità di avere una perdita superiore ad uno specifico valore, ma non di quanto superi questo valore.
- Non tiene conto di eventi estremi, ma solo delle condizioni tipiche di mercato.
- Dal momento che utilizza i dati storici (è retrospettivo) non prenderà in considerazione i dati futuri del mercato che possono modificare le volatilità e le correlazioni tra gli asset.
- Il VaR non deve essere usato in autonomia. Dovrebbe essere sempre utilizzato all’interno di una suite di tecniche per la gestione del rischio, come la diversificazione, l’allocazione ottimale del portafoglio e l’uso prudente della leva finanziaria.
Metodo di Calcolo
Finora non abbiamo descritto come calcolare effettivamente il VaR, né nel caso generale né in un concreto esempio di trading. Ci sono tre tecniche principali:
il metodo varianza-covarianza, assumendo che i rendimenti sono sempre distribuiti secondo una normale);
il metodo Monte Carlo, dove i rendimenti futuri delle attività sono simulate in maniera più o meno casuale, dati alcuni parametri;
la simulazione storica, dove si assume che i rendimenti delle attività si distribuiranno come si sono distribuite in passato.
In questo articolo ci concentreremo sul metodo Varianza-covarianza e negli articoli successivi considereremo i metodi Monte Carlo e la Simulazione Storica.
Metodo della Varianza-Covarianza
Si considera un portafoglio di P dollari, con un livello di confidenza c. Inoltre si considerano i profitti giornalieri, con una deviazione standard storica patrimoniale (o della strategia) σ e la media μ. In questo caso il VaR giornaliero, con il metodo varianza-covarianza per un singolo asset (o strategia) viene calcolato come:
\(\begin{eqnarray}
P – \left( P (\alpha(1-c) + 1) \right)
\end{eqnarray}\)
Dove α è l’inverso della funzione di distribuzione cumulativa di una distribuzione normale con media μ e deviazione standard σ.
In un ambiente Python possiamo usare le librerie SciPy e Pandas per calcolare questi valori. Se impostiamo \(P=10^6\) e \(c=0.99\), possiamo usare il metodo ppf di SciPy per generare i valori della funzione di distribuzione cumulativa inversa per una distribuzione normale, dove μ e σ sono ottenuti da alcuni dati finanziari reali.
Nel seguente codice si utilizzano i rendimenti giornalieri storici di CitiGroup (ma si può facilmente sostituire questi valori con i profitti di una strategia algoritmica):
# var.py
import datetime
import numpy as np
from pandas_datareader import data as pdr
from scipy.stats import norm
def var_cov_var(P, c, mu, sigma):
"""
Calcolo della varianza-covarianza del Value-at-Risk giornaliero
utilizzando il livello di confidenza c, con media dei rendimenti mu
e la deviazione standard dei rendimenti sigma, su un portafoglio
di valore P.
"""
alpha = norm.ppf(1-c, mu, sigma)
return P - P*(alpha + 1)
if __name__ == "__main__":
ticker = "C"
start = datetime.datetime(2010, 1, 1)
end = datetime.datetime(2014, 1, 1)
citi = pdr.get_data_yahoo(ticker, start, end)
citi["rets"] = citi["Adj Close"].pct_change()
P = 1e6 # 1,000,000 USD
c = 0.99 # 99% intervallo di confidenza
mu = np.mean(citi["rets"])
sigma = np.std(citi["rets"])
var = var_cov_var(P, c, mu, sigma)
print("Value-at-Risk: {}0.2f".format(var))
Il valore calcolato del VaR è dato da:
Value-at-Risk: $ 56510.29
Il VaR è una tecnica estremamente utile e amapiamente utilizzata in tutti i settori della gestione finanziaria, ma non è esente da difetti. Dobbiamo ancora discutere il valore reale di ciò che potrebbe essere perso in un portafoglio, piuttosto che il numero di volte che tale perdita superi una specifica soglia.
Nei successi articoli si introdurranno alcuni metodi alternativi per calcolare il VaR, e soprattutto delineeremo il concetto di Expected Shortfall (noto anche come Value at Risk Condizionale), che fornisce una probabilità alla perdita di una determinata quantità.
Per il codice completo riportato in questo articolo utilizzando il modulo di backtesting vettoriale VectorBacktest si può consultare il seguente repository di github:
https://github.com/datatrading-info/VectorBacktest