跨DEX套利:如何计算考虑价格冲击的最优盈利交易金额?
跨DEX套利最优兑换金额计算
核心逻辑
Uniswap、Sushiswap这类AMM都遵循恒定乘积做市商模型,核心公式为 x * y = k(x、y代表两种代币的储备量,k为恒定不变的乘积值)。我们的目标是找到在Uniswap买入ETH的最优USDC投入金额,让在Sushiswap卖出ETH后的盈利(卖出所得USDC - 买入成本USDC)达到最大值。
步骤1:定义变量与基础公式
设:
- 我们在Uniswap投入
ΔUSDC来买入ETH,买入后Uniswap的ETH储备变为x₁ = 100 - ΔETH,USDC储备变为y₁ = 100000 + ΔUSDC,根据恒定乘积规则:100 * 100000 = (100 - ΔETH) * (100000 + ΔUSDC) - 整理得到Uniswap买入的ETH数量:
ΔETH = 100 - (100*100000)/(100000 + ΔUSDC)
将买入的ΔETH在Sushiswap卖出,Sushiswap初始储备为x₂=97 ETH、y₂=105000 USDC,卖出后ETH储备变为 x₂' = 97 + ΔETH,USDC储备变为 y₂' = (97*105000)/(97 + ΔETH),卖出所得USDC为:ΔUSDC_out = 105000 - y₂' = 105000 - (97*105000)/(97 + ΔETH)
步骤2:构建盈利函数
盈利P(ΔUSDC)的计算公式为:
P(ΔUSDC) = [105000 - (97*105000)/(97 + ΔETH)] - ΔUSDC
把ΔETH = 100 - 10^6/(100000 + ΔUSDC)代入上式,就能得到仅以ΔUSDC为变量的盈利函数。
步骤3:求解最优投入金额
要找到盈利最大的ΔUSDC,有两种方法:
- 解析法:对盈利函数求导,令导数等于0,解出临界值,这个值就是最优投入金额。代入Uniswap的
k₁=10^6、Sushiswap的k₂=97*105000=10185000,通过代数运算即可得到精确解。 - 数值迭代法:通过测试不同的
ΔUSDC值(比如从1000、2000逐步调整),计算对应的盈利值,找到盈利峰值对应的金额,适合快速验证。
示例验证(近似值)
测试ΔUSDC=2000:
- Uniswap买入后ETH储备=10^6/102000≈98.039 ETH,买入的
ΔETH≈1.961 ETH - Sushiswap卖出后USDC储备=10185000/(97+1.961)≈102919,卖出所得USDC≈105000-102919=2081
- 盈利=2081-2000=81(盈利)
继续调整ΔUSDC的数值,就能找到盈利最高的投入金额。
内容的提问来源于stack exchange,提问作者Serhii Zharkov
相关产品推荐
相关产品推荐

