← Maqolalarga qaytish
July 11, 2026
5 daqiqa o'qish

Assimetrik va Og'ir Dumli GARCH: EGARCH, GJR va Student-t

#volatility
#GARCH
#EGARCH
#risk
#VaR
#crypto
#algorithmic-trading

Ushbu seriyaning 1-qismida biz GARCH(1,1) modelini noldan qurdik: volatillik klasterlanishi intuitsiyasi, shartli dispersiya rekursiyasi, maksimal ehtimollik baholash, prognozlash va arch kutubxonasi yordamida standart qoldiq diagnostikasi. Agar buni o'qimagan bo'lsangiz, o'shandan boshlang — bu maqola siz oddiy GARCH(1,1) modelini allaqachon moslashtira va talqin qila olishingizni faraz qiladi va asoslarni qaytadan chiqarmaydi.

Oddiy GARCH(1,1) yaxshi bazaviy model, lekin yomon yakuniy javob. Uning ikkita tuzilmaviy kamchiligi bor — backtestda e'tiborsiz qoldirish arzon, lekin real kapital bilan e'tiborsiz qoldirish qimmatga tushadi. Birinchidan, u simmetrik: model +5%+5\% kunga xuddi 5%-5\% kundagidek reaksiya beradi, chunki shok dispersiya rekursiyasiga faqat kvadrati orqali kiradi, εt12\varepsilon_{t-1}^2. Kvadratga ko'tarish ishorani yo'qotadi. Ikkinchidan, u Gauss innovatsiyalarini faraz qiladi: hatto GARCH volatillik klasterlanishini yutib olgandan keyin ham, BTC va ETH ning standartlashtirilgan qoldiqlari ko'zga ko'rinarli darajada og'ir dumli, va Gauss ehtimolligi dumni tizimli ravishda arzonlashtiradi. GARCH(1,1)-Normal 99% VaR 1% dan ancha ko'proq buziladi.

Ushbu maqola ikkala kamchilikni ham tuzatadi. Biz GJR-GARCH va EGARCH bilan assimetriya qo'shamiz, hamda Student-tt va Hansenning skewed-tt innovatsiyalari bilan og'ir dumlar qo'shamiz. So'ngra haqiqatan ham foyda keltiradigan ishni qilamiz: moslashtirilgan shartli taqsimotni bir qadamli Value-at-Risk va Expected Shortfall prognoziga aylantiramiz, va bu prognozni Kupiec va Christoffersen testlari bilan halol backtest qilamiz. Hech qachon risk-test qilinmagan volatillik modeli — bu bezakdan boshqa narsa emas.

Leverage Effekti va Nima Uchun Kripto Chalkashroq

Aksiyalar bozorida assimetriyaning nomi va tarixi bor. Leverage effekti (Black, 1976): kompaniya aksiyasi tushganda, uning qarz/kapital nisbati oshadi, kapital mexanik ravishda xavfliroq bo'lib qoladi, va volatillik oshadi. Yomon yangilik kelajakdagi volatillikni bir xil hajmdagi yaxshi yangilikdan ko'ra ko'proq oshiradi. Empirik jihatdan bu aksiyalar volatilligi adabiyotidagi eng barqaror stilizatsiyalangan faktlardan biri.

Kriptoda korporativ ma'noda na kapital, na balans hisobotidagi leverage mavjud, ammo leverage-effektga o'xshash assimetriya baribir ko'p hollarda ko'rinadi — bu buxgalteriya emas, majburiy deleveraging tomonidan boshqariladi. BTC keskin tushganda, ortiqcha garovga qo'yilgan kreditlar likvidatsiya qilinadi, perpetual-fyucherslardagi long pozitsiyalar majburan yopiladi, funding o'zgaradi, va kaskad volatillikni oziqlantiradi. Demak, mexanizm farq qiladi, lekin ishora ko'pincha aksiyalar bilan mos keladi: pastga harakatlar volatillikni ko'proq keskinlashtiradi.

Muhim ogohlantirish: kripto chalkashroq, va assimetriyani qonun emas, balki empirik savol sifatida ko'rish kerak. Keskin yuqoriga harakatlar — short squeeze'lar, leverage bilan qizigan melt-up, ETF tasdiqlanishi bo'shlig'i — real volatillikni ham keskinlashtirishi mumkin. Aktiv va tanlov oynasiga qarab, baholangan assimetriya kuchli, kuchsiz yoki ba'zan "noto'g'ri" ishorali bo'lishi mumkin. Ushbu maqola talab qiladigan intizom: assimetrik modelni moslashtiring, assimetriya parametri statistik jihatdan ahamiyatli va kutilgan yo'nalishda ekanligini tekshiring, va qo'shimcha parametrni faqat u o'z o'rnini oqlaganda saqlab qoling. Aksiyalar tarixini avtomatik ko'chirib olmang; buni tekshiring.

Modellashdan Oldin Assimetriyani Tekshirish

Yuqoridagi ta'kid "assimetriyani empirik deb qarash" edi — shuning uchun assimetrik modelni moslashtirishdan oldin, assimetriya umuman mavjudmi yoki yo'qmi, buni tekshiruvchi arzon rasmiy test o'tkazing. Engle-Ng ishora-noto'g'rilik testlari (1993) aynan shuni qiladi. Avval simmetrik GARCH(1,1) ni moslashtiring, uning kvadratlangan standartlashtirilgan qoldiqlarini zt2z_t^2 oling, va ularni oldingi shokning ishorasi va hajmi ko'rsatkichlariga regressiya qiling:

zt2=a0+a1St1+a2St1εt1+a3St1+εt1+utz_t^2 = a_0 + a_1 S_{t-1}^- + a_2 S_{t-1}^- \varepsilon_{t-1} + a_3 S_{t-1}^+ \varepsilon_{t-1} + u_t

bu yerda St1=1{εt1<0}S_{t-1}^- = \mathbf{1}\{\varepsilon_{t-1} < 0\} va St1+=1St1S_{t-1}^+ = 1 - S_{t-1}^-. Mantiq: agar simmetrik model allaqachon hamma narsani qamrab olgan bo'lsa, kechagi shokning ishorasi va hajmi bugungi kvadratlangan qoldiqni bashorat qilmasligi kerak, ya'ni a1=a2=a3=0a_1 = a_2 = a_3 = 0. Alohida tt-testlar sign-bias (a1a_1), negative-size-bias (a2a_2) va positive-size-bias (a3a_3) testlari deb ataladi; barcha uchtasi bo'yicha birgalikdagi FF-test esa omnibus test hisoblanadi. Ahamiyatli a1a_1 yoki a2a_2 — manfiy shoklar simmetrik model tomonidan tizimli ravishda noto'g'ri baholanganini bildiradi — bu GJR yoki EGARCH yordam berishining belgisi.

import statsmodels.api as sm

def sign_bias_test(symmetric_res):
    """Engle-Ng sign-bias tests on a fitted symmetric GARCH result."""
    z = symmetric_res.std_resid.dropna()
    z2 = (z ** 2).values[1:]
    eps_lag = z.values[:-1]                      # standardized shock proxy
    neg = (eps_lag < 0).astype(float)
    X = np.column_stack([
        np.ones_like(eps_lag),                   # intercept
        neg,                                     # sign bias
        neg * eps_lag,                           # negative size bias
        (1 - neg) * eps_lag,                     # positive size bias
    ])
    ols = sm.OLS(z2, X).fit()
    names = ["const", "sign_bias", "neg_size_bias", "pos_size_bias"]
    for nm, coef, t, p in zip(names, ols.params, ols.tvalues, ols.pvalues):
        print(f"{nm:16s} coef={coef:+.4f}  t={t:+.2f}  p={p:.3f}")
    print(f"Joint F p-value: {ols.f_pvalue:.4f}")
    return ols

sign_bias_test(models["GARCH-N"])

Agar birgalikdagi FF-test ahamiyatsiz bo'lsa, sizda simmetrik qolish va ikkita parametrni tejash uchun empirik asos bor. Agar u ahamiyatli bo'lsa — BTC/ETH uchun keng tarqalgan natija — GJR/EGARCH ga o'ting, bilib turibsizki, siz haqiqiy xususiyatni modellamoqdasiz, shovqinni quvmayapsiz. Bu maqola talab qilgan empirik intizom: aksiyalar leverage tarixini avtomatik qabul qilmang, uni tekshiring.

GJR-GARCH: Chegara Hadi Orqali Assimetriya

Glosten-Jagannathan-Runkle modeli (1993) — ba'zan TGARCH yoki threshold GARCH deb ataladi — GARCH(1,1) ga kiritilishi mumkin bo'lgan eng kichik o'zgartirish bo'lib, yomon va yaxshi yangiliklarga turlicha ta'sir qilish imkonini beradi. 1-qismdagi simmetrik shartli-dispersiya rekursiyasini eslang:

σt2=ω+αεt12+βσt12\sigma_t^2 = \omega + \alpha\,\varepsilon_{t-1}^2 + \beta\,\sigma_{t-1}^2

