Bun venit!

Managementul Cantitativ al Riscului în Python

Dr. Jamsheed Shorish

Computational Economist

Despre mine

  • Economist computațional
  • Specializare în:
    • prețurile activelor
    • tehnologii financiare („FinTech")
    • aplicații informatice în economie și finanțe
  • Co-instructor, „Analiza economică a economiei digitale" la ANU
  • Shorish Research (Belgia): aplicații de afaceri computaționale
Managementul Cantitativ al Riscului în Python

Ce este managementul cantitativ al riscului?

  • Managementul cantitativ al riscului: studiul incertitudinii cuantificabile
  • Incertitudine:
    • Rezultatele viitoare sunt necunoscute
    • Rezultatele influențează deciziile de planificare
  • Managementul riscului: atenuarea (reducerea efectelor) rezultatelor negative
  • Incertitudine cuantificabilă: identificarea factorilor de măsurare a riscului
    • Exemplu: Asigurare împotriva incendiilor. Ce factori cresc probabilitatea unui incendiu?
  • Acest curs: accent pe riscul asociat unui portofoliu financiar
Managementul Cantitativ al Riscului în Python

Managementul riscului și criza financiară globală

  • Marea Recesiune (2007–2010)
    • Pierderi globale de creștere de peste 2 trilioane USD
    • Statele Unite: aproape 10 trilioane USD pierdute din avuția gospodăriilor
    • Piețele bursiere americane au pierdut aprox. 8 trilioane USD
  • Criza financiară globală (2007–2009)
    • Modificări majore ale valorii fundamentale a activelor
    • Incertitudine masivă privind randamentele viitoare
    • Volatilitate ridicată a randamentelor activelor
    • Managementul riscului, esențial pentru succes sau eșec
Managementul Cantitativ al Riscului în Python

Recapitulare: portofolii financiare

  • Portofoliu financiar
    • Colecție de active cu randamente viitoare incerte
    • Acțiuni
    • Obligațiuni
    • Dețin valutare ('forex')
    • Opțiuni pe acțiuni
  • Provocare: cuantificarea riscului pentru gestionarea incertitudinii
    • Luarea deciziilor optime de investiție
    • Maximizarea randamentului portofoliului, condiționat de apetitul pentru risc
Managementul Cantitativ al Riscului în Python

Cuantificarea randamentului

  • Randamentul portofoliului: suma ponderată a randamentelor individuale ale activelor
    • Biblioteca de analiză a datelor Pandas
    • DataFrame prices
    • Metoda .pct_change()
    • Metoda .dot() a returns
prices = pandas.read_csv("portfolio.csv")

returns = prices.pct_change()
weights = (weight_1, weight_2, ...)
portfolio_returns = returns.dot(weights)
Managementul Cantitativ al Riscului în Python

Cuantificarea riscului

  • Volatilitatea randamentului portofoliului = risc
  • Calculați volatilitatea prin matricea de covarianță
  • Utilizați metoda .cov() din DataFrame returns și anualizați

 

 

covariance = returns.cov()*252

print(covariance)

Exemplu de matrice de covarianță pentru 4 active

Managementul Cantitativ al Riscului în Python

Cuantificarea riscului

  • Volatilitatea randamentului portofoliului = risc
  • Calculați volatilitatea prin matricea de covarianță
  • Utilizați metoda .cov() din DataFrame returns și anualizați
  • Diagonala din covariance reprezintă variațiile individuale ale activelor  

   

covariance = returns.cov()*252

print(covariance)

Exemplu de matrice de covarianță cu variațiile evidențiate pe diagonală

Managementul Cantitativ al Riscului în Python

Cuantificarea riscului

  • Volatilitatea randamentului portofoliului = risc
  • Calculați volatilitatea prin matricea de covarianță
  • Utilizați metoda .cov() din DataFrame returns și anualizați
  • Diagonala din covariance reprezintă variațiile individuale ale activelor
  • Elementele non-diagonale din covariance sunt covarianțele dintre active
covariance = returns.cov()*252

print(covariance)

Exemplu de matrice de covarianță cu covarianțele evidențiate pe elementele non-diagonale

Managementul Cantitativ al Riscului în Python

Riscul portofoliului

  • Depinde de weights (ponderile) activelor din portofoliu
  • Variația portofoliului $\sigma_p^2$ este $$ \sigma_p^2 := w^T \cdot \textnormal{Cov}_p \cdot w $$
  • Înmulțirea matriceală se poate efectua cu operatorul @ în Python
  • Se utilizează de obicei abaterea standard în loc de variație
weights = [0.25, 0.25, 0.25, 0.25] # Assumes four assets in portfolio

portfolio_variance = np.transpose(weights) @ covariance @ weights
portfolio_volatility = np.sqrt(portfolio_variance)
Managementul Cantitativ al Riscului în Python

Seria temporală a volatilității

  • Se poate calcula și volatilitatea portofoliului în timp
  • Utilizați o „fereastră" pentru a calcula volatilitatea pe o perioadă fixă (ex.: săptămână, 30 de zile)
  • Series.rolling() creează o fereastră
  • Observați tendința volatilității și posibilele evenimente extreme
windowed = portfolio_returns.rolling(30)

volatility = windowed.std()*np.sqrt(252) volatility.plot() .set_ylabel("Standard Deviation...")

Grafic cu fereastră mobilă de 30 de zile al volatilității anuale a randamentului

Managementul Cantitativ al Riscului în Python

Să exersăm!

Managementul Cantitativ al Riscului în Python

Preparing Video For Download...