Files
mev-beta/docs/uniswap-pricing.md
2025-10-04 09:31:02 -05:00

57 lines
1.4 KiB
Markdown

# Uniswap V3 Pricing Documentation
This document explains the Uniswap V3 pricing model and how it's implemented in the MEV bot.
## Core Concepts
### Ticks
In Uniswap V3, prices are represented as ticks. A tick is defined as:
```
tick = log√1.0001(√P)
```
Where P is the price of token1 in terms of token0.
Ticks are integers that range from -887272 to 887272.
### sqrtPriceX96
Prices are stored internally as sqrtPriceX96, which is:
```
sqrtPriceX96 = √P * 2^96
```
This allows for precise fixed-point arithmetic without floating-point operations.
### Liquidity
Liquidity in a pool is represented as a uint128 value that determines the depth of the pool at a given price.
## Mathematical Relationships
### Converting between representations
1. Tick to sqrtPriceX96:
```
sqrtPriceX96 = 1.0001^(tick/2) * 2^96
```
2. sqrtPriceX96 to Tick:
```
tick = log_1.0001(sqrtPriceX96 / 2^96)^2
```
3. Price to Tick:
```
tick = log_1.0001(price)
```
## Implementation Details
Our Go implementation uses the math/big package for precision and handles the fixed-point arithmetic required for Uniswap V3 calculations.
Key functions:
- `SqrtPriceX96ToPrice`: Converts sqrtPriceX96 to a floating-point price
- `PriceToSqrtPriceX96`: Converts a floating-point price to sqrtPriceX96
- `TickToSqrtPriceX96` : Converts a tick to sqrtPriceX96
- `SqrtPriceX96ToTick` : Converts sqrtPriceX96 to a tick