← Макалаларга кайтуу
July 13, 2026
5 мүн окуу

Волатилдүүлүктү максат кылуу жана GARCH божомолдору менен соода жүргүзүү

#volatility
#GARCH
#volatility-targeting
#backtesting
#risk
#crypto
#algorithmic-trading

Бул сериянын биринчи үч бөлүгү сизге волатилдүүлүктү божомолдоону үйрөттү. Биз 1-бөлүктө бир өлчөмдүү GARCH(1,1) курдук, 2-бөлүктө GJR жана Student-t инновациялары менен леверажды жана оор куйруктарды коштук жана 3-бөлүктө DCC-GARCH аркылуу бүтүндөй ковариация матрицасын убакыт боюнча моделдедик. Ар биринин аягында биз бир санды басып чыгардык: эртеңки күтүлгөн волатилдүүлүк. Анан, чынын айтсак, токтоп калдык — божомолду өндүрүү өзү максат болгондой.

Бул андай эмес. Волатилдүүлүк божомолу P&L эмес. Эч кимге төмөн QLIKE упайы үчүн акча төлөнгөн эмес. Божомол так сиз башкача кабыл алмак болгон чечимди өзгөрткөн учурда гана баалуу болот — канча сатып алуу, качан кыюу, канча капитал бөлүү. Эгер сиздин божомолуңуз позицияны кыймылдатпаса, анын статистикалык тактыгы жеке кызыгуудан башка нерсе эмес.

Бул акыркы бөлүк ошол циклди жабуу жөнүндө. Биз 1-3-бөлүктөрдөгү божомолдорду алабыз жана аларды мүмкүн болушунча таза чечимде иштетебиз: волатилдүүлүктү максат кылуу — портфелдин realized волатилдүүлүгү туруктуу максатка тийиши үчүн позицияны өлчөмдөө. Анан биз бул блог ар кандай жеке моделден көрө көбүрөөк баалаган нерсени жасайбыз: чынчыл баалайбыз. Биз GARCHти акылсыз, бирок күчтүү базалык моделдерге (rolling realized vol, EWMA) каршы коёбуз, биз чыныгы волатилдүүлүктү эч качан байкай албастыгыбыз чындыгына туруктуу болгон жоготуу функцияларын колдонобуз, чыгымдар менен жана look-ahead жок walk-forward бэктест жүргүзөбүз жана волатилдүүлүктү максат кылуу сизге эмне бере тургандыгын жана эмне бербей тургандыгын жөнөкөй тил менен айтабыз. Спойлер: бул риск-корректировкаланган кирешелерди жакшыртат жана drawdownдорду альфа жаратуудан алда канча ишенимдүү жеңет.

Эмне үчүн волатилдүүлүктү максат кылуу туура сыноо

Волатилдүүлүк божомолун колдонуунун татаалыраак жолдору бар — опцион баалоо, VaR чектөөлөрү, динамикалык хеджирлөө — бирок волатилдүүлүктү максат кылуу башка коюмдардан эң аз булганыч менен божомолдун баалуулугун бөлүп чыгарган ыкма. Идея бир теңдеме.

Сигнал аркылуу көрсөтүлгөн багытка ээ тобокелдүү активди кармаңыз (азырынча жөн гана "long"). Белгиленген позиция ордуна таасирди божомол волатилдүүлүгүнө тескери пропорционалдуу түрдө өлчөмдөңүз:

wt=σtargetσ^t(then capped)w_t = \frac{\sigma_{\text{target}}}{\hat{\sigma}_{t}} \quad \text{(then capped)}

бул жерде σ^t\hat{\sigma}_t — кийинки мезгилдин волатилдүүлүгүнүн божомолуңуз (tt чейинки маалыматтарды гана колдонуу менен түзүлгөн), σtarget\sigma_{\text{target}} болсо стратегиянын иштешин каалаган жылдык волатилдүүлүк — айталы, 15% же 20%. Модель тынч базарды божомолдогондо, сиз 1.0 карай (же андан ашык) леверажды көбөйтөсүз; бороонду божомолдогондо кичирейтесиз. Өлчөмдөлгөн позициянын realized волатилдүүлүгү, биринчи катарда,

Vol(wtrt+1)=wtσt+1=σtargetσ^tσt+1σtarget\text{Vol}(w_t r_{t+1}) = w_t \, \sigma_{t+1} = \frac{\sigma_{\text{target}}}{\hat\sigma_t}\, \sigma_{t+1} \approx \sigma_{\text{target}}

σ^tσt+1\hat\sigma_t \approx \sigma_{t+1} болгон ар кандай учурда. Ошентип, машыгуунун бүтүндөй сапаты бир нерсеге көз каранды: сиздин σ^t\hat\sigma_t божомолуңуз кийинки мезгилдин чыныгы волатилдүүлүгү σt+1\sigma_{t+1} ге канчалык жакын. Жакшыраак божомол тегизирээк realized-волатилдүүлүк профилин жана — көрө тургандай — жакшыраак Sharpe коэффициентин берет. Ошондуктан бул туура сыноо. Божомол кооздук эмес; ал бөлгүч.

Эмне үчүн бул Sharpeти жогорулатат жана drawdownдорду көзөмөлдөйт

Бул жерде эки эмпирикалык факт иштейт.

Волатилдүүлүк кирешелерге караганда алда канча көбүрөөк божомолдонот. Эртеңки BTC кирешесинин багыты күндөлүк жыштыкта тыйын ыргытууга жакын; чоңдугу болсо жок. Волатилдүүлүк кластерленет — чоң кыймылдар чоң кыймылдардан кийин келет — бул GARCHтин бар болуусунун бүтүндөй себеби (1-бөлүк муну коддогон AR(1)-in-variance түзүмүн чыгарган). Бир күн алдыга variance үчүн 0.4-0.6 R2R^2 кадимки нерсе; кирешелер үчүн ошол эле сан Renaissance деңгээлиндеги сигнал болмок. Волатилдүүлүктү максат кылуу божомолдонуучу чоңдукту пайдаланат жана божомолдонбоочу тууралуу агностик бойдон калат.

Sharpe коэффициенттери убакыт боюнча туруктуу эмес; волатилдүүлүк кескин көтөрүлгөндө түшөт. Криптодогу жогорку волатилдүүлүк режимдери — деливеражинг каскаддары, биржа кыйрашы, бардыгы 30% gap кылган күндөр — жакшыраак эмес, тескерисинче начарыраак риск бирдигине туура келген кирешеге ээ болот. Божомол волу жогору болгондо так таасирди механикалык кыюу аркылуу сиз drawdownдорго эң көп жана компаунддалган кирешеге эң аз салым кошкон мезгилдерди аз салмактайсыз. Moreira жана Muir (2017) акциялар үчүн волатилдүүлүк башкарылуучу портфелдер — так ушул 1/σ21/\sigma^2 өлчөмдөө — Sharpe коэффициенттерин жогорулатарын жана башкарылбаган факторго каршы оң альфа өндүрөрүн көрсөттү. Механизм сыйкыр эмес; ал алдын ала белгилүү болгон бейпил эмес терезелерге туруктуу доллар позициясын кармоодон баш тартуу.

Drawdown пайдасы дагы да түздөн-түз. Максималдуу drawdown позиция-киреше бөлүштүрүүсүнүн куйругу менен үстөмдүк кылат. wtrt+1w_t r_{t+1} волатилдүүлүгү σtarget\sigma_{\text{target}} айланасында бекитилгендиктен, белгиленген notional стратегия вол жарылуусу учурунда башынан кечирген оор сол куйрук кысылат: сиз киргенде мурдатан кичине элеңиз. Волатилдүүлүктү максат кылуу кыйрашты божомолдобойт, бирок базар толкундаганда системалуу түрдө аз таасирленет жана толкундоо — бул кыйраштар болгон учур.

