Арбитраж үшін Vine Copulas: жоғары өлшемді тәуелділіктерді модельдеу
"Фьючерстер мен спот арасындағы күрделі арбитраж тізбектері" сериясының 3-бөлімі
Осы сериядағы алғашқы екі бөлімде біз графтар мен фьючерс-спот жұптарын қарастырдық. Бірақ бірнеше ондаған активтің арасындағы байланысты бір мезгілде модельдеу керек болса не істеу керек? Қарапайым корреляциялар енді жеткіліксіз. Криптовалюта нарығы күрделі, ал оның тәуелділіктері сызықтық емес, әсіресе жоғары құбылмалылық (волатильность) кезеңдерінде.
Дәл осы жерде Vine Copulas көмекке келеді.
Vine Copulas-тың күрделі математикалық визуализациясы: көп активті тәуелділіктер мен ықтималдық тығыздығы бұлттарын бейнелейтін өзара байланысқан сфералар.

1. Корреляциядан тыс
Пирсон корреляция коэффициенті тек сызықтық байланыстарды өлшейді. Крипто әлемінде Bitcoin 5%-ға түскенде, Altcoin-дер 10%-ға дейін түсуі мүмкін (tail dependency), ал Bitcoin тұрақты болғанда, Altcoin-дер тәуелсіз қозғалады. Стандартты модельдер бұл "асимметрияны" қамти алмайды.
1.1 Copula деген не?
Copula — бұл шеткі үлестірімдерді (marginal distributions) көпайнымалы бірлескен үлестірімге (multivariate joint distribution) "жалғайтын" математикалық функция. Ол жеке активтердің қалыпты мінез-құлқын олардың тәуелділік құрылымынан бөліп қарауға мүмкіндік береді.
1.2 Жұптықтан Vine-ге дейін
Үш немесе одан да көп айнымалы арасындағы тәуелділіктерді модельдеу өте қиын. Vine Copulas жоғары өлшемді үлестірімді екіайнымалы (жұптық) copula-лар тізбегіне ыдырату арқылы бұл мәселені шешеді.

2. Vine құрылымы
Қаржы саласында пайдаланылатын vine-нің екі негізгі түрі бар:
- C-Vines (Canonical): Бір орталық актив (мысалы, BTC) басқалардың бәріне әсер етеді.
- D-Vines (Drawable): Активтер белгілі бір ретпен байланысады (A-B, B-C, C-D).
Крипто арбитраж үшін біз көбіне ағымдағы нарық жағдайына бейімделетін икемді құрылымға мүмкіндік беретін R-Vines (Regular) пайдаланамыз.
2.1 Rust-та екіайнымалы Copula-ларды іске асыру
Зерттеулердің көбі R немесе Python тілінде жасалғанымен, бізге жылдамдық керек. Негізгі математиканы Rust-та іске асыруға болады:
fn clayton_copula(u: f64, v: f64, theta: f64) -> f64 {
(u.powf(-theta) + v.powf(-theta) - 1.0).powf(-1.0 / theta)
}
fn frank_copula(u: f64, v: f64, theta: f64) -> f64 {
-(1.0 / theta) * (1.0 + ( ((-theta * u).exp() - 1.0) * ((-theta * v).exp() - 1.0) ) / ((-theta).exp() - 1.0)).ln()
}
3. Арбитраж сигналын генерациялау
Бұл арбитражды табуға қалай көмектеседі?
- Нарықты модельдеу: 50 активке Vine Copula моделін бейімдеу үшін тарихи деректерді пайдалану.
- Ауытқуларды анықтау: B, C, D... активтерінің бағаларын ескере отырып, A активінің ағымдағы бағасының шартты ықтималдығын есептеу.
- Сигнал: Егер байқалған баға өте аз ықтимал болса (мысалы, ), бұл активтің өзінің іргелі тәуелділіктерінен ажырағанын білдіреді. Бұл — күшті статистикалық арбитраж (Statistical Arbitrage) сигналы.

4. Есептеу қиындығы
R-Vine-ды 50 айнымалыға бейімдеу жүздеген параметрді бағалауды және күрделі сандық интегралдауды талап етеді.
- Rust-тың рөлі: Біз әртүрлі vine құрылымдарын бір мезгілде бағалау үшін параллель өңдеуді (
rayoncrate-імен) пайдаланамыз. - Оптимизация: Copula параметрлерінің максималды ықтималдық бағасын (MLE) есептеу үшін
argmincrate-ін пайдаланамыз.
use rayon::prelude::*;
fn estimate_vine_structure(data: &Matrix) -> VineStructure {
// Parallely evaluate all possible root nodes for a C-Vine
(0..data.cols).into_par_iter().map(|i| {
fit_root_node(data, i)
}).max_by_key(|res| res.likelihood).unwrap()
}
5. Қорытынды
Vine Copulas крипто нарығындағы сандық қаржының (quantitative finance) озық шебі болып табылады. Олар бізге қарапайым "pairs trading"-тен "көп активті статистикалық арбитражға" көшуге мүмкіндік беріп, нарық тәуелділіктерінің әлдеқайда тұрақты көрінісін ұсынады.
Келесі бөлімде біз матрица және тензор әдістерін қарастырамыз, тропикалық алгебра ең тиімді арбитраж циклдарын іздеуімізді қалай одан әрі жетілдіре алатынын көреміз.
Күрделі "tail"-дерді модельдеп жатырсыз ба? GitHub-тағы Vine Copula Modeling Kit қараңыз.
Authors
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.