GJR bitta chegara hadi qo'shadi: faqat manfiy shokdan keyin yoqiladigan qo'shimcha dispersiya dozasi.

σt2=ω+αεt12+γIt1εt12+βσt12\sigma_t^2 = \omega + \alpha\,\varepsilon_{t-1}^2 + \gamma\,I_{t-1}\,\varepsilon_{t-1}^2 + \beta\,\sigma_{t-1}^2

bu yerda It1I_{t-1} ko'rsatkich

It1={1if εt1<00if εt10I_{t-1} = \begin{cases} 1 & \text{if } \varepsilon_{t-1} < 0 \\ 0 & \text{if } \varepsilon_{t-1} \geq 0 \end{cases}

Rekursiyani holatlar bo'yicha o'qing. Musbat shokdan keyin (εt10\varepsilon_{t-1} \geq 0), ko'rsatkich nolga teng va kvadratlangan shokning keyingi davr dispersiyasiga ta'siri shunchaki α\alpha. Manfiy shokdan keyin, ko'rsatkich birga teng va ta'sir α+γ\alpha + \gamma ga teng. Parametr γ\gamma — bitta sonda butun assimetriya tarixi:

  • γ>0\gamma > 0: manfiy shoklar bir xil hajmdagi musbat shoklardan ko'ra volatillikni ko'proq oshiradi. Bu leverage effekti, va ko'p hollarda BTC/ETH da aynan shuni topish kutiladi.
  • γ=0\gamma = 0: model simmetrik GARCH(1,1) ga qaytib qulaydi. γ\gamma bo'yicha likelihood-ratio yoki tt-test shunday qilib assimetriya umuman mavjudmi degan savolni bevosita tekshiradi.
  • γ<0\gamma < 0: musbat shoklar volatillikni ko'proq oshiradi — vaqti-vaqti bilan uchraydigan kripto melt-up rejimi. Kamdan-kam, lekin buni oldindan istisno qilmang.

Musbatlik va Statsionarlik

σt2\sigma_t^2 hali ham additiv tarzda qurilgani sababli, har bir had manfiy bo'lmasligi kerak. Yetarli musbatlik shartlari:

ω>0,α0,α+γ0,β0.\omega > 0, \quad \alpha \geq 0, \quad \alpha + \gamma \geq 0, \quad \beta \geq 0.

E'tibor bering, γ\gamma ning o'zi manfiy bo'lishi mumkin, faqat α+γ0\alpha + \gamma \geq 0 shart bajarilsa bo'ldi, shunda yomon xabardan keyingi ta'sir hech qachon manfiy bo'lmaydi.

Kovariatsion statsionarlik uchun, innovatsiyalar zt=εt/σtz_t = \varepsilon_t/\sigma_t nol atrofida simmetrik taqsimot bilan standartlashtirilgan deb faraz qilamiz, shunda P(εt1<0)=1/2P(\varepsilon_{t-1} < 0) = 1/2 va ko'rsatkich o'rtacha γ/2\gamma/2 hissa qo'shadi. Statsionarlik sharti quyidagicha bo'ladi:

α+β+12γ<1.\alpha + \beta + \tfrac{1}{2}\gamma < 1.

Shartsiz (uzoq muddatli) dispersiya esa:

σˉ2=ω1αβ12γ.\bar{\sigma}^2 = \frac{\omega}{1 - \alpha - \beta - \tfrac{1}{2}\gamma}.

Bu 1-qismdagi σˉ2=ω/(1αβ)\bar{\sigma}^2 = \omega/(1-\alpha-\beta) natijasining GJR analogi, qo'shimcha 12γ\tfrac{1}{2}\gamma hadi leverage yarim-hayotining o'rtacha hissasini hisobga oladi. Agar sizning innovatsiya taqsimotingiz qiyshiq bo'lsa (Hansenning skew-tt, quyida), 1/21/2 o'rniga zt<0z_t < 0 bo'lishining haqiqiy ehtimoli qo'yiladi, lekin 1/21/2 — bu hisobot qilingan persistensiya uchun standart mos yozuv.

EGARCH: Log-Dispersiyani Modellash, Musbatlik Cheklovlarisiz

GJR sizni dispersiya-musbatlik qamalida ushlab turadi: har bir parametr kombinatsiyasi tengsizlik cheklovlariga qarshi tekshirilishi kerak, bu optimizatsiya davomida bezovta qiluvchi va aylanma qayta baholashda esa yanada yomonroq, chunki oyna vaqti-vaqti bilan yaroqsiz hududga kirib qoladi. Nelsonning Exponential GARCH (1991) buni butunlay chetlab o'tadi, shartli dispersiyaning logarifmini modellash orqali. logσt2\log \sigma_t^2 istalgan haqiqiy son bo'lishi mumkinligi sababli, σt2=exp(logσt2)\sigma_t^2 = \exp(\log \sigma_t^2) parametrlardan qat'i nazar avtomatik musbat bo'ladi. Hech qanday cheklov qo'yilmaydi.

Rekursiyani standartlashtirilgan innovatsiya zt1=εt1/σt1z_{t-1} = \varepsilon_{t-1}/\sigma_{t-1} orqali yozing:

logσt2=ω+βlogσt12+α(zt1Ezt1)+γzt1\log \sigma_t^2 = \omega + \beta \log \sigma_{t-1}^2 + \alpha\bigl(|z_{t-1}| - \mathbb{E}|z_{t-1}|\bigr) + \gamma\, z_{t-1}

Ikki had shokni tashiydi, va ularni ajratish — bu g'oyaning o'zi:

  • Hajm hadi α(zt1Ezt1)\alpha(|z_{t-1}| - \mathbb{E}|z_{t-1}|) shokning hajmiga reaksiya beradi, ishora olib tashlangan. Ezt1\mathbb{E}|z_{t-1}| ni ayirish uni markazlashtiradi, shunda o'rtacha hajmdagi shok hech qanday hissa qo'shmaydi. Standart normal uchun Ez=2/π0.7979\mathbb{E}|z| = \sqrt{2/\pi} \approx 0.7979; standartlashtirilgan Student-tt uchun kutilgan mutlaq qiymat kichikroq va ν\nu ga bog'liq, lekin arch buni ichki tarzda hal qiladi.
  • Ishora hadi γzt1\gamma\, z_{t-1} — bu assimetriya. U ishoralangan innovatsiyaga chiziqli bog'liq, shuning uchun manfiy zt1z_{t-1} logσt2\log\sigma_t^2 ni musbatdan qarama-qarshi yo'nalishga suradi.

Ishora konventsiyasi muhim va odamlarni chalg'itadi. Ushbu parametrizatsiyada leverage effekti (yomon yangilik volatillikni oshiradi) γ<0\gamma < 0 ga mos keladi: manfiy shok zt1<0z_{t-1} < 0 bu holda γzt1>0\gamma z_{t-1} > 0 qiladi, log-dispersiyani oshiradi. Bu GJR ning γ>0\gamma > 0 dan qarama-qarshi ishora. Har doim konventsiya uchun modelning o'z hujjatlarini o'qing, taxmin qilmang; arch EGARCH ni o'z ishorasi bilan hisobot qiladi, va biz buni xotiraga ishonish o'rniga quyida yangilik ta'siri egri chizig'i bilan tekshiramiz.

Hamma narsa loglarda additiv bo'lgani sababli, EGARCH(1,1) ning persistensiyasi logσt12\log\sigma_{t-1}^2 dagi yagona avtoregressiv koeffitsient β\beta bilan boshqariladi; statsionarlik faqat β<1|\beta| < 1 ni talab qiladi. Bu GJR tengsizligidan ancha toza shart, va aylanma oynalarda qayta moslashtirganda haqiqiy amaliy afzallik hisoblanadi.

Ta'kidlashga arzigulik nozik jihat: EGARCH ning shoklarga javobi innovatsiyaga nisbatan eksponensial (oxirida eksponensiallaysiz), GJR esa kvadratik. Shu sababli EGARCH katta shoklarga yanada shiddatliroq reaksiya beradi — kriptoda bu xususiyat, chunki muhim bo'lgan aynan dum voqealari, lekin shu bilan birga EGARCH ba'zan bitta anomal kundan keyin ishonchsiz darajada katta dispersiya prognozlarini berishi mumkin. Hech biri universal ravishda yaxshiroq emas; siz namunadan tashqari mosligi va risk backtestlari bo'yicha tanlaysiz — bu butun seriyaning maqsadi.

Yangilik Ta'siri Egri Chizig'i

Simmetrik GARCH, GJR va EGARCH orasidagi farqni ko'rishning eng toza usuli — yangilik ta'siri egri chizig'i (Engle va Ng, 1993): σt1\sigma_{t-1} ni uzoq muddatli darajasida qat'iy ushlab, keyingi davr shartli dispersiyasi σt2\sigma_t^2 ni oxirgi shok εt1\varepsilon_{t-1} funksiyasi sifatida chizing. Bu "shu hajm va ishoradagi shok berilgan holda, model ertangi volatillikni qanchalik oshiradi?" degan savolga javob beradi.

  • Simmetrik GARCH nolda markazlashgan simmetrik parabola hosil qiladi. 5%-5\% va +5%+5\% shok bir xil balandlikda joylashadi. Bu aynan biz tuzatayotgan kamchilik.
  • GJR nolda burilish bilan parabola hosil qiladi — γ>0\gamma > 0 bo'lganda chapda (manfiy shoklar) o'ngdan tikroq. Ikki yarim qismning egriligi mos ravishda α+γ\alpha+\gamma va α\alpha.
  • EGARCH assimetrik, eksponensial V-shakl hosil qiladi: ikki qo'l turli qiyaliklarga ega, chunki γz\gamma z hadi mavjud, va yakuniy eksponensiallash tufayli butun shakl parabolaga qaraganda tezroq yuqoriga egiladi.

Barcha uchtasini moslashtirilgan parametrlardan keyinroq, amalga oshirish bo'limida chizamiz — bu assimetriya nima berishini tushuntirish uchun eng foydali diagnostika.

Og'ir Dumlar: Student-t va Skewed-t Innovatsiyalari

Assimetriya modelning shoklar ishorasiga javobini tuzatadi. Bu shoklarning o'z taqsimotiga hech qanday ta'sir qilmaydi. Oddiy GARCH ztN(0,1)z_t \sim \mathcal{N}(0,1) ni faraz qiladi, va bu faraz kripto uchun deyarli har doim noto'g'ri. Hatto GARCH volatillik klasterlanishini olib tashlagandan keyin ham, standartlashtirilgan qoldiqlar zt=εt/σtz_t = \varepsilon_t / \sigma_t ortiqcha ekssessni saqlab qoladi — ular og'ir dumli. Taqsimotning yelkalarini moslashtiruvchi Gauss ehtimolligi, 44-, 55- yoki 66-sigma standartlashtirilgan kun qanchalik tez-tez sodir bo'lishini kamlashtiradi.

Risk uchun oqibat bevosita. Gauss 99% VaR Φ1(0.01)2.326\Phi^{-1}(0.01) \approx -2.326 kvantilidan foydalanadi, shuning uchun u VaR0.992.326σt\text{VaR}_{0.99} \approx 2.326\,\sigma_t ni bashorat qiladi. Agar haqiqiy standartlashtirilgan taqsimot ν=5\nu = 5 erkinlik darajasi bilan Student-tt bo'lsa, haqiqiy 1% kvantil 3.36-3.36 ga yaqin — Gauss VaR bu ishonch darajasida taxminan 44%44\% ga optimistik. Siz uni 1% dan ancha ko'proq buzasiz va "mumkin bo'lmagan" kunlardan tizimli ravishda hayratlanasiz. Bu kripto xususiyati emas; Bollerslev (1987) tt-GARCH ni aynan aksiya va valyuta qoldiqlari bir xil og'ir dumlarni ko'rsatgani uchun kiritdi. Kripto bu muammoning shunchaki yanada keskinroq versiyasi.

Standartlashtirilgan Student-t

Student-tt zichligi dum qalinligini boshqaruvchi ν>2\nu > 2 erkinlik darajasi parametriga ega: kichik ν\nu og'ir dumlarni bildiradi, va ν\nu \to \infty da tt Gaussga yaqinlashadi. Muammo shundaki, xom tνt_\nu taqsimoti ν/(ν2)1\nu/(\nu-2) \neq 1 dispersiyaga ega, shuning uchun uni innovatsiya sifatida ishlatishdan oldin birlik dispersiyaga standartlashtirishimiz kerak — aks holda GARCH rekursiyasidagi "σt\sigma_t" aslida shartli standart og'ish bo'lmas edi.

Birlik dispersiyaga ega standartlashtirilgan Student-tt innovatsiyasining zichligi:

f(z;ν)=Γ ⁣(ν+12)π(ν2)  Γ ⁣(ν2)(1+z2ν2)ν+12,ν>2.f(z;\nu) = \frac{\Gamma\!\left(\frac{\nu+1}{2}\right)}{\sqrt{\pi(\nu-2)}\;\Gamma\!\left(\frac{\nu}{2}\right)}\left(1 + \frac{z^2}{\nu-2}\right)^{-\frac{\nu+1}{2}}, \qquad \nu > 2.

Ichkaridagi (ν2)(\nu-2) ga e'tibor bering — bu standartlashtirish, Var(z)=1\mathrm{Var}(z)=1 bo'lishi uchun qayta masshtablash. Bitta kuzatuvning log-ehtimollik hissasi, GARCH shartli dispersiyasi σt2\sigma_t^2 va zt=εt/σtz_t = \varepsilon_t/\sigma_t berilgan holda:

t=logΓ ⁣(ν+12)logΓ ⁣(ν2)12log(π(ν2))12logσt2ν+12log ⁣(1+zt2ν2).\ell_t = \log\Gamma\!\left(\tfrac{\nu+1}{2}\right) - \log\Gamma\!\left(\tfrac{\nu}{2}\right) - \tfrac{1}{2}\log\bigl(\pi(\nu-2)\bigr) - \tfrac{1}{2}\log\sigma_t^2 - \frac{\nu+1}{2}\log\!\left(1 + \frac{z_t^2}{\nu-2}\right).

12logσt2-\tfrac{1}{2}\log\sigma_t^2 hadi — εt\varepsilon_t dan ztz_t ga o'tish Yakobiani — 1-qismdagi Gauss GARCH ehtimolligida ko'rgan bir xil had. Faqat shakl o'zgaradi. tt\sum_t \ell_t ni GARCH parametrlari va ν\nu bo'yicha birgalikda maksimallashtirish — bu dist='t' uzatilganda arch aynan shu narsani qiladi.

Baholangan ν\nu ning o'zi ma'lumot beradi. Kunlik BTC/ETH daromadlari uchun odatda ν36\nu \approx 3\text{–}6 oralig'iga tushasiz — og'ir dumlar, lekin chekli dispersiya bilan (bu ν>2\nu > 2 ni talab qiladi) va odatda chekli ekssess bilan (bu ν>4\nu > 4 ni talab qiladi). Agar sizning moslashtirilgan ν\nu ingiz 4 dan pastga tushsa, namunaviy ekssess modelda texnik jihatdan cheksiz ekanligini va ba'zi baholovchilar beqaror bo'lib qolishini bilib qo'ying; bu anomaliyalar va ma'lumotlar sifatiga sinchkovlik bilan qarash signali.

Hansenning Skewed-t

Student-tt og'ir dumli, lekin baribir simmetrik — chap va o'ng dumlar bir xil og'irlikda. Kripto daromad qoldiqlari ko'pincha shu bilan birga qiyshiq: chap dum (qulashlar) o'ngdan og'irroq. Hansenning skewed-tt (1994) standartlashtirilgan tt ni ν\nu bilan bir qatorda qiyshiqlik parametri λ(1,1)\lambda \in (-1, 1) bilan umumlashtiradi:

f(z;ν,λ)={bc(1+1ν2(bz+a1λ)2)ν+12z<a/bbc(1+1ν2(bz+a1+λ)2)ν+12za/bf(z;\nu,\lambda) = \begin{cases} b\,c\left(1 + \dfrac{1}{\nu-2}\left(\dfrac{bz+a}{1-\lambda}\right)^2\right)^{-\frac{\nu+1}{2}} & z < -a/b \\[2mm] b\,c\left(1 + \dfrac{1}{\nu-2}\left(\dfrac{bz+a}{1+\lambda}\right)^2\right)^{-\frac{\nu+1}{2}} & z \geq -a/b \end{cases}

bu yerda konstantalar a=4λcν2ν1a = 4\lambda c\,\frac{\nu-2}{\nu-1}, b2=1+3λ2a2b^2 = 1 + 3\lambda^2 - a^2, va c=Γ(ν+12)π(ν2)Γ(ν2)c = \frac{\Gamma(\frac{\nu+1}{2})}{\sqrt{\pi(\nu-2)}\,\Gamma(\frac{\nu}{2})} har qanday yaroqli (ν,λ)(\nu,\lambda) uchun zz nol o'rtacha va birlik dispersiyaga ega bo'lishi uchun tanlangan. Taqsimot z=a/bz = -a/b da bo'linadi, har bir qismda turli masshtablashdan foydalanib, ko'proq massani bitta dumga suradi.

Talqin: λ<0\lambda < 0 chapga qiyshiq taqsimot beradi (og'irroq pastki tomon), bu kripto uchun odatiy topilma va leverage effekti bilan birga bo'lishi kutiladi. λ=0\lambda = 0 simmetrik Student-tt ni tiklaydi, shuning uchun λ=0\lambda = 0 testi qiyshiqlik hadi biror narsa berayotganini yoki yo'qligini ko'rsatadi. arch da bu dist='skewt', u ham ν\nu, ham λ\lambda ni baholaydi. Natija — chap dum kvantili o'ng dum kvantilidan haqiqatan ham og'irroq bo'lgan VaR — bu siz omon qolishga urinayotgan zararlar assimetrik bo'lganda aynan kerak bo'ladigan narsa. Bu pozitsiya natijalaridagi zarar va foyda assimetriyasi bilan bevosita bog'liq: x%x\% pasayishdan tiklanish uchun x%x\% dan ko'proq kerak, shuning uchun chap dumni noto'g'ri modellash o'ng dumni noto'g'ri modellashdan qimmatroqqa tushadi.

Python da Amalga Oshirish

Endi buning barchasini arch kutubxonasi bilan moslashtiramiz. Sozlash 1-qismni takrorlaydi: kunlik daromadlarni oling, sonli barqarorlik uchun 100 ga ko'paytiring (GARCH optimizatorlari daromadlar O(0.01)O(0.01) bo'lganda yomon ishlaydi), va doimiy o'rtacha bilan moslashtiring. Agar sizga kun ichidagi ma'lumotlar yoki boshqa o'rtacha model kerak bo'lsa, mexanizm bir xil.

Sozlash va Ma'lumotlar

import numpy as np
import pandas as pd
from arch import arch_model
from arch.univariate import GARCH, EGARCH, ConstantMean, StudentsT, SkewStudent
from scipy import stats

def fetch_returns(symbol="BTC-USD", start="2019-01-01", end="2025-12-31"):
    """Daily log returns, in percent (scaled x100 for the optimizer)."""
    import yfinance as yf
    px = yf.download(symbol, start=start, end=end)["Close"].dropna()
    ret = 100.0 * np.log(px / px.shift(1)).dropna()
    ret.name = symbol
    return ret

r = fetch_returns("BTC-USD")
print(f"{len(r)} daily observations, "
      f"annualized vol ~ {r.std() * np.sqrt(365):.0f}%")

Kripto 24/7 savdo qilinadi, shuning uchun biz 252 emas, 365 bilan yillashtiramiz — bu kripto Sharpe yoki volatillikni aksiyalar deski ko'rsatkichlari bilan solishtirganda kichik, lekin qayta-qayta uchraydigan chalkashlik manbai.

To'rtta Modelni Moslashtirish

arch dagi naqsh: vol='Garch' bilan p=1, q=1 — simmetrik GARCH; o=1 qo'shish GJR chegara hadini yoqadi; vol='EGARCH' log-dispersiya modeliga o'tkazadi. Innovatsiya taqsimoti dist bilan belgilanadi: 'normal', 't', 'skewt'.

def fit(returns, vol="Garch", p=1, o=0, q=1, dist="normal"):
    am = arch_model(returns, mean="Constant",
                    vol=vol, p=p, o=o, q=q, dist=dist)
    res = am.fit(disp="off")
    return res

models = {
    "GARCH-N":    fit(r, vol="Garch",  o=0, dist="normal"),  # Part 1 baseline
    "GJR-t":      fit(r, vol="Garch",  o=1, dist="t"),        # asymmetry + fat tails
    "EGARCH-t":   fit(r, vol="EGARCH", o=1, dist="t"),        # log-variance asymmetry
    "GJR-skewt":  fit(r, vol="Garch",  o=1, dist="skewt"),    # + skew
}

for name, res in models.items():
    print(f"\n===== {name} =====")
    print(res.summary().tables[1])   # parameter table

vol='EGARCH' uchun o argumenti assimetrik (γz\gamma z) hadni boshqaradi, p/q esa hajm va lag hadlarini boshqaradi; o=1, p=1, q=1 — standart EGARCH(1,1). Bitta nozik jihat: EGARCH ning arch dagi parametr nomlari xuddi shu harflar, lekin assimetriya hadining ishora konventsiyasi Nelsonniki, shuning uchun manfiy baho — leverage effekti. Buni xotiradan emas, yangilik ta'siri egri chizig'idan tekshiramiz.

GJR Natijasini O'qish

GJR-tt parametr jadvali taxminan shunday ko'rinadi (illyustrativ qiymatlar, hisobot qilingan tajriba emas — o'z ma'lumotlaringizda qayta moslashtiring):

                  coef    std err       t      P>|t|
omega           0.0480     0.017     2.82     0.005
alpha[1]        0.0620     0.018     3.44     0.001
gamma[1]        0.0910     0.028     3.25     0.001
beta[1]         0.8850     0.021    42.1      0.000
nu              4.30       0.55      7.82     0.000

Buni qanday o'qish kerak:

  • tt-statistikasi 3 dan yuqori bo'lgan gamma[1] = 0.091 — statistik jihatdan ahamiyatli leverage effekti. Manfiy shokdan keyin kvadratlangan shokning ta'siri α+γ=0.062+0.091=0.153\alpha + \gamma = 0.062 + 0.091 = 0.153; musbat shokdan keyin esa shunchaki α=0.062\alpha = 0.062. Yomon yangilik bu modelning volatilligini bir xil hajmdagi yaxshi yangilikka qaraganda taxminan 2.52.5 marta ko'proq harakatlantiradi.
  • nu = 4.3 og'ir dumlarni tasdiqlaydi — Gaussdan (ν\nu \to \infty) uzoq, va to'rtinchi moment deyarli chekli bo'ladigan darajada past. Bu qatordagi Gauss VaR jiddiy ravishda optimistik bo'lar edi.
  • Persistensiya α+β+12γ=0.062+0.885+0.04550.993\alpha + \beta + \tfrac{1}{2}\gamma = 0.062 + 0.885 + 0.0455 \approx 0.993 — kunlik kripto uchun odatdagidek juda yuqori: shoklar sekin so'nadi va volatillik kuchli klasterlangan.

Tekshirish uchun eng muhim qator — γ\gamma qatori. Agar uning pp-qiymati katta bo'lsa, assimetrik had bu aktiv va oynada o'z o'rnini oqlamayapti, va siz oddiyroq simmetrik modelni afzal ko'rishingiz kerak. Bu bezak emas, model tanlash intizomi — bu haqda quyida batafsilroq.

Modellarni Axborot Kriteriylari bo'yicha Solishtirish

Log-ehtimollik parametr qo'shganda har doim yaxshilanadi, shuning uchun faqat log-ehtimollik bo'yicha tanlay olmaysiz. Parametrlar sonini jazolaydigan AIC/BIC dan foydalaning (BIC yanada agressivroq):

def compare(models: dict) -> pd.DataFrame:
    rows = []
    for name, res in models.items():
        rows.append({
            "model": name,
            "n_params": len(res.params),
            "loglik": res.loglikelihood,
            "AIC": res.aic,
            "BIC": res.bic,
        })
    df = pd.DataFrame(rows).set_index("model")
    return df.sort_values("BIC")

print(compare(models))

Talqin qilish qoidalari: bazaviy modeldan ~6 dan ko'proq BIC yaxshilanishi qo'shimcha tuzilma haqiqiy ekanligining kuchli dalili; 1–2 farq esa shovqin. Agar GJR-t GARCH-N dan 30+ BIC balliga yutsa, lekin GJR-skewt GJR-t dan faqat 1 balliga yutsa, tt ni saqlang va qiyshiqlikni tashlab yuboring — qiyshiqlik parametri bu ma'lumotda o'zini oqlamayapti. AIC/BIC ni namunadan tashqari validatsiya o'rniga o'qimang; ular murakkablikka moslashtirilgan namuna ichidagi moslikni mukofotlaydi, bu zaruriy, lekin yetarli emas. Haqiqiy sinov — VaR backtesti va, oxir-oqibat, walk-forward baholash.

Yangilik Ta'siri Egri Chizig'ini Chizish

Bu — natija beruvchi chizma — u assimetriyani ko'rinadigan qiladi va EGARCH ishora konventsiyasini tasdiqlaydi.

import matplotlib.pyplot as plt

def news_impact_curve(res, shock_grid):
    """
    Next-period conditional variance as a function of the last shock,
    holding sigma_{t-1} at the model's unconditional level.
    Works for symmetric GARCH, GJR (o=1), and EGARCH.
    """
    p = res.params
    vol_name = res.model.volatility.__class__.__name__
    sigma2_bar = np.mean(res.conditional_volatility ** 2)

    omega = p["omega"]
    alpha = p.get("alpha[1]", 0.0)
    gamma = p.get("gamma[1]", 0.0)
    beta  = p.get("beta[1]", 0.0)

    if vol_name == "EGARCH":
        sig_prev = np.sqrt(sigma2_bar)
        z = shock_grid / sig_prev
        E_abs = np.sqrt(2 / np.pi)   # approx; arch uses the fitted dist's E|z|
        log_s2 = (omega + beta * np.log(sigma2_bar)
                  + alpha * (np.abs(z) - E_abs) + gamma * z)
        return np.exp(log_s2)
    else:
        ind = (shock_grid < 0).astype(float)
        return omega + (alpha + gamma * ind) * shock_grid**2 + beta * sigma2_bar

shocks = np.linspace(-8, 8, 401)   # daily % shocks
plt.figure(figsize=(8, 5))
for name in ["GARCH-N", "GJR-t", "EGARCH-t"]:
    nic = news_impact_curve(models[name], shocks)
    plt.plot(shocks, nic, label=name, lw=2)
plt.axvline(0, color="gray", lw=0.8, ls="--")
plt.xlabel("Last shock  $\\varepsilon_{t-1}$  (daily %)")
plt.ylabel("Next-period conditional variance  $\\sigma_t^2$")
plt.title("News impact curve: symmetric vs GJR vs EGARCH (BTC)")
plt.legend()
plt.tight_layout()

Buni ishga tushirganingizda, simmetrik GARCH-N egri chizig'i nolda markazlashgan toza parabola — 6%-6\% va +6%+6\% shok bir xil dispersiyani beradi. GJR-t boshlanish nuqtasida burilish bilan parabola, chap qo'l yuqoriroq. EGARCH-t — eksponensial V, va agar uning chap qo'li o'ng qo'lidan yuqorida joylashgan bo'lsa, siz leverage effektini va ishora konventsiyasini bir qarashda tasdiqlagansiz. Agar EGARCH ning chap qo'li o'ngdan pastda joylashsa, yoki γ\gamma musbat baholangan (yuqori-volatillik rejimi), yoki sizda ishora teskari — chizma buni taxminsiz aytib beradi.

To'rtta Modelning Yonma-yon Solishtiruvi

Riskka o'tishdan oldin, to'rtta modelni yonma-yon ushlab turish foydali. Har bir qator dizayn qarori, va ustunlar bu qaror nimaga tushishi va nima berishini ko'rsatadi.

Xususiyat GARCH-N GJR-t EGARCH-t GJR-skewt
Assimetriya (shok ishorasi) yo'q chegara γIε2\gamma I\varepsilon^2 ishoralangan γz\gamma z chegara γIε2\gamma I\varepsilon^2
Innovatsiya dum shakli Gauss Student-tt Student-tt skewed-tt
Innovatsiyada qiyshiqlik yo'q yo'q yo'q ha (λ\lambda)
Musbatlik cheklovlari ha ha (α+γ0\alpha+\gamma\ge0) yo'q (log shakl) ha
Statsionarlik sharti α+β<1\alpha+\beta<1 α+β+12γ<1\alpha+\beta+\tfrac12\gamma<1 β<1\lvert\beta\rvert<1 α+β+P(z<0)γ<1\alpha+\beta+P(z<0)\gamma<1
Bazaviyga nisbatan qo'shimcha parametrlar 0 γ,ν\gamma,\nu γ,ν\gamma,\nu γ,ν,λ\gamma,\nu,\lambda
Odatiy kripto xulosasi VaR backtestidan o'tmaydi kuchli, barqaror kuchli, barqaror GJR-t ga nisbatan chekka

Yodda tutish kerak bo'lgan naqsh: 1-ustundan 2-ustunga sakrash — bir vaqtning o'zida assimetriya va og'ir dumlarni qo'shish — deyarli barcha risk-kalibrlash yaxshilanishi yashaydigan joy. Keyingi takomillashtirishlar (EGARCH ning funksional shakli, qiyshiqlik hadi) haqiqiy, lekin ikkinchi darajali, va ko'pgina kripto qatorlarida ular shovqin ichida qoladi. Modellash byudjetingizni birinchi sakrashga sarflang va qolganiga shubha bilan qarang.

Risk Amaliyoti: VaR va Expected Shortfall

Murakkabroq volatillik modelini moslashtirish faqat u qarorni yaxshilasagina foydali. Yaxshilash uchun eng toza qaror — bir qadamli dum-risk prognozi: ertaga qanchalik yomon bo'lishi mumkin? Biz bir kunlik oldindan Value-at-Risk va Expected Shortfall (aka Conditional VaR, HRP/CVaR portfel quvuri uni o'z maqsadi sifatida ishlatadi) ni moslashtirilgan GARCH-tt/skew-tt prognozidan bevosita hosil qilamiz.

Shartli Taqsimotdan VaR ga

GARCH mexanizmi shartli o'rtacha μt+1\mu_{t+1} va shartli standart og'ish σt+1\sigma_{t+1} ning bir qadamli prognozini beradi. Daromad rt+1=μt+1+σt+1zt+1r_{t+1} = \mu_{t+1} + \sigma_{t+1} z_{t+1} sifatida modellashtiriladi, zt+1z_{t+1} esa moslashtirilgan standartlashtirilgan taqsimotdan (Gauss, tt yoki skew-tt) olinadi. Shunday qilib daromadning α\alpha-kvantili shunchaki standartlashtirilgan taqsimotning α\alpha-kvantilining affin transformatsiyasi:

VaRα(t+1)=(μt+1+σt+1Fz1(1α))\text{VaR}_{\alpha}(t+1) = -\Bigl(\mu_{t+1} + \sigma_{t+1}\, F_z^{-1}(1-\alpha)\Bigr)

bu yerda Fz1F_z^{-1} standartlashtirilgan innovatsiyaning kvantili (teskari CDF), va oldingi minus ishora VaR musbat zarar soni bo'lishi konventsiyasiga amal qiladi. 99% VaR uchun α=0.99\alpha = 0.99, va siz Fz1(0.01)F_z^{-1}(0.01) ni qo'yasiz. tt/skew-tt ning butun foydasi shu yerda ko'rinadi: Fz1(0.01)F_z^{-1}(0.01) Gauss 2.326-2.326 dan manfiyroq, shuning uchun VaR haqiqatan ham kattaroq.

Expected Shortfall

VaR sizga chegarani aytadi; u buzilish sodir bo'lganda qanchalik yomon bo'lishi haqida hech narsa aytmaydi. Expected Shortfall — VaR dan oshib ketish shartiga qarab o'rtacha zarar — buni aytadi, va u kogerent (subaddativ), shuning uchun u CVaR optimizatsiyasi ortidagi risk o'lchovi va Basel nima uchun unga o'tgani. Joylashuv-masshtab modeli uchun,

ESα(t+1)=(μt+1+σt+1E ⁣[zzFz1(1α)]).\text{ES}_{\alpha}(t+1) = -\Bigl(\mu_{t+1} + \sigma_{t+1}\, \mathbb{E}\!\left[z \mid z \leq F_z^{-1}(1-\alpha)\right]\Bigr).

Shartli-dum-kutish hadi E[zzq]\mathbb{E}[z \mid z \le q] standart taqsimotlar uchun yopiq shakllarga ega. Gauss uchun, q=Φ1(1α)q = \Phi^{-1}(1-\alpha) bilan,

E[zzq]=ϕ(q)1α,\mathbb{E}[z \mid z \le q] = -\frac{\phi(q)}{1-\alpha},

bu yerda ϕ\phi — standart normal zichlik funksiyasi. ν\nu erkinlik darajasi va q=tν1(1α)q = t_\nu^{-1}(1-\alpha) (standartlashtirilgan masshtabda) bilan standartlashtirilgan Student-tt uchun dum kutishi:

E[zzq]=ν+q2ν1gν(q)1α,\mathbb{E}[z \mid z \le q] = -\frac{\nu + q^2}{\nu - 1}\cdot\frac{g_\nu(q)}{1-\alpha},

bu yerda gνg_\nu — standartlashtirilgan-tt zichligi. tt Expected Shortfall Gaussnikidan VaR dan ko'ra ko'proq oshib ketadi, chunki tt dumi shunchaki uzoqroq emas — u og'irroq, shuning uchun chegaradan tashqaridagi o'rtacha zarar nomutanosib ravishda katta. Bu qo'shimcha bo'shliq Gauss modeli sizdan yashiradigan son.

Moslashtirilgan arch Modelidan VaR va ES ni Hisoblash

arch taqsimotlari ppf (kvantil) metodini taqdim etadi, shuning uchun biz hech narsani qayta chiqarmasdan standartlashtirilgan kvantilni bevosita olishimiz mumkin. ES uchun biz sonli integratsiya qilamiz, bu barqaror va normal/t/skewt bo'yicha bir xilda ishlaydi.

from scipy import integrate

def var_es_forecast(res, alpha=0.99):
    """
    One-step-ahead VaR and ES at level alpha, on the same (x100) scale
    as the returns fed to the model. Divide by 100 for fractional units.
    """
    fc = res.forecast(horizon=1, reindex=False)
    mu = fc.mean.iloc[-1, 0]
    sigma = np.sqrt(fc.variance.iloc[-1, 0])

    dist = res.model.distribution          # StudentsT / SkewStudent / Normal
    dp = [res.params[k] for k in res.params.index
          if k in ("nu", "eta", "lambda", "lam")]

    z_q = dist.ppf(1 - alpha, dp) if dp else dist.ppf(1 - alpha)
    z_q = float(np.atleast_1d(z_q)[0])

    def pdf(z):
        arr = np.atleast_1d(z).astype(float)
        lp = dist.loglikelihood(dp, arr, np.ones_like(arr), individual=True) \
             if dp else dist.loglikelihood([], arr, np.ones_like(arr),
                                           individual=True)
        return np.exp(lp)

    num, _ = integrate.quad(lambda z: z * pdf(z), -30, z_q, limit=200)
    es_z = num / (1 - alpha)               # E[z | z <= z_q]

    var = -(mu + sigma * z_q)
    es  = -(mu + sigma * es_z)
    return {"mu": mu, "sigma": sigma, "z_q": z_q,
            "VaR": var, "ES": es}

for name in ["GARCH-N", "GJR-t", "GJR-skewt"]:
    out = var_es_forecast(models[name], alpha=0.99)
    print(f"{name:11s}  sigma={out['sigma']:.2f}%  "
          f"z_q={out['z_q']:+.2f}  "
          f"VaR99={out['VaR']:.2f}%  ES99={out['ES']:.2f}%")

z_q ustuni butun tarixni bitta sonda beradi. Gauss modeli zq2.33z_q \approx -2.33 dan foydalanadi; ν4.3\nu \approx 4.3 bilan tt esa 3.3-3.3 ga yaqin narsadan foydalanadi; skew-tt esa chap kvantilni yanada uzoqroq suradi, o'ngini esa ichkariga tortadi. Bir xil σt+1\sigma_{t+1}, sezilarli darajada kattaroq VaR. Agar siz kriptoda Gauss VaR ni ishlatib kelayotgan bo'lsangiz, bu — siz sezmasdan yutib kelayotgan bo'shliq.

Bir Qadam vs Ko'p Qadam: Ogohlantirish

Yuqoridagi barcha narsa bir kunlik oldindan prognoz, va GARCH VaR eng toza aynan shu yerda. Ikki narsa uzoqroq gorizontlarni chalkashtiradi, va ularni ekstrapolyatsiya qilishdan oldin bilishingiz kerak.

Birinchidan, dispersiya prognozlari o'rtachaga qaytadi. Statsionar GARCH dan olingan hh-qadamli shartli dispersiya hh o'sgan sayin shartsiz darajaga σˉ2\bar\sigma^2 ga yaqinlashadi, va yig'indi hh-kunlik dispersiya har bir qadam prognozlarining yig'indisi — bu volatillik uzoq muddatli o'rtachasida bo'lmasa, h×σt+12h\times\sigma_{t+1}^2 EMAS. Sodda "vaqtning kvadrat ildizi" masshtablashi VaR(h)=hVaR(1)\text{VaR}(h) = \sqrt{h}\,\text{VaR}(1) bu o'rtachaga qaytishni e'tiborsiz qoldiradi va aynan shok'dan keyin noto'g'ri bo'ladi, ya'ni siz eng ko'p bu songa muhtoj bo'lganingizda. Modelning o'z ko'p qadamli dispersiya yo'lidan foydalaning.

Ikkinchidan, ko'p kunlik daromadning taqsimoti bir kunlik innovatsiya bilan bir xil shaklda emas. Bir necha tt-taqsimlangan kunlik shoklarni (chiziqli bo'lmagan GARCH rekursiyasi orqali) qo'shish hh-kunlik gorizontda tt taqsimotini bermaydi; toza yopiq shakl yo'q. Ko'p kunlik VaR uchun halol yo'l — simulyatsiya: moslashtirilgan standartlashtirilgan taqsimotdan innovatsiya yo'llarini oling, ularni GARCH rekursiyasi orqali o'tkazib simulyatsiya qilingan daromad yo'llarini oling, hh-kunlik daromadlarga agregatsiya qiling, va empirik kvantilni o'qing. Bu, shuningdek, hech qanday analitik ko'p gorizontli kvantil umuman mavjud bo'lmagan skew-tt holatini tabiiy tarzda hal qiladi. Ushbu maqoladagi bir qadamli analitik formulalar aniq; har qanday ko'p qadamli qisqa yo'lni taxminiy deb hisoblab, tasdiqlang.

