Hoş geldiniz!

Python ile Nicel Risk Yönetimi

Dr. Jamsheed Shorish

Computational Economist

Hakkımda

  • Hesaplamalı iktisatçı
  • Uzmanlık alanları:
    • varlık fiyatlama
    • finansal teknolojiler ("FinTech")
    • iktisat ve finansa bilgisayar uygulamaları
  • ANU’da "Dijital Ekonominin Ekonomik Analizi" dersinde yardımcı eğitmen
  • Shorish Research (Belçika): hesaplamalı iş uygulamaları
Python ile Nicel Risk Yönetimi

Kantitatif Risk Yönetimi nedir?

  • Kantitatif Risk Yönetimi: ölçülebilir belirsizliğin incelenmesi
  • Belirsizlik:
    • Gelecek sonuçlar bilinmez
    • Sonuçlar planlama kararlarını etkiler
  • Risk yönetimi: olumsuz sonuçların etkisini azaltma
  • Ölçülebilir belirsizlik: riski ölçmek için etkenleri belirleme
    • Örnek: Yangın sigortası. Yangını artıran etkenler neler?
  • Bu ders: finansal portföy riski üzerine odaklanır
Python ile Nicel Risk Yönetimi

Risk yönetimi ve Küresel Finansal Kriz

  • Büyük Durgunluk (2007 - 2010)
    • Küresel büyüme kaybı 2 trilyon $’ı aştı
    • ABD: hanehalkı varlığında yaklaşık 10 trilyon $ kayıp
    • ABD borsalarında yaklaşık 8 trilyon $ değer kaybı
  • Küresel Finansal Kriz (2007-2009)
    • Temel varlık değerlerinde büyük ölçekli değişimler
    • Gelecek getirilerde büyük belirsizlik
    • Yüksek varlık getirisi oynaklığı
    • Başarı/başarısızlık için risk yönetimi kritik
Python ile Nicel Risk Yönetimi

Hızlı tekrar: finansal portföyler

  • Finansal portföy
    • Gelecekteki getirileri belirsiz varlıklar kümesi
    • Hisse senetleri
    • Tahviller
    • Döviz varlıkları (‘forex’)
    • Hisse senedi opsiyonları
  • Zorluk: belirsizliği yönetmek için riski ölçmek
    • En uygun yatırım kararlarını almak
    • Risk iştahına bağlı olarak portföy getirisini en üst düzeye çıkarmak
Python ile Nicel Risk Yönetimi

Getiriyi niceliklendirme

  • Portföy getirisi: tekil varlık getirilerinin ağırlıklı toplamı
    • Pandas veri analizi kütüphanesi
    • prices DataFrame’i
    • .pct_change() yöntemi
    • returns’ın .dot() yöntemi
prices = pandas.read_csv("portfolio.csv")

returns = prices.pct_change()
weights = (weight_1, weight_2, ...)
portfolio_returns = returns.dot(weights)
Python ile Nicel Risk Yönetimi

Riski niceliklendirme

  • Portföy getiri oynaklığı = risk
  • Oynaklığı kovaryans matrisi ile hesaplayın
  • returns DataFrame’inde .cov() kullanın ve yıllıklaştırın

 

 

covariance = returns.cov()*252

print(covariance)

4 varlık arasındaki örnek kovaryans matrisi

Python ile Nicel Risk Yönetimi

Riski niceliklendirme

  • Portföy getiri oynaklığı = risk
  • Oynaklığı kovaryans matrisi ile hesaplayın
  • returns için .cov() DataFrame yöntemi ve yıllıklaştırma
  • covariance matrisinin köşegeni tekil varlık varyanslarıdır  

   

covariance = returns.cov()*252

print(covariance)

Köşegende varyans vurgulu örnek kovaryans matrisi

Python ile Nicel Risk Yönetimi

Riski niceliklendirme

  • Portföy getiri oynaklığı = risk
  • Oynaklığı kovaryans matrisi ile hesaplayın
  • returns için .cov() DataFrame yöntemi ve yıllıklaştırma
  • covariance matrisinin köşegeni tekil varlık varyanslarıdır
  • covariance matrisinin köşegen dışı elemanları varlıklar arası kovaryanslardır
covariance = returns.cov()*252

print(covariance)

Köşegen dışlarında kovaryanslar vurgulu örnek kovaryans matrisi

Python ile Nicel Risk Yönetimi

Portföy riski

  • Portföydeki varlık weights’e bağlıdır
  • Portföy varyansı $\sigma_p^2$ $$ \sigma_p^2 := w^T \cdot \textnormal{Cov}_p \cdot w $$
  • Python’da matris çarpımı @ operatörüyle yapılır
  • Genelde varyans yerine standart sapma kullanılır
weights = [0.25, 0.25, 0.25, 0.25] # Portföyde dört varlık varsayımı

portfolio_variance = np.transpose(weights) @ covariance @ weights
portfolio_volatility = np.sqrt(portfolio_variance)
Python ile Nicel Risk Yönetimi

Oynaklık zaman serisi

  • Portföy oynaklığını zaman içinde de hesaplayabilirsiniz
  • Belirli bir süre için oynaklığı ölçmek üzere bir ‘pencere’ kullanın (örn. hafta, 30 günlük ‘ay’)
  • Series.rolling() pencere oluşturur
  • Oynaklık trendini ve olası aşırı olayları gözlemleyin
windowed = portfolio_returns.rolling(30)

volatility = windowed.std()*np.sqrt(252) volatility.plot() .set_ylabel("Standart sapma...")

Yıllıklandırılmış getiri oynaklığının 30 günlük kayan pencere grafiği

Python ile Nicel Risk Yönetimi

Ayo berlatih!

Python ile Nicel Risk Yönetimi

Preparing Video For Download...