Misurare il rischio

Gestione quantitativa del rischio in Python

Jamsheed Shorish

CEO, Shorish Research

La distribuzione delle perdite

  • Esempio Forex:
    • Valore del portafoglio in dollari USA: USD 100
    • Fattore di rischio = tasso di cambio EUR / USD
    • Valore del portafoglio in EURO se 1 EUR = 1 USD: USD 100 x EUR 1 / USD 1 = EUR 100.
    • Valore del portafoglio in EURO se r EUR = 1 USD: = USD 100 x EUR r / 1 USD = EUR 100 x r
    • Perdita = EUR 100 - EUR 100 x r = EUR 100 x (1 - r)
  • Distribuzione delle perdite: realizzazioni casuali di r => distribuzione delle perdite del portafoglio nel futuro

Istogramma delle perdite forex

Gestione quantitativa del rischio in Python

Perdita massima

  • Qual è la perdita massima di un portafoglio?
  • Le perdite non possono essere limitate con certezza al 100%
  • Livello di confidenza: sostituisce la certezza al 100% con la probabilità di un limite superiore
  • Possiamo chiedere: «Qual è la perdita massima che si verifica nel 95% dei casi?»
    • Qui il livello di confidenza è 95%.
Gestione quantitativa del rischio in Python

Value at Risk (VaR)

  • VaR: statistica che misura la perdita massima del portafoglio a un dato livello di confidenza
  • Livelli tipici di confidenza: 95%, 99% e 99,5% (di solito espressi in decimali)
  • Esempio Forex: se per il 95% del tempo il tasso EUR/USD è almeno 0,40, allora:
    • il valore del portafoglio è almeno USD 100 x 0,40 EUR / USD = EUR 40,
    • la perdita del portafoglio è al massimo EUR 40 - EUR 100 = EUR 60,
    • quindi il VaR al 95% è EUR 60.

Serie storica del tasso EUR/USD con soglia 0,40

Gestione quantitativa del rischio in Python

Conditional Value at Risk (CVaR)

  • CVaR: misura la perdita attesa dato una perdita minima uguale al VaR
  • È pari al valore atteso della coda della distribuzione delle perdite:
    • $$\textnormal{CVaR}(\alpha) := \frac{1}{1-\alpha}\mathbb{E} \int_{\textnormal{VaR}(\alpha)}^{\bar{x}} x f(x) dx,$$
    • $f(\cdot)$ = pdf della distribuzione delle perdite
    • $\bar{x}$ = limite superiore della perdita (può essere infinito)
    • $\textnormal{VaR}(\alpha)$ = VaR al livello di confidenza $\alpha$.
  • Esempio Forex:
    • CVaR 95% = perdita attesa per il 5% dei casi in cui il valore del portafoglio è inferiore a EUR 40

Grafico della distribuzione delle perdite con dipendenza tra VaR e coda del CVaR

Gestione quantitativa del rischio in Python

Derivare il VaR

  1. Specifica il livello di confidenza, es. 95% (0,95)
  2. Crea una Series di osservazioni loss
  3. Calcola loss.quantile() al livello di confidenza indicato
  4. VaR = .quantile() calcolato al livello desiderato

  5. Distribuzione delle perdite con scipy.stats: si può usare la percent point function .ppf()

loss = pd.Series(observations)

VaR_95 = loss.quantile(0.95) print("VaR_95 = ", VaR_95)
Var_95 = 1.6192834157254088
Gestione quantitativa del rischio in Python

Derivare il CVaR

  1. Specifica il livello di confidenza, es. 95% (0,95)
  2. Crea o usa un campione dalla distribuzione delle perdite
  3. Calcola il VaR a un livello di confidenza specifico, es. 0,95
  4. Calcola il CVaR come perdita attesa (distribuzione Normale: scipy.stats.norm.expect() lo fa).
losses = pd.Series(scipy.stats.norm.rvs(size=1000))

VaR_95 = scipy.stats.norm.ppf(0.95)
CVaR_95 = (1/(1 - 0.95))*scipy.stats.norm.expect(lambda x: x, lb = VaR_95)
print("CVaR_95 = ", CVaR_95)
CVaR_95 = 2.153595332530393
Gestione quantitativa del rischio in Python

Visualizzare il VaR

  • Istogramma della distribuzione delle perdite per 1000 estrazioni da N(1,3)

Istogramma di perdite distribuite normalmente

Gestione quantitativa del rischio in Python

Visualizzare il VaR

  • Istogramma della distribuzione delle perdite per 1000 estrazioni da N(1,3)
    • VaR$_{95}$ = 5,72, cioè VaR al 95% di confidenza

Istogramma delle perdite con VaR al 95%

Gestione quantitativa del rischio in Python

Visualizzare il VaR

  • Istogramma della distribuzione delle perdite per 1000 estrazioni da N(1,3)
    • VaR$_{95}$ = 5,72, cioè VaR al 95% di confidenza
    • VaR$_{99}$ = 7,81, cioè VaR al 99% di confidenza

Istogramma delle perdite con VaR al 95% e 99%

Gestione quantitativa del rischio in Python

Visualizzare il VaR

  • Istogramma della distribuzione delle perdite per 1000 estrazioni da N(1,3)
    • VaR$_{95}$ = 5,72, cioè VaR al 95% di confidenza
    • VaR$_{99}$ = 7,81, cioè VaR al 99% di confidenza
    • VaR$_{99.5}$ = 8,78, cioè VaR al 99,5% di confidenza
  • La misura VaR aumenta al crescere del livello di confidenza

Istogramma delle perdite con VaR al 95%, 99% e 99,5%

Gestione quantitativa del rischio in Python

Esercitiamoci!

Gestione quantitativa del rischio in Python

Preparing Video For Download...