Nuestro objetivo es derivar la fórmula del producto constante basada en las reservas reales para un segmento, dada por
y a partir de ahí recuperar algunas de las fórmulas obtenidas en el capítulo anterior.
Este capítulo es opcional. No introduce conceptos fundamentalmente nuevos en comparación con los anteriores, pero ofrece una perspectiva diferente sobre cómo derivar las reservas reales a partir del precio y la liquidez. Se puede omitir sin ningún perjuicio para el resto de este libro.
Uniswap es un Automated Market Maker (AMM) de producto constante. En Uniswap v2, si no tenemos en cuenta las comisiones, los swaps en la pool siguen la regla de que la constante en la fórmula permanece inalterada, donde e representan las reservas de la pool de los tokens X e Y. En este sentido, se puede decir que la fórmula define el comportamiento de los swaps en la pool.
Uniswap v3 también es un AMM de producto constante, con la principal diferencia de que la pool no tiene una liquidez constante, sino que está compuesta por varios segmentos de curva, cada uno con una cierta liquidez .

En cada segmento, los swaps siguen el mismo comportamiento que en Uniswap v2 y, sin tener en cuenta las comisiones, deben mantener constante el valor en la fórmula , siempre y cuando el swap no cruce los límites del segmento.
Por lo tanto, la fórmula que rige los swaps en un segmento sigue siendo . Sin embargo, a diferencia de Uniswap v2, e no son las reservas reales del segmento, sino sus reservas virtuales, es decir, las reservas que tendría el segmento si se extendiera hasta formar una curva infinita (véase el capítulo sobre reservas reales y virtuales).
Uno podría preguntarse si la fórmula del producto constante para un segmento podría expresarse en términos de las reservas reales del segmento en lugar de sus reservas virtuales. La respuesta es sí. De hecho, esta fórmula se puede encontrar en la página 2 del whitepaper de Uniswap v3, como se muestra a continuación (aquí, e denotan las reservas reales, que nosotros denotamos como e en nuestra notación). Esta es la misma fórmula mostrada en la introducción.

La fórmula anterior establece una relación entre la liquidez, los límites del segmento y las reservas reales. En nuestra notación, esta fórmula debería escribirse como
donde es el precio en el lower tick, es el precio en el upper tick, y es la liquidez.
Para un segmento dado, estos valores son fijos, mientras que las reservas reales varían. Esto es similar a Uniswap v2, donde la liquidez es fija en y las reservas e pueden cambiar. En ambos casos, las fórmulas restringen los posibles valores de las reservas: si las reservas de un token aumentan, las reservas del otro deben disminuir para que la liquidez se mantenga constante.
Esta idea se puede visualizar mejor en la herramienta interactiva a continuación. Puedes elegir el upper tick, el lower tick, la liquidez del segmento y el precio actual. A medida que el precio se mueve, las reservas reales e cambian, pero de tal manera que la liquidez se mantiene constante. En otras palabras, la proporción entre las reservas reales no es arbitraria, sino que está completamente determinada por la liquidez y los límites de los ticks.
Una diferencia importante entre v2 y v3 es que, en v3, una de las reservas puede llegar a cero sin que la otra se acerque al infinito. Es normal agotar las reservas reales de un token en un segmento, punto en el cual el precio se mueve al siguiente segmento.
Vale la pena señalar que la fórmula del producto constante no aparece en ninguna parte del codebase. En Uniswap v2, el protocolo simplemente puede aplicar la fórmula del producto constante en los swaps. En v3, sin embargo, esto es más complejo porque el precio puede pasar por múltiples segmentos durante un swap.
Aun así, la fórmula del producto constante se puede usar para derivar expresiones para las reservas reales en función de los límites del segmento, la liquidez y el precio actual. Ya derivamos estas fórmulas en el capítulo anterior por otros medios y, por esta razón, este capítulo es opcional.
No obstante, si el lector desea comprender de dónde proviene la fórmula del producto constante y cómo se puede usar para calcular las reservas reales de un segmento, ese es el propósito de este capítulo, y lo invitamos a continuar.
Relacionando las reservas reales y virtuales en un segmento
La fórmula del producto constante para un segmento es la misma que en Uniswap v2,
pero ahora e son reservas virtuales.
Podemos derivar la fórmula del producto constante para las reservas reales si encontramos una manera de relacionar las reservas virtuales con las reservas reales.
Considera la siguiente ilustración, donde es el precio en el lower tick y es el precio en el upper tick.

