行列、テンソル、トロピカル代数:裁定取引検出のための線形代数
「複雑な裁定取引チェーン:先物とスポット間」シリーズ パート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。 - 他のすべての固有値はゼロに等しい。
- 対応する固有ベクトル
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. テンソル法:裁定取引の第三次元
暗号通貨裁定取引は、複数の次元を同時に含みます。レート行列は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
クオンツ・リサーチ&戦略