Sinir ağı risk yönetimi

Python ile Nicel Risk Yönetimi

Jamsheed Shorish

Computational Economist

Gerçek zamanlı portföy güncelleme

  • Risk yönetimi
    • Tanımlı risk ölçüleri (VaR, CVaR)
    • Tahmini risk ölçüleri (parametrik, tarihsel, Monte Carlo)
    • Optimize portföy (örn. Modern Portföy Teorisi)
  • Yeni piyasa bilgisi => portföy ağırlıklarını güncelle
    • Sorun: portföy optimizasyonu maliyetli
    • Çözüm: $\text{ağırlıklar} = f(\text{fiyatlar})$
    • $f$’yi gerçek zamanlı değerle
    • $f$’yi ara sıra güncelle
Python ile Nicel Risk Yönetimi

Sinir ağları

  • Sinir Ağı: $\text{çıktı} = f(\text{girdi})$
    • Nöron: işlev içindeki birbirine bağlı işlem düğümü
  • İlk olarak 1940’lar-1950’lerde geliştirildi
  • 2000’ler başı: sinir ağlarının “büyük veri”ye uygulanması
    • Görüntü tanıma, işleme
    • Finansal veriler
    • Arama motoru verileri
  • Derin Öğrenme: Makine Öğreniminin parçası olarak sinir ağları
    • 2015: Google, Python için açık kaynak TensorFlow derin öğrenme kütüphanesini yayımladı
Python ile Nicel Risk Yönetimi

Sinir ağı yapısı

  • Katmanlar: bağlı işlem nöronları
    • Girdi katmanı

sinir ağının girdi katmanı

Python ile Nicel Risk Yönetimi

Sinir ağı yapısı

  • Sinir ağı yapısı
    • Girdi katmanı
    • Gizli katman

sinir ağının gizli katmanı

Python ile Nicel Risk Yönetimi

Sinir ağı yapısı

  • Sinir ağı yapısı
    • Girdi katmanı
    • Gizli katman
    • Çıktı katmanı
  • Eğitim: girdi ve çıktı arasındaki ilişkiyi öğrenme

girdi, gizli ve çıktı katmanlarının görüntüsü

Python ile Nicel Risk Yönetimi

Sinir ağı yapısı

  • Sinir ağı yapısı
    • Girdi katmanı
    • Gizli katman
    • Çıktı katmanı
  • Eğitim: girdi ve çıktı arasındaki ilişkiyi öğrenme
    • Varlık fiyatları => Girdi katmanı

varlık fiyatlarının sinir ağına girdi olarak aktığı görüntü

Python ile Nicel Risk Yönetimi

Sinir ağı yapısı

  • Sinir ağı yapısı
    • Girdi katmanı
    • Gizli katman
    • Çıktı katmanı
  • Eğitim: girdi ve çıktı arasındaki ilişkiyi öğrenme
    • Varlık fiyatları => Girdi katmanı
    • Girdi + gizli katman işlemesi

sinir ağındaki ağırlık kenarları görüntüsü

Python ile Nicel Risk Yönetimi

Sinir ağı yapısı

  • Sinir ağı yapısı
    • Girdi katmanı
    • Gizli katman
    • Çıktı katmanı
  • Eğitim: girdi ve çıktı arasındaki ilişkiyi öğrenme
    • Varlık fiyatları => Girdi katmanı
    • Girdi + gizli katman işlemesi
    • Gizli + çıktı katman işlemesi

gizli katmandan çıktı katmanına ağırlıkların görüntüsü

Python ile Nicel Risk Yönetimi

Sinir ağı yapısı

  • Sinir ağı yapısı
    • Girdi katmanı
    • Gizli katman
    • Çıktı katmanı
  • Eğitim: girdi ve çıktı arasındaki ilişkiyi öğrenme
    • Varlık fiyatları => Girdi katmanı
    • Girdi + gizli katman işlemesi
    • Gizli + çıktı katman işlemesi
    • Çıktı => portföy ağırlıkları

çıktı katmanının portföy ağırlıkları olarak gösterimi

Python ile Nicel Risk Yönetimi

Portföy optimizasyonu için sinir ağları kullanımı

  • Eğitim
    • Çıktıyı mevcut “en iyi” portföy ağırlıklarıyla karşılaştır
    • Amaç: çıktı ile ağırlıklar arasındaki “hata”yı en aza indirmek
    • Hata küçükse => ağ eğitildi
  • Kullanım
    • Girdi: yeni, görülmemiş varlık fiyatları
    • Çıktı: yeni varlık fiyatları için tahmin edilen “en iyi” portföy ağırlıkları
    • En iyi ağırlıklar = risk yönetimi
Python ile Nicel Risk Yönetimi

Python’da sinir ağı oluşturma

 

from tensorflow.keras.models import Sequential

from tensorflow.keras.layers import Dense
model = Sequential() model.add(Dense(10, input_dim=4, activation='sigmoid')) model.add(Dense(4))
Python ile Nicel Risk Yönetimi

Ağı Python’da eğitme

  • Tarihsel varlık fiyatları: training_input matrisi
  • Tarihsel portföy ağırlıkları: training_output vektörü
  • Modeli derleyin:
    • belirtilen hata minimizasyonu ('loss')
    • belirtilen optimizasyon algoritması ('optimizer')
  • Modeli eğitime uydurun
    • epochs: iç parametreleri güncelleyen eğitim döngüsü sayısı
model.compile(loss='mean_squared_error', optimizer='rmsprop')

model.fit(training_input, training_output, epochs=100)
Python ile Nicel Risk Yönetimi

Python’da risk yönetimi

  • Kullanım: yeni (örn. gerçek zamanlı) varlık fiyatları sağlayın
    • Yeni vektör new_asset_prices girdi katmanına verilir
  • Yeni fiyatlarda model.predict() ile ağı değerlendirin
    • Sonuç: predicted portföy ağırlıkları
  • Zamanla yeterli veri birikince => ağı yeniden eğitin
    • Ağı geçmiş veride test edin => geriye dönük test (backtesting)
# new asset prices are in the vector new_asset_prices
predicted = model.predict(new_asset_prices)
Python ile Nicel Risk Yönetimi

Haydi pratik yapalım!

Python ile Nicel Risk Yönetimi

Preparing Video For Download...