Матрицалар, тензорлар және тропикалық алгебра: арбитражды анықтауға арналған сызықтық алгебра
"Фьючерстер мен спот арасындағы күрделі арбитраж тізбектері" сериясының 4-бөлімі
Жүздеген трейдер бір мезгілде валюта айырбастап жатқан үлкен залды елестетіп көріңіз. Әрқайсысының өз курсы, комиссиясы және ерекшеліктері бар. Сіз ортада дәптермен тұрып, пайда әкелетін айырбас маршрутын іздеп жатырсыз: доллардан еуроға, еуродан иенге, иеннен қайта долларға—және бастапқыдан көбірекпен шығу. Адасу оңай. Бірақ барлық курстарды кестеге—матрицаға—жазсаңыз, хаос кенеттен құрылымға ие болады. Осы матрицаның меншікті мәндері арбитраж бар-жоғын айтады. Тропикалық алгебра оңтайлы маршрутты табады. Ал тензорлық декомпозициялар жалаң көзге көрінбейтін заңдылықтарды ашады.
Бұл мақалада біз қарапайым айырбас курсы кестесінен күрделі көпөлшемді талдау әдістеріне дейін жол жүреміз—және әр қадам Rust тіліндегі іске асырумен расталады.
Криптовалюталар арасындағы айырбас курсы матрицасының визуализациясы: графтың жиектері сауда жұптарын білдіреді, ал бөлектелген цикл анықталған арбитраж мүмкіндігін көрсетеді.

1. Айырбас курсы матрицасы: негіз
1.1 Хаостан кестеге дейін
Бізде n актив бар делік: BTC, ETH, USDT, SOL және т.б. Әр жұпты белгілі бір курс бойынша айырбастауға болады. Айырбас курсы матрицасы R — n × n кестесі, онда R[i][j] элементі i активінің бір бірлігі үшін j активінің қанша бірлігін алатынымызды көрсетеді.
Дұрыс құрылған матрицаның қасиеттері:
- Диагональ:
R[i][i] = 1—активті өзіне айырбастау ештеңені өзгертпейді. - Оңдылық: барлық жұптар үшін
R[i][j] > 0. - Өзара сәйкестік (reciprocity) (идеалды нарықта):
R[i][j] * R[j][i] = 1.
Rust тілінде мұны nalgebra арқылы көрсетуге болады:
use nalgebra::DMatrix;
/// Builds an exchange rate matrix from a set of trading pairs
fn build_exchange_rate_matrix(
assets: &[&str],
rates: &[((usize, usize), f64)],
) -> DMatrix<f64> {
let n = assets.len();
let mut matrix = DMatrix::from_element(n, n, 0.0);
// Diagonal: exchange for self = 1
for i in 0..n {
matrix[(i, i)] = 1.0;
}
// Fill known rates
for &((i, j), rate) in rates {
matrix[(i, j)] = rate;
// Reciprocal rate (if there is no direct one)
if matrix[(j, i)] == 0.0 {
matrix[(j, i)] = 1.0 / rate;
}
}
matrix
}
1.2 Арбитражсыздық шарты
Мұнда қалғанның бәрі құрылатын негізгі теорема берілген.
Теорема. Нарық активтердің кез келген циклі (i₁, i₂, ..., iₖ, i₁) үшін цикл бойындағы айырбас курстарының көбейтіндісі бірге тең болғанда ғана арбитражсыз болады:
R[i₁][i₂] * R[i₂][i₃] * ... * R[iₖ][i₁] = 1
Баламалы тұжырым: R матрицасы тек қана оның рангі 1-ге тең болғанда (мультипликативтік мағынада) арбитражсыз болады. Бұл мынадай баға векторы p = (p₁, p₂, ..., pₙ) бар дегенді білдіреді:
R[i][j] = pj / pi барлық i, j үшін
R матрицасы сыртқы көбейтінді R = (1/p) * pᵀ түрінде жіктеледі—бұл 1-ранг матрицасы. Егер нақты матрица 1-рангтан ауытқыса—қайдадыр арбитраж мүмкіндігі жасырынған.
2. Меншікті мән әдісі: O(n³) уақытында арбитраж
2.1 Мин Ма теоремасы
Арбитражды анықтаудың ең әдемі тәсілдерінің бірін 2007 жылы Мин Ма ұсынды. Идея керемет қарапайым.
Теорема (Мин Ма). R — n × n айырбас курсы матрицасы болсын. Егер нарық арбитражсыз болса, онда:
- Ең үлкен меншікті мән
λ_max = n. - Қалған барлық меншікті мәндер нөлге тең.
- Сәйкес меншікті вектор
vтепе-теңдік бағаларын білдіреді.
Неге бұлай жұмыс істейді? Арбитражсыз матрицаның рангі 1-ге тең, ал оның ізі (диагональ элементтерінің қосындысы) n-ге тең (себебі әр R[i][i] = 1). 1-ранг матрицасы үшін жалғыз нөлге тең емес меншікті мән ізге тең. Сондықтан λ_max = n.
Арбитраж критерийі: арбитраж тек λ_max > n болғанда ғана бар. δ = λ_max - n ауытқуы арбитраж мүмкіндігінің масштабын сандық түрде бағалайды.