VaR Backtesti: Kupiec va Christoffersen

VaR prognozi — ehtimollik da'vosi: "zarar bu chegaradan faqat (1α)(1-\alpha) kunlarda oshadi". Buni siz buzilishlarni (haqiqiy zarar prognoz qilingan VaR dan oshgan kunlar) walk-forward baholash davomida sanab va ikkita narsani tekshirib sinaysiz. Birinchidan, buzilish tezligi to'g'rimi? Ikkinchidan, buzilishlar mustaqilmi, yoki ular klasterlanadimi (bu model aynan eng muhim vaqtda, volatillik keskinlashuvlari paytida ishlamay qolishini bildiradi)?

It=1{losst>VaRt}I_t = \mathbf{1}\{\text{loss}_t > \text{VaR}_t\} buzilish ketma-ketligi, N=ItN = \sum I_tTT kun davomidagi buzilishlar soni, va π^=N/T\hat{\pi} = N/T — kuzatilgan tezlik bo'lsin. Maqsad tezligi p=1αp = 1-\alpha.

Kupiec shartsiz qamrov testi (1995) π^p\hat\pi \approx p ni likelihood ratio orqali tekshiradi:

LRuc=2log ⁣[pN(1p)TNπ^N(1π^)TN]    χ12.LR_{uc} = -2\log\!\left[\frac{p^{N}(1-p)^{T-N}}{\hat\pi^{N}(1-\hat\pi)^{T-N}}\right] \;\sim\; \chi^2_1.

