Fiscalidad de Pools de Liquidez

Exploramos al detalle una perspectiva contable y fiscal para calcular ganancias e impuestos en pools de liquidez
artículos
análisis
contabilidad
DeFi
Author

Criptoquijote de la Mancha

Published

August 26, 2024

Contabilidad de Liquidity Pools

Voy a suponer que el lector ya sabe lo que es un AMM (Automated Market Maker) y un LP (Liquidity Pool o Pool de Liquidez), en el contexto DeFi (Decentralized Finance). La pregunta que nos interesa aquí es:

¿Cómo calculamos los impuestos?

Pero ¿Qué impuestos?. Aunque es una pregunta legítima cuyas sutilezas exploramos en otro artículo, en este artículo vamos a ceñirnos al tratamiento que propone Pablo Vikay. Puede ser o no una perspectiva correcta (La Agencia Tributaria no se ha pronunciado). Aquí exploramos las consecuencias de esa perspectiva. Supongamos lo siguiente:

  • Tenemos la cantidad \(x\) del activo \(A\).
  • Tenemos una catidad \(y\) del activo \(B\).
  • Metemos esas cantidades \((x,y)\) en el liquidity pool.
  • Al cabo de un tiempo, salimos del pool con las cantidades \((x+\Delta x, y + \Delta y)\)

Al salir de un pool de liquidez, nuestro patrimonio ha cambiado (siempre que \(\Delta x \neq 0\) y \(\Delta y \neq 0\)). Se ha dado una alteración patrimonial, por lo que tenemos que estimar las pérdidas y ganancias.

Consideramos los siguientes casos:

Pérdidas y Ganancias: \(\Delta x <0\) y \(\Delta y >0\)

Suponemos también, que habíamos comprado la cantidad \(x\) del activo \(A\) a un precio (o rate) de \(r_x\). Por ejemplo, r_x = 2.000€/ETH.

De manera similar suponemos que hemos comprado una cantidad \(y\) de \(B\) a un precio de \(r_y\). Por ejemplo, r_y = 3 €/UNI.

Cuando sacamos los activos del pool, el precio de ambos ha cambiado, y ahora tenemos precios \(r_x^{(f)}\) y \(r_y^{(f)}\) dónde el super-índice \((f)\) significa final.

Resumiendo, entramos y salimos con:

\[\begin{align} [(x, r_x), (y, r_y)] \Longrightarrow & [(x+\Delta x, \; r_x^{(f)}), (y+\Delta y, \; r_y^{(f)})] \end{align}\]

\(\Delta y\) >0

Puesto que tenemos más cantidad de \(y\) podemos decir que hemos ganado \(\Delta y\). Como es muy difícil obtener los datos exactos de los precios de cada \(y\) ganado a lo largo del tiempo, presuponemos que hemos recibido \(\Delta y\) al salir del pool. Las pérdidas y ganancias serían cantidad de \(y\) ganados multiplicado por precio al ganarlos, es decir:

\[\textrm{P\&G} = + \Delta y \times r_y^{(f)} \label{eq1}\tag{1}\]

\(\Delta x\) <0

Hemos perdido activos. Por ejemplo, habíamos entrado con x = 3 ETH y hemos salido con 2 ETH, por lo que \(\Delta x = -1\). ¿Se trata de una pérdida?

No necesariamente. Si el precio del ETH se ha multiplicado por 10, entramos con 3 ETH * 2.000€/ETH (es decir, 6.000€), pero salimos con 2 ETH * 20.000€/ETH (es decir, 40.000€). Hacienda no va a entender que entrar con 6000€ y salir con 40.000€ es una pérdida. Sin embargo, de alguna manera lo es. De no haber metido 3 ETH en el pool, hubieramos tenido el equivalente a 3 ETH * 20.000€ (es decir, 60.000€), sin pagar impuesto alguno. No depositar en el pool implica una plusvalía latente, ya que no hemos vendido los ETH. Tal como ha subido el precio, puede bajar mañana. Esta diferencia entre “lo que saldría del pool” y “lo que tendría si no lo hubiera metido en el pool” es el famoso impermanent loss. La solución que propone Pablo Vikay en su artículo es considerar dos operaciones.

  1. Pérdida patrimonial por el valor de los ETH perdidos. \[\textrm{P\&G} = \Delta x \times r_x^{(f)} \label{eq2}\tag{2}\]

  2. Alteración patrimonial por la transmisión de los ETH perdidos, que tienen en cuenta la diferencia entre el precio de adquisición y de transmisión. Es decir, en este caso la ganancia: \[\textrm{P\&G} = - \Delta x \times (r_x^{(f)} - r_x) \label{eq3}\tag{3}\]