En la imagen anterior, tenemos que
- son las reservas virtuales del precio actual,
- son las reservas virtuales en Y a - la cantidad de tokens Y que tendría el segmento si fuera una curva infinita y el precio estuviera en . Sin embargo, estamos más interesados en geométricamente que en su interpretación,
- son las reservas virtuales en X a ,
- son las reservas reales del segmento.
La relación entre las reservas virtuales y reales está dada entonces por
Podemos usar estas relaciones en , sustituyendo e para obtener
En un segmento, e pueden variar durante los swaps, pero e dependen solo de los límites del segmento, por lo que son constantes para el segmento. Por lo tanto, si podemos obtener e , habremos encontrado la fórmula deseada. Derivamos fórmulas para obtener e en el capítulo anterior, y en la siguiente sección usaremos estas fórmulas para derivar la fórmula del producto constante para las reservas reales.
La fórmula del producto constante para las reservas reales
En el capítulo sobre reservas reales y virtuales, aprendimos cómo encontrar las reservas virtuales de un segmento a partir del precio y la liquidez: e . Podemos usar estas fórmulas para obtener e de la siguiente manera:
Usando estos valores, podemos escribir la fórmula del producto constante
como
Esta fórmula es válida para un segmento con liquidez , donde el lower tick es y el upper tick es .
Ahora tenemos una fórmula de producto constante que relaciona la liquidez, las reservas reales y los límites del segmento, sin ninguna referencia a las reservas virtuales.
Ten en cuenta que calcular la liquidez de un segmento a partir de las reservas reales no es sencillo porque la fórmula anterior involucra el parámetro a ambos lados de la ecuación; es una ecuación cuadrática en .
En la práctica, no necesitamos preocuparnos por esto porque el protocolo no usa la fórmula anterior para calcular la liquidez. En su lugar, el protocolo almacena información sobre la liquidez y, a partir de la liquidez dada, calcula las reservas reales para los tokens X e Y entre dos precios.
Por lo tanto, lo que nos interesa es encontrar una fórmula para calcular e en función de la liquidez del segmento, sus límites y el precio actual.
En el capítulo anterior, ya derivamos estas fórmulas sin ninguna referencia a la fórmula del producto constante; como se indicó en la introducción, la fórmula del producto constante no es estrictamente necesaria para esto.
Con fines educativos, volveremos a derivar las fórmulas del capítulo anterior usando la fórmula del producto constante. La idea clave es que, aunque la fórmula del producto constante no se usa en el codebase, las fórmulas para calcular las reservas reales basadas en el precio actual, la liquidez y los límites del segmento sí son utilizadas por el codebase, y esas fórmulas se pueden derivar de la fórmula del producto constante.
Para demostrar esto, realicemos la derivación para los tres escenarios posibles:
- Cuando el precio actual está en o por debajo del lower tick, por lo que solo hay reservas reales en tokens X,
- Cuando el precio actual está en o por encima del upper tick, por lo que solo hay reservas reales en tokens Y,
- Cuando el precio actual está dentro del segmento, por lo que hay reservas reales tanto en tokens X como en tokens Y.
Comencemos con el caso en el que el precio actual está en o por debajo del lower tick
1. Solo tokens X en un segmento
En el escenario donde el segmento solo tiene tokens X, entonces es igual a cero y podemos resolver la fórmula del producto constante para derivar , de la siguiente manera:
Ten en cuenta que esto es idéntico a la fórmula que derivamos en el último capítulo.
Ahora consideremos el caso en el que el segmento contiene solo tokens Y: cuando el precio actual está en o por encima del upper tick.
2. Solo tokens Y en un segmento
En el escenario donde el segmento solo tiene tokens Y, entonces es igual a cero y podemos resolver la fórmula del producto constante para derivar , de la siguiente manera:
Ten en cuenta que esto es idéntico a la fórmula que derivamos en el último capítulo.
Ahora pasamos al escenario final, donde el precio se encuentra entre el lower tick y el upper tick.
3. Ambos tokens en el segmento
Cuando el precio está entre el lower tick y el upper tick, el segmento tendrá tanto tokens X como Y.
La fórmula del producto constante
no involucra el precio actual, ni podemos calcular e solo a partir de ella. Nota que tenemos dos incógnitas ( e ) pero solo una ecuación. Para resolver este problema, necesitamos otra ecuación.
Sabemos que la fórmula del precio es en términos de reservas virtuales. Por lo tanto, en términos de reservas reales, tenemos:
Ahora tenemos dos ecuaciones (la fórmula del producto constante y el precio) y dos incógnitas ( e ). Podemos reorganizar la fórmula del precio como:
El término del lado izquierdo aparece en la fórmula del producto constante, por lo que podemos sustituirlo allí.
Ahora que tenemos , podemos usar esta expresión en la fórmula del producto constante para encontrar :
Las fórmulas para e son idénticas a las que obtuvimos en el capítulo anterior.
Resumen
La fórmula del producto constante para un segmento con liquidez entre un lower tick y un upper tick está dada por
donde e son las reservas reales en tokens X e Y.