Kelly жана фракциялык өлчөмдөө менен байланышы

Волатилдүүлүктү максат кылуу Kelly критерийинин биринчи тууганы. Күтүлгөн ашыкча кирешеси μ\mu жана дисперсиясы σ2\sigma^2 болгон бир актив үчүн өсүү-оптималдуу (толук-Kelly) фракция

f=μσ2.f^\star = \frac{\mu}{\sigma^2}.

Эгер сиз Sharpe коэффициенти μ/σ\mu/\sigma болжол менен туруктуу деп болжолдосоңуз — күчтүү болжол, бирок "базар риск үчүн туруктуу баа төлөйт" деген сөздөгү жашыруун болжол — анда μ=Sσ\mu = S\sigma жана f=S/σf^\star = S/\sigma болот, бул болсо так σtarget=S(Kelly fraction)\sigma_{\text{target}} = S \cdot (\text{Kelly fraction}) менен волатилдүүлүктү максат кылуу. Башкача айтканда, волатилдүүлүктү максат кылуу — бул күтүлгөн киреше волатилдүүлүк менен масштабдалат деген болжол астындагы Kelly өлчөмдөө. Биз толук жана фракциялык Kellyди жана эмне үчүн эси жайында эч ким толук Kelly соода кылбастыгын Kelly критерийи жана стратегия өлчөмдөө ичинде карайбыз. Ошол жердеги практикалык сабак бул жерге өтөт: теориялык өлчөмдүн бир бөлүгүн колдонуңуз, анткени бөлгүчтөгү (сиздин вол божомолуңуз) жана өзгөчө алымдагы (күтүлгөн киреше) баалоо катасы толук өлчөмдөөнү кооптуу деңгээлде агрессивдүү кылат.

Эске тутуу үчүн дагы эки байланыш. Биринчиден, волатилдүүлүктү максат кылуу кирешелердин симметриялуу чачыранкылыгына карап өлчөмдөйт, бирок крипто төлөмдөрү симметриялуу эмес — 20% түшүү күнүнүн баасы левераж жана ликвидация тартылганда 20% көтөрүлүү күнүнүн күзгү чагылышы эмес. Биз бул асимметрияны жоготуу-киреше асимметриясы ичинде түздөн-түз карайбыз жана GJR/EGARCH божомолу (2-бөлүк) анын бир бөлүгүн σ^t\hat\sigma_t ге терс шоктарга көбүрөөк жооп берүү менен мурдатан сиңдирет. Экинчиден, вол божомолу — чекиттик баа; толугураак риск көрүнүшү ага интервал тиркейт. Соода үчүн конформалдык божомолдоо модель чыгарууларын сиз аларга каршы өлчөмдөй ала турган бөлүштүрүүдөн көз каранды эмес интервалдарга айландырууну көрсөтөт, бул болсо бул макаланын чынчыл-баалоо темасына табигый шайкеш келет.

Атаандаштар: GARCH эмнени жеңүү керек

Мына чыныгы баалоону демодон айырмалаган тартип. GARCHти таажы кийгизүүдөн мурда, сиз ага арзан, ачык жана таң калыштуу деңгээлде жеңүү кыйын болгон атаандаштарды берүүңүз керек. Эгер сиздин татаал GJR-t моделиңиз беш саптык EWMAдан жакшыраак иштей албаса, сиз баалуу нерсени үйрөндүңүз жана өзүңүздү көптөгөн өндүрүш татаалдыгынан сактап калдыңыз.

Биз кийинки мезгилдин волатилдүүлүгүнүн төрт божомолчусун базалык катары коёбуз.

(a) Артка realized волатилдүүлүк (rolling стандарттык четтөө)

Эң жөнөкөй божомол: эртеңки волатилдүүлүк акыркы nn күндөлүк кирешелердин тандамалык стандарттык четтөөсүнө барабар.

σ^tRV=1n1i=1n(rti+1rˉ)2\hat\sigma_{t}^{\text{RV}} = \sqrt{\frac{1}{n-1}\sum_{i=1}^{n}\bigl(r_{t-i+1}-\bar r\bigr)^2}

Анын бир гиперпараметри бар (терезе nn, адатта 20-60 күн) жана эч кандай модели жок. Анын кемчилиги — терезедеги ар бир байкоо бирдей салмак алат жана анан терезеден чыкканда капысынан аскадан кулап түшөт — "ghosting" же "echo" эффекти, бул жерде бир кыйрашуу күнү божомолду так nn күн ичинде шишитет жана анан бир түндө жоголот, базар чын эле тынчыганбы же жокпу, айырмасы жок.

(b) EWMA / RiskMetrics (λ=0.94\lambda = 0.94)

Экспоненциалдуу салмактанган жылма орточо echo көйгөйүн эскирээк квадрат кирешелерге геометриялык түрдө басаңдаган салмак берүү менен оңдойт:

σ^t2=λσ^t12+(1λ)rt2\hat\sigma_{t}^{2} = \lambda\,\hat\sigma_{t-1}^{2} + (1-\lambda)\,r_{t}^{2}

Бул RiskMetrics (J.P. Morgan, 1996) баалоочусу. Күндөлүк маалыматтар үчүн канондук λ=0.94\lambda = 0.94 менен эффективдүү эс болжол менен 1/(1λ)171/(1-\lambda) \approx 17 күн, бирок басаңдоо жылмакай — аска жок. EWMA чынында эмне экенине көңүл буруңуз: бул ω=0\omega = 0 жана α+β=1\alpha + \beta = 1 менен интегралдашкан GARCH(1,1), башкача айтканда орточого кайтуусуз жана узак мөөнөттүү дисперсиясыз GARCH. Эгер λ=0.94\lambda = 0.94 ти кабыл алсаңыз, анын нөл эркин параметрлери бар жана ал ушул бүтүндөй макаладагы эң кыйын жалгыз базалык модель. "GARCH X ти жеңет" деген макалалардын чоң бөлүгү тандама сыртында EWMAны жеңе албайт.

import numpy as np
import pandas as pd

def ewma_vol(returns: pd.Series, lam: float = 0.94, sigma0: float | None = None) -> pd.Series:
    """RiskMetrics EWMA conditional volatility (returns in decimal, e.g. 0.03).

    sigma2_t = lam * sigma2_{t-1} + (1 - lam) * r_t^2
    Returns a series aligned to `returns` where value at t uses info up to t.
    """
    r2 = np.square(returns.values)
    var = np.empty_like(r2)
    var[0] = sigma0**2 if sigma0 is not None else r2[0]
    for t in range(1, len(r2)):
        var[t] = lam * var[t - 1] + (1.0 - lam) * r2[t - 1]  # note: r_{t-1}, no look-ahead
    return pd.Series(np.sqrt(var), index=returns.index, name="ewma_vol")

Адамдарды чаташтырган бир назик жагдай: tt мезгили үчүн божомол (tt үстүндө кармалган позицияны өлчөмдөө үчүн колдонулуучу) tt ден мурда байкалган кирешелерден түзүлүшү керек. Жогорудагы рекурсияда var[t] r2[t-1] ди колдонот, ошондуктан катар чыныгы бир кадам алдыга божомол. Бул индексти туура алуу бэктест менен фантазиянын ортосундагы айырма — бул тууралуу walk-forward бөлүмүндө көбүрөөк.

(c) GARCH(1,1) жана GJR-t (1-2-бөлүктөр)

Биздин башкы каармандар. Стандарттык GARCH(1,1):

