Free

Lee un pool de Uniswap V3 en 5 minutos — déjale el trabajo a Claude

El campo liquidity de un pool de Uniswap V3 no es ni dinero ni profundidad de swap. Deja que Claude te explique cada campo fácil de malinterpretar.


Cualquiera que toque DeFi termina mirando datos de pools de Uniswap V3 tarde o temprano. Y entre toda esa cuadrícula de números en la página del pool, hay al menos un campo que casi todo el mundo malinterpreta la primera vez —— una malinterpretación lo bastante grande como para hacerte creer que un pool de 100 millones de dólares tiene 3,2 trillones de dólares de "liquidez" dentro.

Este artículo lee un pool de extremo a extremo en cinco minutos, usando smarts MCP más Claude. Datos reales, el pool USDC/WETH 0.05% en mainnet.

Sacar el estado completo del pool en una sola frase

Una vez conectado el smarts MCP, Claude llama a get_uniswap_v3_pool con el slug univ3-usdc-weth-eth y devuelve esto:

protocol: Uniswap V3
pair: USDC/WETH
fee: 0.05%
price:
  1 WETH in USDC: 2310.3381
  1 USDC in WETH: 0.00043283
tick: 198868
liquidity: 3243712254364037809
liquidity_note: Uniswap V3 sqrt-formula virtual liquidity
                at the current tick. Not a USD amount and
                not the depth available to swap.
tvl_usd: 100,645,897.62
tokens:
  token0: USDC (decimals 6)
  token1: WETH (decimals 18)
block_number: 24959248

Los datos en sí son simples. Lo importante es que cada campo tiene su trampa. Vamos uno por uno.

token0 y token1 no están ordenados como esperarías

La gente asume que en un pool USDC/WETH, USDC es la "moneda principal" y WETH es "el activo cotizado". Falso. Uniswap V3 ordena token0 y token1 estrictamente por el valor numérico de sus direcciones. La dirección de USDC 0xa0b8... es menor que la de WETH 0xc02a..., así que token0 = USDC, token1 = WETH.

Este orden manda en todos los cálculos internos: hacia dónde apunta el precio, hacia dónde se mueven los ticks, en qué unidad se denomina la liquidez. Cambia a otro pool, digamos WETH/DAI, y los roles de token0/token1 pueden invertirse —— toda intuición sobre "ETH sube o baja" hay que recalcularla.

Una de las ventajas de que Claude lea el pool: te etiqueta el precio en ambas direcciones, así no tienes que averiguar mentalmente "qué lado del tick es qué token".

fee 0.05% significa que es un pool "de pares estables"

Los cuatro fee tiers comunes en Uniswap V3 son 0.01% / 0.05% / 0.30% / 1.00%.

  • 0.01%: stablecoin contra stablecoin (USDC/USDT)
  • 0.05%: activos altamente correlacionados (USDC/WETH y similares —— pares profundos, de baja volatilidad)
  • 0.30%: pares ordinarios
  • 1.00%: pares de cola larga, alta volatilidad

Que USDC/WETH use 0.05% en lugar de 0.30% nos dice: los market makers apuestan al volumen, no a comisiones gordas por trade, porque la volatilidad está acotada y el flujo es enorme.

Sabiendo esto, en cuanto veas un pool nuevo a 1% de fee puedes intuir: o es un token recién salido o nadie se preocupa por el par.

price viene directo del tick actual —— no existe "último precio negociado"

El estado del pool V3 no tiene un campo separado de "último precio negociado". El precio actual es lo que diga slot0.sqrtPriceX96, y el tick es su expresión logarítmica. En otras palabras: mientras nadie opere, el precio simplemente se queda ahí, un modelo totalmente distinto al "última ejecución" de un CEX.

(Para precios históricos se usa el oracle integrado de V3 —— el estado del pool guarda un array de acumuladores de observation que permiten derivar un TWAP. Es un mecanismo aparte.)

El 1 WETH = 2310.34 USDC que acabamos de leer es el "precio actual" del pool; el siguiente swap arranca de ahí y empuja el precio a lo largo de la curva hasta un nuevo tick.

tick es una coordenada discreta del precio en escala logarítmica

tick: 198868 es el número que descoloca a todo el mundo la primera vez. Parece que debería ser algún tipo de precio, pero no es dólares.

V3 discretiza el precio logarítmicamente: raw_price = 1.0001^tick, donde raw_price es wei de token1 dividido por wei de token0 —— no el precio para mostrar. Para convertirlo a "1 ETH en USDC" todavía hay que multiplicar por 10^(decimals_token0 - decimals_token1). Tras ese ajuste, el tick 198868 corresponde aproximadamente a 1 ETH ≈ 2310 USDC.