Christoffersen mustaqillik testi (1998) bugungi buzilish kechagi buzilish tomonidan bashorat qilinmasligini tekshiradi. nijn_{ij} buzilish ketma-ketligidagi ii holatidan jj holatiga o'tishlarni sanasin, π01=n01/(n00+n01)\pi_{01} = n_{01}/(n_{00}+n_{01}), π11=n11/(n10+n11)\pi_{11} = n_{11}/(n_{10}+n_{11}), va π=(n01+n11)/T\pi = (n_{01}+n_{11})/T. Shunda

LRind=2log ⁣[(1π)n00+n10πn01+n11(1π01)n00π01n01(1π11)n10π11n11]    χ12.LR_{ind} = -2\log\!\left[\frac{(1-\pi)^{n_{00}+n_{10}}\,\pi^{\,n_{01}+n_{11}}}{(1-\pi_{01})^{n_{00}}\pi_{01}^{n_{01}}(1-\pi_{11})^{n_{10}}\pi_{11}^{n_{11}}}\right] \;\sim\; \chi^2_1.

Ikkalasi shartli qamrov testiga LRcc=LRuc+LRindχ22LR_{cc} = LR_{uc} + LR_{ind} \sim \chi^2_2 ga birlashadi, bu bir vaqtning o'zida to'g'ri tezlikni va mustaqillikni tekshiradi. Model Kupiecdan o'ta oladi (buzilishlar soni to'g'ri), lekin Christoffersendan o'ta olmaydi (ularning barchasi bitta qulash haftasiga to'plangan) — bu siz eng ko'p tutmoqchi bo'lgan muvaffaqiyatsizlik rejimi, chunki klasterlangan buzilishlar hisobni portlatib yuboradiganlaridir.

