Uniswap V3:如何通过给定价格计算对应Tick值?

问题:计算0.05%手续费率USDC/ETH资金池的Tick区间
给定手续费率为0.05%的USDC/ETH资金池,用户提供价格区间:
- 下限价格:
0.00025991932(USDC/ETH,即1 ETH兑换该数量的USDC) - 上限价格:
0.00033985099
如何计算对应的lower tick和upper tick?
解答
核心机制(Uniswap V3)
Uniswap V3的Tick与价格绑定,核心公式为:
price = 1.0001^tick
反向推导Tick的计算公式:
tick = ln(price) / ln(1.0001)
同时,不同手续费率对应固定的Tick间隔:0.05%手续费率的资金池,Tick间隔为10(仅允许使用10的整数倍的Tick值)。
具体计算步骤
1. 计算下限价格对应的Lower Tick
将下限价格代入公式计算原始Tick值:
tick_lower_raw = ln(0.00025991932) / ln(1.0001) ≈ -82500.04
由于0.05%资金池要求Tick为10的整数倍,向下取整到最近的10的倍数,得到:lower tick = -82500
2. 计算上限价格对应的Upper Tick
将上限价格代入公式计算原始Tick值:
tick_upper_raw = ln(0.00033985099) / ln(1.0001) ≈ -80000.04
向上取整到最近的10的倍数,得到:upper tick = -80000
验证
反向计算验证结果:
1.0001^(-82500) ≈ 0.0002599193,与给定下限价格一致1.0001^(-80000) ≈ 0.0003398510,与给定上限价格一致
内容的提问来源于stack exchange,提问作者unni krishnan
相关产品推荐
相关产品推荐

