행렬, 텐서, 열대 대수: 차익거래 탐지를 위한 선형대수학
"복잡한 차익거래 체인: 선물과 현물 사이" 시리즈 파트 4
수백 명의 트레이더가 동시에 통화를 교환하는 거대한 홀을 상상해 보세요. 각자 고유한 환율, 수수료, 특성을 가지고 있습니다. 당신은 노트를 들고 중앙에 서서 이익을 가져다줄 교환 경로를 찾고 있습니다: 달러에서 유로로, 유로에서 엔으로, 엔에서 다시 달러로——그리고 시작보다 더 많이 가지고 나옵니다. 길을 잃기 쉽습니다. 하지만 모든 환율을 표(행렬)에 적으면, 갑자기 혼돈에 구조가 생깁니다. 이 행렬의 고유값은 차익거래가 존재하는지 알려줍니다. 열대 대수는 최적의 경로를 찾아줍니다. 그리고 텐서 분해는 육안으로는 보이지 않는 패턴을 드러냅니다.
이 글에서는 단순한 환율 표에서 고급 다차원 분석 방법까지 여행합니다——모든 단계에는 Rust 구현이 뒷받침됩니다.
암호화폐 간 환율 행렬 시각화: 그래프 간선은 거래 쌍을 나타내고, 강조된 사이클은 탐지된 차익거래 기회를 나타낸다.

1. 환율 행렬: 기초
1.1 혼돈에서 표로
BTC, ETH, USDT, SOL 등 n개의 자산이 있다고 가정합니다. 각 쌍은 특정 환율로 교환할 수 있습니다. 환율 행렬 R은 n × n 표로, 요소 R[i][j]는 자산 i 1단위로 자산 j를 몇 단위 얻을 수 있는지를 나타냅니다.
올바르게 구성된 행렬의 속성:
- 대각선:
R[i][i] = 1——자산을 자기 자신과 교환하면 아무것도 변하지 않는다. - 양수성: 모든 쌍에 대해
R[i][j] > 0. - 상호성 (이상적인 시장에서):
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₁)에 대해 사이클을 따른 환율의 곱이 1과 같은 경우이며, 그 경우에만 성립합니다:
R[i₁][i₂] * R[i₂][i₃] * ... * R[iₖ][i₁] = 1
동치 표현: 행렬 R이 차익거래가 없는 것은, 그 랭크가 1(곱셈적 의미에서)인 경우이며, 그 경우에만 성립합니다. 즉, 가격 벡터 p = (p₁, p₂, ..., pₙ)이 존재하여:
R[i][j] = pj / pi for all i, j
행렬 R은 외적 R = (1/p) * pᵀ로 분해되며——이것은 랭크 1 행렬입니다. 실제 행렬이 랭크 1에서 벗어나면——어딘가에 차익거래 기회가 숨어 있습니다.
2. 고유값 방법: O(n³)에서의 차익거래
2.1 Ming Ma의 정리
차익거래 탐지에 대한 가장 우아한 접근법 중 하나는 2007년 Ming Ma에 의해 제안되었습니다. 그 아이디어는 놀라울 정도로 단순합니다.
정리 (Ming Ma). R을 n × n 환율 행렬이라 하자. 시장에 차익거래가 없다면:
- 최대 고유값
λ_max = n. - 다른 모든 고유값은 0과 같다.
- 대응하는 고유벡터
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는 로딩, εi(t)는 잔차——차익거래 신호입니다.
4.1 랜덤 행렬 이론 (RMT)
핵심 질문: 팩터를 몇 개 유지해야 하는가? 마르첸코-파스투르 분포는 랜덤 공분산 행렬의 고유값 스펙트럼을 기술합니다. 상한 를 초과하는 고유값은 실제 신호를 담고 있고, 경계 내의 것은 노이즈입니다.

5. 텐서 방법: 차익거래의 제3차원
암호화폐 차익거래는 여러 차원을 동시에 포함합니다. 환율 행렬은 2D 슬라이스에 불과합니다. 실제 전체 그림은 텐서입니다:
T(a, e, i) = 자산 a의 거래소 e에서 금융상품 i의 가격/환율
차원:
- 모드 1 (자산): BTC, ETH, SOL, ...
- 모드 2 (거래소): Binance, Kraken, Coinbase, ...
- 모드 3 (금융상품): 현물, 무기한, 선물, ...
**CP 분해(CANDECOMP/PARAFAC)**는 텐서를 랭크 1 텐서의 합으로 인수분해합니다. 잔차 T - T_approx는 특정 가격/거래소/금융상품 조합이 전체 시장 팩터 구조에 비해 잘못 가격 책정된 이상 현상을 드러냅니다.
결론
단순한 표에서 다차원 텐서까지, 선형대수학은 암호화폐 시장을 위한 형식 언어를 제공합니다. Rust를 통해 HFT에 필요한 속도로 이러한 복잡한 모델을 실행할 수 있습니다.
다음 파트에서는 GNN, Transformer, RL을 활용한 차익거래를 탐구하며, 신경망이 어떻게 거래를 학습하는지 살펴봅니다.
고차원 신호를 처리하고 계신가요? GitHub의 텐서 기반 거래 엔진을 확인하세요.
MarketMaker.cc Team
퀀트 리서치 및 전략