from scipy.stats import chi2

def var_backtest(losses, var, p):
    """
    losses, var: 1D arrays, same length; loss>0 is a loss, var>0 threshold.
    p = 1 - alpha (target violation rate, e.g. 0.01 for 99% VaR).
    Returns Kupiec, Christoffersen-independence, and conditional-coverage LR.
    """
    losses = np.asarray(losses)
    var = np.asarray(var)
    I = (losses > var).astype(int)          # violation indicators
    T = len(I)
    N = int(I.sum())
    pi_hat = N / T

    eps = 1e-12
    ll_null = N * np.log(p + eps) + (T - N) * np.log(1 - p + eps)
    ll_alt  = N * np.log(pi_hat + eps) + (T - N) * np.log(1 - pi_hat + eps)
    LR_uc = -2 * (ll_null - ll_alt)
    p_uc = 1 - chi2.cdf(LR_uc, df=1)

    n00 = np.sum((I[:-1] == 0) & (I[1:] == 0))
    n01 = np.sum((I[:-1] == 0) & (I[1:] == 1))
    n10 = np.sum((I[:-1] == 1) & (I[1:] == 0))
    n11 = np.sum((I[:-1] == 1) & (I[1:] == 1))
    pi01 = n01 / (n00 + n01) if (n00 + n01) else 0.0
    pi11 = n11 / (n10 + n11) if (n10 + n11) else 0.0
    pi   = (n01 + n11) / (n00 + n01 + n10 + n11)

    def _ll(pi01, pi11, pi_pooled, use_pooled):
        if use_pooled:
            a = (n00 + n10) * np.log(1 - pi_pooled + eps)
            b = (n01 + n11) * np.log(pi_pooled + eps)
            return a + b
        return (n00 * np.log(1 - pi01 + eps) + n01 * np.log(pi01 + eps)
                + n10 * np.log(1 - pi11 + eps) + n11 * np.log(pi11 + eps))

    LR_ind = -2 * (_ll(pi01, pi11, pi, True) - _ll(pi01, pi11, pi, False))
    p_ind = 1 - chi2.cdf(LR_ind, df=1)

    LR_cc = LR_uc + LR_ind
    p_cc = 1 - chi2.cdf(LR_cc, df=2)

    return {
        "T": T, "violations": N,
        "obs_rate": pi_hat, "target_rate": p,
        "LR_uc": LR_uc, "p_uc": p_uc,
        "LR_ind": LR_ind, "p_ind": p_ind,
        "LR_cc": LR_cc, "p_cc": p_cc,
    }