3. Тропикалық (max-plus) алгебра: ең әдемі әдіс
3.1 Қосу максимумға айналғанда
Бұл, мүмкін, біздің зерттеуіміздің ең әдемі жаңалығы. Тропикалық алгебра — таныс операциялар қайта анықталатын алгебралық жүйе:
- "Қосу":
a ⊕ b = max(a, b) - "Көбейту":
a ⊗ b = a + b
Бұл алгебрадағы матрицаны көбейту автоматты түрде салмақтардың максималды қосындысы бар жолды іздейді. Бұл дәл ең тиімді арбитраж циклін табу үшін қажет нәрсе.
3.2 Тропикалық меншікті мән және арбитраж
Курстардың лог-матрицасын алайық: L[i][j] = ln(R[i][j]). L матрицасының тропикалық меншікті мәнін λ есептеңіз.
Теорема. λ > 0 тек арбитраж бар болғанда ғана орындалады. Оған қоса, exp(λ) — ең жақсы циклдің пайда көбейткіші.
/// Tropical (max-plus) matrix multiplication
fn tropical_matmul(a: &DMatrix<f64>, b: &DMatrix<f64>) -> DMatrix<f64> {
let n = a.nrows();
let m = b.ncols();
let k = a.ncols();
let mut result = DMatrix::from_element(n, m, f64::NEG_INFINITY);
for i in 0..n {
for j in 0..m {
for l in 0..k {
// Tropical multiplication: max instead of sum, + instead of *
let val = a[(i, l)] + b[(l, j)];
if val > result[(i, j)] {
result[(i, j)] = val;
}
}
}
}
result
}
4. PCA және факторлық модельдер: статистикалық арбитраж
Детерминистік арбитраждан (тікелей баға алшақтығы) статистикалық арбитражға—факторлық модельден жүйелі ауытқуларды іздеуге—көшеміз.
Негізгі компоненттер талдауы (PCA) актив кірістерін жүйелі факторларға және идиосинкратикалық қалдықтарға жіктейді:
ri(t) = αi + Σk βik * Fk(t) + εi(t)
мұндағы Fk(t) — k-ші фактор, βik — жүктеме (loading), ал εi(t) — қалдық, яғни арбитраж сигналы.
4.1 Кездейсоқ матрицалар теориясы (RMT)
Негізгі сұрақ: қанша фактор қалдыру керек? Марченко-Пастур таралымы кездейсоқ ковариациялық матрицаның меншікті мәндер спектрін сипаттайды. Жоғарғы шектен жоғары меншікті мәндер нақты сигналдар алып жүреді, ал шек ішіндегілер—шу (noise).

5. Тензорлық әдістер: арбитраждың үшінші өлшемі
Криптовалюта арбитражы бірнеше өлшемді бір мезгілде қамтиды. Курстар матрицасы тек 2D қима ғана. Нақты сурет—тензор:
T(a, e, i) = a активінің e биржасындағы i құралы үшін бағасы/курсы
Өлшемдер:
- 1-режим (Активтер): BTC, ETH, SOL, ...
- 2-режим (Биржалар): Binance, Kraken, Coinbase, ...
- 3-режим (Құралдар): Spot, Perpetual, Futures, ...
CP-декомпозиция (CANDECOMP/PARAFAC) тензорды 1-ранг тензорларының қосындысына жіктейді. T - T_approx қалдықтары нарықтың жалпы факторлық құрылымына қатысты белгілі бір актив/биржа/құрал комбинацияларының дұрыс бағаланбағанын көрсететін ауытқуларды ашады.
Қорытынды
Қарапайым кестелерден бастап көпөлшемді тензорларға дейін сызықтық алгебра криптовалюта нарығы үшін формальды тіл ұсынады. Rust бізге осы күрделі модельдерді HFT үшін қажетті жылдамдықпен орындауға мүмкіндік береді.
Келесі бөлімде біз арбитражға арналған GNN, Transformer және RL тақырыбын қарастырамыз, нейрондық желілер сауда жасауды қалай үйренетінін көреміз.
Жоғары өлшемді сигналдарды өңдеп жатырсыз ба? GitHub-тағы тензорға негізделген Trading Engine бетімізді қараңыз.
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.