σt2=ω+αϵt12+βσt12,ω>0, α,β0, α+β<1\sigma_t^2 = \omega + \alpha\, \epsilon_{t-1}^2 + \beta\,\sigma_{t-1}^2, \qquad \omega>0,\ \alpha,\beta\ge0,\ \alpha+\beta<1

узак мөөнөттүү дисперсия σˉ2=ω/(1αβ)\bar\sigma^2 = \omega/(1-\alpha-\beta) менен жана бир кадамдык божомол рекурсиядан түздөн-түз чыгат (1-бөлүк). GJR-GARCH кеңейтүүсү левераж мүчөсүн кошот, ошентип терс шоктор дисперсияны оң шокторго караганда көбүрөөк жогорулатат:

σt2=ω+(α+γ1[ϵt1<0])ϵt12+βσt12\sigma_t^2 = \omega + (\alpha + \gamma\, \mathbb{1}[\epsilon_{t-1}<0])\,\epsilon_{t-1}^2 + \beta\,\sigma_{t-1}^2

жана криптонун оор куйруктарын иштетүү үчүн Student-t инновациялары менен жупталган, бул 2-бөлүктүн GJR-t си. GARCH EWMAны жеңе алышынын себеби — орточого кайтуу: шоктон кийин GARCH божомолду α+β\alpha+\beta тарабынан башкарылган ылдамдыкта σˉ2\bar\sigma^2 карай кайтарат, EWMA болсо (интегралдашкан болгондуктан) эч качан кайтпайт. Волатилдүүлүк кескин көтөрүлүп, анан нормалдашканда — кеңири таралган учур — GARCH божомолу ылдамыраак жана тагыраак басаңдайт. Волатилдүүлүк чын эле туруктуу болгондо, экөө дээрлик айырмаланбайт.

(d) Realized variance боюнча HAR-RV (эгер сизде intraday маалымат болсо)

Эгер сизде intraday барлар болсо — жана 24/7 крипто базарларында дээрлик дайыма бар — сиз күндөлүк квадрат кирешелерге караганда алда канча аз шуулдак волатилдүүлүк проксисин кура аласыз: realized variance, күн ичинде intraday кирешелердин квадраттарынын суммасы.

RVt=i=1Mrt,i2(e.g. M=288 five-minute bars)RV_t = \sum_{i=1}^{M} r_{t,i}^2 \qquad (\text{e.g. } M = 288 \text{ five-minute bars})

Corsi (2009) дун Heterogeneous Autoregressive модели эртеңки realized variansты өткөндөгү RVRV дын күндөлүк, жумалык жана айлык орточолорунан божомолдойт — үч регрессор менен узак эстүү туруктуулукту кармоонун одоно, бирок таң калыштуу деңгээлде эффективдүү жолу:

RVt+1=β0+βdRVt+βwRVt(5)+βmRVt(22)+ut+1RV_{t+1} = \beta_0 + \beta_d\, RV_t + \beta_w\, \overline{RV}_t^{(5)} + \beta_m\, \overline{RV}_t^{(22)} + u_{t+1}

бул жерде RVt(5)\overline{RV}_t^{(5)} жана RVt(22)\overline{RV}_t^{(22)} — күндөлүк RVRV дын артка 5 күндүк жана 22 күндүк орточолору. Бул жөнөкөй OLS регрессия, ал жогорку сапаттуу intraday проксисин пайдаланат жана ал көп учурда төрттөн эң жакшы күндөлүк-вол божомолчусу — көбүнчө GARCHти так RVRV r2r^2 ге караганда тазараак максат болгондуктан жеңет.

import numpy as np
import pandas as pd

def realized_variance(intraday_returns: pd.Series, day_index) -> pd.Series:
    """Daily realized variance = sum of squared intraday (log) returns per day.
    `intraday_returns` indexed by timestamp; `day_index` maps to calendar day.
    """
    return intraday_returns.pow(2).groupby(day_index).sum()

def har_features(rv: pd.Series) -> pd.DataFrame:
    """Build HAR regressors from a daily realized-variance series."""
    df = pd.DataFrame({"rv": rv})
    df["rv_d"] = df["rv"].shift(1)                          # yesterday
    df["rv_w"] = df["rv"].shift(1).rolling(5).mean()        # trailing week
    df["rv_m"] = df["rv"].shift(1).rolling(22).mean()       # trailing month
    df["target"] = df["rv"]                                 # predict today's RV
    return df.dropna()

def fit_har(rv: pd.Series):
    """Fit HAR-RV by OLS. Returns (coef_dict, predict_fn)."""
    df = har_features(rv)
    X = np.column_stack([np.ones(len(df)), df["rv_d"], df["rv_w"], df["rv_m"]])
    y = df["target"].values
    beta, *_ = np.linalg.lstsq(X, y, rcond=None)
    names = ["const", "rv_d", "rv_w", "rv_m"]

    def predict(rv_d, rv_w, rv_m):
        return float(beta @ np.array([1.0, rv_d, rv_w, rv_m]))

    return dict(zip(names, beta)), predict

log-HAR тууралуу эскертүү: RVRV оңго кыйгач жана катуу оң болгондуктан, көптөгөн практиктер logRVt+1\log RV_{t+1} ди лог HAR белгилерине регрессиялашат, бул шайкештикти жакшыртат жана оң божомолдорду кепилдейт. Артка экспоненттегенде сиз жарым-дисперсия Jensen оңдоосун кошушуңуз керек, RV^=exp(y^+12σ^u2)\widehat{RV} = \exp(\hat{y} + \tfrac{1}{2}\hat\sigma_u^2), антпесе сиз системалуу түрдө аз божомолдойсуз.

Колда төрт божомолчу менен — RV, EWMA, GARCH/GJR-t, HAR — суроо мындай болот: алардын баары божомолдоого аракет кылып жаткан нерсени эч качан көрө албаганда, кайсынысы эң жакшы экенин кантип чечебиз?

Волатилдүүлүк божомолун чынчыл баалоо

Бул макаланын негизги окутуусу, ошондуктан бул жерде жайлаңыз.

Сиз σ^t2\hat\sigma_t^2 божомолдорун чыныгы шарттуу дисперсия σt2\sigma_t^2 ге каршы салыштыргыңыз келет. Бирок σt2\sigma_t^2 — бул жашыруун чоңдук — ал маалымат жаратуучу процесстин параметри, эч качан түздөн-түз байкалбайт. Сиз алган нерсе — күнүнө бир realized киреше. Ошондуктан ар бир волатилдүүлүк баалоо чынында сиздин божомолуңузду чындык үчүн шуулдак прокси ге каршы салыштыруу. Эки стандарттык прокси:

  • Квадрат кирешелер rt2r_t^2. Нөл-орточо модель астында σt2\sigma_t^2 үчүн жактуу эмес (E[rt2Ft1]=σt2\mathbb{E}[r_t^2 \mid \mathcal{F}_{t-1}] = \sigma_t^2), бирок өтө шуулдак: бир күндөлүк киреше — стандарттык четтөөнүн бир-байкоолук баасы. rt2r_t^2 проксиси чыныгы вол жогору болгондо да 0 (тегиз күн) болушу мүмкүн же ийгиликтүү куйрук күнүндө абдан чоң болушу мүмкүн.
  • Intraday маалыматтан realized variance RVtRV_t. Алда канча аз шуулдак — intraday тандап алуу өзгөчө бир-киреше шуулдагын орточолойт — бул так HAR-RV иштешинин жана эгер сизде такыр intraday маалымат болсо, RVRV ди прокси катары колдонушуңуз керектигинин себеби.

