Асимметриялы және ауыр құйрықты GARCH: EGARCH, GJR және Student-t
Осы серияның 1-бөлімінде біз GARCH(1,1) моделін нөлден бастап құрдық: волатильділіктің шоғырлану интуициясы, шартты дисперсияның рекурсиясы, максималды ықтималдық әдісі, болжау және arch кітапханасымен стандартты қалдық диагностикасы. Егер оны әлі оқымаған болсаңыз, алдымен содан бастаңыз — бұл мақала сіздің қарапайым GARCH(1,1) моделін фиттеп, түсіндіре алатыныңызды болжайды және негіздерді қайта қорытпайды.
Қарапайым GARCH(1,1) — жақсы бастапқы нүкте, бірақ жаман түпкілікті шешім. Оның екі құрылымдық кемшілігі бар — бэктестте оларды елемеу арзан, ал нақты капиталмен елемеу қымбат тұрады. Біріншіден, ол симметриялы: модель күнге күнге қалай әрекет етсе, дәл солай әрекет етеді, себебі шок дисперсия рекурсиясына тек өз квадраты арқылы, , енеді. Квадраттау таңбаны жоғалтады. Екіншіден, ол Гаусс инновацияларын болжайды: GARCH волатильділіктің шоғырлануын сіңіргеннен кейін де BTC мен ETH-тің стандартталған қалдықтары анық ауыр құйрықты болып шығады, ал Гаусс ықтималдық функциясы құйрықты жүйелі түрде арзандатады. GARCH(1,1)-Normal 99% VaR шегі 1%-дан әлдеқайда жиі бұзылады.
Бұл мақала екі кемшілікті де түзетеді. Біз GJR-GARCH пен EGARCH арқылы асимметрия қосамыз, ал Student- және Хансеннің қиғаш- (skewed-) инновациялары арқылы ауыр құйрықтарды қосамыз. Содан кейін нақты пайда әкелетін нәрсені жасаймыз: фителген шартты үлестіруді бір қадамдық Value-at-Risk және Expected Shortfall болжамына айналдырамыз және бұл болжамды Купиек пен Кристофферсен тесттерімен адал бэктестейміз. Ешқашан тәуекел тестінен өтпеген волатильділік моделі — тек безендіру.
Левередж эффектісі және неге криптовалютада бәрі шатасқан
Акциялар нарығында бұл асимметрияның аты да, тарихы да бар. Левередж эффектісі (Black, 1976): компанияның акциясы құлағанда, оның борыш/капитал қатынасы өседі, капитал механикалық түрде тәуекелдірек болады, ал волатильділік артады. Жаман жаңалық болашақ волатильділікті сол мөлшердегі жақсы жаңалыққа қарағанда көбірек арттырады. Эмпирикалық тұрғыдан бұл акциялар волатильділігі әдебиетіндегі ең тұрақты стилизацияланған фактілердің бірі.
Криптовалютада корпоративтік мағынадағы капитал да, баланстық левередж де жоқ, бірақ левередж эффектісіне ұқсас асимметрия әлі де көбіне байқалады — оған есеп жүргізу емес, мәжбүрлі делевереджинг себеп болады. BTC қатты құлағанда, артық қамтамасыз етілген несиелер ликвидацияланады, мәңгілік фьючерстердегі лонг позициялар мәжбүрлі жабылады, фандинг таңбасы ауысады, және каскад волатільділікті қоректендіреді. Сонымен, механизм басқа, бірақ таңбасы көбіне акциялармен сәйкес келеді: төмен қозғалыстар волатильділікті көбірек көтереді.
Маңызды ескерту: криптовалюта шатасқанырақ, сондықтан асимметрияны заңдылық емес, эмпирикалық сұрақ ретінде қарастырған жөн. Күшті жоғары қозғалыстар — қысқа позицияларды сығу (short squeeze), левереджбен қозғалатын өрлеу, ETF мақұлдау секілді гэп — де іске асқан волатильділікті көтере алады. Активке және таңдалған терезеге байланысты бағаланған асимметрия күшті, әлсіз немесе кейде "қате" таңбалы болуы мүмкін. Бұл мақала талап ететін тәртіп: асимметриялы модельді фиттеп, асимметрия параметрінің статистикалық маңызды әрі күтілген бағытта екенін тексеріп, қосымша параметрді тек ол өз орнын ақтаса ғана сақтаңыз. Акциялар тарихын автоматты түрде көшірмеңіз — оны тексеріңіз.
Модельдеу алдында асимметрияны тексеру
Жоғарыдағы нұсқау "асимметрияны эмпирикалық деп қарастыр" дейді — сондықтан асимметриялы модельді фиттеу алдында, асимметрияның жалпы бар-жоғын тексеретін арзан формальды тест жүргізіңіз. Engle-Ng таңба-бейтараптық тесттері (1993) дәл осыны жасайды. Алдымен симметриялы GARCH(1,1) фиттеп, оның стандартталған қалдықтарының квадратын алып, оларды алдыңғы шоктың таңбасы мен өлшемінің индикаторларына регрессиялаңыз:
мұндағы және . Логика мынада: егер симметриялы модель бәрін қамтыған болса, кешегі шоктың таңбасы мен өлшемі бүгінгі квадраттық қалдықты болжай алмауы керек, яғни . Жеке -тесттер — таңба-бейтараптық (), теріс өлшем-бейтараптық () және оң өлшем-бейтараптық () тесттері; үшеуіне бірге жасалған -тест — омнибус. немесе -нің маңыздылығы теріс шоктардың симметриялы модель тарапынан жүйелі түрде бағаланбай жатқанын білдіреді — бұл GJR немесе EGARCH көмектесетінінің белгісі.
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"])
Егер бірлескен -тест маңызды болмаса, сізде симметриялы қалу және екі параметрді үнемдеу үшін эмпирикалық негіз бар. Егер ол маңызды болса — BTC/ETH үшін жиі кездесетін жағдай — GJR/EGARCH-ке таза ниетпен көшіңіз, себебі сіз шудың артынан қумай, нақты құбылысты модельдеп жатырсыз. Бұл — жоғарыда талап етілген эмпирикалық тәртіп: акциялар нарығының левередж тарихын болжамдамай, оны тексеру керек.
GJR-GARCH: шектік мүше арқылы асимметрия
Глостен-Джаганнатан-Ранкл моделі (1993) — кейде TGARCH немесе табалдырықты GARCH деп аталады — GARCH(1,1)-ге жаман мен жақсы жаңалықтың әртүрлі әсер етуіне мүмкіндік беретін ең кіші мүмкін өзгеріс. 1-бөлімдегі симметриялы шартты дисперсия рекурсиясын еске түсірейік:
GJR бір шектік мүше қосады: тек теріс шоктан кейін ғана қосылатын қосымша дисперсия дозасы.
мұндағы — индикатор
Рекурсияны жағдайлар бойынша оқыңыз. Оң шоктан кейін (), индикатор нөлге тең, және квадраттық шоктың келесі кезеңдегі дисперсияға әсері жай ғана . Теріс шоктан кейін индикатор бірге тең, ал әсер . параметрі — бір санда бүкіл асимметрия тарихы:
- : теріс шоктар волатильділікті сол мөлшердегі оң шоктарға қарағанда көбірек арттырады. Бұл — левередж эффектісі, және оны BTC/ETH-те көп жағдайда табуды күтуге болады.
- : модель симметриялы GARCH(1,1)-ге қайтадан айналады. Сондықтан бойынша ықтималдықтар қатынасы (likelihood-ratio) немесе -тест асимметрияның жалпы бар-жоғының тікелей тесті болып табылады.
- : оң шоктар волатильділікті көбірек арттырады — кейде кездесетін криптовалюталық өрлеу режимі. Сирек, бірақ оны алдын ала жоққа шығармаңыз.
Оңдылық пен стационарлық
әлі де қосымша түрде құрылатындықтан, әрбір мүшенің теріс болмауы қажет. Жеткілікті оңдылық шарттары:
-ның өзі шарты сақталған жағдайда теріс болуы мүмкін екенін ескеріңіз, сондықтан жаман жаңалықтан кейінгі әсер ешқашан теріс болмайды.
Ковариациялық стационарлық үшін инновациялардың нөл айналасында симметриялы үлестірумен стандартталғанын болжаймыз, сондықтан және индикатор орта есеппен үлес қосады. Стационарлық шарты мынаған айналады:
Шартсыз (ұзақ мерзімді) дисперсия сонда
Бұл — 1-бөлімдегі нәтижесінің GJR аналогы, мұндағы қосымша мүшесі левередждің орташа жарты өмір сүру мерзімінің үлесін есепке алады. Егер инновация үлестіруі қиғаш болса (Хансеннің skew- моделі, төменде), орнына болуының нақты ықтималдығы қойылады, бірақ есеп берілетін персистенттілік үшін стандартты сілтеме ретінде пайдаланылады.
EGARCH: лог-дисперсияны модельдеу, оңдылық шектеулерінсіз
GJR сізді дисперсияның оңдылық шеңберінде ұстайды: әрбір параметрлер комбинациясын теңсіздік шектеулеріне қарсы тексеру керек, бұл оптимизация кезінде тітіркендіргіш, ал айналмалы қайта бағалау кезінде — терезе кездейсоқ мүмкін емес аймаққа кірген сайын — одан да жаман. Нельсонның Экспоненциалды GARCH-і (1991) шартты дисперсияның логарифмін модельдеу арқылы бұдан толықтай аулақ болады. кез келген нақты сан бола алатындықтан, параметрлерге қарамастан автоматты түрде оң болады. Ешбір шектеу қажет емес.
Рекурсияны стандартталған инновация арқылы жазайық :
Шокты екі мүше тасымалдайды, және оларды бөлу — негізгі идея:
- Өлшем мүшесі шоктың өлшеміне, таңбасыз, әрекет етеді. -ды алып тастау оны орталықтандырады, сондықтан орташа өлшемдегі шок ешнәрсе қоспайды. Стандартты нормаль үшін ; стандартталған Student- үшін күтілетін абсолютті мән азырақ және -ге тәуелді, бірақ
archмұны ішінара өзі есептейді. - Таңба мүшесі — асимметрия. Ол таңбалы инновацияға сызықтық тәуелді, сондықтан теріс -ті оң мәннен қарама-қарсы бағытта итереді.
Таңба конвенциясы маңызды әрі адамдарды жиі шатастырады. Бұл параметризацияда левередж эффектісі (жаман жаңалық волатильділікті арттырады) -ге сәйкес келеді: теріс шок сонда жасайды, лог-дисперсияны арттырады. Бұл GJR-дың -ге қарама-қарсы таңба. Конвенцияны есте сақтамай, әрқашан модельдің өз құжаттамасын оқыңыз; arch EGARCH-ты өз таңбасымен есептейді, және біз оны есте сақтауға сенудің орнына төменде жаңалық әсерінің қисығымен тексереміз.
Барлығы логарифмде қосымша болғандықтан, EGARCH(1,1)-нің персистенттілігі бойынша жалғыз авторегрессиялық коэффициент арқылы басқарылады; стационарлық үшін тек қажет. Бұл GJR теңсіздігінен әлдеқайда таза шарт, және айналмалы терезелерде қайта фиттеу кезінде нақты практикалық артықшылық береді.
Айта кететін бір нәзіктік: EGARCH-тың шокқа реакциясы инновацияда экспоненциалды (соңында экспоненциалдайсыз), ал GJR — квадраттық. Сондықтан EGARCH үлкен шоктарға қаттырақ әрекет етеді — криптовалютада бұл — құйрықтық оқиғалар маңызды болғандықтан пайдалы қасиет, бірақ сонымен бірге EGARCH кейде выброс күнінен кейін орынсыз үлкен дисперсия болжамдарын беруі мүмкін дегенді білдіреді. Ешқайсысы әмбебап түрде жақсы емес; таңдау үлгіден тыс сәйкестік пен тәуекел бэктестері арқылы жасалады — бүкіл осы серияның мақсаты да осы.
Жаңалық әсерінің қисығы
Симметриялы GARCH, GJR және EGARCH арасындағы айырмашылықты көрудің ең таза жолы — жаңалық әсерінің қисығы (Engle and Ng, 1993): -ды оның ұзақ мерзімді деңгейінде бекітіп, келесі кезеңдегі шартты дисперсияны соңғы шоктың функциясы ретінде сызу . Ол "осы өлшемдегі және таңбадағы шок кезінде модель ертеңгі волатильділікті қаншалықты арттырады?" деген сұраққа жауап береді.
- Симметриялы GARCH нөл айналасында орталықтандырылған симметриялы параболаны береді. және шок бірдей биіктікке келеді. Бұл — біз түзетіп жатқан дәл кемшілік.
- GJR нөлде иілу бар параболаны береді — болғанда сол жақ (теріс шоктар) оң жаққа қарағанда тіктеу. Екі жартысы сәйкесінше және қисықтығына ие.
- EGARCH асимметриялы, экспоненциалды V-тәрізді қисық береді: екі иіні мүшесінің арқасында әртүрлі көлбеулікке ие, ал бүкіл қисық соңғы экспоненциалдау арқасында параболадан жылдамырақ жоғары қарай иіледі.
Біз үшеуін де фиттелген параметрлерден кейінірек, іске асыру бөлімінде саламыз — бұл асимметрияның не бере алатынын түсіндіру үшін ең пайдалы диагностика.
Ауыр құйрықтар: Student-t және қиғаш-t инновациялары
Асимметрия модельдің шоктардың таңбасына реакциясын түзетеді. Ол шоктардың өз үлестіруіне ешбір қатысы жоқ. Қарапайым GARCH деп болжайды, ал бұл болжам криптовалюта үшін дерлік әрқашан қате. GARCH волатильділіктің шоғырлануын алып тастағаннан кейін де стандартталған қалдықтар артық эксцессті сақтайды — олар ауыр құйрықты. Үлестірудің иықтарын фиттейтін Гаусс ықтималдық функциясы -, - немесе -сигмалық стандартталған күннің нақты қаншалықты жиі болатынын жете бағаламайды.
Тәуекел үшін салдары тікелей. Гаусс 99% VaR квантилін пайдаланады, сондықтан ол деп болжайды. Егер шынайы стандартталған үлестіру еркіндік дәрежесімен Student- болса, шынайы 1% квантилі шамамен -ге жақын — Гаусс VaR осы сенімділік деңгейінде шамамен -ға оптимистік. Сіз оны 1%-дан әлдеқайда жиі бұзасыз және "мүмкін емес" күндерге жүйелі түрде таң қаласыз. Бұл — криптовалютаның ерекшелігі емес; Боллерслев (1987) -GARCH-ты дәл акциялар мен валюта қалдықтарында дәл сол ауыр құйрықтар байқалғандықтан енгізген. Криптовалюта — сол мәселенің тек аса күшейтілген нұсқасы.
Стандартталған Student-t
Student- тығыздығында құйрық қалыңдығын басқаратын еркіндік дәрежесі параметрі бар: кіші ауыр құйрықты білдіреді, ал болған сайын Гаусс үлестіруіне жақындайды. Мәселе мынада: шикі үлестіруінің дисперсиясы , сондықтан оны инновация ретінде пайдаланар алдында бірлік дисперсияға стандарттау керек — әйтпесе GARCH рекурсиясындағы "" шынайы шартты стандартты ауытқу болмас еді.
Бірлік дисперсиясы бар стандартталған Student- инновациясының тығыздығы
Ішіндегі -ге назар аударыңыз — бұл болатындай масштабтайтын стандарттау. GARCH шартты дисперсиясы және берілген жағдайда бір бақылаудың лог-ықтималдыққа қосатын үлесі
мүшесі — -ден -ге түрлендірудің Якобианы, дәл 1-бөлімдегі Гаусс GARCH ықтималдығында көрген мүше. Тек пішіні өзгереді. -ты GARCH параметрлері мен бойынша бірлесіп максималдау — дәл arch кітапханасының dist='t' берілгенде жасайтыны.
Бағаланған -нің өзі ақпаратты. Күнделікті BTC/ETH қайтарымдары үшін әдетте диапазонына түсесіз — ауыр құйрықтар, бірақ шектеулі дисперсиямен ( қажет) және әдетте шектеулі эксцесспен ( қажет). Егер фиттелген 4-тен төмен түссе, модельде іріктеме эксцессі техникалық тұрғыдан шексіз болатынын және кейбір бағалаушылар тұрақсызданатынын біліңіз — бұл шеткі мәндер мен деректер сапасын мұқият қарауды талап ететін белгі.
Хансеннің қиғаш-t (skew-t) моделі
Student- ауыр құйрықты, бірақ әлі де симметриялы — сол және оң құйрықтар бірдей ауыр. Криптовалюта қайтарымдарының қалдықтары жиі қиғаш та болады: сол құйрық (құлаулар) оң құйрықтан ауырырақ. Хансеннің қиғаш- моделі (1994) стандартталған -ны -мен қатар қиғаштық параметрімен жалпылайды:
мұндағы тұрақтылар , және әрбір жарамды үшін -тің орташа мәні нөл және дисперсиясы бірге тең болатындай таңдалады. Үлестіру нүктесінде екіге бөлінеді, әр бөлікте бір құйрыққа көбірек массаны итеру үшін әртүрлі масштабтауды қолданады.
Түсіндірме: солға қиғаш үлестіруді береді (төмен жағы ауырырақ), бұл криптовалюта үшін әдеттегі нәтиже және левередж эффектісімен байланысады деп күтуге болады. симметриялы Student--ды қайтарады, сондықтан тесті қиғаштық мүшесінің пайда әкелетінін көрсетеді. arch кітапханасында бұл dist='skewt', ол мен -ны бірге бағалайды. Нәтиже — сол құйрықтың квантилі оң құйрықтың квантилінен адал ауырырақ VaR — дәл сіз аман қалғыңыз келетін шығындар асимметриялы болғанда керегі. Бұл позиция нәтижелеріндегі шығын мен пайданың асимметриясымен тікелей байланысады: құлдырауды қалпына келтіру үшін -дан көп қажет, сондықтан сол құйрықты дұрыс модельдемеу оң құйрықты дұрыс модельдемеуден қымбатырақ түседі.
Python-да іске асыру
Енді осының бәрін arch кітапханасымен фиттейміз. Орнату 1-бөлімді қайталайды: күнделікті қайтарымдарды жүктеу, сандық тұрақтылық үшін 100-ге масштабтау (GARCH оптимизаторлары қайтарымдар болғанда нашар жұмыс істейді) және тұрақты орта мен фиттеу. Егер сіз күн ішіндегі деректерді немесе басқа орта модельді қаласаңыз, механизм бірдей.
Орнату және деректер
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}%")
Криптовалюта тәулік бойы, аптасына жеті күн саудаланады, сондықтан біз жылдандыруда 252 емес, 365-ті қолданамыз — криптовалюта Шарп коэффициентін немесе волатильділікті акциялар нарығының сандарымен салыстырғанда шатасудың кіші, бірақ жиі кездесетін көзі.
Төрт модельді фиттеу
arch кітапханасындағы үлгі: p=1, q=1 бар vol='Garch' — симметриялы GARCH; o=1 қосу GJR шектік мүшесін қосады; vol='EGARCH' лог-дисперсия моделіне ауыстырады. Инновация үлестіруі dist арқылы орнатылады: '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' үшін o аргументі асимметриялы () мүшені басқарады, ал p/q өлшем және лаг мүшелерін басқарады; o=1, p=1, q=1 — стандартты EGARCH(1,1). Бір ерекшелік: arch кітапханасында EGARCH параметрлерінің атаулары бірдей әріптер, бірақ асимметрия мүшесінің таңба конвенциясы Нельсонныкі, сондықтан теріс баға — левередж эффектісі. Біз мұны есте сақтаудың орнына жаңалық әсерінің қисығынан тексереміз.
GJR фитін оқу
GJR- параметрлер кестесі шамамен мынадай көрінеді (иллюстрациялық мәндер, есеп берілген эксперимент емес — өз деректеріңізде қайта фиттеңіз):
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
Оны қалай оқу керек:
gamma[1] = 0.091мәні -статистикасы 3-тен жоғары болғанда статистикалық маңызды левередж эффектісі. Теріс шоктан кейін квадраттық шок әсері ; оң шоктан кейін ол жай ғана . Жаман жаңалық осы модельдің волатильділігін сол өлшемдегі жақсы жаңалыққа қарағанда шамамен есе көп қозғалтады.nu = 4.3ауыр құйрықтарды растайды — Гаусс үлестіруінен () алшақ, және төртінші момент әрең шектеулі болатындай төмен. Осы қатардағы Гаусс VaR қатты оптимистік болар еді.- Персистенттілік — күнделікті криптовалюта үшін әдеттегідей өте жоғары: шоктар баяу ыдырайды, волатильділік күшті шоғырланған.
Тексеретін ең маңызды жол — жолы. Егер оның -мәні үлкен болса, асимметриялы мүше осы актив пен терезеде өз орнын ақтамайды, сондықтан қарапайымырақ симметриялы модельді таңдаған жөн. Бұл — модель таңдау тәртібі, безендіру емес — төменде толығырақ.
Модельдерді ақпараттық критерийлер бойынша салыстыру
Параметр қосқан сайын лог-ықтималдық әрдайым жақсарады, сондықтан тек лог-ықтималдық бойынша таңдай алмайсыз. Параметрлер санын жазалайтын AIC/BIC-ты қолданыңыз (BIC агрессивтірек):
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))
Түсіндіру ережесі: базалық модельден шамамен 6-дан асатын BIC жақсаруы қосымша құрылымның нақты екенінің күшті дәлелі; 1–2 айырмашылық — шу. Егер GJR-t моделі GARCH-N-ды 30+ BIC ұпайымен жеңсе, ал GJR-skewt GJR-t-ны тек 1 ұпаймен жеңсе, -ны сақтап, қиғаштықты алып тастаңыз — қиғаштық параметрі осы деректерде өз орнын ақтамайды. AIC/BIC-ты үлгіден тыс валидацияның орнына қолданбаңыз; олар күрделілікке түзетілген үлгі ішіндегі сәйкестікті марапаттайды, бұл қажетті, бірақ жеткіліксіз. Нақты тест — VaR бэктесті және, түптеп келгенде, алға қарай жылжу бойынша бағалау.
Жаңалық әсерінің қисығын салу
Бұл — нәтиже беретін график — ол асимметрияны көрінетін етеді және EGARCH таңба конвенциясын тексереді.
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()
Мұны іске қосқанда, симметриялы GARCH-N қисығы нөлде орталықтандырылған таза парабола — және шок бірдей дисперсия береді. GJR-t — бастауда иілуі бар парабола, сол иіні жоғарырақ. EGARCH-t — экспоненциалды V-тәрізді қисық, және егер оның сол иіні оң иінінен жоғары болса, сіз левередж эффектісі мен таңба конвенциясын бір қараудан растадыңыз. Егер EGARCH-тың сол иіні оң иінінен төмен болса, не оң бағаланды (жоғары волатильділік режимі), не сізде таңба керісінше — график болжамсыз, нақты жауап береді.
Төрт модельдің қатар салыстырмасы
Тәуекелге көшпес бұрын, төрт модельді қатар қоюдың пайдасы бар. Әрбір жол — жобалау шешімі, ал бағандар осы шешімнің не тұратынын және не беретінін көрсетеді.
| Қасиет | GARCH-N | GJR-t | EGARCH-t | GJR-skewt |
|---|---|---|---|---|
| Асимметрия (шок таңбасы) | жоқ | шектік | таңбалы | шектік |
| Инновацияның құйрық пішіні | Гаусс | Student- | Student- | қиғаш- |
| Инновациядағы қиғаштық | жоқ | жоқ | жоқ | иә () |
| Оңдылық шектеулері | иә | иә () | жоқ (лог түрі) | иә |
| Стационарлық шарты | ||||
| Базалық модельге қосымша параметрлер | 0 | |||
| Типтік криптовалюта нәтижесі | VaR бэктестінен өтпейді | күшті, тұрақты | күшті, тұрақты | GJR-t-дан шамалы жоғары |
Есте сақтайтын үлгі: 1-баған мен 2-баған арасындағы секіріс — асимметрия мен ауыр құйрықтарды бір мезгілде қосу — тәуекел калибрлеуінің жақсаруының дерлік барлығы сол жерде жатыр. Кейінгі нақтылаулар (EGARCH-тың функционалдық түрі, қиғаштық мүшесі) нақты, бірақ екінші реттік, ал көптеген криптовалюта қатарларында олар шу ішінде қалады. Модельдеу бюджетіңізді бірінші секіріске жұмсаңыз және қалғанына күмәнмен қараңыз.
Тәуекелге қолдану: VaR және Expected Shortfall
Күрделірек волатильділік моделін фиттеу тек шешімді жақсартса ғана құнды. Жақсартуға ең таза шешім — бір қадамдық құйрықтық тәуекел болжамы: ертең қаншалықты жаман болуы мүмкін? Біз бір күндік алдын ала Value-at-Risk және Expected Shortfall (баламасы — Conditional VaR, оны HRP/CVaR портфель құбыры өз мақсаты ретінде пайдаланады) фиттелген GARCH-/skew- болжамынан тікелей аламыз.
Шартты үлестіруден VaR-ге дейін
GARCH механизмі шартты орта мен шартты стандартты ауытқудың бір қадамдық болжамын береді. Қайтарым ретінде модельденеді, мұндағы фиттелген стандартталған үлестіруден (Гаусс, немесе skew-) алынады. Сондықтан қайтарымның -квантилі жай ғана стандартталған үлестірудің -квантилінің афиндік түрлендіруі:
мұндағы — стандартталған инновацияның квантилі (кері үлестіру функциясы) және алдыңғы минус таңбасы VaR оң шығын саны деген конвенцияны сақтайды. 99% VaR үшін және сіз -ды қоясыз. /skew--ның бүкіл пайдасы осы жерде көрінеді: Гаусс -ге қарағанда теріс болады, сондықтан VaR адал үлкенірек.
Expected Shortfall
VaR шекараны айтады; ол шек бұзылғанда қаншалықты жаман болатыны туралы ешнәрсе айтпайды. Expected Shortfall — VaR-ды асқанда шартты орташа шығын — мұны айтады, әрі ол когерентті (субаддитивті), сондықтан ол CVaR оптимизациясының артындағы тәуекел өлшемі және Базель неге соған көшкенінің себебі. Орналасу-масштаб моделі үшін
Шартты-құйрық-күту мүшесінің стандартты үлестірулер үшін жабық формалары бар. Гаусс үшін, болғанда,
мұндағы — стандартты нормаль тығыздық функциясы. еркіндік дәрежесі мен (стандартталған шкалада) бар стандартталған Student- үшін құйрықтық күту
мұндағы — стандартталған- тығыздық функциясы. -нің Expected Shortfall мәні Гаусс мәнінен VaR-ге қарағанда көбірек асып түседі, себебі құйрығы тек алысырақ емес — ол ауырырақ, сондықтан шектен асатын орташа шығын пропорционалды түрде үлкен. Осы қосымша алшақтық — Гаусс моделі сізден жасырып тұрған сан.
Фиттелген arch моделінен VaR және ES есептеу
arch үлестірулерінде ppf (квантиль) әдісі бар, сондықтан стандартталған квантильді тікелей алуға болады және ешнәрсені қайта шығармауға болады. ES үшін біз сандық интегралдаймыз, бұл сенімді және normal/t/skewt бойынша біркелкі жұмыс істейді.
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 бағаны — бір санда толық тарих. Гаусс моделі пайдаланады; бар шамамен -ге жақынды пайдаланады; skew- сол квантилді одан әрі шығарады, ал оң квантилді тартады. Бір , айтарлықтай үлкен VaR. Егер сіз криптовалютада Гаусс VaR-ды пайдаланып келсеңіз, бұл — сіз үнсіз жұтып жүрген алшақтық.
Бір қадам vs көп қадам: ескерту
Жоғарыдағының бәрі — бір күндік алдын ала болжам, және дәл сол жерде GARCH VaR ең тазасы. Екі нәрсе ұзағырақ горизонттарды күрделендіреді, экстраполяция жасамас бұрын оларды білуіңіз керек.
Біріншіден, дисперсия болжамдары ортаға қайта оралады. Стационарлық GARCH-тан алынған -қадамдық шартты дисперсия өскен сайын шартсыз деңгейге жақындайды, ал жинақталған -күндік дисперсия — әрбір қадамдық болжамдардың қосындысы — егер волатильділік ұзақ мерзімді ортасында болмаса, ол емес. Ой-ниетсіз "уақыттың квадрат түбірі" масштабтауы бұл орта қайтуын елемейді және дәл шоктан кейін, сан ең қажет болғанда, қате болады. Модельдің өз көп қадамдық дисперсия жолын пайдаланыңыз.
Екіншіден, көп күндік қайтарымның үлестіруі бір күндік инновациямен бірдей пішінде емес. Бірнеше -үлестірілген күнделікті шокты (сызықты емес GARCH рекурсиясы арқылы) қосу -күндік горизонтта үлестіруін бермейді; таза жабық форма жоқ. Көп күндік VaR үшін адал жол — симуляция: фиттелген стандартталған үлестіруден инновация жолдарын алу, оларды GARCH рекурсиясы арқылы жіберіп симуляцияланған қайтарым жолдарын алу, -күндік қайтарымдарға жинақтау, эмпирикалық квантильді оқу. Бұл сонымен қатар skew- жағдайын да табиғи түрде өңдейді, онда мүлдем аналитикалық көп горизонтты квантиль жоқ. Осы мақаладағы бір қадамдық аналитикалық формулалар дәл; кез келген көп қадамдық қысқа жолды жуықтау ретінде қарап, оны тексеріңіз.
VaR-ды бэктестеу: Купиек және Кристофферсен
VaR болжамы — ықтималдық талабы: "шығын осы шекарадан тек күндерде асады." Сіз оны бұзушылықтарды санау арқылы тексересіз (нақты шығын болжамды VaR-дан асқан күндер) алға қарай жылжитын бағалау бойынша және екі нәрсені тексересіз. Біріншіден, бұзушылық жиілігі дұрыс па? Екіншіден, бұзушылықтар тәуелсіз бе, әлде шоғырлана ма (бұл модельдің нақ қажет кезінде, волатильділік секірген кезде сәтсіздікке ұшырайтынын білдіреді)?
бұзушылық тізбегі болсын, — күн ішіндегі бұзушылықтар саны, ал — байқалған жиілік. Мақсатты жиілік .
Купиектің шартсыз қамту тесті (1995) -ды ықтималдықтар қатынасы арқылы тексереді:
Кристофферсеннің тәуелсіздік тесті (1998) бүгінгі бұзушылықтың кешегі бұзушылықпен болжанбайтынын тексереді. бұзушылық тізбегіндегі күйінен күйіне ауысулар санын есептесін, , , және . Сонда
Екеуі шартты қамту тестіне қосылады , ол бір мезгілде дұрыс жиілікті және тәуелсіздікті тексереді. Модель Купиектен өтуі мүмкін (дұрыс бұзушылықтар саны), бірақ Кристоффeрсеннен өтпеуі мүмкін (олардың бәрі бір апаттық аптаға топтасқан) — бұл — ұстауды ең көп қалайтын сәтсіздік режимі, себебі шоғырланған бұзушылықтар шотты жарып жіберетіндер.
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 кірістерін адал шығару үшін кеңейтілетін немесе айналмалы терезеде қайта фиттеп (немесе кем дегенде қайта болжап), әрбір үлгіден тыс күн үшін бір қадамдық алдын ала VaR-ды жазып, оны сол күндегі нақты шығынмен салыстырыңыз. VaR-ды ешқашан үлгі ішінде бэктестемеңіз — өзі болжауы тапсырылған дәл сол апаттың негізінде фиттелген модель нақты жағдайдан әлдеқайда жақсы көрінеді. Бұл — бэктест-лайв паритеті тәртібімен бірдей: бағалау шешім қабылдау сәтінде қолжетімді ақпаратты ғана пайдалануы керек.
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))
Оқылымы: жақсы калибрленген 99% VaR 1%-ға жақын байқалған жиілікті, маңызды емес Купиекті (үлкен p_uc) және маңызды емес Кристофферсенді (үлкен p_ind) көрсетеді — шоғырлану жоқ. Іс жүзінде криптовалюта бойынша адал нәтиже мынада: GARCH-Normal Купиектен өтпейді (тым көп бұзушылық, p_uc мардымсыз), ал GJR- немесе EGARCH- өтеді немесе жақын болады. Осы қарама-қарсылық — бүкіл осы мақаланың дәлелі, гипотеза тесті түрінде берілген. Егер моделінің өзінде де шоғырланған бұзушылықтар (кіші p_ind) көрінсе, сіздің волатильділік динамикаңыз әлі де дұрыс емес анықталған — бұл көбіне ұзағырақ жады (компонент/FIGARCH) немесе режим қабаты қажет екенінің белгісі, бұл HMM арқылы режим анықтаумен байланысады.
Модельдерді өту/өтпеуден гөрі құйрықтық шығын бойынша қатарластыру
Купиек пен Кристофферсен сізге бинарлы үкім береді — модель қабылданбайды не қабылданбайды. Бұл қажетті, бірақ дөрекі: екі модель де "өте" алады, бірақ біреуі мағыналы түрде дәлірек. Бәсекелес VaR болжамдарын қатарластыру үшін оларды квантиль үшін қатаң консистентті шығын функциясымен, pinball (квантиль) шығынымен бағалаңыз:
мұндағы — (таңбаланған) VaR квантилі, ал — нақты қайтарым. Үлгіден тыс күндер бойынша орташаланған төмен орташа pinball шығыны жақсырақ калибрленген және дәлірек квантильді білдіреді; шығын -квантилі үшін консистентті болғандықтан, оны минималдау модельді жалқаулықпен кең болғаны үшін марапаттамайды. Екі модельді формальды түрде салыстыру үшін олардың күн сайынғы шығын айырмашылықтарын Дибольд-Мариано тестіне беріңіз.
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))
Expected Shortfall үшін нақтырақ айтқанда, ES жеке тұрғанда эликитациялы емес екенін ескеріңіз (минимизаторы ES ғана болатын шығын функциясы жоқ), бұл — нақты теориялық қиындық: ES-ты VaR-мен бірлесіп Fissler-Ziggel есептеу ережелерімен бағалайсыз, немесе орташа бұзу мөлшерінің модельдің болжаған ES-мен сәйкес келетінін тексерудің қарапайымырақ тәжірибесіне жүгінесіз. Дөрекі, бірақ пайдалы ES тексерісі: VaR-бұзушылық күндерінің ішінде, орташа нақты шығынды сол күндердегі орташа болжамды ES-мен салыстырыңыз — олар жақын болуы керек.
Реттеушілік тұрғыдан — Базель бағдаршамы тәсілі: 250 сауда күні ішінде 99% VaR-дың 0-4 бұзушылығы "жасыл" (қолайлы), 5-9 — "сары" (тексеру), 10+ — "қызыл" (модель қабылданбайды және капитал мультипликаторлары өседі). Бұл — Купиектің дөрекірек нұсқасы, бірақ бұл тәуекел комитеттері нақты сөйлейтін тіл, және оны LR статистикаларымен қатар есеп беруге тұрарлық.
Практикалық ойлар
Қосымша параметрлер өз орнын ақтамайтын кездер
Адал әдепкі күй — күрделілікке күмәнмен қарау. Қосатын әрбір параметр — оптимизатор шамадан тыс фиттей алатын тетік, ал асимметриялы ауыр құйрықты GARCH-та олардың бірнешеуі бар. Нақты нұсқаулар:
- Өтімсіз немесе қысқа іріктемелер. Бірнеше жүз күнделікті бақылаумен мен -ның стандартты қатесі үлкен болады, және сіз іріктеме шуы болып табылатын асимметрияларды "табасыз". Жаңа немесе жұқа альткойн бойынша симметриялы GARCH- көбіне деректер қолдай алатын ең күрделі модель болып табылады. Skew- EGARCH-ты 200 күнге фиттеу — өзін-өзі алдау.
- Қиғаштық мүшесі жиі өз құнын жаппайды. Іс жүзінде Normal → ауысуы — үлкен, сенімді жақсару (ауыр құйрықтар нақты әрі күшті). → skew- ауысуы көбіне шамалы — 1 немесе 2 BIC жетістігі, кейде теріс. Қиғаштықты тек деректер оны нақты талап еткенде ғана қосыңыз.
- EGARCH пен GJR күнделікті деректерде әдетте тепе-тең. Олар бір сапалы тарихты әртүрлі функционалдық формамен кодтайды. Үлгі ішіндегі әдемірек лог-ықтималдыққа қарап емес, үлгіден тыс VaR бэктестісі бойынша таңдаңыз.
- Жоғарырақ жиілік жауапты өзгертеді. Сағаттық немесе минуттық барларда, күн ішіндегі сезондылық пен микроқұрылым басым болады, ал қарапайым күнделікті стильдегі GARCH асимметрияға қарамастан дұрыс емес анықталған болады. Басқа мәселе, басқа құрал-жабдық.
Бұл — сенімді басымдылықсыз адал бағалаудың сол сабағы: үлгіден тыс тестілеуден өтпейтін күрделірек модель ол алмастырған қарапайым модельден нашарырақ, себебі ол дәлдік иллюзиясын алып жүреді. Теріс нәтижені — "ETH-та қиғаштық көмектеспеді" — нақты нәтиже ретінде есеп беріңіз, және алға қарай жылжу оптимизациясын үлгі ішіндегі AIC-тың орнына төреші ретінде қолданыңыз.
Бұлар — басқалардың бәрі құратын маргиналдар
Осы жердегі модельдер — түпкі нүкте емес; олар — біріккен тәуекел механизмінің бір өлшемді құрылыс блогы. Криптовалютадағы біріккен тәуекел үшін копула модельдері мақаласы вин копуласын фиттеу алдында GARCH-EVT маргиналдары ретінде дәл EGARCH/GJR--ны қолданады — сіз әр актив бойынша асимметриялы ауыр құйрықты GARCH-ты фиттеп, стандартталған қалдықтарды шығарасыз, және тек содан кейін активаралық тәуелділікті модельдейсіз. Егер сіздің маргиналыңыз симметриялы Гаусс GARCH болса, тәуелділік моделі қаншалықты жақсы болса да, копула оның құйрықтық қателерін мұраланады. Сапасыз маргиналдар, сапасыз біріккен VaR.
Көп өлшемді волатильділік мәселесі үшін — активтер арасындағы дисперсиялар емес, уақыт бойынша өзгеретін корреляциялар — 3-бөлім, DCC-GARCH-ды қараңыз, ол осы бір өлшемді фиттердің үстіне динамикалық корреляция моделін қабаттайды. Ал волатильділік болжамын позиция мөлшерлеу мен сауда бэктестіне айналдыру үшін, волатильділікті мақсаттауға арналған 4-бөлім осы дәл модельдердің болжамдарын позицияны болжамды тәуекелге кері пропорционал масштабтау үшін қолданады.
Үлестірусіз баламасы
Тәуекел бөліміндегінің бәрі параметрлік болжамға негізделеді: стандартталған қалдықтар немесе skew--ны ұстанады. Бұл болжам тексерілетін және әдетте орынды, бірақ ол сәтсіздікке ұшырауы мүмкін. Егер сіз құйрық пішініне мүлдем міндеттенгіңіз келмесе, конформалды болжам шектеулі-іріктемелі қамту кепілдіктерімен үлестірусіз болжам аралықтарын береді — бұл нағыз басқа философия, ол инновация үлестіруі туралы ешбір талап қоймайды. Екі тәсіл бір-бірін толықтырады: параметрлік GARCH- сізге толық шартты тығыздықты береді (сол арқылы ES, конформалды аралықтар тікелей бермейтін), ал конформалды сізге тығыздығыңыз қате болса да сақталатын қамтуды береді. Өндірісте екеуін де айқас тексеру ретінде пайдалану — арзан сақтандыру.
Сандық және жұмыс процесінің гигиенасы
- Қайтарымдарды 100-ге масштабтаңыз. GARCH оптимизаторлары шикі бөлшек қайтарымдарға қарағанда пайыздық қайтарымдарда әлдеқайда сенімді жинақталады. Бөлшек бірліктерде есеп берсеңіз, VaR/ES-ты кері масштабтауды ұмытпаңыз.
- Персистенттілікті бақылаңыз. Егер бағасы ~0.999-дан жоғары болса, модель дерлік интегралданған (IGARCH тәрізді); болжамдар өте баяу ортаға оралады, ал ұзақ горизонттағы дисперсия болжамдары сенімсіз болады. Міндетті түрде қате емес, бірақ белгілеп қойыңыз.
- Айналмалы терезелердегі жинақталу сәтсіздіктері. EGARCH-тың лог түрі оңдылық шектеулерінен аулақ болады, бірақ патологиялық терезеде әлі де жинақталмауы мүмкін.
fit()-ты try/except-ке орап, тірі бэктестті құлатудың орнына алдыңғы терезенің параметрлеріне оралыңыз. - Орта модель. Біз бүкіл жол бойы тұрақты ортаны қолдандық. Көптеген күнделікті криптовалюта үшін шартты орта нөлге жақын және волатильділікпен басылады; нақты себебіңіз болмаса, оны болжауға модель күрделілігін жұмсамаңыз.
Қорытынды
- Қарапайым GARCH(1,1)-нің екі құрылымдық кемшілігі бар: ол симметриялы ( мен -ке бірдей әрекет етеді, себебі шоктар түрінде енеді) және ол Гаусс инновацияларын болжайды (криптовалютаның ауыр құйрықтарын арзандатады). Екеуі де оптимистік VaR арқылы нақты ақшаға түседі.
- GJR-GARCH шектік мүше қосады . Маңызды — левередж эффектісі: жаман жаңалық волатильділікті көбірек арттырады. Оңдылық үшін қажет; персистенттілік .
- EGARCH -ты модельдейді, сондықтан оңдылық шектеулері жоқ, ал стационарлық жай ғана . Асимметрия таңбалы мүше арқылы енеді (бұл конвенцияда левередж — ), ол өлшем мүшесінен бөлек тұрады.
- Жаңалық әсерінің қисығы — келесі кезеңдегі дисперсия соңғы шокқа қарсы — асимметрияны көрінетін етеді және EGARCH таңба конвенциясын бір қараудан тексереді.
- Student- инновациялары (
dist='t') еркіндік дәрежесі арқылы (криптовалюта үшін әдетте 3–6) құйрықтарды түзетеді; Хансеннің skew- моделі (dist='skewt') ауырырақ сол құйрық үшін қиғаштығын қосады. Normal → ауысуы үлкен сенімді жетістік; → skew- көбіне шамалы. - VaR және ES фиттелген шартты үлестіруден шығады: , ауыр құйрықты квантиль тәуекелді Гаусстан адал үлкенірек етеді. ES (когерентті, шамамен CVaR) VaR-дан асатын орташа шығынды қамтиды.
- Купиек пен Кристофферсенмен бэктестеңіз. Купиек бұзушылық жиілігін тексереді; Кристофферсен бұзушылықтардың шоғырланбағанын тексереді. Модель біреуінен өтіп, екіншісінен өтпеуі мүмкін — шоғырланған бұзушылықтар қауіпті сәтсіздік режимі. Қатаң түрде үлгіден тыс бэктестеңіз.
- Күрделіліктен гөрі тәртіп. Асимметрия/қиғаштықты тек ол BIC және үлгіден тыс VaR бэктестісінен өткенде ғана қосыңыз. Қысқа немесе өтімсіз қатарларда қарапайымырақ модель әдетте жеңеді.
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.
MarketMaker.cc Team
Сандық зерттеулер және стратегия