Donde x e y son las cantidades del par de tokens en el pool y k una constante que queda fijada cuando se añade la liquidez inicial durante su creación. El pool de liquidez crea un mercado automático para el par de tokens simplemente imponiendo la condición de que, tras todo intercambio, el producto de las cantidades de ambos tokens no puede ser inferior a la constante de liquidez:
(x+Δx)(y+Δy)≮k Dada una cantidad de tokens Δx que se quieren intercambiar utilizando el pool de liquidez, la cantidad del token intercambiado a recibir, −Δy se calcula como:
−Δy=y−x+Δxk La fórmula del AMM de producto constante puede generalizarse para un pool formado por n tokens con pesos wn tales que ∑nwn=1:
n∏Bnwn=k Donde Bn es el balance del n-ésimo token en el pool. Desarrollando la fórmula anterior, se obtiene que para un intercambio de un par cualquiera de tokens del pool, dada la cantidad de entrada de un token Δx, la cantidad recibida del segundo token viene dada por:
−Δy=y(1−(x+Δxx)wywx) Pxy=wyywxx Puede demostrarse fácilmente que estas ecuaciones se transforman en las ecuaciones para un pool de dos tokens vistas en el punto anterior haciendo wx=wy.
Las ecuaciones del AMM generalizadas del punto anterior son las que utiliza el protocolo Balancer para sus pools. En los LBP de Balancer es posible alterar los pesos relativos w de los tokens en el pool, lo cual cambia el precio relativo de ambos tokens y también el valor de la constante de liquidez del pool k.
El algoritmo de AMM desarrollado para los GLP de Geminon también altera el valor del invariante del pool k, aunque emplea un mecanismo completamente diferente. Las principales diferencias son:
Para una operación de compra (acuñación) de tokens GEX, inicialmente se calcula la cantidad de tokens GEX a recibir como si se tratara de un pool de liquidez tipo Uniswap. Si c0 es el balance de colateral en el pool, y g0 el balance de tokens GEX en el pool, el invariante del pool vale:
k0=c0⋅g0=(c0+cin)(g0−gout) Y la cantidad de tokens recibida por el usuario, gout, cuando este entrega una cantidad de colateral, cin, se calcula despejando en la ecuación anterior del invariante:
gout=g0(1−c0+cinc0) Tras calcular la cantidad de tokens GEX de salida, se aplica el coeficiente de acuñación μ, que incrementa el balance de tokens GEX en el pool:
g1=g0−gout(1−μ) c1=c0+cin k1=c1⋅g1 El coeficiente de acuñación μ toma sus valores en el intervalo [1,2], lo cual hace que pueda deducirse el comportamiento del GLP en las operaciones de acuñación de tokens GEX:
1. En una operación de acuñación la liquidez siempre aumenta: al estar los valores del coeficiente de acuñación restringidos (μ∈[1,2]) la diferencia 1−μ es siempre menor o igual a 0, lo que implica que g1≥g0, el balance final de GEX en el pool será siempre igual o mayor al inicial. Como además c1>c0 por tratarse de una operación de acuñación, k1>k0, luego el producto de liquidez del pool tras la operación será siempre estrictamente mayor que el inicial.
2. El resultado de una operación en el GLP se acerca más al obtenido en un pool de liquidez tipo Uniswap cuanto más bajo sea el importe de la operación. Si se desarrolla la ecuación del invariante k1 para expresarlo únicamente en función de la cantidad de entrada se tiene:
k1=(c0+cin)⋅g0(1−(1−μ)(1−c0+cinc0)) Es fácil ver que la expresión anterior converge al valor del invariante inicial k0=c0⋅g0 cuanto más bajo sea el valor de entrada cin, o más formalmente:
cin→0limk1=k0 P1g=g1c1=g0−gout+μgoutc0+cin<g0−goutc0+cin Esto supone que las transacciones en un GLP no son reversibles incluso sin tener en cuenta las comisiones del protocolo: si se realiza una operación de acuñación e inmediatamente después se realiza la contraria, canjeando los tokens en el pool, se obtendrá una cantidad inferior en función de lo alejado que esté el producto de liquidez k1 del inicial k0. Como se ha visto en la segunda propiedad, los invariantes coinciden en cero y se separan conforme aumenta el importe de la operación cin, o más concretamente la relación c0/cin que determina el deslizamiento que produce la operación en el precio del pool. Cuanto mayor es el deslizamiento (entropía) que genera una operación en el pool, más irreversible es dicha operación. Dicha entropía es capturada por el GLP incrementando el valor del token GEX, motivo por el cual se denomina a los GLP máquinas de captura de entropía.
Las ecuaciones para el canjeo de token GEX son muy similares a las de acuñación. La principal diferencia entre ambos procesos es que durante el canjeo la comisión del protocolo se deduce de la cantidad de entrada de tokens GEX. La cantidad de colateral de salida cout, dada una cantidad de entrada (descontada la comisión) gin′ vale:
cout=c0(1−g0+gin′g0) c1=c0−cout g1=g0+gin′(1−ρ) En un pool de liquidez de producto constante, el precio de un token respecto a su par es el cociente de las reservas de ambos. Utilizando la relación del producto constante xy=k se obtiene:
Py=kx2 El precio de un token en un pool de liquidez es una función parabólica de la cantidad del segundo token en el pool. En un GLP en cambio el valor de k no es constante, sino que su valor varía con la cantidad de colateral en el pool. La función de precio del token GEX en un GLP puede escribirse como:
Pg=k(c)c2 Donde k(c) es una función que varía linealmente con la cantidad de tokens de colateral. Como consecuencia, la función de precio de los GLP para el token GEX no varía de forma cuadrática con la cantidad de colateral como sucede en un pool tipo Uniswap, sino linealmente. El objetivo de este diseño es reducir la volatilidad del token GEX.
Para una discusión detallada sobre la influencia del ratio de acuñación en el valor de k, consultar la siguiente página "Control del suministro".