Дээрлик баарын кармап калган назик жагдай: прокси шуулдак болгондуктан, жоготуу функциясын тандоо күнөөсүз эмес. Эки божомолду туура эмес жоготуу менен рейтингдеңиз жана шуулдак прокси рейтингди оодарып, сизге начарыраак божомол жакшыраак деп айтышы мүмкүн. Patton (2011) шуулдак проксидеги күтүлгөн жоготуу боюнча божомолдорду рейтингдөө сизге чыныгы (байкоого мүмкүн эмес) дисперсияда ала турган ошол эле рейтингди берген мааниде кайсы жоготуу функциялары "туруктуу" экенин так иштеп чыккан. Бир гана белгилүү үй-бүлө шайкеш келет. Практикада эки мүчө маанилүү.

MSE жана QLIKE

Дисперсия боюнча орточо квадраттык ката:

LMSE(σ2,h)=(σ2h)2L_{\text{MSE}}(\sigma^2, h) = (\sigma^2 - h)^2

бул жерде h=σ^2h = \hat\sigma^2 — божомол жана σ2\sigma^2 r2r^2 же RVRV тарабынан прокси кылынат. MSE Patton маанисинде туруктуу (анын рейтинги проксиге шайкеш), бирок ал симметриялуу жана масштабга көз каранды: ал бир эле абсолюттук өлчөмдөгү ашыкча-божомол жана аз-божомолду бирдей жазалайт жана ал жогорку волатилдүүлүк мезгилдериндеги каталарды тынч мезгилдердеги каталарга караганда салыштырмасыз көбүрөөк салмактайт. Тынч 95% күндөрдү так аткарган, бирок үч кризис күнүндө дисперсия божомолдорун жарылткан модель MSE астында коркунучтуу көрүнөт, атүгүл анын кризис жүрүм-туруму так сиз каалаган нерсе болсо да.

QLIKE (квази-ыктымалдуулук) жоготуусу — иш аты:

LQLIKE(σ2,h)=σ2hlogσ2h1L_{\text{QLIKE}}(\sigma^2, h) = \frac{\sigma^2}{h} - \log\frac{\sigma^2}{h} - 1

Бул дисперсия боюнча Гаусс ыктымалдуулугу тарабынан божомолдонгон жоготуу, ал дагы Patton маанисинде туруктуу жана аны волатилдүүлүк үчүн артыкчылыктуу тандоо кылган эки касиети бар. Биринчиден, ал туура багытта асимметриялуу: ал дисперсиянын аз-божомолун ашыкча-божомолго караганда көбүрөөк жазалайт. Риск-менеджер же вол-максат кылуучу үчүн бул туура асимметрия — волду аз божомолдоо сиз маанилүү болордон мурда өтө чоң өлчөм алдыңыз дегени, бул болсо кымбат ката. Экинчиден, ал (болжол менен) масштабдан көз каранды эмес: анткени ал σ2/h\sigma^2/h катышына көз каранды, 10% божомол катасы тынч күндө же кризис күнүндө болушуна карабай болжол менен бирдейге түшөт, ошондуктан баалоо MSE сыяктуу бир ууч жогорку-дисперсия байкоолору тарабынан басып алынбайт. Проксинин гетероскедастикалыгына бул туруктуулук — бул так волатилдүүлүк жапайы деңгээлде өзгөрүшү бүтүндөй максат болгондо сиз каалаган нерсе.

Көңүл буруңуз, LQLIKE0L_{\text{QLIKE}} \ge 0, барабардык h=σ2h = \sigma^2 болгондо гана. Төмөнүрөөк жакшыраак, MSE менен бирдей.

import numpy as np

def qlike(proxy: np.ndarray, forecast_var: np.ndarray) -> np.ndarray:
    """Per-observation QLIKE loss. `proxy` is r^2 or RV (a variance proxy),
    `forecast_var` is h = sigma_hat^2. Both strictly positive, same units.
    """
    ratio = proxy / forecast_var
    return ratio - np.log(ratio) - 1.0

def mse_var(proxy: np.ndarray, forecast_var: np.ndarray) -> np.ndarray:
    """Per-observation MSE on the variance scale."""
    return np.square(proxy - forecast_var)

Эки операциялык эскертүү. Проксини жана божомолду бирдей бирдиктерде сактаңыз (экөө тең күндөлүк дисперсия же экөө тең жылдык) антпесе катыш маанисиз. Жана forecast_var ди эч качан нөлгө тийгизбеңиз — аны кичине полго кыскартыңыз, анткени log0\log 0 бүтүндөй орточону ууландырат.

Mincer-Zarnowitz регрессиясы

Бир жоготуу саны сизге кайсы божомол жакшыраак экенин айтат; ал сизге божомол кантип туура эмес экенин айтпайт. Mincer-Zarnowitz (1969) регрессиясы муну жасайт. Проксини божомолго регрессиялаңыз:

rt2  =  a+bσ^t2+ut.r_t^2 \;=\; a + b\,\hat\sigma_t^2 + u_t.

Оптималдуу, жактуу эмес божомол астында a=0a = 0 жана b=1b = 1: орточо алганда realized дисперсия божомолго барабар. Четтөөлөр патологияны диагноздойт:

  • b<1b < 1 жана a>0a > 0: өтө волатилдүү болгон божомолдун классикалык колтамгасы — ал ашыкча реакция кылат, толук ишке ашпаган экстремумдарды божомолдойт. Чийки квадрат-киреше башкарылуучу моделдер үчүн абдан кеңири таралган.
  • b>1b > 1: божомол аз реакция кылат, чыныгы дисперсия менен өтө аз масштабданат.
  • Төмөн регрессия R2R^2: атүгүл a,ba,b орточо жакшы көрүнсө да, божомол дисперсияны күндөн-күнгө начар байкайт. Прокси өтө шуулдак болгондуктан, r2r^2 ге каршы MZ R2R^2 көбүнчө болгону 0.05-0.20 болушунан коркпоңуз; RVRV ге каршы ал алда канча жогору болот. r2r^2 ге каршы R2R^2 божомол канчалык жакшы болушуна карабай 1 ден алда канча төмөн чектелген, таза прокси шуулдагы себебинен.

H0:(a,b)=(0,1)H_0: (a,b) = (0,1) дын биргелешкен FF-сынагы формалдуу калибрлөө текшерүүсүн берет. Практикада MZ ди божомолду түшүнүү үчүн диагностика катары жана QLIKE ди божомолдорду рейтингдөө үчүн колдонуңуз.

Diebold-Mariano: айырма чыныгыбы?

Айталы, GARCHтин орточо QLIKE си 0.183 жана EWMAныкы 0.191. GARCH "жеңет". Бирок 0.008 чыныгы артыкчылыкпы же тандап алуу шуулдагыбы? Diebold-Mariano (1995) сынагы так ушуга жооп берет. Ар-мезгил жоготуу айырмасын аныктаңыз

dt=L(proxyt,htA)L(proxyt,htB)d_t = L(\text{proxy}_t, h^A_t) - L(\text{proxy}_t, h^B_t)

эки AA жана BB божомолу үчүн (бул жерде LL = QLIKE). Нөл болжолу барабар божомол тактыгы, H0:E[dt]=0H_0: \mathbb{E}[d_t] = 0. Статистика — орточо айырманын анын узак мөөнөттүү (HAC) стандарттык катасы менен стандартташтырылганы, анткени dtd_t катар корреляцияланган:

DM=dˉLRV^(dt)/T  d  N(0,1)\text{DM} = \frac{\bar d}{\sqrt{\widehat{\mathrm{LRV}}(d_t)/T}} \;\xrightarrow{d}\; \mathcal{N}(0,1)