Combinando las ecuaciones (\(\ref{eq1}\)), (\(\ref{eq2}\)) y (\(\ref{eq3}\)) tenemos el total de ganancias y pérdidas de la operación de salida del pool:

\[\textrm{P\&G} = \Delta x \times r_x^{(f)} - \Delta x \times (r_x^{(f)} - r_x) + \Delta y \times r_y^{(f)}\] que simplificamos para obtener: \[\boxed{\textrm{P\&G} = \Delta x \times r_x + \Delta y \times r_y^{(f)}}\]

EJEMPLO 1:

Entramos con:

  • 3 ETH adquiridos a un precio de 2.000€/ETH
  • 1000 UNI adquiridos a un precio de 6€/UNI

Total en EUR: 12.000€

Salimos con:

  • 2 ETH a un precio de 4.000€/ETH
  • 2000 UNI a un precio de 4€/UNI

Total en EUR: 16.000€

  1. Ganancia en \(y\):

Tenemos:

  • \(\Delta y = +1000\)
  • \(r_y^{(f)} = 4\)

por lo que \[\mathrm{P\&G} = 1000 \times 4 = +4000\]

Puede parecer un poco extraño, ya que tenemos un activo cuyo precio ha bajado de 6€ a 4€, pero apuntamos una ganancia de +4000€. La totalidad de los UNI han pasado de valer 6000€ a 8000€, una diferencia de +2000€. Como veis, la manera de contabilizar no es obvia. Nuestro razonamiento es: Hay 1000 UNI cuyo precio ha bajado, pero esa es una pérdida latente, sin consecuencias fiscales. Por otro lado, hay 1000 UNI nuevos que han “aparecido”, lo que implica una ganancia.

  1. Pérdida de 1 ETH:

Tenemos

  • \(\Delta x = -1\)
  • \(r_x^{(f)} = 4000\) por lo que: \[\mathrm{P\&G} = -1 \times 4000 = -4000\]
  1. Ganancia por transmisión Patrimonial: \[\mathrm{P\&G} = -(-1) \times (4000 - 2000) = + 2000\]

Resultado Final: \[ \mathrm{P\&G} = -4000 + (4000 - 2000) + 4000 = + 2000\]

Por lo que al salir del pool pagaríamos impuestos sobre una ganancia de +2000€.

El problema con este impuesto es que no hemos ganado EUR en ningún momento. Esta es una plusvalía latente. El precio de ambos activos podría caer a la mitad la semana siguiente. La agencia tributaria nos está incentivando a no prestar servicios a otros usuarios. En este ejemplo:

  • No Participar en Pools de Liquidez implica: Plusvalía latente= +4000€ | Impuestos=0€
  • Participar en Pools de Liquidez: Plusvalía latente:=4000€ | Impuestos=460€. (al 23%)

Es decir, que el incentivo es no prestar servicios financieros (liquidez en bolsas descentralizadas), sino no hacer nada con los fondos. Si la Agencia tributaria adopta esta interpretación pondrá a España en una posición de desventaja respecto a otros países. Esos países tomarán la delantera en tecnología, finanzas y terminarán vendiendonos los servicios financieros que podríamos haber desarrollado en España.

EJEMPLO 2:

Entramos con:

  • 3 ETH adquiridos a un precio de 2.000€/ETH
  • 1000 UNI adquiridos a un precio de 6€/UNI

Total en EUR: 12.000€

Salimos con:

  • 2 ETH a un precio de 1.000€/ETH
  • 2000 UNI a un precio de 1€/UNI

Total en EUR: 4.000€

  1. Ganancia en \(y\):

Tenemos:

  • \(\Delta y = +1000\) a un precio de \(r_y^{(f)} = 1\)

por lo que \[\mathrm{P\&G} = 1000 \times 1 = +1000\]

  1. Pérdida en \(x\):
  • \(\Delta x = -1\)
  • \(r_x^{(f)} = 1000\) por lo que: \[\mathrm{P\&G} = -1 \times 1000 = -1000\]
  1. Ganancia (aquí Pérdida) por transmisión Patrimonial: \[\mathrm{P\&G} = -(-1) \times (1000 - 2000) = - 1000\]

Resultado Final: \[ \mathrm{P\&G} = -1000 + (1000 - 2000) + 1000 = - 1000\].

En este caso, apuntamos una pérdida de -1000€