¿Por qué este montaje rebuscado? Porque al hacer el precio logarítmico, los market makers pueden colocar liquidez solo en un rango de precio específico —— por ejemplo "solo entre 2200 y 2400". Los ticks discretos son las etiquetas de esos rangos. Esta es la innovación distintiva de V3 frente a V2: liquidez concentrada.

En la práctica no necesitas calcular ticks. Solo saber: un tick mayor no implica un precio mayor (depende de cuál sea token0), y un paso de un tick es un cambio de precio del 0.01%.

El campo liquidity: el más fácil de malinterpretar

Aquí está la trampa grande: liquidity: 3243712254364037809.

Tiene 19 dígitos, parece wei. Pero no es dinero.

Es la "liquidez virtual" L de las matemáticas de Uniswap V3 —— un parámetro interno que expresa la pendiente de la curva de market making en un rango de sqrt-price. Sus unidades no son USD y no es comparable con lo que el pool realmente posee.

La respuesta de la herramienta de hecho te avisa con un liquidity_note:

Uniswap V3 sqrt-formula virtual liquidity at the current tick. Not a USD amount and not the depth available to swap.

¿Por qué la segunda parte? Porque otro error común es leer liquidity como "cuánto puedo cambiar ahora mismo sin slippage". También falso. La profundidad de swap en V3 se calcula por tramos: dentro del rango de tick actual usas este valor de L con la fórmula sqrt-price; en cuanto un swap empuja el precio a través de un borde de tick, cruzas al siguiente rango y cambias a su L. Cada borde cruzado intercambia un nuevo L, hasta agotar la operación. Así que "cuánto puedes intercambiar sin slippage" depende de cuánto L hay en cada rango del camino —— un solo número de slot0 no te dice nada.

La conclusión: no compares el campo liquidity con USD, ni lo uses para comparar "profundidad" entre pools —— eso induce a error.

TVL: cuánto dinero hay realmente en el pool

tvl_usd: 100,645,897.62. Esto sí es el dinero real del pool.

¿De dónde sale el número? Es el balance real de USDC del contrato más su balance real de WETH, multiplicados cada uno por el precio actual en USD desde DefiLlama, sumados.

Comparado con el campo liquidity:

Campo Valor Significado
liquidity 3.24 × 10¹⁸ parámetro matemático interno V3, sin unidad
tvl_usd $100,645,897 dinero real que mantiene el pool

Ambos se traducen como "liquidez" en lenguaje informal, pero son cosas distintas. Para contar la historia, mira TVL; para hacer matemáticas, mira liquidity. Nunca los mezcles.

block_number: estás viendo una instantánea

Un último detalle: block_number: 24959248.

Los datos on-chain siempre vienen con número de bloque. Cada campo que Claude trajo se leyó en el mismo bloque. Eso significa dos cosas:

  1. Precio, liquidez y TVL son mutuamente consistentes (no hay deriva del tipo "el precio es de hace 5 minutos, el TVL es actual")
  2. Pueden ya ser distintos un segundo después

Para lógica de monitorización o arbitraje esta es la propiedad clave —— una sola lectura te da una vista coherente del mundo, sin tener que preocuparte por desfases entre campos.

Ponerlo a trabajar

Una vez entiendes todo esto, el repertorio se abre:

  • Chequeo de salud del pool: trae los balances reales de token0/token1 (no el campo liquidity) y comprueba si cuadran con el TVL. Si los balances son grandes pero el precio se aleja mucho del valor justo, puede haber margen de arbitraje.
  • Comparación entre fee tiers: USDC/WETH tiene pools tanto al 0.05% como al 0.30%; sus precios suelen ir muy cerca —— una brecha amplia es señal de arbitraje.
  • Comparación entre cadenas: compara USDC/WETH en Ethereum mainnet con USDC/WETH en Base —— el spread habla del coste del puente y de la liquidez.
  • Monitorización de tick: rastrea movimientos de tick para saber "el precio acaba de cruzar un borde".

Todo esto antes requería instalar web3.py, escribir un script, mantener un ABI y alquilar un RPC. Ahora todo es a nivel de conversación con Claude + MCP —— pregunta y lee.

No necesitas las matemáticas para leer el pool

El modelo matemático de V3 tiene su muro. sqrtPriceX96, ticks, L, liquidez concentrada —— esos conceptos han ahuyentado a mucha gente. Pero en la práctica el 90% de lo que necesitas es "¿está sano este pool, tiene dinero, cuál es el precio?" —— sin fórmulas.

Deja que Claude sea tu traductor de V3, convirtiendo liquidez virtual y codificación de ticks en un simple "1 ETH = 2310 USDC, el pool tiene 100M$". Las decisiones, a partir de ahí, son tuyas.