бул жерде LRV^\widehat{\mathrm{LRV}} — Newey-West түрүндөгү узак мөөнөттүү дисперсия баасы. ±1.96\pm 1.96 дан тышкары DM статистикасы барабар тактыкты 5% да четке кагат. Маанилүүсү, DM — бул кыналган моделдер эмес, божомолдор тууралуу сынак жана ал жөнөкөй tt-сынак dtd_t да көңүл бурбай турган жоготуу катарындагы катар көз карандылыкты иштетет.

import numpy as np
from scipy import stats

def diebold_mariano(loss_a: np.ndarray, loss_b: np.ndarray, h: int = 1):
    """Diebold-Mariano test of equal predictive accuracy.
    loss_a, loss_b: per-period losses (e.g. QLIKE) for forecasts A and B.
    h: forecast horizon; Newey-West lag = h - 1 (>=0), plus a small-sample buffer.
    Returns (DM_stat, p_value). Negative DM => A has lower loss (A better).
    """
    d = np.asarray(loss_a) - np.asarray(loss_b)
    T = len(d)
    d_bar = d.mean()

    lag = max(h - 1, 0)
    gamma0 = np.mean((d - d_bar) ** 2)
    lrv = gamma0
    for k in range(1, lag + 1):
        w = 1.0 - k / (lag + 1)
        cov = np.mean((d[k:] - d_bar) * (d[:-k] - d_bar))
        lrv += 2.0 * w * cov

    dm = d_bar / np.sqrt(lrv / T)

    adj = np.sqrt((T + 1 - 2 * h + h * (h - 1) / T) / T)
    dm *= adj
    p = 2.0 * (1.0 - stats.t.cdf(abs(dm), df=T - 1))
    return float(dm), float(p)

Ошол комментарийдеги иллюстративдик натыйжа чынчыл жана кеңири таралган натыйжа жана бул бөлүктүн бар болуусунун бүтүндөй себеби: GARCH көбүнчө EWMAдан бир аз төмөнүрөөк орточо жоготуу басып чыгарат жана көбүнчө ошол артыкчылык DM маанилүүлүк тосмосунан өтө албайт. Эгер сиз болгону орточо QLIKE ди билдирсеңиз, DM сынагы вето койгон болмок артыкчылыктарга өзүңүздү ынандырасыз. DM статистикасын билдириңиз. Бул биз стратегия кирешелерине туруктуу артыкчылыксыз чынчыл баалоо ичинде колдонгон ошол эле тартип — базалык моделди жеңген чекиттик баа ал шуулдак эмес экенин четке какмайынча артыкчылык эмес.

Бэктест: walk-forward вол-максаттуу стратегия

Эми биз эки жарымды — божомолчуну жана өлчөмдөө эрежесин — стратегияга бириктиребиз жана аны маанилүү жалгыз жол менен баалайбыз: walk-forward, тандамадан тышкары, чыгымдар менен.

Стратегия атайын жөнөкөй, анткени жөнөкөйлүк натыйжаны акылдуу сигналга эмес, вол божомолуна байлоого мүмкүндүк берген нерсе. Гана-long, вол-максаттуу BTC. Ар күнү кийинки күндүн волатилдүүлүгүн божомолдоңуз, позицияны wt=min(σtarget/σ^t, wmax)w_t = \min(\sigma_{\text{target}}/\hat\sigma_t,\ w_{\max}) ге коюңуз, түнү бою кармаңыз жана кайталаңыз. Long/flat варианты тренд фильтри терс болгондо позицияны өчүрөт; кичине портфел варианты бир активдин дисперсиясынын ордуна 3-бөлүк төгү DCC ковариация матрицасына өлчөмдөйт. Биз гана-long учурду толук сүрөттөйбүз жана кеңейтүүлөрдү белгилейбиз.

Walk-forward механикасы жана no-look-ahead келишими

Бул бэктесттин эң маанилүү жалгыз касиети — t+1t+1 күнүндө позицияны өлчөмдөө үчүн колдонулуучу ар бир чоңдук tt күнүнүн жабылышында гана бар маалыматтарды колдонуу менен эсептелет. GARCH параметрлери tt де бүткөн rolling терезеде кайра бааланат; божомол — ошол шайкештиктен бир кадам алдыга σ^t+1\hat\sigma_{t+1}; позиция ошол божомолдон коюлат; жана алынган киреше wt+1rt+1w_{t+1} r_{t+1}, бул жерде rt+1r_{t+1} — модель эч качан көрбөгөн кийинки күндүн кирешеси. GARCHти толук тандамага кайра шайкеш кылуу жана анан өткөндү "божомолдоо" адамдар кокустан сонун бэктест өндүрүшүнүн эң кеңири таралган жолу. Биз бул look-ahead тузагын жана жалпы методологияны walk-forward оптималдаштыруу ичинде карайбыз.

import numpy as np
import pandas as pd
from arch import arch_model

def walk_forward_voltarget(
    returns: pd.Series,          # daily log returns in decimal (e.g. 0.021)
    proxy_var: pd.Series,        # variance proxy aligned to returns (RV or r^2)
    target_vol_annual: float = 0.20,
    window: int = 750,           # rolling estimation window (days)
    refit_every: int = 5,        # refit GARCH weekly, forecast daily (cost saver)
    w_max: float = 3.0,          # leverage cap
    cost_bps: float = 5.0,       # per-unit-turnover cost in basis points
    ann: int = 365,              # crypto trades 365 days/yr
):
    """Long-only vol-targeted BTC, GARCH(1,1)-t forecasts, strictly walk-forward.
    Returns a DataFrame with position, forecast vol, net returns, and turnover.
    """
    idx = returns.index
    target_daily = target_vol_annual / np.sqrt(ann)

    fcast_vol = pd.Series(index=idx, dtype=float, name="fcast_vol")
    last_res = None

    for i in range(window, len(returns) - 1):
        if (i - window) % refit_every == 0 or last_res is None:
            train = returns.iloc[i - window:i + 1] * 100.0   # scale for the optimizer
            am = arch_model(train, mean="Constant", vol="GARCH",
                            p=1, o=1, q=1, dist="t")           # GJR-t, Part 2
            last_res = am.fit(disp="off")

        f = last_res.forecast(horizon=1, reindex=False)
        var_next = f.variance.values[-1, 0] / (100.0 ** 2)    # unscale
        fcast_vol.iloc[i + 1] = np.sqrt(var_next)

    raw_w = (target_daily / fcast_vol).clip(upper=w_max)
    position = raw_w.shift(0)                                  # w_{i+1} known at close i
    gross_ret = position * returns                            # earned on day i+1

    turnover = position.diff().abs().fillna(0.0)
    cost = turnover * (cost_bps / 1e4)
    net_ret = (gross_ret - cost).dropna()

    out = pd.DataFrame({
        "position": position,
        "fcast_vol": fcast_vol,
        "gross_ret": gross_ret,
        "turnover": turnover,
        "net_ret": net_ret,
    }).dropna()
    return out

def performance_stats(net_ret: pd.Series, ann: int = 365) -> dict:
    """Sharpe, realized vol, max drawdown, CAGR, annual turnover."""
    mu = net_ret.mean() * ann
    sigma = net_ret.std() * np.sqrt(ann)
    sharpe = mu / sigma if sigma > 0 else np.nan
    equity = (1.0 + net_ret).cumprod()
    peak = equity.cummax()
    max_dd = (equity / peak - 1.0).min()
    cagr = equity.iloc[-1] ** (ann / len(net_ret)) - 1.0
    return {
        "sharpe": round(sharpe, 2),
        "realized_vol": round(sigma, 3),
        "max_drawdown": round(max_dd, 3),
        "cagr": round(cagr, 3),
    }

