Ekubo (Uniswap V3 Style)
Introduction
This document outlines the methodology for assigning an incentive score to liquidity positions in an Ekubo xSTRK/STRK pool to encourage liquidity provision around the true price of xSTRK, as determined by the Endur protocol’s xSTRK exchange rate. The scoring system rewards positions that provide liquidity close to this true price, minimising slippage for trades near the equilibrium price and supporting price stability in the pool.
Weight Scoring Formula
Given that a full-range liquidity position is 50–100× less efficient than a close-range position (e.g., ±0.1%), we calculate the efficiency factor (E) as:
$$
E = 1 + 49 \cdot \left( \frac{p_a}{p} \right)^n
$$
The weight score (S) for a liquidity position is defined as:
$$
S = X_1 \cdot E
$$
Where:
- X₁: The current amount of STRK in the position, representing the liquidity available to absorb sales of xSTRK.
- pₐ: The lower bound of the position's price range [pₐ, pᵦ] in the xSTRK/STRK pool (price in STRK/xSTRK).
- p: The true price of the xSTRK/STRK pool, defined as the price at which 1 xSTRK can be redeemed for STRK according to the Endur protocol's redeemability rate. This is the equilibrium price the pool aims to stabilize around.
- pₐ/p: The ratio of the lower bound to the true price, raised to the power n, exponentially rewarding positions with pₐ closer to p.
- n: An exponent determined by the team to adjust the slope of the reward curve. A higher n prioritizes tight ranges, while a lower n rewards a broader range.
Conditions
- The position must be in range relative to the actual trading price (p₀), not necessarily around (p). Positions closer to (p) but out of range yield 0 points.
- The pool is xSTRK/STRK (token0 = xSTRK, token1 = STRK), where the price (p) is in STRK/xSTRK (e.g., if 1 xSTRK = 1.2 STRK, p = 1.2).
- Selling token0 (xSTRK) decreases the price (p), as it buys STRK, reducing the STRK/xSTRK ratio.
- No points for positions with pₐ > p, as these are typically out of range.