Yapısal kırılmalar

Python ile Nicel Risk Yönetimi

Jamsheed Shorish

Computational Economist

Risk ve dağılım

  • Risk yönetimi araç seti
    • Risk azaltma: MPT
    • Risk ölçümü: VaR, CVaR
  • Risk: yayılım, oynaklık
    • Risk tanımı olarak varyans (standart sapma)
  • Risk ile risk faktörlerinin dağılımı (rastgele değişkenler) arasındaki bağlantı
Python ile Nicel Risk Yönetimi

Durağanlık

  • Varsayım: dağılım zaman içinde aynı
  • Değişmeyen dağılım = durağan
  • Küresel finansal kriz döneminde etkin sınır
    • Durağan değil
  • Tahmin teknikleri durağanlık gerektirir
    • Tarihsel: geçmiş veriden bilinmeyen durağan dağılım
    • Parametrik: varsayılan durağan dağılım ailesi
    • Monte Carlo: rassal çekimler için varsayılan durağan dağılım
Python ile Nicel Risk Yönetimi

Yapısal kırılmalar

  • Durağan değil => dağılım zamanla değişebilir
  • Değişim için belirli zaman noktaları varsayın
    • Veriyi alt dönemlere ayırın
    • Her alt dönemde durağanlık varsayın
  • Yapısal kırılma(lar): değişim noktaları
    • Verinin ortalama ve/veya oynaklık 'eğiliminde' değişim
Python ile Nicel Risk Yönetimi

Örnek: Çin'in nüfus artışı

  • 1950 - 2019 dönemini inceleyin
  • Eğilim kabaca doğrusal...

Zaman içinde Çin'in nüfusu, 1950-2019

Python ile Nicel Risk Yönetimi

Örnek: Çin'in nüfus artışı

  • 1950 - 2019 dönemini inceleyin
  • Eğilim kabaca doğrusal...
  • ...ancak ~1990'dan itibaren yavaşlıyor gibi
  • 1990 civarında olası yapısal kırılma.
  • Net nüfusun (doğum - ölüm) dağılımı değiştiğini ima eder
  • Olası nedenler: kamu politikası, yaşam standardı vb.

Zaman içinde Çin'in nüfusu ve eğilim okları, 1950-2019

Python ile Nicel Risk Yönetimi

Chow testi

  • Önceki örnek: yapısal kırılma için görsel kanıt
  • Niceliklendirme: istatistiksel ölçüm
  • Chow Testi:
    • Doğrusal model altında yapısal kırılma var mı testi
    • Null hipotez: kırılma yok
    • Üç OLS regresyonu gerekir
      • Tüm dönem için regresyon
      • Kırılma öncesi ve sonrası iki regresyon
    • Kareler toplamı artıkları toplanır
    • Test istatistiği F dağılımına uyar
Python ile Nicel Risk Yönetimi

Python'da Chow testi

  • Hipotez: Çin nüfusunda 1990'da yapısal kırılma
  • Doğrusal "faktör modeli" varsayalım: $$\log(\text{Population}_t) = \alpha + \beta * \text{Year}_t + u_t$$
  • statsmodels'ın OLS nesnesiyle 1950 - 2019 tam döneminde OLS regresyonu
    • res.ssr kareler toplamı artığını alın
import statsmodels.api as sm
res = sm.OLS(log_pop, year).fit()

print('SSR 1950-2019: ', res.ssr)
SSR 1950-2019: 0.29240576138055463
Python ile Nicel Risk Yönetimi

Python'da Chow testi

  • 1950 - 2019'u 1950 - 1989 ve 1990 - 2019 alt dönemlerine ayırın
  • Her alt dönemde OLS regresyonu yapın
    • res_before.ssr ve res_after.ssr alın
pop_before = log_pop.loc['1950':'1989']; year_before = year.loc['1950':'1989'];
pop_after  = log_pop.loc['1990':'2019']; year_after =  year.loc['1990':'2019'];

res_before = sm.OLS(pop_before, year_before).fit() res_after = sm.OLS(pop_after, year_after).fit()
print('SSR 1950-1989: ', res_before.ssr) print('SSR 1990-2019: ', res_after.ssr)
SSR 1950-1989: 0.011741113017411783
SSR 1990-2019: 0.0013717593339608077
Python ile Nicel Risk Yönetimi

Python'da Chow testi

  • F-dağılımlı Chow test istatistiğini hesaplayın
    • Payı hesaplayın
      • k = 2 serbestlik derecesi = 2 OLS katsayısı $\alpha$, $\beta$
    • Paydayı hesaplayın
      • 66 serbestlik derecesi = veri noktası sayısı (70) - 2*k
numerator = (ssr_total - (ssr_before + ssr_after)) / 2

denominator = (ssr_before + ssr_after) / 66
chow_test = numerator / denominator print("Chow test statistic: ", chow_test, "; Critical value, 99.9%: ", 7.7)
Chow test statistic: 702.8715822890057; Critical value, 99.9%: 7.7
Python ile Nicel Risk Yönetimi

Vamos praticar!

Python ile Nicel Risk Yönetimi

Preparing Video For Download...