Көрүнгөнүнөн маанилүүрөөк болгон бир нече ишке ашыруу эскертүүлөрү:

  • Optimizer үчүн масштабдоо. arch шайкештиктери кирешелер пайызда болгондо сандык жактан бактылуураак, ошондуктан * 100 жана дисперсияны масштабсыздоодо шайкеш келген / 100**2. Масштабсыздоону унутсаңыз, сиздин максат волуңуз 10,000x туура эмес болот.
  • Кайра шайкеш кылуу каденциясы. GARCH параметрлерин ар бир күнү кайра баалоо кымбат жана дээрлик эч нерсе кошпойт — параметрлер жумадан-жумага туруктуу. Күндөлүк божомолдоо менен (рекурсия кайра шайкештиксиз да жаңы кирешелерден σt2\sigma_t^2 ди жаңыртат) жумалык кайра шайкештик (refit_every=5) стандарттык компромисс. Бул биргелешкен риск үчүн копула моделдери ичиндеги копула түтүктөн кэштөө кеңешин чагылдырат.
  • wmaxw_{\max} чектөөсү косметикалык эмес. Божомол волу өлүү-тынч режимде кулаганда, σtarget/σ^t\sigma_{\text{target}}/\hat\sigma_t 5x, 10x леуражга жарылышы мүмкүн. Чектелбеген волатилдүүлүктү максат кылуу сизге волатилдүүлүк режими өзгөрүшүнөн мурда — божомол эң туура эмес болууга даяр болгон так ошол учурда — кыйратуучу леуражды кубаныч менен берет. Аны чектеңиз (бул жерде 3x) жана чектөө эң тынч, артка карай эң кооптуу мезгилдерде так байланарын моюнга алыңыз.
  • Чыгымдар turnover менен масштабданат жана волатилдүүлүктү максат кылуу — бул turnover машинасы. Божомолдогу ар бир термелүү позицияны кайра өлчөмдөйт. Секирген божомолго ээ төмөн-вол активде сиз китепти күнүгө айландырасыз. cost_bps мүчөсү тегеректөө деталы эмес; жогорку-turnoverлуу вол-максат үчүн ал жалпы Sharpe жакшыруусунун маанилүү бөлүгүн жеп коюшу мүмкүн.

Чыгаруу кандай көрүнөт (иллюстративдик)

Муну BTC күндөлүк маалыматтарында көп жылдык терезе ичинде иштетүү, төрт божомолчуну өлчөмдөө бөлгүчү катары салыштыруу, төмөнкү формага ээ таблица чыгарууга ыктайт. Төмөнкү сандар иллюстративдик — кадимки үлгүнү көрсөтүү үчүн кол менен тандалган, чыныгы бэктест чыгаруусу эмес — бирок тартип жана чоңдуктар практиктер билдирген нерселерди чагылдырат.

Өлчөмдөө божомолу Sharpe Realized vol Максат vol Макс drawdown Жылдык turnover
Белгиленген notional (максатсыз) 0.71 0.68 -0.78 0.1x
Rolling RV (60d) 0.94 0.24 0.20 -0.41 12x
EWMA (λ=0.94\lambda=0.94) 1.02 0.21 0.20 -0.35 19x
GARCH(1,1)-t 1.05 0.21 0.20 -0.33 22x
HAR-RV (intraday прокси) 1.09 0.20 0.20 -0.31 20x

Курууга татыктуу эки вариант

Гана-long учур божомолду бөлүп чыгарат, бирок эки кеңейтүү ачык көрсөтүүгө жетиштүү кеңири таралган.

Тренд дарбазасы менен long/flat. Волатилдүүлүктү максат кылуу позицияны өлчөмдөйт, бирок багыт көрүнүшүн албайт — ал дайыма long. Арзан, чынчыл жакшыруу — жай тренд фильтри терс болгондо позицияны өчүрүү, ошентип сиз вол-максаттуу longду өсүү трендеринде гана кармайсыз жана антпесе flat отурасыз. Бул өлчөмдөө логикасын бирдей сактайт жана үстүнө одоно режим фильтрин катмарлайт; ал киргизүүлөрдү убакытты аныктайт деп көрсөтпөйт, болгону ачык түшүү трендери аркылуу кармоодон качат.

def apply_trend_gate(position: pd.Series, price: pd.Series, fast: int = 20, slow: int = 100):
    """Zero out the (already vol-targeted) position when the fast SMA is below
    the slow SMA. Both SMAs use only past prices, so no look-ahead is introduced.
    """
    fast_ma = price.rolling(fast).mean().shift(1)   # shift: known at prior close
    slow_ma = price.rolling(slow).mean().shift(1)
    gate = (fast_ma > slow_ma).astype(float)        # 1.0 in uptrend, 0.0 otherwise
    return position * gate.reindex(position.index).fillna(0.0)

Тренд дарбазасы түшүүдөгү turnoverди кыят (сиз аюу базарында кичирейген позицияны айландырууну токтотосуз) бирок өз режим тобокелин кошот — ал толкундуу капталдык базарларда whipsaw кылат жана бурулуштарда кечигет. Ал жардам береби — бул эмпирикалык суроо, сиз аны өлчөмдөө эрежесинин өзү сыяктуу ошол эле walk-forward, DM-сыналган катаалдык менен жооп беришиңиз керек; тренд фильтри — бул так тандамада сонун көрүнгөн жана тандамадан тышкары бууланып кеткен кошумчанын түрү.

DCC ковариацияда портфел вол-максаты. Бир нече активдин китеби үчүн скаляр божомол σ^t\hat\sigma_t портфел волатилдүүлүгүнө wΣtw\sqrt{w^\top \Sigma_t w} айланат, бул жерде Σt\Sigma_t3-бөлүк төгү DCC-GARCHтен убакыт боюнча өзгөрүүчү ковариация матрицасы. Сиз базалык салмактарды w0w_0 тандайсыз (бирдей салмак, базар капиталы же орточо-дисперсия жантаюусу), Σt\Sigma_t астында портфелдин божомол волун эсептейсиз жана портфел максатына тийиши үчүн бүтүндөй салмак вектору масштабдайсыз.

def portfolio_voltarget_weights(base_w, cov_forecast, target_vol_daily, w_gross_max=3.0):
    """Scale a base weight vector so forecast portfolio vol hits the target.
    base_w:        (n,) base allocation (need not sum to 1).
    cov_forecast:  (n, n) one-step-ahead covariance from DCC-GARCH (daily units).
    """
    base_w = np.asarray(base_w, dtype=float)
    port_var = float(base_w @ cov_forecast @ base_w)
    port_vol = np.sqrt(max(port_var, 1e-12))
    scale = min(target_vol_daily / port_vol, w_gross_max / np.abs(base_w).sum())
    return scale * base_w

Бул портфел-куруу адабиятына табигый көпүрө: базалык салмактар w0w_0 Markowitz орточо-дисперсия дан же HRP/CVaR сыяктуу риск-негизделген ыкмадан келиши мүмкүн жана анан волатилдүүлүктү максат кылуу жалпы рискти туруктууга масштабдаган overlay катары үстүндө отурат. DCC матрицасы маанилүү, анткени корреляциялар кыйраштарда кескин көтөрүлөт (3-бөлүк) — тынч базарларда диверсификацияланган көрүнгөн портфел так маанилүү болгондо статикалык ковариация болжолдогондон алда канча жогору божомол волуна ээ болушу мүмкүн жана overlay жооп катары жалпы таасирди кыят.

Сиз дайыма сызышыңыз керек болгон диагностикалар