Todo Ganancias: \(\Delta x > 0\) y \(\Delta y >0\)

Este caso es menos común, pero puede suceder. Por ejemplo si el precio absoluto y relativo de ambos activos se mantiene constante (o vuelve a ese estado al cabo del tiempo), y acumulamos activos gracias a las comisiones del pool. En este caso:

\[\boxed{\textrm{P\&G} = \Delta x \times r_x^{(f)} + \Delta y \times r_y^{(f)}}\]

EJEMPLO

Entramos con:

  • 4 ETH a un precio de 2.000€/ETH
  • 1000 UNI a un precio de 8€/UNI

Total en EUR: 16.000€

Salimos con:

  • 4.4 ETH a un precio de 2.000€/ETH
  • 1100 UNI a un precio de 8€/UNI

Total en EUR: 17.600€

Resultado Final: \[ \mathrm{P\&G} = 0.4 \times 2000 + 100 \times 8 = +1600\].

Todo Pérdidas: \(\Delta x < 0\) y \(\Delta y < 0\)

Este caso no debería ser posible. El algoritmo que gobierna la entrada y salida de activos así como el precio de los activos debería garantizar que si retiramos menos de un activo, retiramos más de otro. Esto no significa que no podamos retirar el equivalente a menos EUR. Pero si \(\Delta x < 0\), tendremos \(\Delta y \geq 0\), y vice versa.

FIFO y salida parcial

formulas para FIFO

Para dar una tratamiento más completo, debemos aplicar el principio de contabilidad FIFO (First-In, First-Out) a los activos que entran en el pool. Es decir, si depositamos 3 ETH en el pool, podríamos haber comprado cada ETH a un precio diferente. Si hubieramos comprado 1 ETH a 1000€/ETH, 1.5 ETH a 4000€/ETH y 0.5 ETH a 3000€/ETH, en ese orden. ¿Cómo calculamos los impuestos a la salida del pool?

El cálculo de FIFO va a aparecer en la alteración patrimonial (Esa transmisión virtual de los activos que el pool se come.). Supongamos que hemos comprado el activo \(A\) en cantidades \(x_i\) a precios \(r_x^{(i)}\). Es decir, que los binomios (cantidad, precio) del ejemplo más arriba serían \[\left\{ (x_1, r_x^{(1)}), (x_2, r_x^{(2)}), (x_3, r_x^{(3)}) \right\} = \left\{(1, 1000), (1.5, 4000), (0.5, 3000)\right\}\] La alteración patrimonial se hallará con la siguiente formula:

\[\sum_i F_i(x_i) \times (r_x^{(f)} - r_x^{(i)})\]

dónde \(F_i(x_i)\) es una función definida como:

\[\begin{equation} F_i(x_i) = \begin{cases} x_i & \text{si} \sum_j^i x_j \leq \Delta x \\ \Delta x - \sum_{\mu}^i x_{\mu} & \text{si} \left\{(\sum_{\mu}^i x_{\mu} \geq \Delta x) \land (\sum_{\mu}^{i-1} x_{\mu} < \Delta x) \right\}\\ 0 & \text{para cualquier otro i} \end{cases} \end{equation}\]

Lo cual es una manera compleja de decir lo siguiente:

Si tenemos una alteración patrimonial \(\Delta x\) y unas cantidades y precios de adquisición \(\{ (x_1, r_1), (x_2, r_2), (x_3, r_3), ..., (x_N, r_N) \}\), entones vamos calculando \(x_i (r_{\text{salida}} - r_i)\) hasta que la suma de los \(x_i\) utilizados llegue a \(\Delta x\). Una vez que la suma de los \(x_i\) llegua a \(\Delta x\), dejamos de calcular los factores. Hay que tener en cuenta que el último factor puede ser una cantidad parcial.

Poniendo un ejemplo concreto. Supongamos que \(\Delta x =5.5\) y las cantidades y precios de adquisición fueron \(\{ (2, 1000), (2, 5000), (6, 3000 ) \}\), en ese orden. Si salimos del pool con un precio \(r_{\text{salida}} = 6000\), entonces calculamos de la manera siguiente:

Alteracion Patrimonial = 2 * (6000 - 1000)

Hemos computado la alteración patrimonial para 2 de los 5.5 que constituyen \(\Delta x\), por lo que seguimos:

Alteracion Patrimonial = 2 * (6000 - 1000) + 2 * (6000 - 5000)

Ahora nos queda \(1.5\) para llegar a \(\Delta x = 5.5\), por lo que contabilizamos una parte del activo comprado a 3000:

Alteracion Patrimonial = 2 * (6000 - 1000) + 2 * (6000 - 5000) + 1.5 * (6000 - 3000)

En general, si \(\Delta x <0\) (salimos con menos \(A\) de lo que entramos) y \(\Delta y >0\) (salimos con más \(B\) de lo que entramos), las Pérdidas y ganancias se obtendrían con la fórmula:

\[\mathrm{P\&G} = \Delta x \times r_x^{(f)} - \sum_i F_i(x_i) \times (r_x^{(f)} - r_x^{(i)}) + \Delta y \times r_y^{(f)} \]

EJEMPLO

Hemos adquirido 4 ETH = 1ETH + 1.5 ETH + 1.5 ETH, por los precios respectivos de 1.000€/ETH, 4.000€/ETH y 3.000€/ETH.

Entramos con:

  • 4 ETH que tienen un precio de 2000€/ETH en el momento de entrada.
  • 1000 UNI a un precio de 8€/UNI

Total en EUR: 16.000€

Salimos con:

  • 2 ETH a un precio de 4.000€/ETH
  • 2000 UNI a un precio de 4€/UNI

Total en EUR: 16.000€

  1. Ganancia en \(y\):

Tenemos:

  • \(\Delta y = +1000\) a un precio de \(r_y^{(f)} = 4\)

por lo que \[\mathrm{P\&G} = 1000 \times 4 = +4000\]

  1. Pérdida en \(x\):
  • \(\Delta x = -2\)
  • \(r_x^{(f)} = 4000\) por lo que: \[\mathrm{P\&G} = -2 \times 4000 = -8000\]
  1. Ganancia (con FIFO) por transmisión Patrimonial: \[\mathrm{P\&G} = -(-1) \times (4000 - 1000) -(-1) \times (4000 - 4000) = 3000 + 0 = +3000\]

Resultado Final: \[ \mathrm{P\&G} = -8000 + 3000 + 4000 = - 1000\].

En este caso, apuntamos una pérdida de -1000€. Este ejemplo, en mi opinión, subraya la falta de conceptos fiscales adecuados. Entramos con 16.000€, salimos con 16.000€, el impermanent loss es -4000€ y anotamos una pérdida de -1.000€. ¿Refleja esto la realidad de estas operaciones financieras?

Salida parcial del pool

Esta vez sólo sacamos una cantidad parcial de \(A\) y \(B\) del pool. ¿Hemos ganado o perdido activos? ¿Cual es la alteración patrimonial? Una posible solución es comparar un porcentaje del pool de entrada con el mismo porcentaje del pool de salida.

Es decir si sacamos P% del pool, estimar las pérdidas y ganancias como P% * P&G de las pérdidas y ganancias de una retirada al 100%.

EJEMPLO:

Suponemos que hemos adquirido 4 ETH con cantidad y precios (0.5, 2.000€/ETH) y (3.5, 1000€/ETH) Entramos con:

  • 4 ETH a un precio de 2000€/ETH
  • 1000 UNI a un precio de 8€/UNI

Total en EUR: 16.000€

Nuestra posición en el Pool es ahora:

  • 3 ETH a un precio de 3.000€/ETH
  • 3000 UNI a un precio de 3€/UNI

Total en EUR: 18.000€

Decidimos que necesitamos algo de ETH y UNI, y sacamos un tercio (1/3) de los activos. Sacamos del pool:

  • 1 ETH a 3.000€/ETH
  • 1000 UNI a 3€/UNI

Total en EUR: 6000€

Teniendo en cuenta FiFO, el cálculo de pérdidas y ganancias sería:

  1. Ganancia en \(y\):

Tenemos:

  • \(\Delta y = +2000\) a un precio de \(r_y^{(f)} = 3\)

por lo que \[\mathrm{P\&G} = \frac{1}{3}\left( 2000 \times 3\right) = +2000\]

  1. Pérdida en \(x\):
  • \(\Delta x = -1\)
  • \(r_x^{(f)} = 3000\) por lo que: \[\mathrm{P\&G} = \frac{1}{3}\left( -1 \times 3000 \right)= -1000\]
  1. Ganancia (con FiFo) por transmisión Patrimonial: \[\mathrm{P\&G} = \frac{1}{3}\left(-(-0.5) \times (3000 - 2000) -(-0.5) \times (3000 - 1000) \right)= +500\]

Resultado Final: \[ \mathrm{P\&G} = -1000 + 500 + 2000 = +1500\].