losses/var kirishlarini halol yaratish uchun, kengayuvchi yoki aylanma oynada qayta moslashtirasiz (yoki hech bo'lmaganda qayta prognoz qilasiz) va namunadan tashqari har bir kun uchun bir qadamli oldindan VaR ni yozib olasiz, so'ngra buni o'sha kunning haqiqiy zarari bilan solishtirasiz. VaR ni hech qachon namuna ichida backtest qilmang — o'zi bashorat qilishga so'ralayotgan aynan shu qulash ustida moslashtirilgan model haqiqatdagidan ancha yaxshiroq ko'rinadi. Bu backtest-jonli parallellik bilan bir xil intizom: baholash faqat qaror qabul qilish vaqtida mavjud bo'lgan ma'lumotdan foydalanishi kerak.

def walk_forward_var(returns, alpha=0.99, start=750, refit_every=25,
                     vol="Garch", o=1, dist="t"):
    """
    Expanding-window one-step VaR. Refit every `refit_every` days
    (refitting daily is correct but slow; every ~25 days is a common
    compromise -- validate the shortcut on your data).
    """
    losses, vars_ = [], []
    res = None
    for t in range(start, len(returns)):
        if res is None or (t - start) % refit_every == 0:
            am = arch_model(returns.iloc[:t], mean="Constant",
                            vol=vol, p=1, o=o, q=1, dist=dist)
            res = am.fit(disp="off")
        fc = res.forecast(horizon=1, reindex=False)
        mu = fc.mean.iloc[-1, 0]
        sig = np.sqrt(fc.variance.iloc[-1, 0])
        dp = [res.params[k] for k in res.params.index
              if k in ("nu", "eta", "lambda", "lam")]
        z_q = float(np.atleast_1d(
            res.model.distribution.ppf(1 - alpha, dp) if dp
            else res.model.distribution.ppf(1 - alpha))[0])
        var_t = -(mu + sig * z_q)
        vars_.append(var_t)
        losses.append(-returns.iloc[t])     # realized loss for that day
    return np.array(losses), np.array(vars_)

losses, vars_ = walk_forward_var(r, alpha=0.99, dist="t")
print(var_backtest(losses, vars_, p=0.01))

O'qish: yaxshi kalibrlangan 99% VaR kuzatilgan tezlikni 1% ga yaqin ko'rsatadi, ahamiyatsiz Kupiec (katta p_uc), va ahamiyatsiz Christoffersen (katta p_ind) — klasterlanish yo'q. Amaliyotda kriptodagi halol natija shundaki, GARCH-Normal Kupiecdan o'ta olmaydi (juda ko'p buzilish, p_uc juda kichik), GJR-tt yoki EGARCH-tt esa o'tadi yoki yaqinlashadi. Bu qarama-qarshilik — bu maqolaning butun argumenti gipoteza testi sifatida ifodalangan. Agar hatto tt modeli ham klasterlangan buzilishlarni ko'rsatsa (kichik p_ind), volatillik dinamikangiz hali ham noto'g'ri spetsifikatsiyalangan — bu ko'pincha uzunroq xotira (component/FIGARCH) yoki rejim qatlami kerakligining belgisi, bu HMM lar bilan rejim aniqlash bilan bog'liq.

Modellarni Faqat O'tish/O'tmaslik Emas, Dum Zarari bo'yicha Reytinglash

Kupiec va Christoffersen sizga ikkilik xulosa beradi — model rad etilgan yoki etilmagan. Bu zaruriy, lekin qo'pol: ikkita model ikkalasi ham "o'tishi" mumkin, holbuki biri sezilarli darajada o'tkirroq. Raqobatlashuvchi VaR prognozlarini reytinglash uchun, ularni kvantil uchun qat'iy izchil zarar funksiyasi, pinball (kvantil) zarar bilan bahoyaling:

Lτ(r,q)=(τ1{r<q})(rq),τ=1α,L_\tau(r, q) = \bigl(\tau - \mathbf{1}\{r < q\}\bigr)\,(r - q), \qquad \tau = 1-\alpha,

bu yerda qq — (ishoralangan) VaR kvantili va rr — haqiqiy daromad. Namunadan tashqari kunlar bo'yicha o'rtachalangan holda, pastroq o'rtacha pinball zarari yaxshiroq kalibrlangan va o'tkirroq kvantilni bildiradi; zarar τ\tau-kvantil uchun izchil bo'lgani sababli, uni minimallashtirish modelni dangasa keng bo'lgani uchun mukofotlamaydi. Ikki modelni rasmiy ravishda solishtirish uchun, ularning kunlik zarar farqlarini Diebold-Mariano testiga uzating.

def pinball_loss(returns, var, alpha=0.99):
    tau = 1 - alpha
    q = -np.asarray(var)               # VaR is a positive loss; quantile is negative
    r = np.asarray(returns)
    hit = (r < q).astype(float)
    return np.mean((tau - hit) * (r - q))

Xususan Expected Shortfall uchun, ES o'zicha elitsitabl emasligiga e'tibor bering (minimizatori faqat ES bo'lgan zarar funksiyasi mavjud emas), bu haqiqiy nazariy murakkablik: siz ES ni VaR bilan birgalikda Fissler-Ziggel skorlash qoidalari yordamida baholaysiz, yoki o'rtacha buzilish hajmi modelning bashorat qilingan ES iga mos kelishini tekshirishning soddaroq amaliyotiga qaytasiz. Qo'pol, lekin foydali ES tekshiruvi: VaR-buzilish kunlari orasida, o'sha kunlardagi o'rtacha haqiqiy zararni o'rtacha bashorat qilingan ES bilan solishtiring — ular yaqin bo'lishi kerak.

Tartibga solish ramkasi Basel svetofor yondashuvi: 250 savdo kuni davomida, 99% VaR ning 0-4 buzilishi "yashil" (qabul qilinadi), 5-9 — "sariq" (nazorat), 10+ — "qizil" (model rad etiladi va kapital ko'paytiruvchilari oshadi). Bu Kupiec ning qo'polroq qarindoshi, lekin bu risk qo'mitalari haqiqatan gapiradigan til, va uni LR statistikasi bilan birga hisobot qilish qimmatli.

Amaliy Fikrlar

Qo'shimcha Parametrlar O'zini Oqlamaydigan Holatlar

Halol standart — murakkablikka shubha bilan qarash. Siz qo'shadigan har bir parametr — optimizator ortiqcha moslashtira oladigan tugma, va assimetrik og'ir dumli GARCH da ularning bir nechtasi bor. Aniq ko'rsatmalar:

  • Kam likvid yoki qisqa namunalar. Bir necha yuzta kunlik kuzatuv bilan, γ\gamma va λ\lambda dagi standart xato katta bo'ladi, va siz namuna shovqini bo'lgan assimetriyalarni "aniqlaysiz". Yangi yoki yupqa altkoin ustida, simmetrik GARCH-tt ko'pincha ma'lumot qo'llab-quvvatlay oladigan eng murakkab model. 200 kunga skew-t EGARCH ni moslashtirish o'zingizni aldashdir.
  • Qiyshiqlik hadi ko'pincha o'z narxini oqlamaydi. Amaliyotda, Normaldan tt ga o'tish katta, ishonchli yaxshilanish (og'ir dumlar haqiqiy va kuchli). tt dan skew-tt ga o'tish ko'pincha chekka — 1 yoki 2 BIC yutuq, ba'zan manfiy. Qiyshiqlikni faqat ma'lumot buni aniq talab qilganda qo'shing.
  • EGARCH vs GJR kunlik ma'lumotda odatda deyarli bir xil. Ular bir xil sifat tarixini turli funksional shakllar bilan kodlaydi. Namuna ichidagi qaysi biri chiroyliroq log-ehtimollikka ega ekaniga qarab emas, namunadan tashqari VaR backtesti bo'yicha tanlang.
  • Yuqoriroq chastota javobni o'zgartiradi. Soatlik yoki minutlik barlarda, kun ichidagi mavsumiylik va mikrostruktura ustunlik qiladi, va oddiy kunlik uslubdagi GARCH assimetriyadan qat'i nazar noto'g'ri spetsifikatsiyalangan. Boshqa muammo, boshqa vositalar.

Bu ishonchli chekka yo'qligi bilan halol baholash bilan bir xil saboq: namunadan tashqari sinovdan omon qolmaydigan murakkabroq model o'rnini bosgan oddiy modeldan yomonroq, chunki u aniqlik illyuziyasini olib yuradi. Salbiy natijani — "ETH da qiyshiqlik yordam bermadi" — haqiqiy topilma sifatida hisobot qiling, va namuna ichidagi AIC emas, walk-forward optimizatsiyasi ni hakam sifatida ishlating.

Bular — Boshqa Hamma Narsa Quriladigan Marginallar

Bu yerdagi modellar yakuniy nuqta emas; ular birgalikdagi-risk mexanizmi uchun bir o'zgaruvchili qurilish bloki. Birgalikdagi kripto risk uchun kopula modellari maqolasi vine kopulani moslashtirishdan oldin GARCH-EVT marginallari sifatida aynan EGARCH/GJR-tt dan foydalanadi — siz har bir aktiv uchun assimetrik og'ir dumli GARCH ni moslashtirasiz, standartlashtirilgan qoldiqlarni chiqarasiz, va faqat shundan keyin aktivlar aro bog'liqlikni modellaysiz. Agar sizning marginalingiz simmetrik Gauss GARCH bo'lsa, kopula bog'liqlik modeli qanchalik yaxshi bo'lishidan qat'i nazar uning dum xatolarini meros qilib oladi. Chiqindi marginallar, chiqindi birgalikdagi VaR.

Ko'p o'zgaruvchili volatillik muammosi uchun — har bir aktiv dispersiyasi emas, vaqt bo'yicha o'zgaruvchan korrelyatsiyalar3-qism, DCC-GARCH ga qarang, u ushbu bir o'zgaruvchili moslashtirishlar ustiga dinamik-korrelyatsiya modelini qatlaydi. Volatillik prognozini pozitsiya hajmi va savdo backtestiga aylantirish uchun, 4-qism volatillik nishonlash haqida ushbu aynan shu modellarning σt+1\sigma_{t+1} prognozlaridan bashorat qilingan riskga teskari ravishda ekspozitsiyani masshtablash uchun foydalanadi.

Taqsimotdan Mustaqil Muqobil

Risk bo'limidagi hamma narsa parametrik farazga tayanadi: standartlashtirilgan qoldiqlar tt yoki skew-tt ga amal qiladi. Bu faraz sinaladigan va odatda oqilona, lekin u muvaffaqiyatsizlikka uchrashi mumkin. Agar siz dum shakliga umuman sodiq qolmoqchi bo'lmasangiz, konformal prognozlash chekli-namunali qamrov kafolatlari bilan taqsimotdan mustaqil prognoz intervallarini beradi — innovatsiya taqsimoti haqida hech qanday da'vo qilmaydigan haqiqatan ham boshqa falsafa. Ikki yondashuv bir-birini to'ldiradi: parametrik GARCH-tt sizga to'liq shartli zichlikni beradi (demak ES ni ham, konformal intervallar buni bevosita ta'minlamaydi), konformal esa zichligingiz noto'g'ri bo'lganda ham saqlanadigan qamrovni beradi. Ishlab chiqarishda, ikkalasini o'zaro tekshiruv sifatida ishlatish arzon sug'urta.

Sonli va Ish Jarayoni Gigienasi

  • Daromadlarni 100 ga ko'paytiring. GARCH optimizatorlari xom kasrli daromadlarga qaraganda foiz daromadlarida ancha ishonchli yaqinlashadi. Kasrli birliklarda hisobot qilsangiz, VaR/ES ni masshtabsizlashtirishni unutmang.
  • Persistensiyani kuzatib boring. Agar α+β+12γ\alpha + \beta + \tfrac12\gamma ~0.999 dan yuqori baholansa, model deyarli integratsiyalangan (IGARCH-ga o'xshash); prognozlar juda sekin o'rtachaga qaytadi va uzoq gorizontli dispersiya prognozlari ishonchsiz bo'lib qoladi. Albatta noto'g'ri emas, lekin buni belgilab qo'ying.
  • Aylanma oynalarda yaqinlashmaslik nosozliklari. EGARCH ning log shakli musbatlik cheklovlaridan qochadi, lekin baribir patologik oynada yaqinlasha olmasligi mumkin. fit() ni try/except ga o'rang va jonli backtestni buzish o'rniga oldingi oynaning parametrlariga qayting.
  • O'rtacha model. Biz butun davomida doimiy o'rtachadan foydalandik. Ko'pgina kunlik kripto uchun shartli o'rtacha nolga yaqin va volatillik tomonidan bosib ketiladi; agar haqiqiy sabab bo'lmasa, uni bashorat qilishga model murakkabligini sarflamang.

Xulosa

  • Oddiy GARCH(1,1) ikkita tuzilmaviy kamchilikka ega: u simmetrik (shoklar ε2\varepsilon^2 sifatida kirgani uchun +x%+x\% va x%-x\% ga bir xil reaksiya beradi) va u Gauss innovatsiyalarini faraz qiladi (kriptoning og'ir dumlarini arzonlashtiradi). Ikkalasi ham optimistik VaR orqali haqiqiy pulga tushadi.
  • GJR-GARCH chegara hadi γI(εt1<0)εt12\gamma\,I(\varepsilon_{t-1}<0)\,\varepsilon_{t-1}^2 qo'shadi. Ahamiyatli γ>0\gamma > 0 — leverage effekti: yomon yangilik volatillikni ko'proq oshiradi. Musbatlik α+γ0\alpha+\gamma\ge0 ni talab qiladi; persistensiya α+β+12γ\alpha+\beta+\tfrac12\gamma.
  • EGARCH logσt2\log\sigma_t^2 ni modellaydi, shuning uchun musbatlik cheklovlari yo'q va statsionarlik shunchaki β<1|\beta|<1. Assimetriya hajm hadi zt1|z_{t-1}| dan ajratilgan ishoralangan had γzt1\gamma z_{t-1} orqali kiradi (bu konventsiyada leverage — γ<0\gamma<0).
  • Yangilik ta'siri egri chizig'i — keyingi davr dispersiyasi oxirgi shokka nisbatan — assimetriyani ko'rinadigan qiladi va EGARCH ishora konventsiyasini bir qarashda tasdiqlaydi.
  • Student-tt innovatsiyalari (dist='t') erkinlik darajasi ν\nu orqali dumlarni tuzatadi (kripto uchun odatda 3–6); Hansenning skew-tt si (dist='skewt') og'irroq chap dum uchun qiyshiqlik λ\lambda qo'shadi. Normaldan tt ga o'tish katta ishonchli yutuq; tt dan skew-tt ga o'tish ko'pincha chekka.
  • VaR va ES moslashtirilgan shartli taqsimotdan kelib chiqadi: VaRα=(μt+1+σt+1Fz1(1α))\text{VaR}_\alpha = -(\mu_{t+1} + \sigma_{t+1}F_z^{-1}(1-\alpha)), og'ir dumli kvantil riskni Gaussga qaraganda haqiqatan ham kattaroq qiladi. ES (kogerent, \approx CVaR) VaR dan tashqaridagi o'rtacha zararni qamrab oladi.
  • Kupiec va Christoffersen bilan backtest qiling. Kupiec buzilish tezligini tekshiradi; Christoffersen buzilishlar klasterlanmaganini tekshiradi. Model bittasidan o'tib, boshqasidan o'ta olmasligi mumkin — klasterlangan buzilishlar xavfli muvaffaqiyatsizlik rejimi. Qat'iy ravishda namunadan tashqari backtest qiling.
  • Murakkablikdan ko'ra intizom. Assimetriya/qiyshiqlikni faqat u BIC va namunadan tashqari VaR backtestidan omon qolganda qo'shing. Qisqa yoki kam likvid qatorlarda, oddiyroq model odatda g'alaba qozonadi.

References:

  • Nelson, D. B. (1991). Conditional heteroskedasticity in asset returns: A new approach. Econometrica, 59(2), 347-370. DOI
  • Glosten, L. R., Jagannathan, R., & Runkle, D. E. (1993). On the relation between the expected value and the volatility of the nominal excess return on stocks. Journal of Finance, 48(5), 1779-1801. DOI
  • Bollerslev, T. (1987). A conditionally heteroskedastic time series model for speculative prices and rates of return. Review of Economics and Statistics, 69(3), 542-547. DOI
  • Hansen, B. E. (1994). Autoregressive conditional density estimation. International Economic Review, 35(3), 705-730. DOI
  • Engle, R. F., & Ng, V. K. (1993). Measuring and testing the impact of news on volatility. Journal of Finance, 48(5), 1749-1778. DOI
  • Christoffersen, P. F. (1998). Evaluating interval forecasts. International Economic Review, 39(4), 841-862. DOI
  • Kupiec, P. H. (1995). Techniques for verifying the accuracy of risk measurement models. Journal of Derivatives, 3(2), 73-84. DOI
  • Black, F. (1976). Studies of stock price volatility changes. Proceedings of the American Statistical Association, Business and Economic Statistics Section, 177-181.
  • McNeil, A. J., Frey, R., & Embrechts, P. (2015). Quantitative Risk Management: Concepts, Techniques and Tools (2nd ed.). Princeton University Press.
  • Sheppard, K. (2023). arch: Autoregressive conditional heteroskedasticity models in Python. GitHub.
blog.disclaimer

MarketMaker.cc Team

Miqdoriy tadqiqotlar va strategiya

Telegramda muhokama qilish
Newsletter

Bozordan bir qadam oldinda bo'ling

Sun'iy intellekt savdo tahlillari, bozor tahlili va platforma yangiliklari uchun bizning xabarnomaga obuna bo'ling.

Biz sizning maxfiyligingizni hurmat qilamiz. Istalgan vaqtda obunadan chiqishingiz mumkin.