Эч качан болгону жыйынтык таблицасына ишенбеңиз. Ар кандай вол-максат үчүн үч нерсени сызыңыз жана кайсы бир Sharpe санына ишенүүдөн мурда аларды көз менен текшериңиз. Биринчиден, стратегиянын realized rolling волу максат сызыгына каршы — ал максатка жабышуусу керек; андан системалуу түрдө жогору drift сиздин божомолуңуз төмөн жактуу экенин билдирет (кымбат багыт). Экинчиден, позиция/леураж катары — чектөө байланышын жана drawdownдордон мурда леураж секирүүлөрүн издеңиз, бул режим өзгөрүшүндө кармалып калган божомолдун колтамгасы. Үчүнчүдөн, божомол-жана-прокси чачыранкы графиги (Mincer-Zarnowitz сүрөтү) — 1 ден алыс жантаюулуу булут сизге божомол QLIKE орточосу жашыра ала турган жол менен туура эмес масштабдалганын айтат. Бул үч график кайсы бир жалгыз статистикага караганда көбүрөөк каталарды жана өзүн-өзү алдоону кармайт.

Бул таблицаны сиз ар бир бэктест таблицасын окушуңуз керек болгон жол менен окуңуз: эмне туруктуу жана эмне маргиналдуу экенине көңүл буруңуз. Туруктуу фактылар көзгө урунат. Ар бир вол-максаттуу вариант Sharpe боюнча жана андан да драмалуу түрдө drawdown жана realized-vol туруктуулугу боюнча белгиленген notionalды талкалайт — белгиленген-notional стратегия 78% drawdown менен 68% жылдык волда иштейт, бул болсо жөн эле инвестицияланбайт. Жана ар бир максат кылуу ыкмасы 20% максатка жакын realized vol берет, бул болсо механиканын иштешинин бүтүндөй убадасы. Маргиналдуу фактылар — божомолчулардын ортосундагы айырмалар: HAR GARCHти, GARCH EWMAны, EWMA rolling RV ди ашат, бирок боштуктар кичине — Sharpe чекитинин ондон бир бөлүгү — жана божомолдордо Diebold-Mariano же кирешелерде bootstrap менен сыналганда көбүнчө маанилүүлүктөн өтө албайт. Татаал жана жөнөкөй божомолчунун ортосундагы ошол кичине, морт, режимге көз каранды боштук — бул бүтүндөй сериянын чынчыл башкы кабары.

Бул сизге эмне берерин чынчыл кабыл алуу

Бул блог өзүңүздү алдабай бэктест кылуу боюнча бүтүндөй жыйнакка ээ, ошондуктан аны өз натыйжабызга унчукпай үмүттөнүүнүн ордуна колдоноюн.

Волатилдүүлүктү максат кылуу риск-корректировкаланган киреше жана drawdownдорду жакшыртат. Ал жоктон альфа жаратпайт. Таблицага дагы бир жолу карагыла. Максат кылуудан Sharpe жакшыруусу чыныгы жана ага ээ болууга татыктуу — бирок аны декомпозициялагыла жана анын көбү жогорку-вол режимдерге туруктуу позиция кармабоодон келет, бул болсо механикалык түрдө эң начар drawdownдордон качат жана компаунддоо жолун туруктуйт. Стратегия дагы эле BTC longу; анда базар бербеген көрүнүш жок. Эгер BTC сиздин тандамаңызда терс Sharpeге ээ болсо, волатилдүүлүктү максат кылуу сизге оң эмес, азыраак начар терс Sharpe берет. Ал киреше бөлүштүрүүсүн кайра калыптайт — жукараак куйруктар, туруктуураак вол, жакшыраак геометриялык компаунддоо — бирок чийки багыт артыкчылыгы негизги long кандай болсо, ошол. Кооз акция ийри сызыгы сизди риск-менеджментти тапканыңызда альфаны таптым деп ишентүүгө алдоого жол бербеңиз. Moreira-Muir вол менеджментинен акция факторлорунда чыныгы альфа тапты, бирок бул натыйжа фактордун убакыт боюнча өзгөрүүчү риск-киреше соодасы жөнүндө жана ал автоматтык түрдө башка тандамада бир крипто активине өтпөйт.

GARCHтин EWMA үстүндөгү божомол-сапат артыкчылыгы көбүнчө кичине жана режимге көз каранды. Бул 1-3-бөлүктөрдүн ыңгайсыз төлөмү. Сиз барган сайын татаал моделдер курдуңуз — леураж мүчөлөрү, Student-t куйруктары, динамикалык корреляциялар — жана ар биринин вол-максат кылуу P&L га маргиналдуу салымы, жөнөкөй EWMA үстүндө, көбүнчө шуулдак диапазонунда. GARCHтин артыкчылыгы (шоктордон кийин орточого кайтуу) негизинен так режимдерде көрүнөт: кескин секирүүлөр анан нормалдашкан. Узакка созулган трендерде же туруктуу жогорку-вол режимдеринде ал EWMAдан дээрлик айырмаланбайт. Бул GARCHти пайдасыз кылбайт — орточого кайтуу түзүмү, чечмеленүүчү параметрлер, алдыга жолдорду симуляциялоо жана божомолго каршы опциондорду баалоо жөндөмү — булардын баары EWMAда жок баалуулукка ээ — бирок эгер сиздин жалгыз колдонушуңуз өлчөмдөө болсо, татаалдык чыгымын төлөөдөн мурда DM сынагын иштетиңиз жана билиңиз, режим аныктоо сизге башка бурчтан ошол эле нерсени айтат: жеңүүчү модель режимге көз каранды.

Бэктест Sharpe жандуу Sharpe үчүн жогорку чек жана волатилдүүлүктү максат кылуу боштукту кеңейтет. Стратегия turnover-оор жана леураж-масштабдалган болгондуктан, ал жөнөкөй бэктест калтырган сүрүлүүлөргө адаттан тыш сезгич: сиздин fillsтериңиз өлчөмдөгөн жабылыштан начарыраак, леуражданган perp позицияларында funding чыгымдары туруктуу эсептелет жана леураж чектөөсү жөнөкөй w * return көңүл бурбаган маржа жана ликвидация механикасы менен өз ара аракеттенет. Булардын ар бири жандууну бэктесттен начарыраак кылат. Биз бул боштукту бэктест-жандуу паритети ичинде системалуу түрдө карайбыз; өзгөчө волатилдүүлүктү максат кылуу үчүн, консервативдик чыгымдар, реалдуу (төмөн) леураж чектөөсү колдонуп жана сиз сигналды эсептеген жабылыштын ордуна кийинки бардын ачылышында аткарып муну бюджеттеңиз.

Волатилдүүлүк риск премиясы жөнүндө эскертүү. Жогорудагылардын баары realized волатилдүүлүктү божомолдойт. Параллель, соода кылынуучу объект бар: опциондорго бааланган implied волатилдүүлүк, ал орточо кийинки realized волдон жогору турат — волатилдүүлүк риск премиясы, вол секирүү тобокелин көтөрүү үчүн компенсация. Ошол боштуктун өзү киреше булагы (дисперсияны сатуу аны жыйнайт, сатып алуу куйрук тобокелин хеджирлейт) жана ал волатилдүүлүктү максат кылуудан чынында башка оюн: бул волатилдүүлүк божомолун колдонуу эмес, волатилдүүлүктүн баасына коюм. Биз аны бул жерде карабайбыз, бирок машина Black-Scholes опцион баалоо ичиндеги баалоо моделинен башталат жана жакшы realized-vol божомолу (1-2-бөлүктөр) — implied vol кымбатпы же арзанбы баалоо үчүн керектүү так киргизүү. Сиздин GARCH божомолуңузду опцион базарынын implied волуна салыштыруу — бул серияда курган бардык нерсеңиздин чынчылыраак колдонууларынын бири.

Практикалык ойлор

