# 04: Elliptic Concentrated Liquidity Pool (E-CLP) ## Source - **Protocol**: Gyroscope - **Files**: `GyroECLPMath.sol` (53KB), `eclp_float.py`, `eclp_prec_implementation.py` - **Repos**: `gyrostable/gyro-pools`, `balancer/balancer-v3-monorepo` - **Paper**: `gyrostable/technical-papers/E-CLP/E-CLP Mathematics.pdf` ## Rationale for MYCO The E-CLP is the most mathematically sophisticated AMM curve in production. It adds two degrees of freedom beyond the 2-CLP: 1. **Rotation (φ)**: Tilts the price curve, useful when the target price ratio isn't 1:1 2. **Stretching (λ)**: Controls how elongated the ellipse is — higher λ = more concentrated near the peg, like a flattened oval For MYCO: 1. The A-matrix transformation is the **key abstraction** that generalizes to N dimensions 2. Rotation handles non-unit price targets (e.g., ETH/USDC at $3000) 3. Stretching controls how much slippage increases as reserves deviate from target 4. Production-tested on Balancer V3 with formal security review and technical paper 5. The 5 parameters (α, β, c, s, λ) provide fine-grained curve shaping ## Invariant $$|A(v - \text{offset})|^2 = r^2$$ where: - $v = (x, y)$ are reserve balances - $\text{offset} = (a, b)$ are virtual offsets (functions of $r$) - $A$ is the 2×2 transformation matrix mapping ellipse → unit circle - $r$ is the scalar invariant (liquidity parameter) **A-matrix:** $$A = \begin{pmatrix} c/\lambda & -s/\lambda \\ s & c \end{pmatrix}$$ **5 Parameters:** | Param | Meaning | Range | |-------|---------|-------| | $\alpha$ | Lower price bound | (0, 1) typically | | $\beta$ | Upper price bound | (1, ∞) typically | | $c$ | $\cos(-\phi)$ — rotation | [0, 1] | | $s$ | $\sin(-\phi)$ — rotation | [0, 1] | | $\lambda$ | Stretching factor | [1, 10^8] | Constraint: $c^2 + s^2 = 1$ **Derived parameters** (computed once, stored as immutables): - $\tau(\alpha), \tau(\beta)$ — unit circle endpoints at 38-decimal precision - $u, v, w, z$ — decomposition of $A \cdot \chi$ (center direction) - $d_{Sq}$ — error correction for $c^2 + s^2$ ## Swap Math Given new x, solve for y on the ellipse via quadratic: $$(A_{01}^2 + A_{11}^2) \cdot v^2 + 2(A_{00} A_{01} + A_{10} A_{11}) \cdot u \cdot v + (A_{00}^2 + A_{10}^2) \cdot u^2 = r^2$$ where $u = x - a$, $v = y - b$, solved with standard quadratic formula. ## Properties - **Elliptical iso-invariant curves**: Level sets are ellipses (not circles or hyperbolas) - **Concentrated + rotated**: Liquidity concentrated along the ellipse's long axis - **Homogeneous degree 1**: $r(k \cdot v) = k \cdot r(v)$ — compatible with BPT math - **Degenerates to 2-CLP**: When $\lambda = 1$ and $\phi = 0$, the ellipse becomes a circle ## MYCO Application The E-CLP is the **2-asset specialization** of the full MYCO bonding surface. For any pair of reserve assets within the N-D surface, the local geometry is essentially an ellipse — the N-D surface is an N-D generalization of this. The A-matrix pattern is the key insight: by encoding geometry as a linear transform, we can: 1. Compute invariants efficiently (quadratic formula, not iterative) 2. Parameterize curves with intuitive knobs (rotation, stretch) 3. Generalize to N dimensions naturally (N×N matrix) ## Implementation See `src/primitives/elliptical_clp.py`