DCC-GARCH: Pair savdo va portfel riski uchun dinamik korrelatsiyalar
Ko'pchilik kripto deskidan BTC va ETH o'rtasidagi korrelatsiyani so'rasangiz, sizga bitta raqam beriladi — 0.8, balki 0.75 — allaqachon kim ham tanlaganini eslamaydigan qandaydir oyna bo'yicha hisoblangan. Bu raqam yolg'on, yoki hech bo'lmaganda xavfli soddalashtirish. Namunaviy korrelatsiya — bu haqiqiy bog'liqlik strukturasi doimiy ravishda o'zgarib turgan davr bo'yicha o'rtacha ko'rsatkich. Tinch bozorlarda BTC va ETH bir-biridan yetarlicha uzoqlashadiki, bozorga neytral pair jozibali ko'rinadi. Likvidatsiya kaskadida esa ular bir-biriga va hamma narsaga qulflanadi, va siz to'lagan diversifikatsiya aynan unga muhtoj bo'lgan lahzada bug'lanib ketadi.
Bu nozik effekt emas. 2022 yildagi istalgan tushishni oling — mayda LUNA qulashi, iyunda 3AC pozitsiyalarining yopilishi, noyabrda FTX inqirozi — va siz eng yirik 20 tokendagi o'rtacha juftlik korrelatsiyasi bir necha kun ichida 0.4-0.6 diapazonidan 0.9+ ga qarab ko'chib borishini ko'rasiz. Korrelatsiya ba'zan noto'g'ri baholanadigan doimiy son emas; u o'zining dinamikasi, o'z klasterlanishi va o'z rejimlariga ega vaqt qatoridir. Uni skalyar sifatida ko'rish — bitta aktiv uchun doimiy volatillikni faraz qilishning ko'pkomponentli analogidir, va bu xatoni biz ushbu seriyaning 1-qismida allaqachon barbod qilganmiz.
Ushbu maqola to'rt qismdan iborat volatillik seriyasining 3-qismidir. 1-qism arch kutubxonasi yordamida bir o'lchamli GARCH(1,1) qurdi va volatillik qanday klasterlanishi va o'rtachaga qaytishini ko'rsatdi. 2-qism leverage effektini va qalin dumlarni tutish uchun asimmetriyani (GJR-GARCH, EGARCH) va Student-t innovatsiyalarini qo'shdi. Bu yerda esa biz ko'pko'lamli sohaga o'tamiz: Engle'ning Dinamik Shartli Korrelatsiya (DCC) modelidan foydalanib, butun shartli kovariatsiya matritsasi ni uning evolyutsiyasi bo'yicha modellashtiramiz. Bu bizga skalyar korrelatsiya hech qachon bermagan ikkita narsani beradi — pair savdo uchun dinamik hedge nisbati va riskka asoslangan taqsimlash uchun haqqoniy, vaqt bo'yicha o'zgaruvchan portfel dispersiyasi. 4-qism bir va ko'pko'lamli bashoratlarni pozitsiya hajmini belgilash qoidasiga bog'laydigan volatillikka yo'naltirilgan backtest bilan seriyani yakunlaydi.
Biz sizning 1 va 2-qismlarni o'qib chiqqaningizni faraz qilamiz, shuning uchun bir o'lchamli GARCH ni qayta chiqarmaymiz. Agar sizga qo'shma dum xatti-harakati kerak bo'lsa — ikki aktivning o'z 1% kvantilini birgalikda buzish ehtimoli — bu kopula savoli, va biz uni Qo'shma risk uchun kopula modellari maqolasida yoritganmiz. DCC va kopulalar bir-birini to'ldiradi: kopula sizga statik, ammo moslashuvchan dum-bog'liqlik strukturasini beradi, DCC esa butun korrelatsiya matritsasining boshqariladigan vaqt qatorini beradi. Ushbu maqola aynan ikkinchisiga bag'ishlangan.
Nima uchun kripto bozorida statik korrelatsiya ishlamaydi
Mexanizmga o'tishdan oldin, nima buzilishini aniq belgilaymiz. oynasi bo'yicha bitta namunaviy korrelatsiya quyidagini baholaydi:
Bu uchta yashirin farazni o'z ichiga oladi, va ularning barchasi kripto uchun noto'g'ri:
- Bog'liqlikning statsionarligi. Oynada bitta haqiqiy bor deb hisoblanadi. Aslida bog'liqlikda rejimlar mavjud — 0.5 atrofidagi tinch bozor rejimi va 0.95 atrofidagi stress rejimi — va ularni ma'nosiz o'rta qiymatga aralashtirib yuboradi.
- Doimiy marginal volatillik. Pearson korrelatsiyasi — bu normallashtirilgan kovariatsiya. Agar va ning o'zi harakatlanayotgan bo'lsa (ular harakatlanadi — bu 1 va 2-qismlarning butun asosi), unda hatto doimiy kovariatsiya ham vaqt bo'yicha o'zgaruvchan korrelatsiya beradi, va aksincha. Ularni ostidagi volatillik modelisiz ajratib bo'lmaydi.
- Bozor yo'nalishi bo'yicha simmetriya. Korrelatsiya tushishlarda ko'tarilishlarga qaraganda ko'proq o'sadi. Bu leverage effektining ko'pko'lamli o'xshashi. Sirg'anuvchi oyna buni ifoda eta olmaydi, agar u sof shovqinga aylanib qolmasa.
Sirg'anuvchi oyna yechimi — ni oxirgi 30 yoki 60 kun bo'yicha qayta hisoblash — bir muammoni boshqasiga almashtiradi. Qisqa oynalar tez javob beradi, ammo shovqinli va haqiqiy sinishdan orqada qoladi; uzun oynalar barqaror, ammo eskirgan. Yomonroq tomoni shundaki, ta aktiv bo'yicha sirg'anuvchi korrelatsiya matritsasi, uni siqish yoki tuzatishni boshlagach, ijobiy yarim-aniqlangan bo'lib qolishi kafolatlanmaydi, bu esa har qanday keyingi optimallashtiruvchini buzadi. Bizga (a) har bir aktiv uchun to'g'ri volatillik jarayoni bilan boshqariladigan, (b) har bir qadamda tuzilishi bo'yicha to'g'ri korrelatsiya matritsasini ishlab chiqaradigan, va (c) oyna uzunligini shapkadan tanlash o'rniga eng katta ehtimollik bo'yicha baholanadigan parametrlarga ega model kerak. Bu model — DCC-GARCH.
Ko'pko'lamli muammo: shartli kovariatsiya matritsasi
ni vaqtidagi ta aktiv uchun qaytimlar vektori, shartli o'rtacha (ko'pincha faqat doimiy son yoki kichik AR had) va qoldiq deb olamiz. Biz quyidagini faraz qilamiz:
bu yerda — axborot to'plami berilganda o'lchamli shartli kovariatsiya matritsasi, va — qandaydir shartli taqsimot (Gauss yoki, kripto uchun yaxshiroq, ko'pko'lamli Student-t). Ko'pko'lamli volatillik modellashtirishdagi hamma narsa bitta savolga turlicha javobdir: dinamikasini har bir qadamda simmetrik ijobiy aniqlangan holda saqlab, parametrlar portlashisiz qanday parametrlash mumkin?
Ikki klassik javob muammoning qanchalik murakkabligini ko'rsatadi.
VECH
VECH modeli (Bollerslev, Engle, Wooldridge 1988) ning yarim-vektorizatsiyasini o'tgan kvadrat qoldiqlar va o'tgan kovariatsiyalarning chiziqli funksiyasi sifatida yozadi:
bu yerda simmetrik matritsaning quyi uchburchagini uzunligi bo'lgan vektorga to'playdi. Bu maksimal darajada umumiy — har bir dispersiya va kovariatsiya har bir o'tgan dispersiya va kovariatsiyaga bog'liq — va dan oshgach maksimal darajada foydasiz. ta aktiv uchun va har biri o'lchamli. da bu ikkita matritsa, taxminan 450 parametr, ustiga ifodalashi ham qiyin bo'lgan ijobiy-aniqlanganlik cheklovlari. Ehtimollik yuzasi botqoqqa aylanadi.
BEKK
BEKK modeli (Engle va Kroner 1995) kvadratik forma yordamida ijobiy aniqlanganlikni tuzilishi bo'yicha kafolatlaydi:
bu yerda — yuqori uchburchak matritsa. Har bir had kvadratik forma bo'lgani uchun, bo'lguncha avtomatik ravishda bajariladi. BEKK VECH ga qaraganda tejamliroq, ammo baribir parametr sifatida o'sadi — va matritsalari har biri . da siz 200+ parametrni MLE orqali shovqinli kunlik kripto ma'lumotlar ustida birgalikda baholayapsiz, va optimallashtiruvchi biror mazmunli natijaga yaqinlashishiga hech qanday kafolat yo'q. Amalda to'liq BEKK bilan chegaralangan, va hatto shunda ham odamlar ko'pgina o'zaro dinamikani yo'q qiladigan "diagonal" yoki "skalyar" cheklovlardan foydalanadi.
Bu ko'pko'lamli GARCH uchun o'lchamlilik la'nati: parametrlar soni kvadratik o'sadi, ammo ma'lumotlardagi axborot miqdori bunday o'smaydi. Sizga muhim bo'lgan aktivlar tugashidan ancha oldin erkinlik darajalari tugaydi. 10-30 tokenli har qanday kripto portfeli VECH yoki BEKK uchun butunlay yetib bo'lmaydigan.
Engle topgan yechim — ni to'g'ridan-to'g'ri modellashtirishga urinishni to'xtatib, uni allaqachon arzon baholay oladigan qismlarga faktorlashtirishdir.
Engle'ning DCC (2002): ikki bosqichli dekompozitsiya
Bollerslev'ning Doimiy Shartli Korrelatsiya (CCC) modeli (1990) birinchi tejamli faktorlashtirish bo'lgan. U quyidagicha yoziladi:
bu yerda — shartli standart og'ishlarning diagonal matritsasi (har bir aktiv uchun bitta bir o'lchamli GARCH), va — doimiy korrelatsiya matritsasi. Bu katta soddalashtirish: siz ta mustaqil bir o'lchamli GARCH modellarini moslaydi, so'ng standartlashtirilgan qoldiqlarning yagona namunaviy korrelatsiya matritsasini baholaysiz. to'g'ri korrelatsiya matritsasi bo'lib, barcha bo'lsa, ijobiy aniqlanganlik avtomatik ravishda ta'minlanadi.
CCC ning muammosi aynan nomida — korrelatsiya doimiy, va bu aynan biz maqolani ochganda rad etgan farazdir. Engle'ning Dinamik Shartli Korrelatsiya (2002) modeli CCC ning go'zal faktorlashtirilishini saqlab, korrelatsiya matritsasiga nafas olish imkonini beradi:
Endi vaqt bo'yicha o'zgaruvchan. Zukkolik shundaki, volatilliklar va korrelatsiyalar ikki alohida bosqichda baholanadi, shuning uchun biz hech qachon to'liq qo'shma optimallashtirish bilan yuzma-yuz kelmaymiz.
1-bosqich: har bir aktiv uchun bir o'lchamli GARCH
Har bir aktivi uchun 1 va 2-qismlardagi kabi bir o'lchamli GARCH modelini moslang — GARCH(1,1), GJR-GARCH yoki Student-t innovatsiyali EGARCH, ushbu qator uchun eng yaxshi mos kelgani. Bu bizga shartli dispersiyalarni va shu bilan ni beradi.
Moslangan modellardan biz standartlashtirilgan qoldiqlarni chiqarib olamiz:
Tuzilishi bo'yicha har bir (taxminan) birlik shartli dispersiyaga ega. Ularni vektoriga to'playmiz. Ushbu standartlashtirilgan qoldiqlar korrelatsiya bosqichi uchun xom material bo'ladi — ulardan individual volatillik dinamikasi olib tashlangan, shuning uchun qolgan har qanday birgalikdagi harakat volatillik artefakti emas, sof bog'liqlikdir. (Bu kopula maqolasida marginallarni moslashdan oldin ishlatiladigan PIT uslubidagi mantiqning aynan o'zi; bu yerda biz to'liq bir tekis taqsimotgacha borish o'rniga standartlashtirishda to'xtaymiz.)
2-bosqich: DCC korrelatsiya rekursiyasi
Biz yordamchi jarayonini modellashtiramiz, bu simmetrik ijobiy aniqlangan matritsa bo'lib, standartlashtirilgan qoldiqlarning tashqi ko'paytmalari bilan boshqariladigan GARCH-o'xshash rekursiyaga ega:
bu yerda:
- — standartlashtirilgan qoldiqlarning shartsiz korrelatsiya matritsasi (bu korrelatsiya nishonlash deb ataladi — quyida batafsilroq),
- — bugungi shok korrelatsiyani qanchalik kuchli tortishini boshqaradi,
- — davomiylikni boshqaradi — kechagi ning qanchasi keyingiga o'tadi,
- va o'rtachaga qaytish cheklovi (bunda ), bu bir o'lchamli GARCH dagi ga to'g'ridan-to'g'ri o'xshaydi.
E'tibor bering, struktura xuddi skalyar GARCH(1,1) rekursiyasiga o'xshaydi, ammo matritsalar ustida: uzoq muddatli langar , shok hadi va davomiylik hadi. U ijobiy-yarim-aniqlangan matritsalarning (, rank-1 tashqi ko'paytma, va o'tgan ) qavariq kombinatsiyasi bo'lgani uchun, va vaznlar manfiy bo'lmasa, ijobiy aniqlangan bo'lib qoladi. Aynan shu narsa bizga bepul kafolatlangan to'g'ri kovariatsiya matritsalarini beradi.
deyarli korrelatsiya matritsasi, ammo unchalik emas — uning diagonali aniq 1 ga teng emas. Shuning uchun uni normallashtiramiz:
Elementlar bo'yicha, va aktivlari orasidagi shartli korrelatsiya:
Ushbu — har bir vaqt qadamida tuzilishi bo'yicha to'g'ri korrelatsiya matritsasi — birlik diagonal, diagonaldan tashqari elementlar oralig'ida, ijobiy aniqlangan. To'liq shartli kovariatsiyani qayta yig'amiz:
Ushbu oxirgi elementlar bo'yicha forma siz doimo ishlatadigan narsa: ikki aktivning shartli kovariatsiyasi ularning dinamik korrelatsiyasi ko'paytirilgan har birining dinamik volatilligiga teng. O'ng tomondagi har bir ingredient vaqt bo'yicha o'zgaruvchan va siz baholay oladigan modeldan keladi.
Butun model yoki bo'lishidan qat'i nazar faqat ikkita korrelatsiya parametriga ega — va . Volatillik tomoni chiziqli miqyoslanadi (har bir aktiv uchun bitta bir o'lchamli GARCH, har biri ~4-5 parametr bilan, barchasi mustaqil va oson parallellashtiriladigan tarzda moslashtiriladi). Aynan shuning uchun DCC BEKK va VECH imkoni bo'lmagan joyda miqyoslanadi: o'lchamlilik la'nati bilan chegaralangan, u optimallashtirilmaydi, balki (namunaviy baho sifatida qo'yilib) nishonlanadi.
Skalyar cheklov va uning narxi
skalyarlari shuni anglatadiki, har bir aktiv jufti bir xil korrelatsiya dinamikasiga ega — bir xil moslashish tezligi va bir xil davomiylik. BTC-ETH korrelatsiyasi va DOGE-SHIB korrelatsiyasi iqtisodiyoti farq qilsa ham bir xil ritmda harakatlanadi. Bu boshqariladiganlik uchun to'lanadigan narx, va odatda bu maqbul narx. Umumlashmalar (matritsali bilan Umumlashgan DCC; Cappiello-Engle-Sheppard asimmetrik DCC) buni parametrlar va baholash barqarorligi hisobiga yumshatadi. Biz quyida aDCC haqida gapiramiz.
DCC kvazi-log-ehtimollik
va ni baholash uchun bizga ehtimollik kerak. Engle'ning asosiy natijasi shundaki, Gauss log-ehtimolligi volatillik qismi va korrelatsiya qismiga ajraladi, va bu ikki bosqichli baholovchini asoslaydi. deb faraz qilib, vaqtidagi log-ehtimollik hissasi:
ni o'rniga qo'yamiz. U holda va , va dan foydalanib:
Endi ni qo'shib va ayirib, uni bo'lamiz:
Volatillik qismi faqat bir o'lchamli GARCH parametrlariga bog'liq ( orqali) — uni maksimallashtirish aynan ta mustaqil bir o'lchamli GARCH modelini moslash bo'lib, biz buni 1-bosqichda qildik. Korrelatsiya qismi va ga bog'liq ( orqali), 1-bosqichdan olingan standartlashtirilgan qoldiqlar berilgan holda. Shuning uchun 2-bosqichda biz faqat quyidagini maksimallashtiramiz:
( hadi ga bog'liq emas, shuning uchun uni tashlab yuboramiz). Bu aktivlar sonidan qat'i nazar ikki parametrli optimallashtirish — butun mohiyat shunda. Bu kvazi-ehtimollik deb ataladi, chunki ikki bosqichli baholovchi bir xil natijali (consistent), ammo to'liq samarali emas; standart xatolar tuzatishga muhtoj (Engle va Sheppard 2001), ammo signal generatsiyasi uchun nuqta baholari muhim.
Kripto uchun Gauss innovatsiyalari dum riskini kamsitib ko'rsatadi. Ko'pko'lamli Student-t ehtimollikni almashtirish ga oddiy o'zgarish (Gauss yadrosini ko'pko'lamli- zichligiga almashtirib va erkinlik darajalari parametri ni qo'shish). Biz quyidagi baholovchida aniqlik uchun Gauss kvazi-ehtimollikni saqlaymiz va qayerda kirishini eslatib o'tamiz — 1-2-qismlardagi standartlashtirish allaqachon marginallarda t-innovatsiyalarini ishlatgan, bu dum foydasining ko'pini qamrab oladi.
Python implementatsiyasi
Qattiq, ammo muhim fakt: arch kutubxonasi ko'pko'lamli GARCH yoki DCC ni bajarmaydi. arch — ajoyib bir o'lchamli dvigatel (biz aynan shuning uchun unga tayanamiz), ammo unda dcc_model yo'q. Sizning amaliy variantlaringiz:
archustida o'z DCC ingizni yarating —archbilan bir o'lchamli modellarni moslang, standartlashtirilgan qoldiqlarni chiqarib oling, -rekursiyasi va korrelatsiya kvazi-ehtimolligini NumPy/SciPy da amalga oshiring, va ikkita skalyarni optimallashtiring. Quyida biz shuni qilamiz. Bu taxminan 60 qator va butunlay tushunarli.mgarchPyPI paketi — yengil sof-Python DCC-GARCH implementatsiyasi. Tez moslash uchun qulay, GJR marginallari yoki t-innovatsiyalarini aniq ulash istagida kamroq moslashuvchan.- R ning
rmgarch(Alexios Galanos) — mos yozuv implementatsiyasi.dccspec/dccfitDCC, aDCC, GARCH-kopula, Student-t va to'g'ri standart xatolarni qo'llab-quvvatlaydi. Agar siz jiddiy ko'pko'lamli volatillik tadqiqoti qilayotgan bo'lsangiz,rmgarch(majburiy bo'lsa Python danrpy2orqali chaqiriladigan) — oltin standart.
Biz 1-variantni quramiz, chunki u har bir harakatlanuvchi qismni ochiq qiladi va 1-2-qismlardagi bir o'lchamli ko'nikmalardan qayta foydalanadi.
1-bosqich: arch bilan bir o'lchamli GARCH marginallarni moslash
import numpy as np
import pandas as pd
from arch import arch_model
from scipy.optimize import minimize
def fetch_returns(symbols, start="2022-01-01", end="2025-12-31"):
"""
Daily log returns for a list of crypto symbols.
Replace with your data source (ccxt for 24/7 exchange data,
yfinance for a quick sketch).
"""
import yfinance as yf
px = yf.download([f"{s}-USD" for s in symbols],
start=start, end=end)["Close"]
px.columns = symbols
rets = np.log(px / px.shift(1)).dropna()
return rets
symbols = ["BTC", "ETH", "SOL", "BNB"]
returns = fetch_returns(symbols)
def fit_univariate(series, dist="t"):
"""
Fit GJR-GARCH(1,1) with Student-t innovations (Part 2 model).
Returns the fitted result and the *scaled* series it was fit on.
We scale returns by 100 for the optimizer's numerical health,
exactly as in Parts 1 and 2.
"""
scaled = series * 100.0
model = arch_model(scaled, mean="Constant",
vol="GARCH", p=1, o=1, q=1, dist=dist)
res = model.fit(disp="off")
return res
fits = {s: fit_univariate(returns[s]) for s in symbols}
Z = pd.DataFrame({s: fits[s].std_resid for s in symbols}).dropna()
Sigma = pd.DataFrame({s: fits[s].conditional_volatility
for s in symbols}).loc[Z.index]
print(Z.describe())
Standartlashtirilgan qoldiqlar bo'yicha tezkor mantiqiy tekshiruv muhim. Agar biror ustunning standart og'ishi 1 dan uzoq bo'lsa, yoki uning kvadratida qattiq avtokorrelyatsiya qolgan bo'lsa ( bo'yicha Ljung-Box), bir o'lchamli marginal noto'g'ri spetsifikatsiyalangan va DCC bosqichi ushbu xatoni meros qilib oladi. Avval marginalni tuzating — 2-qism aynan shu uchun edi.
2-bosqich: DCC rekursiyasi va kvazi-log-ehtimollik
def dcc_negloglik(params, Z):
"""
Negative DCC quasi-log-likelihood (Gaussian) in (a, b).
Z : (T, d) array of standardized residuals from Step 1.
Implements:
Q_t = (1-a-b) Qbar + a z_{t-1} z_{t-1}' + b Q_{t-1}
R_t = diag(Q_t)^{-1/2} Q_t diag(Q_t)^{-1/2}
LL = -1/2 sum_t ( log|R_t| + z_t' R_t^{-1} z_t )
with correlation targeting: Qbar = sample corr of Z.
"""
a, b = params
if a <= 0 or b <= 0 or a + b >= 1.0:
return 1e10
Z = np.asarray(Z)
T, d = Z.shape
Qbar = np.cov(Z, rowvar=False, bias=True) # unconditional (targeted)
dinv = np.diag(1.0 / np.sqrt(np.diag(Qbar)))
Qbar = dinv @ Qbar @ dinv
Q = Qbar.copy() # initialize Q_1 at the target
ll = 0.0
for t in range(T):
q_diag = np.sqrt(np.diag(Q))
R = Q / np.outer(q_diag, q_diag)
sign, logdet = np.linalg.slogdet(R)
if sign <= 0:
return 1e10
z = Z[t]
Rinv_z = np.linalg.solve(R, z)
ll += -0.5 * (logdet + z @ Rinv_z)
Q = (1 - a - b) * Qbar + a * np.outer(z, z) + b * Q
return -ll
def fit_dcc(Z):
"""Estimate (a, b) by maximizing the DCC quasi-log-likelihood."""
res = minimize(
dcc_negloglik, x0=[0.03, 0.94], args=(np.asarray(Z),),
method="L-BFGS-B",
bounds=[(1e-6, 0.5), (1e-6, 0.999)],
)
a, b = res.x
print(f"DCC estimates: a = {a:.4f}, b = {b:.4f}, a+b = {a+b:.4f}")
print(f"log-likelihood: {-res.fun:.2f}")
return a, b
a_hat, b_hat = fit_dcc(Z)
Buni BTC/ETH/SOL/BNB portfelida bir necha yillik kunlik ma'lumotlar bo'yicha ishga tushirish quyidagi shakldagi natijani beradi (quyidagi raqamlar illustrativ, aniq sanadagi tajribadan emas — buni o'z ma'lumotlaringizda ishga tushiring):
DCC estimates: a = 0.0287, b = 0.9401, a+b = 0.9688
log-likelihood: -3812.44
Buni qanday o'qish kerak:
- kichik — korrelatsiya matritsasi bitta kunlik shokda tebranmaydi. Har bir kun ni tashqi ko'paytma tomon faqat ~3% ga suradi.
- katta — korrelatsiyalar yuqori darajada davomli. Portfel bir marta stress hodisasida bog'langach, u bir muddat bog'langan holda qoladi, tomon sekin qaytadi. Bu kripto tushishlarining haqiqiy tajribasiga mos keladi: korrelatsiyalar narx barqarorlashishi bilan darhol qaytmaydi.
- o'rtachaga qaytishni tasdiqlaydi. Korrelatsiya jarayoni u qaytadigan statsionar uzoq muddatli darajaga () ega, yarim yashash muddati taxminan kun. Agar siz qandaydir vaqt ni deyarli 1 ga teng deb baholasangiz, korrelatsiya jarayoni integrallangan — unda uzoq muddatli langar yo'q, odatda bu model cheksiz davomiylik sifatida singdirayotgan namunangiz ichidagi strukturaviy sinishning belgisi.
Deyarli birlik davomiylik va kichik shok yuklamasi barcha aktiv sinflarida kanonik DCC izi, va kripto ham bundan mustasno emas. Shuningdek, bu aynan nima uchun 30 kunlik sirg'anuvchi korrelatsiya shunday yomon o'rinbosar ekanligini ko'rsatadi: sirg'anuvchi oyna yashirin ravishda ushbu parchalanish strukturasiga umuman mos kelmaydigan va ni faraz qiladi.
Real vaqtni tejaydigan bir necha implementatsiya eslatmalari:
- Boshlang'ich qiymat.
[0.03, 0.94]dan boshlash odatiy kripto bahosini aks ettiradi: kichik (korrelatsiyalar shoklarga reaksiya bildiradi, ammo shiddatli emas), katta (korrelatsiyalar davomli). Agar sizning optimallashtiruvchingiz tomon adashib ketsa, korrelatsiya jarayoni integrallangan — bu odatda namunangizdagi strukturaviy sinish belgisidir (model davomiylik sifatida moslashtirishga urinayotgan rejim o'zgarishi). - Vaqtlash konvensiyasi. Sikl ichida biz ni ga qarshi baholaymiz va keyin ni bilan keyingi qadam uchun yangilaymiz. Bu ni faqat gacha bo'lgan axborotning funksiyasi qilib qoladi — oldinga qarash yo'q. Buni bir birlikka noto'g'ri qilish DCC ning eng keng tarqalgan xatosi bo'lib, u namunadagi mosligini sezilmasdan shishiradi.
- Korrelatsiya nishonlash. Biz ni baholash o'rniga uni namunaviy korrelatsiya sifatida qo'yamiz. Aynan shu narsa optimallashtirishni ikki o'lchamli qiladi. Narxi shundaki, to'liq namunani ishlatadi, shuning uchun qat'iy walk-forward baholashda siz uni faqat o'quv oynasida qayta baholashingiz kerak (quyida ko'ring).
3-bosqich: korrelatsiya va kovariatsiya yo'llarini qayta tiklash
belgilangach, rekursiyani yana bir marta ishga tushiring, bu safar to'liq (va ) yo'lini saqlab, shunda keyingi strategiyalar undan foydalana oladi.
def dcc_filter(Z, Sigma, a, b):
"""
Run the DCC recursion with fixed (a,b) and return the full paths:
R_path : (T, d, d) conditional correlation matrices
H_path : (T, d, d) conditional covariance matrices (scaled units)
Sigma : (T, d) conditional volatilities aligned with Z.
"""
Z = np.asarray(Z); Sig = np.asarray(Sigma)
T, d = Z.shape
Qbar = np.cov(Z, rowvar=False, bias=True)
dinv = np.diag(1.0 / np.sqrt(np.diag(Qbar)))
Qbar = dinv @ Qbar @ dinv
Q = Qbar.copy()
R_path = np.empty((T, d, d))
H_path = np.empty((T, d, d))
for t in range(T):
q_diag = np.sqrt(np.diag(Q))
R = Q / np.outer(q_diag, q_diag)
R_path[t] = R
Dt = np.diag(Sig[t]) # D_t = diag(sigma_i,t)
H_path[t] = Dt @ R @ Dt # H_t = D_t R_t D_t
z = Z[t]
Q = (1 - a - b) * Qbar + a * np.outer(z, z) + b * Q
return R_path, H_path
R_path, H_path = dcc_filter(Z, Sigma, a_hat, b_hat)
i, j = symbols.index("BTC"), symbols.index("ETH")
rho_btc_eth = pd.Series(R_path[:, i, j], index=Z.index, name="rho_BTC_ETH")
print(rho_btc_eth.describe())
print("min/max correlation:", rho_btc_eth.min().round(3),
rho_btc_eth.max().round(3))
rho_btc_eth qatori butun mashqning natijasi: bitta raqam o'rniga, endi sizda chizishingiz, chegara qo'yishingiz yoki strategiyaga uzatishingiz mumkin bo'lgan kunlik korrelatsiya bor. Haqiqiy kripto ma'lumotlarida siz odatda uni tinch davrlarda taxminan 0.5 dan stress davrida 0.9 dan yuqoriga qadar cho'zilganini ko'rasiz — aynan bitta namunaviy korrelatsiya o'rtachalashtirib yashiradigan tarqoqlik.
Bir qadam oldinga bashorat
Jonli savdo uchun sizga hozirgi mavjud axborotdan keyingi davr kerak. Volatillik tomoni har bir arch modelining bir qadamli bashoratidan keladi; korrelatsiya tomoni esa rekursiyaning yana bir aylanishi:
def dcc_forecast_next(Z, a, b, fits, symbols):
"""One-step-ahead H_{t+1} using info through the last observation."""
Z = np.asarray(Z); T, d = Z.shape
Qbar = np.cov(Z, rowvar=False, bias=True)
dinv = np.diag(1.0 / np.sqrt(np.diag(Qbar)))
Qbar = dinv @ Qbar @ dinv
Q = Qbar.copy()
for t in range(T):
z = Z[t]
Q = (1 - a - b) * Qbar + a * np.outer(z, z) + b * Q
q_diag = np.sqrt(np.diag(Q))
R_next = Q / np.outer(q_diag, q_diag)
sig_next = np.array([
np.sqrt(fits[s].forecast(horizon=1, reindex=False)
.variance.iloc[-1, 0])
for s in symbols
])
Dt = np.diag(sig_next)
H_next = Dt @ R_next @ Dt
return R_next, H_next, sig_next
R_next, H_next, sig_next = dcc_forecast_next(Z, a_hat, b_hat, fits, symbols)
Yodda tuting, hamma narsa masshtablangan (×100) birliklarda, chunki biz arch ni series * 100 da moslaganmiz. Volatilliklarni 100 ga (va kovariatsiyalarni ga) bo'lib, strategiyaga uzatishdan oldin xom-qaytim birliklariga qaytaring. Masshtablashni to'g'ri saqlash zerikarli, ammo yashirin xatolarning tez-tez uchraydigan manbai.
1-qo'llanma: pair savdo uchun dinamik hedge nisbati
Klassik bozorga neytral pair — bitta aktivni uzun, ikkinchisini beta-vaznlangan miqdorda qisqa pozitsiyada ushlash — hedge nisbati bilan yashaydi va o'ladi. Uni o'quv oynasi bo'yicha statik OLS orqali baholang, va siz aynan ushbu maqola bag'ishlangan eskirgan-korrelatsiya muammosini meros qilib olasiz: o'tgan chorakda bozor ta'sirini neytrallashtirgan hedge bu chorakda noto'g'ri.
DCC sizga hedge nisbatini vaqt qatori sifatida beradi. ETH ta'sirini BTC yordamida minimal-dispersiya bilan hedjlash shartli regressiya koeffitsientidir:
O'ng tomondagi har bir had DCC natijasi. Hedge nisbati ikkita alohida sababga ko'ra harakatlanadi, va DCC ularni toza ajratadi: korrelatsiya o'zgaradi (aktivlar bog'lanadi yoki ajraladi), va volatillik nisbati o'zgaradi (bitta aktiv nisbatan volatilroq bo'ladi). Sirg'anuvchi-OLS beta ikkala effektni kechikish bilan aralashtiradi; DCC ularni bog'laydi.
def dynamic_hedge_ratio(R_path, Sigma, base="BTC", target="ETH",
symbols=symbols, index=Z.index):
"""
beta_t to hedge `target` exposure with `base`:
beta_t = rho_t * sigma_target,t / sigma_base,t
(Scaling cancels in the ratio, so scaled units are fine here.)
"""
i = symbols.index(target)
j = symbols.index(base)
rho = R_path[:, i, j]
sig = np.asarray(Sigma)
beta = rho * sig[:, i] / sig[:, j]
return pd.Series(beta, index=index, name=f"beta_{target}_{base}")
beta_t = dynamic_hedge_ratio(R_path, Sigma)
print(beta_t.describe())
spread = (returns["ETH"] - beta_t.shift(1) * returns["BTC"]).dropna()
spread ni siz ishlatayotgan har qanday pair mexanizmiga uzating. Dinamik hedge o'z-o'zidan yutuq yaratmaydi — u siz savdo qilayotgan spread ni vaqt bo'yicha haqiqatan ham bozorga neytral qiladi, shunda sizning o'rtachaga qaytish signalingiz siljib ketayotgan yo'nalishli ta'sir bilan ifloslanmaydi. Agar siz pair strategiyalarini qurayotgan bo'lsangiz, bu to'g'ridan-to'g'ri Kriptoda Statistik Arbitraj va Pair Savdosi va pair savdoga masofa yondashuvi freymworklariga ularning qattiq hedge nisbati o'rniga joylashadi. Korrelatsiya qatorining o'zi ham har qanday sirg'anuvchi oynaga qaraganda korrelatsiyaga asoslangan pair signali uchun toza input hisoblanadi — siz shovqinli oynali baho o'rniga silliqlashtirilgan, model bilan izchil olasiz.
ni jonli ishlatishga oid ikkita ehtiyot chorasi. Birinchidan, uni kechiktiring — da savdo qiling, hech qachon zamonaviy da emas, aks holda siz oldinga qarayapsiz. Ikkinchidan, har kuni chayqaladigan hedge nisbati aylanma va komissiyalar yaratadi; kripto ning 24/7 bozorida qisqa oyoqdagi finansirlash xarajatlari bilan, haddan tashqari reaktiv hedge u tuzatayotgan siljishdan ko'ra ko'proq qon oqizishi mumkin. ni silliqlang (EWMA, yoki hedge ni faqat u bir polosa chegaradan o'tganda qayta muvozanatlang) va bularning barchasini oqilona hajmda o'lchang — shovqinli signaldan pozitsiya hajmini belgilash o'zining fani, bu Kelly mezoni bo'yicha hajmlash da yoritilgan.
2-qo'llanma: vaqt bo'yicha o'zgaruvchan portfel dispersiyasi
Vazn vektori bo'lgan portfel uchun shartli dispersiya:
Statik kovariatsiya matritsasi bilan — Markowitz standarti bo'yicha — bu raqam siz bir marta hisoblab, hali ham to'g'ri deb faraz qilayotgan doimiy sondir. Bu to'g'ri emas. Portfel riski bozor bilan birga nafas oladi, va u aynan korrelatsiyalar otilib chiqqanda eng kuchli nafas oladi, chunki tushishda hadlari ham, hadlari ham birga ko'tarilib, ko'paytiriladi. Tinch bozorlarda 40% yillik volatillikka o'xshagan portfel stress haftasida 80%+ ishlashi mumkin, va statik kovariatsiya matritsasi sizga hech narsa o'zgarmagani haqida gapiradi.
def portfolio_vol_path(H_path, weights, index=Z.index, unscale=1e4):
"""
Conditional portfolio volatility sigma_{p,t} = sqrt(w' H_t w).
H_path is in scaled (x100) units, so covariances carry a 100^2
factor: divide by unscale=1e4 to return to raw-return variance.
"""
w = np.asarray(weights)
var_t = np.einsum("i,tij,j->t", w, H_path, w) / unscale
return pd.Series(np.sqrt(var_t), index=index, name="port_vol")
w = np.array([0.4, 0.3, 0.2, 0.1]) # BTC, ETH, SOL, BNB
pv = portfolio_vol_path(H_path, w)
pv_annual = pv * np.sqrt(365)
print(pv_annual.describe())
Ushbu vaqt bo'yicha o'zgaruvchan — riskka asoslangan taqsimlashga kerak bo'lgan haqqoniy input. Statik namunaviy kovariatsiya bilan o'rtacha-dispersiya optimallashtirish (Kripto uchun Markowitz) fantastikaga qarshi optimallashtirmoqda; unga ni (yoki uning qisqa muddatli bashoratini) uzatish samarali chegarani o'zini vaqt bo'yicha o'zgaruvchan qiladi va optimallashtiruvchini o'sib borayotgan-korrelatsiya rejimlariga ulardan keyin emas, balki oldinga qarab riskni kamaytirishga majburlaydi. Risk-parity va ierarxik yondashuvlar — HRP + CVaR quvuri — kovariatsiya inputiga hatto ko'proq sezgir, chunki butun taqsimlash risk matritsasining funksiyasi hisoblanadi. Va agar siz taqsimlagichlarni yonma-yon solishtirayotgan bo'lsangiz, portfel optimallashtirish algoritmlari solishtiruvi dagi kabi, ular statik yoki dinamik kovariatsiyani iste'mol qilishi ko'pincha algoritm tanlovidan ko'ra amalga oshirilgan risk uchun kattaroq omil bo'ladi.
To'g'ridan-to'g'ri qo'llanma — butun portfelning volatillikka yo'naltirilishi: nishon yillik volatillik ni tanlang va har bir davrda umumiy ta'sirni ga o'lchang, shunda amalga oshirilgan risk inqirozlarda portlash o'rniga taxminan doimiy qoladi. Bu aynan shu qoidani quradigan va backtest qiladigan 4-qism bilan halqani yopadi.
3-qo'llanma: rejim signali sifatida korrelatsiya
Hedjlash va hajmlashdan tashqari, korrelatsiya matritsasi makro signalni o'z ichiga oladi. Chiqarib olishingiz mumkin bo'lgan eng foydali yagona skalyar — o'rtacha juftlik korrelatsiyasi:
Portfel bo'ylab ko'tarilganda, bozor risk-off rejimiga kirmoqda — individual hikoyalar ahamiyatini yo'qotadi va hamma narsa bitta makro beta sifatida savdo qilinadi. Bu "inqirozda korrelatsiyalar 1 ga ketadi" degan ibora miqdoriy izidir. U tushishlarga yetakchilik qiladi yoki ular bilan bir vaqtda sodir bo'ladi, bu esa uni kechikuvchi postmortem emas, foydali rejim ko'rsatkichiga aylantiradi.
def avg_pairwise_corr(R_path, index=Z.index):
T, d, _ = R_path.shape
iu = np.triu_indices(d, k=1) # upper-triangle off-diagonals
avg = R_path[:, iu[0], iu[1]].mean(axis=1)
return pd.Series(avg, index=index, name="avg_corr")
avg_corr = avg_pairwise_corr(R_path)
roll_q = avg_corr.rolling(365, min_periods=90).quantile(0.80)
risk_off = (avg_corr > roll_q)
risk_off ni mustaqil drossel sifatida (umumiy ta'sirni kamaytirish, stoplarni kengaytirish, hamma narsa birga trendlanganda bosib o'tiladigan o'rtachaga qaytish strategiyalarini to'xtatish) yoki yanada rasmiy rejim modelida xususiyat sifatida ishlatishingiz mumkin. Bu HMM lar bilan rejim aniqlash dagi yashirin-Markov yondashuvi bilan tabiiy bog'lanadi: o'rtacha DCC korrelatsiyasi HMM ga uzatishingiz mumkin bo'lgan eng ma'lumotli kuzatuv o'zgaruvchilaridan biri, chunki u kechikuvchi qaytimlar bermaydigan tarzda tizimli stressga nisbatan oldinga qaraydigan. Haqqoniy ogohlantirish: ko'tarilayotgan korrelatsiya sizga diversifikatsiya barbod bo'layotganini aytadi, bozor qaysi yo'nalishga borishi haqida emas. Bu alfa signali emas, risk signali, va shunday hajmlanishi kerak — nima uchun risk rejimini yo'nalishli garov sifatida ko'rish yomon tugashini yo'qotishlar va foydaning asimmetriyasi dan ko'ring.
Amaliy mulohazalar
Baholash barqarorligi va aktivlar soni
DCC BEKK ga qaraganda ancha yaxshi miqyoslanadi, ammo "miqyoslanadi" degani "bepul" degani emas. Korrelatsiya-nishonlash matritsasi — namunaviy korrelatsiya, va namunaviy korrelatsiya matritsalari kuzatuvlar soniga yaqinlashgani sari yomon shartlangan bo'lib qoladi. 4 ta aktiv va 1000 kun bilan hammasi yaxshi. 60 ta aktiv va 400 kun bilan deyarli degenerativ, ehtimollikdagi uning teskarisi portlaydi, va sonli shovqindan PD bo'lmagan holatga adashib ketishi mumkin. Yumshatuvchi choralar, ularga qanchalik tez-tez muhtoj bo'lishingiz tartibida taxminan:
- ni siqing rekursiyani ishga tushirishdan oldin strukturaviy nishon tomon (Ledoit-Wolf, yoki identity / doimiy-korrelatsiya matritsasi tomon). Bu katta portfellar uchun eng yuqori samarali tuzatish.
- Aktivlarni guruhlang bir necha sektorlarga (majorlar, L1lar, DeFi, memlar), sektor darajasida ichida va o'zaro modellashtiring, yoki xom aktivlar o'rniga bosh komponent faktorlarida DCC ni ishga tushiring.
- Ko'proq aktivlarga qaraganda ko'proq ma'lumotni afzal ko'ring. DCC uzun, toza, bir vaqtdagi tarixga to'yib bo'lmas ishtiyoq bilan qaraydi — bu aynan yosh tokenlarda mavjud bo'lmagan narsa.
Amalda, to'g'ridan-to'g'ri DCC ni ko'pi bilan bir necha o'nlab aktivlar bilan cheklang. Katta olam uchun faktor qaytimlari plyus idiosinkratik qoldiqlar bo'yicha DCC standart yechim.
Korrelatsiya nishonlash — narxi bor yorliq
ni nishonlash baholashni boshqariladigan qiladi, ammo to'liq namuna shartsiz korrelatsiyasini har bir ga singdiradi. Qattiq backtest da bu oldinga qarash sizib chiqishi: sizning -kunlik korrelatsiya matritsangiz butun namunaning, kelajakni ham qo'shgan holda, o'rtacha korrelatsiyasini "biladi". Haqqoniy baholash uchun siz ni faqat o'quv oynasida qayta baholashingiz va uni namunadan tashqarida qat'iy ushlab turishingiz yoki uni oldinga siljitishingiz kerak. Bu butun walk-forward optimallashtirish freymvorki ta'minlaydigan aynan shu intizom, va yuqoridagi o'quv kodimiz qilganidek qulay np.cov(Z) bilan to'liq massiv bo'yicha uni tasodifan buzish oson. Bitta P&L raqamiga ishonishdan oldin buni tuzating.
Qayta moslash sur'ati va oldinga qarash intizomi
Sizga ni har kuni qayta optimallashtirish shart emas — ular barqaror parametrlar. Oqilona ishlab chiqarish sur'ati:
- va bir o'lchamli GARCH parametrlarini qayta baholang haftalik yoki oylik.
- Filtrni (, ni yangilash) har bir davrda ishga tushiring muzlatilgan parametrlar bilan yangi va olish uchun. Filtrlash arzon; moslash arzon emas.
- Har doim bashorat qiling, hech qachon silliqlamang. da savdo qilish uchun gacha bo'lgan axborotdan qurilgan dan foydalaning. Ikki o'tuvli struktura (oyna bo'yicha moslash, so'ng oldinga filtrlash) sizni halol saqlaydigan narsa.
DCC backtest va jonli ishlash o'rtasidagi bo'shliq deyarli har doim oldinga qarash sizib chiqishi — to'liq-namuna , zamonaviy , yoki siz baholayotgan savdoni o'z ichiga olgan ma'lumotlarda qayta moslash. Backtest ni jonli sharoitlarga moslashtirish intizomi backtest-jonli parallelligi da o'zining mavzusi, va DCC bu yerda boshqa modellardan ko'ra beparvolikni ko'proq jazolaydigan model. Agar toza walk-forward baholashdan so'ng, dinamik korrelatsiya sizning strategiyangiz uchun oddiy sirg'anuvchi bahodan ustun hech narsa qo'shmasa, bu haqiqiy va nashr etsa bo'ladigan salbiy natija — halol salbiy natijalar dagi fikrlash to'g'ridan-to'g'ri qo'llaniladi.
Asimmetrik DCC (aDCC)
Xuddi bir o'lchamli leverage effekti (2-qism) yomon xabar yaxshi xabardan ko'ra volatillikni ko'proq ko'targanidek, korrelatsiyalar birgalikdagi manfiy shoklardan keyin birgalikdagi ijobiy shoklardan keyingiga qaraganda ko'proq ko'tariladi. Cappiello, Engle va Sheppard (2006) buni manfiy-qism standartlashtirilgan qoldiqlarning tashqi ko'paytmasi bilan boshqariladigan had qo'shib, asimmetrik DCC bilan tutadi:
bu yerda va birgalikdagi pastga harakatlardan qo'shimcha korrelatsiya tepkisini o'lchaydi. Kripto uchun, qulash-korrelatsiyasi asosiy risk bo'lgan joyda, asimmetriya hadi odatda muhim va qo'shimcha bitta parametrga arziydi. rmgarch aDCC ni qutidan tashqarida moslaydi (model="aDCC"); bizning NumPy baholovchimizga hadini qo'shish oddiy mashq.
Solishtiruv: DCC muqobillar bilan
Kripto portfeli uchun kovariatsiya matritsasini olish usullaridan qaysi biri qayerda joylashadi? Haqqoniy xulosa:
| Yondashuv | Parametrlar | Miqyoslanadi | Vaqt bo'yicha o'zgaruvchan ? | PD kafolatlanganmi? | Dum bog'liqligi? |
|---|---|---|---|---|---|
| Namunaviy / sirg'anuvchi kovariatsiya | 0 (oyna uzunligi) | istalgan | qo'pol (kechikkan, shovqinli) | yo'q (tuzatish kerak) | yo'q |
| EWMA (RiskMetrics) | 1 () | istalgan | ha (yagona parchalanish) | ha | yo'q |
| CCC-GARCH | marginal + | o'nlab | yo'q (doimiy ) | ha | yo'q |
| DCC-GARCH | marginal + 2 | o'nlab | ha | ha | yo'q |
| aDCC-GARCH | marginal + 3 | o'nlab | ha, asimmetrik | ha | qisman |
| BEKK | ha (boy) | ha | yo'q | ||
| VECH | ha (eng boy) | qiyin | yo'q | ||
| GARCH-kopula | marginal + kopula | o'nlab (vine) | statik kopula | ha | ha |
Ushbu jadvalning bir necha o'qilishi:
- EWMA — DCC yordam berayotganini da'vo qilishdan oldin har kim yenga oladigan arzon asosiy chiziq. Bu ruhida bir-parametrli maxsus holat — kovariatsiyaga to'g'ridan-to'g'ri qo'llaniladigan yagona eksponensial parchalanish — va ko'pgina portfellar uchun namunadan tashqarida uni yaxshilash hayratlanarli darajada qiyin. Agar DCC toza walk-forward da EWMA dan ustun kelmasa, EWMA dan foydalaning.
- CCC va DCC — ushbu maqolaning butun mohiyati: bir xil faktorlashtirish, ammo CCC ni muzlatadi va DCC unga harakatlanish imkonini beradi. Ikkita qo'shimcha parametr () — butun farq, va kriptoda ular o'z narxini oqlaydi.
- BEKK/VECH boyroq dinamika sotib oladi — har bir kovariatsiya har bir o'tgan shokka javob berishi mumkin — ammo parametr narxi ularni kichik portfellar bilan chegaralaydi. 4 aktivdan oshgach ular haqiqiy variant emas.
- GARCH-kopula — dum bog'liqligi ostida "ha" ga ega yagona qator. Bu yana o'sha bir-birini to'ldiruvchanlik: DCC qo'shma taqsimotning dinamik markazini modellashtiradi, kopulalar uning statik dumlarini modellashtiradi. Agar sizning risk savolingiz "hamma narsa birga buzilganda nima bo'ladi" bo'lsa, kopula quvuri ga murojaat qiling; agar u "hozir mening hedge nisbatim / portfel dispersiyam qancha" bo'lsa, DCC ga murojaat qiling.
Tizimli kripto deski uchun amaliy standart: tanada hedge nisbatlari va dinamik kovariatsiya uchun DCC (yoki aDCC), dum riski va CVaR uchun kopula qatlami, va qo'shimcha mexanizm o'zini o'zi to'lashini tekshirib turadigan mantiqiy tekshiruv asosiy chizig'i sifatida EWMA.
Cheklovlar
- Skalyar dinamika. Barcha juftlar uchun bitta va bitta — kuchli cheklov. BTC-ETH va ikkita noma'lum altkoin bir xil moslashish tezligini ulashadi. Umumlashgan DCC buni yumshatadi, ammo DCC yo'q qilish uchun mo'ljallangan parametr portlashini qayta kiritadi.
- Ikki bosqichli samaradorlik yo'qotilishi. Kvazi-ehtimollik baholovchisi bir xil natijali, ammo to'liq samarali emas, va sodda standart xatolar noto'g'ri. Agar sizga xulosa muhim bo'lsa, Engle-Sheppard tuzatmasidan foydalaning; signal generatsiyasi uchun nuqta baholari yetarli.
- Standart bo'yicha Gauss dumlari. Oddiy Gauss kvazi-ehtimolligi qo'shma dum riskini kamsitib ko'rsatadi. Student-t innovatsiyalari yordam beradi; haqiqiy dum bog'liqligi uchun (bir vaqtda ekstremal harakatlar ehtimoli), DCC noto'g'ri asbob, va kopula modeli to'g'risi. DCC sizga korrelatsiyaning dinamik tanasini beradi; kopulalar statik dumini beradi. Jiddiy deskilar ikkalasidan ham foydalanadi.
- Korrelatsiya sabab-natija emas, va yo'nalish emas. Ko'tarilayotgan diversifikatsiya barbod bo'layotganini ogohlantiradi; u bozor yo'nalishi haqida hech narsa aytmaydi. Risk signalini yo'nalishli kutishlar bilan ortiqcha yuklashmang.
- Ma'lumot ochligi. Yuqoridagi hamma narsa uzun, toza, sinxronlashtirilgan tarixlarni faraz qiladi. Kriptoning eng yangi va eng qiziqarli tokenlari bularning uchalasini ham buzadi.
Xulosa
- Statik korrelatsiya kriptoda yolg'on. Korrelatsiyalar klasterlanadi, davom etadi va tushishlarda 1 ga otilib chiqadi — aynan diversifikatsiya yordam berishi kerak bo'lgan lahzada. Bitta namunaviy rejim-almashinuvchi jarayonni ma'nosiz o'rtaga o'rtachalashtiradi.
- To'liq ko'pko'lamli GARCH (VECH, BEKK) miqyoslanmaydi. Parametrlar soni sifatida o'sadi; ikkalasi ham amalda bir hovuch aktiv bilan chegaralangan.
- DCC (Engle 2002) muammoni faktorlashtiradi: , mustaqil bir o'lchamli GARCH moslashlaridan (1-2-qismlardan qayta foydalaning) va ikki-parametrli rekursiyadan bilan. U o'nlab aktivlarga miqyoslanadi, chunki faqat optimallashtiriladi.
- Rekursiya , ga normallashtirilgan, har bir qadamda to'g'ri ijobiy-aniqlangan korrelatsiya matritsasini ishlab chiqaradi, , bilan.
archDCC ni bajarmaydi. Marginallarniarchbilan moslang, so'ng bu yerdagi ~60-qatorli NumPy/SciPy baholovchisini amalga oshiring, yokimgarch(Python) yokirmgarch(R, mos yozuv) dan foydalaning.- Uchta aniq natija: pair savdo uchun dinamik hedge nisbati ; riskka asoslangan taqsimlash uchun haqqoniy vaqt bo'yicha o'zgaruvchan portfel dispersiyasi ; va risk-off rejim signali sifatida o'rtacha juftlik korrelatsiyasi.
- Intizom hamma narsa. Korrelatsiya nishonlash to'liq-namuna o'rtachasini sizib chiqaradi, shuning uchun ni faqat o'quv ma'lumotlarida qayta baholang; har bir hedge nisbatini kechiktiring; oldinga filtrlang, hech qachon silliqlamang. Walk-forward baholash muhokama qilinmaydi.
- aDCC pastga-asimmetriya hadini qo'shadi va odatda qulash-korrelatsiyasi hukmronlik qiladigan kriptoda arziydi.
- 4-qism ushbu bashoratlardan foydalanib volatillikka yo'naltirilgan strategiya quradi va backtest qiladi.
Manbalar:
- Engle, R. (2002). Dynamic Conditional Correlation: A Simple Class of Multivariate Generalized Autoregressive Conditional Heteroskedasticity Models. Journal of Business & Economic Statistics, 20(3), 339-350. DOI
- Engle, R. & Sheppard, K. (2001). Theoretical and Empirical Properties of Dynamic Conditional Correlation Multivariate GARCH. NBER Working Paper 8554. DOI
- Bollerslev, T. (1990). Modelling the Coherence in Short-Run Nominal Exchange Rates: A Multivariate Generalized ARCH Model. Review of Economics and Statistics, 72(3), 498-505. DOI
- Cappiello, L., Engle, R., & Sheppard, K. (2006). Asymmetric Dynamics in the Correlations of Global Equity and Bond Returns. Journal of Financial Econometrics, 4(4), 537-572. DOI
- Engle, R. & Kroner, K. (1995). Multivariate Simultaneous Generalized ARCH. Econometric Theory, 11(1), 122-150. DOI
- Bollerslev, T., Engle, R., & Wooldridge, J. (1988). A Capital Asset Pricing Model with Time-Varying Covariances. Journal of Political Economy, 96(1), 116-131. DOI
- Galanos, A. (2022). rmgarch: Multivariate GARCH Models. R package. CRAN.
MarketMaker.cc Team
Miqdoriy tadqiqotlar va strategiya