Иштеген вол-максатты мортунан айырмалаган нерселердин жыйнагы.

  • Туура горизонтто баалаңыз. Эгер бир күн кармалган позицияны өлчөмдөсөңүз, бир күндүк волду божомолдоңуз. Эгер жумалык кайра тең салмактасаңыз, жумалык волду божомолдоңуз (жана максат кылыңыз) же күндөлүк GARCH божомолун горизонт боюнча агрегаттаңыз — көп-кадамдуу GARCH божомолу σˉ2\bar\sigma^2 карай орточого кайтат, муну жөнөкөй "hdaily\sqrt{h}\cdot\text{daily}" масштабдоо көңүл бурбайт. 1-бөлүк көп-кадамдуу GARCH божомолдоону камтыйт.
  • 24/7 базарларда жылдаштыруу. Крипто жылына 365 күн эс алуу күндөрү же майрамдарсыз соода кылат, ошондуктан күндөлүк волду акциялардагы 252\sqrt{252} эмес, 365\sqrt{365} менен жылдаштырыңыз. Муну туура эмес кылуу максатыңызды унчукпай ~20% га туура эмес масштабдайт.
  • Бөлгүч ковариация матрицасы болушу мүмкүн. Көп-активдүү китеп үчүн скаляр σ^t\hat\sigma_t ди 3-бөлүк төгү DCC-GARCHтен портфел волу wΣtw\sqrt{w^\top \Sigma_t w} менен алмаштырыңыз жана бүтүндөй салмактар векторун портфел максат волуна тийиши үчүн масштабдаңыз. Бул волатилдүүлүктү максат кылууну орточо-дисперсия өлчөмдөөгө (крипто үчүн Markowitz) жана риск-негизделген бөлүштүрүүгө (HRP жана CVaR түтүктөрү) байлайт — волатилдүүлүктү максат кылуу — бул портфел риск бюджетине масштабдоонун бир-активдүү атайын учуру.
  • Волатилдүүлүктү максат кылуу назик түрдө процикликалык. Баары ошол эле 1/σ1/\sigma эрежесин иштеткенде, вол секирүү синхрондошкон деливеражингди мажбурлайт, бул баалардын төмөн сүрөт, бул realized волду жогорулатат, бул көбүрөөк деливеражингди мажбурлайт. Бул кайра байланыш (2018 "volmageddon" жана ар кандай крипто деливеражинг каскаддарында жакшы документтелген) эреже көп оюнчулар колдонгондо так азыраак жакшы иштээрин билдирет. Бул аны таштоо себеби эмес, бирок леуражды чектөө жана вол секирүү учурундагы fillsтериңиз тынч-базар fillsтерине окшош болот деп болжолдобоо үчүн себеп.
  • Божомолду поллаңыз жана кыскартыңыз. Нөл же нөлгө жакын божомол волу чексиз леураж жаратат. σ^t\hat\sigma_t ди дайыма эси жайында минимумда поллаңыз жана позицияны чектеңиз жана ар биринин канчалык тез-тез байланарын логго жазыңыз — эгер чектөө көп убакыт байланса, сиздин максатыңыз актив үчүн өтө агрессивдүү.

Жыйынтык

  • Волатилдүүлүк божомолу чечимди өзгөртмөйүнчө баалуу эмес. Волатилдүүлүктү максат кылуу — таасирди wt=σtarget/σ^tw_t = \sigma_{\text{target}}/\hat\sigma_t (чектелген) катары өлчөмдөө — божомолдун баалуулугунун эң таза сынагы, анткени божомол сапаты тегизирээк realized-vol профилине жана жогорураак Sharpeге түздөн-түз чагылат.
  • Волатилдүүлүктү максат кылуу риск-корректировкаланган кирешени жана өзгөчө drawdownдорду көзөмөлдөйт, анткени волатилдүүлүк божомолдонот (ал кластерленет) багыт болсо жок жана анткени Sharpe коэффициенттери эреже автоматтык түрдө аз салмактаган жогорку-вол режимдеринде түшөт. Бул күтүлгөн киреше волатилдүүлүк менен масштабдалат деген болжол астындагы Kelly өлчөмдөө.
  • GARCHти күчтүү базалык моделдерге каршы чынчыл баалаңыз: rolling realized vol, EWMA/RiskMetrics (λ=0.94\lambda=0.94, нөл эркин параметрлүү IGARCH) жана intraday realized-variance проксисинде HAR-RV. EWMA жана HAR ды жеңүү кыйын.
  • Сиз чыныгы волатилдүүлүктү байкай албайсыз, ошондуктан проксиге (r2r^2 же алда канча жакшыраак RVRV) каршы прокси шуулдагына туруктуу жоготуу функцияларын колдонуп баалаңыз. MSE үстүндө QLIKE ди артык көрүңүз: ал аз-божомолдоону көбүрөөк жазалайт (кымбат ката) жана масштабдан көз каранды эмес, ошондуктан ал бир нече жогорку-вол күндөр тарабынан басып алынбайт. Жактуулукту диагноздоо үчүн Mincer-Zarnowitz ди жана бир божомолдун артыкчылыгы чыныгыбы же шуулдакпы чечүү үчүн Diebold-Mariano сынагын колдонуңуз.
  • Walk-forward, чыгымга-этияттуу бэктестте волатилдүүлүктү максат кылуу Sharpe жана drawdown боюнча белгиленген notionalды ишенимдүү жеңет жана төрт божомолчу бири-бирине жакын кластерленет — GARCH-үстүндө-EWMA артыкчылыгы кичине, режимге көз каранды жана көбүнчө статистикалык маанилүү эмес. Болгону орточо жоготууну эмес, DM сынагын билдириңиз.
  • Чынчыл болуңуз: волатилдүүлүктү максат кылуу — бул риск-менеджмент, альфа эмес. Ал сизде мурдатан бар ар кандай багыт коюмунун киреше бөлүштүрүүсүн кайра калыптайт; ал жоктон артыкчылык жаратпайт. Жана ал turnover-оор жана леураж-масштабдалган, ошондуктан жандуу натыйжалар бэктесттен адаттагыдан көбүрөөк кечигет.

Адабияттар:

  • Patton, A. J. (2011). Volatility forecast comparison using imperfect volatility proxies. Journal of Econometrics, 160(1), 246-256. DOI
  • Corsi, F. (2009). A simple approximate long-memory model of realized volatility. Journal of Financial Econometrics, 7(2), 174-196. DOI
  • Diebold, F. X., & Mariano, R. S. (1995). Comparing predictive accuracy. Journal of Business & Economic Statistics, 13(3), 253-263. DOI
  • Mincer, J., & Zarnowitz, V. (1969). The evaluation of economic forecasts. In Economic Forecasts and Expectations, NBER.
  • Moreira, A., & Muir, T. (2017). Volatility-managed portfolios. Journal of Finance, 72(4), 1611-1644. DOI
  • J.P. Morgan / Reuters (1996). RiskMetrics Technical Document, 4th ed.
  • Bollerslev, T. (1986). Generalized autoregressive conditional heteroskedasticity. Journal of Econometrics, 31(3), 307-327. 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
  • Harvey, D., Leybourne, S., & Newbold, P. (1997). Testing the equality of prediction mean squared errors. International Journal of Forecasting, 13(2), 281-291. DOI
blog.disclaimer

MarketMaker.cc Team

Сандык изилдөөлөр жана стратегия

Telegram-да талкуулоо
Newsletter

Рынктан бир кадам алдыда болуңуз

AI соода аналитикасы, рынок талдоолору жана платформа жаңылыктары үчүн биздин жаңылыктар бюллетенине жазылыңыз.

Биз сиздин купуялыгыңызды урматтайбыз. Каалаган убакта жазылымдан чыга аласыз.