矩陣、張量與熱帶代數:用於套利檢測的線性代數
《期貨與現貨之間的複雜套利鏈》系列第 4 部分
想像一個巨大的大廳,數百名交易員同時交換貨幣。每個人都有自己的匯率、手續費和習慣。你站在中心,手裡拿著筆記本,試圖找到一條能帶來利潤的兌換路線:美元兌換歐元,歐元兌換日元,日元兌換回美元——最後帶走的錢比開始時多。這很容易迷失方向。但如果你把所有的匯率寫在一張表裡——一個矩陣中——突然間,混亂就有了結構。這個矩陣的特徵值(Eigenvalues)會告訴你是否存在套利機會。熱帶代數(Tropical Algebra)會找到最佳路徑。而張量分解(Tensor decompositions)將揭示肉眼不可見的模式。
在本文中,我們將從簡單的匯率表出發,探討高階多維分析方法——每一步都將由 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。 - 互惠性(在理想市場中):
R[i][j] * R[j][i] = 1。
在 Rust 中,我們可以使用 nalgebra 來表示它:
use nalgebra::DMatrix;
/// 从一组交易对构建汇率矩阵
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);
// 对角线:兑换自己 = 1
for i in 0..n {
matrix[(i, i)] = 1.0;
}
// 填充已知汇率
for &((i, j), rate) in rates {
matrix[(i, j)] = rate;
// 如果没有直接汇率,则计算互惠汇率
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 無套利當且僅當其秩(Rank)為 1(在乘法意義上)。這意味著存在一個價格向量 p = (p₁, p₂, ..., pₙ),使得:
R[i][j] = pj / pi 对于所有 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。 - 所有其他特徵值均等於零。
- 對應的特徵向量
v代表平衡價格。
為什麼有效? 無套利矩陣的秩為 1,其追蹤(Trace,對角線元素之和)等於 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(λ) 是最佳迴圈的利潤倍數。
/// 热带 (max-plus) 矩阵乘法
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 {
// 热带乘法:用 max 代替 sum,用 + 代替 *
let val = a[(i, l)] + b[(l, j)];
if val > result[(i, j)] {
result[(i, j)] = val;
}
}
}
}
result
}
4. 主成分分析 (PCA) 與因子模型:統計套利
從確定性套利(直接價格差異)轉向統計套利——尋找偏離因子模型的系統性偏差。
主成分分析 (PCA) 將資產收益分解為系統性因子和特有殘差(Idiosyncratic residuals):
ri(t) = αi + Σk βik * Fk(t) + εi(t)
其中 Fk(t) 是第 k 個因子,βik 是負載(Loading),εi(t) 是殘差——即套利訊號。
4.1 隨機矩陣理論 (RMT)
關鍵問題:保留多少個因子?Marchenko-Pastur 分佈描述了隨機協方差矩陣的特徵值譜。高於上限 的特徵值帶有真實訊號,而位於上限之內的則是噪聲。

5. 張量方法:套利的第三個維度
加密貨幣套利同時涉及多個維度。匯率矩陣只是一個二維切片。真實的圖景是一個張量(Tensor):
T(a, e, i) = 交易所 e 上资产 a 的工具 i 的价格/汇率
維度:
- 模式 1 (資產): BTC、ETH、SOL...
- 模式 2 (交易所): Binance、Kraken、Coinbase...
- 模式 3 (工具): 現貨(Spot)、永續(Perp)、期貨(Futures)...
CP 分解 (CANDECOMP/PARAFAC) 將張量分解為秩 1 張量之和。殘差 T - T_approx 揭示了特定價格/交易所/工具組合相對於整體市場因子結構被錯誤定價的異常情況。
結論
從簡單的表格到多維張量,線性代數為加密貨幣市場提供了一種正式語言。Rust 允許我們以 HFT 所需的速度執行這些複雜的模型。
在本系列的下一部分中,我們將探索用於套利的 GNN、Transformer 和 RL,瞭解神經網路如何學習交易。
正在處理高維訊號?請在 GitHub 上檢視我們的 基於張量的交易引擎。
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.