MarketMaker.cc Team
量化研究与策略
MarketMaker.cc Team
量化研究与策略
《期货与现货之间的复杂套利链》系列第 3 部分
在本系列的前两个部分中,我们研究了图算法和期货-现货交易对。但当我们想要同时模拟数十个资产之间的关系时,会发生什么?简单的相关性已不再足够。加密货币市场非常复杂,其依赖关系是非线性的,特别是在高波动期间。
这就是 Vine Copulas 发挥作用的地方。
Vine Copulas 的复杂数学可视化:互连的球体代表多资产依赖关系,以及概率密度云。
皮尔逊相关系数(Pearson correlation coefficient)只能测量线性关系。在加密市场中,当比特币下跌 5% 时,山寨币可能会下跌 10%(尾部依赖),但当比特币稳定时,山寨币则独立波动。标准模型无法捕捉这种“不对称性”。
Copula 是一种将边际分布(Marginal distributions)“耦合”成多变量联合分布的数学函数。它允许我们将单个资产的行为与其依赖结构分开。
对三个或更多变量之间的依赖关系建模极其困难。Vine Copulas 通过将高维分布分解为一系列双变量(成对)Copulas 解决了这个问题。
金融领域使用的 Vine 主要有两种类型:
对于加密套利,我们通常使用 R-Vines (Regular),它允许灵活的结构,能适应当前的市场状态。
虽然大多数研究是在 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()
}
这如何帮助发现套利机会?
将 R-Vine 拟合到 50 个变量需要估算数百个参数并执行复杂的数值积分。
rayon crate)来同时评估不同的 Vine 结构。argmin crate 对 Copula 参数进行极大似然估算(MLE)。use rayon::prelude::*;
fn estimate_vine_structure(data: &Matrix) -> VineStructure {
// 并行评估 C-Vine 所有可能的根节点
(0..data.cols).into_par_iter().map(|i| {
fit_root_node(data, i)
}).max_by_key(|res| res.likelihood).unwrap()
}
Vine Copulas 代表了加密市场量化金融的最前沿。它们使我们能够从简单的“配对交易”转变为“多资产统计套利”,提供对市场依赖关系更稳健的视角。
在本系列的下一部分中,我们将探索矩阵和张量方法,了解热带代数(Tropical Algebra)如何进一步精炼我们对最赚钱套利循环的搜索。
正在对复杂的尾部建模?请在 GitHub 上查看我们的 Vine Copula 建模工具包。