Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

256
Views
Creadores de Mercado Automatizados - Fondo de Liquidez - Pregunta sobre el cálculo

Estimados, quisiera codificar todos los pasos para el cálculo correcto de un saldo de pool según la lógica Uniswap V2.
Cualquiera que supiera ayudar puede escribir en cualquier lenguaje de programación (Python, Javascript, etc.), en este ejemplo usé R.
El proceso de equilibrio para un grupo de liquidez se puede ver aquí: ejemplo1 y ejemplo2 . Sin embargo, no está claro cómo hacerlo teniendo en cuenta la tarifa de Uniswap, que es del 0,3 % por cada operación.

 library(tidyverse) ##### INITIAL PARAMETERS #Uniswap charges users a flat 0.30% fee for #every trade that takes place on the platform and #automatically sends it to a liquidity reserve Uniswap.fee <- 0.30 / 100 ETH.initial.price <- 100 ETH.pool.price <- 100 BNT.initial.price <- 1 BNT.pool.price <- 1 ##### INITIAL SITUATION BNT.units <- 1000 BNT.total <- BNT.units * BNT.initial.price ETH.units <- BNT.total / ETH.initial.price ETH.total <- ETH.units * ETH.initial.price Pool.Value <- BNT.total + ETH.total Pool.DF <- data.frame(Symbol = c("BNT", "ETH"), Share = c(BNT.total,ETH.total)) ggplot(Pool.DF, aes(x = Symbol, y=Share, fill=Symbol)) + geom_bar(width = 1, position = "dodge", stat="identity") + labs(title="Initial POOL")

ingrese la descripción de la imagen aquí

 ##### FINAL SITUATION ETH.final.price <- 120 ETH.pool.price <- 100 BNT.final.price <- 1 BNT.pool.price <- 1 ##### Imbalanced.Pool Imbalanced.Pool <- data.frame(Symbol = c("BNT", "ETH"), Share = c(BNT.total,ETH.units * ETH.final.price )) ggplot(Imbalanced.Pool, aes(x = Symbol, y=Share, fill=Symbol)) + geom_bar(width = 1, position = "dodge", stat="identity")+ labs(title="Imbalanced POOL: ETH valorization") #### need to balance:

ingrese la descripción de la imagen aquí

... Ahora no sé cómo seguir los pasos para equilibrar correctamente y obtener los valores de pérdida impermanente y ganancia arbitraria.

Muchísimas gracias,

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Para los protocolos DeFi que utilizan creadores de mercado automatizados, implementamos un grupo de un par de activos (por ejemplo, BTC-USDT), y fijamos el precio de los dos activos simplemente con:

b * u = constante

Aquí b es la cantidad de BTC en el grupo y u es la cantidad de USDT. Además, la constante a menudo se escribe como K en muchos artículos.
Ahora suponga que desea intercambiar una cantidad de b 'BTC a USDT. Le das el b 'BTC al protocolo DeFi, y el protocolo descubre que debe reducir la cantidad de USDT (que se te dará) para mantener b * u = constante. Luego, con cálculos simples, el grupo decide darle u' USDT de modo que: (b+b')*(u-u') = constante

Con esta transacción (suponiendo que no se acumule una comisión del 0,3 %), obtienes u' USDT dando b' BTC.

Luego se trata de la tarifa del 0,3%. Cuando le da b' BTC al grupo, el grupo actúa como si solo le diera la cantidad deducida b'' == 99.7% * b'. Entonces el grupo calcula u'' de modo que

(b+b'')*(u-u'') = constante

En el cálculo real siempre hay errores debido al número limitado de decimales (solo puede recibir 0,1272 USDT en lugar de 0,127272727272...). Por lo tanto, la constante afirmada puede aumentar lentamente a medida que se ejecutan más y más transacciones de intercambio. Esto aumenta lentamente el volumen del fondo de liquidez. Tenga en cuenta que la comisión acumulada del 0,3 % puede no servir como parte del fondo de liquidez.

Para los códigos, usaría los códigos de Flamingo como ejemplo.

Primero, inicializa un intercambio a través de FlamingoSwapRouter. Das tus tokens vendidos al enrutador https://github.com/flamingo-finance/flamingo-contract-swap/blob/74e61f8406f9e8ededed72f9cb7e0139091ae17c/Swap/flamingo-contract-swap/FlamingoSwapRouter/FlamingoSwapRouterContract.cs#L237

Luego, el enrutador SafeTransfer su token vendido a su contrato de intercambio de pares y llame al método de swap del contrato de intercambio para darle el token que compra.
https://github.com/flamingo-finance/flamingo-contract-swap/blob/74e61f8406f9e8ededed72f9cb7e0139091ae17c/Swap/flamingo-contract-swap/FlamingoSwapPair/FlamingoSwapPairContract.cs#L140
Puede ver el código var balance0Adjusted = balance0 * 1000 - amount0In * 3; que ajusta la cantidad asumida de token en el grupo de liquidez. Hay una cantidad ligeramente superior de token en el grupo de liquidez que son tarifas acumuladas, no parte de la liquidez.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!