Liquidaciones on-chain: la mecánica de Aave y Compound, y el negocio de los bots alrededor de ellas
Una liquidación en Aave es una oferta pública permanente: repaga la deuda de otra persona y recibe su colateral con un descuento del 5–15%. La oferta está escrita en un contrato inmutable, no requiere permiso, ni KYC, ni relación alguna con el protocolo — solo ser la primera dirección en llamar a liquidationCall() en el bloque donde una posición cruza la línea. Es la carrera más pura de las criptomonedas: el premio se conoce hasta el centavo, el disparador es (en su mayoría) predecible, y la única pregunta es si tu infraestructura llega antes que la de todos los demás.
Este artículo analiza la máquina de principio a fin: la matemática exacta que define cuándo una posición se vuelve liquidable, por qué la mecánica del oráculo de Chainlink hace que las liquidaciones sean predecibles en lugar de reactivas, de qué consta realmente un bot de liquidación competitivo, y por qué la economía de la carrera se ha comprimido hasta el punto en que la mayor parte del bono ahora se filtra hacia los block builders — y, cada vez más, de vuelta a los propios protocolos. Al final contrastamos esto con las liquidaciones de los perp-DEX (GMX, Hyperliquid), que se parecen superficialmente pero son un juego completamente distinto.
La mecánica: health factor, umbrales, bonos
LTV vs umbral de liquidación
Todo activo de colateral en Aave v3 tiene dos parámetros de riesgo distintos, y confundirlos es el error más común que cometen los prestatarios:
- LTV (loan-to-value) — el máximo que puedes pedir prestado contra el activo en el momento de la apertura. Para WETH en Aave v3 mainnet ronda el 80%.
- Umbral de liquidación — el nivel de colateralización en el que la posición se vuelve liquidable. Para WETH, alrededor del 83%.
La brecha entre ambos es un colchón deliberado: no puedes abrir una posición que sea instantáneamente liquidable. Pero el colchón es delgado — unos pocos puntos porcentuales de movimiento de precio adverso separan "prestado al máximo" de "disponible para tomar."
El health factor agrega todo en un solo número:
donde es la cantidad del activo de colateral , su precio de oráculo, su umbral de liquidación, y el valor de cada posición de deuda. Cuando , cualquiera puede liquidar. No hay período de gracia, ni llamada de margen, ni notificación. La condición se evalúa de forma perezosa — no pasa nada hasta que alguien llama a la función.

Close factor y bono de liquidación
Dos parámetros más definen lo que obtiene el liquidador:
- Close factor — la fracción de la deuda que una sola liquidación puede repagar. El valor por defecto de Aave v3 es 50%. Desde Aave v3.3, el close factor salta al 100% cuando (el
CLOSE_FACTOR_HF_THRESHOLD), o cuando el colateral o la deuda de la posición están por debajo de un umbral de polvo (~$2,000) — las posiciones pequeñas no valen dos transacciones, y los remanentes de polvo generan problemas de contabilidad de deuda incobrable. - Bono de liquidación (también llamado penalización de liquidación, según de qué lado estés) — el descuento al que el liquidador compra el colateral. En Aave es un spread fijo establecido por activo mediante gobernanza: aproximadamente 5% para WETH y las principales stablecoins, hasta 10–15% para colaterales volátiles de cola larga.
Compound v2 funciona de la misma manera con constantes diferentes: liquidateBorrow() con un close factor del 50% y un incentivo de liquidación del 8% (el cToken de colateral incautado vale 1.08× la deuda repagada). Compound v3 (Comet) rediseñó el flujo en dos pasos: absorb() trae la posición bajo el agua al propio balance del protocolo (la deuda se socializa en las reservas, el colateral pasa a ser propiedad del protocolo), y buyCollateral() permite que cualquiera compre ese colateral al protocolo con un descuento configurado por gobernanza, pagado en el activo base. En la práctica, un liquidador llama a ambas funciones en una sola transacción — absorb en sí mismo no paga nada, la ganancia está enteramente en el buyCollateral con descuento.
Una posición concreta, liquidada paso a paso
Tomemos parámetros representativos de Aave v3 para WETH: LTV 80%, umbral de liquidación 83%, bono de liquidación 5%.
Configuración. Depositas 10 WETH a $3,000 ($30,000 de colateral) y pides prestados 20,000 USDC.
Precio de liquidación. cuando el valor del colateral cae a 20{,}000 / 0.83 = \24{,}096, es decir, ETH a **\2,410** — una caída del 19.7%. Se siente seguro. No lo es, porque ETH desayuna caídas del 20%.
La caída. ETH marca $2,350 en el oráculo. El colateral ahora vale $23,500:
, así que se aplica el close factor del 50%. Un liquidador repaga 10,000 USDC de tu deuda e incauta colateral por valor de 10{,}000 \times 1.05 = \10{,}500$ al precio del oráculo:
El P&L del liquidador. Gastó $10,000 y recibió $10,500 en ETH: $500 de ganancia bruta por una sola llamada de función, antes del gas, de los costos de swap para salir del ETH y — de forma crítica — antes de lo que tuvo que pujar para ganar la carrera (más sobre esto más adelante).
Tu P&L. La deuda baja a $10,000, el colateral baja a 5.532 WETH ($13,000). Nuevo health factor:
Nota dos hechos incómodos. Primero, pagaste $500 por el privilegio de un desapalancamiento forzado — el bono sale enteramente de tu equity. Segundo, el nuevo HF de 1.079 apenas está a flote: otra caída del 7% en ETH vuelve a disparar la liquidación sobre la mitad restante. La liquidación de spread fijo restaura la solvencia, no la seguridad. Este patrón de "liquidación parcial, aún frágil, liquidado de nuevo" es la microestructura detrás de la dinámica de cascadas, que cubrimos en el artículo hermano sobre las cascadas de liquidación como señal de trading.
El disparador: las liquidaciones son predecibles, no reactivas
Aquí está la parte que separa a quienes entienden este negocio de quienes no: en Aave y Compound, las posiciones no se vuelven liquidables cuando el precio de mercado se mueve. Se vuelven liquidables cuando el oráculo se actualiza.
Ambos protocolos leen precios de los feeds de datos de Chainlink. Un feed de Chainlink en Ethereum mainnet publica un nuevo precio on-chain cuando se cumple alguna de dos condiciones:
- Umbral de desviación — el precio agregado off-chain se mueve más de un porcentaje establecido respecto al último valor on-chain: 0.5% para ETH/USD en mainnet, 1–2% para la mayoría de los feeds más pequeños.
- Heartbeat — un intervalo máximo (3,600 segundos para ETH/USD) tras el cual se publica una actualización sin importar la desviación.
Esto tiene una consecuencia profunda. Entre actualizaciones, el precio on-chain está desactualizado por construcción. Si el ETH de Binance cae 0.6% mientras el feed on-chain todavía muestra el precio anterior, todo actor sofisticado sabe que viene una transacción de actualización del oráculo, sabe (aproximadamente) cuál será el nuevo precio, y puede calcular — antes de que la actualización llegue — exactamente qué posiciones cruzarán en el momento en que lo haga.

La estrategia dominante, por lo tanto, no es "vigilar los health factors y reaccionar" sino hacer backrun de la actualización del oráculo: construir un bundle en el que tu liquidationCall() se ejecute inmediatamente después de la transacción de transmisión de Chainlink, en el mismo bloque. La actualización del oráculo es el disparo de salida, y todos pueden ver al juez levantando la pistola. La mecánica de los bundles — envío privado a los block builders, garantías de ordenamiento atómico — es la misma maquinaria que cubrimos en el artículo sobre ataques sandwich y frontrunning en el mempool; las liquidaciones son simplemente el uso más legítimo de ella.
Dos matices importan en la práctica:
- Ni siquiera necesitas ver la transmisión en el mempool. Dado que la agregación off-chain es observable (puedes correr el mismo cálculo de precio a partir de feeds de exchanges centralizados), puedes predecir que una actualización debe dispararse una vez que la desviación supera el umbral, y pre-construir bundles tanto para el camino de precio al alza como a la baja.
- Las actualizaciones por heartbeat son eventos de liquidez programados. Si un feed no se ha desviado 0.5% en una hora, igual llega una actualización — y si el precio se ha desplazado 0.4% en contra de un muro de posiciones agrupadas cerca de , ese heartbeat "inofensivo" es el disparador. Los operadores competitivos rastrean el tiempo desde la última actualización por feed como una señal de primera clase.
Esta predictibilidad también es la razón por la que los protocolos terminaron moviéndose para recuperar el valor. En marzo de 2025, Aave integró Chainlink SVR (Smart Value Recapture): las actualizaciones de oráculo para los feeds participantes se enrutan a través de Flashbots MEV-Share, el derecho a hacer backrun de ellas se subasta, y la puja ganadora se reparte entre la DAO de Aave (65%) y Chainlink (35%) en lugar de filtrarse por completo a searchers y builders. En cuestión de meses el sistema había procesado más de $32M en liquidaciones y recapturado más de $1.1M, capturando más del 80% del MEV de liquidación elegible. Léelo como un precio de mercado: la carrera abierta se había vuelto tan eficiente que el protocolo pudo subastar la línea de meta.
Construyendo el bot: los cuatro subsistemas
Un bot de liquidación competitivo no es un script; es infraestructura del tamaño de una pequeña firma de trading. Cuatro subsistemas, cada uno individualmente simple, todos críticos en latencia en conjunto.

1. Indexación de posiciones
Necesitas el conjunto completo de prestatarios y sus balances, mantenido en tiempo real. El arranque es un backfill de eventos — cada Supply, Borrow, Repay, Withdraw, LiquidationCall desde el despliegue del protocolo — plegado en balances actuales por usuario, y luego mantenido en vivo mediante una suscripción websocket a nuevos logs. getUserAccountData(address) de Aave devuelve el health factor directamente, pero llamarlo por usuario y por bloque para más de 100 mil prestatarios es inviable; los operadores serios replican la contabilidad del protocolo localmente (incluyendo la matemática del índice de tasa de interés, ya que la deuda crece cada segundo) y reservan las llamadas RPC para verificación.
2. Monitoreo del health factor con simulación de oráculo
El bucle central no es "calcular el HF a los precios actuales del oráculo." Es "calcular el HF al precio que el oráculo está a punto de publicar":
def liquidatable_at(positions, feed, candidate_price):
"""Positions that cross HF < 1 if `feed` updates to candidate_price."""
out = []
for pos in positions.borrowers_exposed_to(feed):
hf = pos.health_factor(price_override={feed: candidate_price})
if hf < 1.0:
close_factor = 1.0 if hf < 0.95 else 0.5
repay = pos.debt_value * close_factor
seized = repay * (1 + pos.liq_bonus)
gross = seized - repay # the prize, pre-costs
out.append((pos, repay, gross))
return sorted(out, key=lambda x: -x[2])
deviation = abs(offchain_px - onchain_px) / onchain_px
if deviation > FEED_DEVIATION_THRESHOLD * 0.8: # update imminent
targets = liquidatable_at(positions, feed, offchain_px)
for pos, repay, gross in targets:
prepare_bundle(pos, repay, max_bid=gross - costs(pos))
Ordenar las posiciones por proximidad a (una cola de prioridad indexada por el precio que dispararía cada posición) mantiene pequeño el conjunto activo. El factor 0.8 es todo el juego: quieres bundles construidos y enviados antes de que la actualización sea segura, no después.
3. Ejecución financiada con flash loans
No necesitas capital para liquidar — lo necesitas durante unos 200 milisegundos de tiempo de bloque. El contrato de ejecución canónico hace, de forma atómica:
- Pedir prestado en flash loan el activo de deuda (Balancer a 0 bps, o el propio Aave a ~5 bps — el mismo primitivo que construimos en arbitraje atómico con flash loans).
- Llamar a
liquidationCall(collateral, debtAsset, user, repayAmount, false)— elfalserecibe el colateral subyacente en lugar de aTokens. - Hacer swap del colateral incautado de vuelta al activo de deuda en el venue que cotice mejor (Uniswap v3 / v4, una ruta de 1inch, o un fill privado).
- Repagar el flash loan; el remanente es ganancia, verificado con un
require(profit >= minProfit)para que una simulación desactualizada revierta en lugar de ejecutarse con pérdida.
El tramo del swap es donde mueren los bots descuidados: incautar $10,500 de un token de cola larga significa comerse su liquidez en el DEX, y el impacto de precio al salir puede superar el bono de liquidación. Los operadores competitivos simulan el viaje completo de ida y vuelta — incluyendo el swap de salida — y omiten las liquidaciones donde el neto es negativo, o retienen el colateral y cubren la posición con un perp en lugar de volcarlo al mercado.
4. Envío del bundle
La transacción final no pasa cerca del mempool público. Se envía como un bundle a los block builders (o a la subasta SVR/OEV donde aplique), indicando: "coloca mi liquidación inmediatamente después de esta transmisión del oráculo; aquí está mi propina." La propina es tu puja en una subasta de todos-pagan-nada-si-pierden contra cada otro bot que corrió la misma simulación. Lo cual nos lleva a la economía incómoda.
La competencia: adónde va realmente el bono
La línea base académica es Qin, Zhou, Gamito, Jovanovic y Gervais, "An Empirical Study of DeFi Liquidations: Incentives, Risks, and Instabilities" (2021), que midió el negocio a través de Aave, Compound, MakerDAO y dYdX desde abril de 2019 hasta abril de 2021: 28,138 liquidaciones por un total de $807M, con $63.6M de ganancia agregada de liquidadores. El paper también documentó la ineficiencia estructural de la liquidación de spread fijo — el descuento es un instrumento tosco que rutinariamente sobre-penaliza a los prestatarios en relación con lo que cobraría una subasta — y mostró a liquidadores dejando dinero medible sobre la mesa con estrategias ingenuas.
Las ganancias de aquella era no se repetirán, por tres razones que se acumulan:
La subasta de gas se convirtió en una subasta de builders. En 2019–2020, los liquidadores competían en subastas de gas prioritario en el mempool abierto; el ganador pagaba de más por el gas, los perdedores revertían, y una fracción significativa del bono se quedaba con el liquidador. Después de MEV-Boost, la competencia ocurre en subastas selladas de builders. Cuando N bots simulan la misma oportunidad determinista hasta llegar a la misma cifra de ganancia, la puja converge hacia el premio completo: el bundle ganador rutinariamente da propina de más del 90% de la ganancia bruta al builder/validador. El margen del liquidador se reduce a quien tenga un precio de salida marginalmente mejor, costos marginalmente más bajos, u oportunidades que otros no vieron.
Los backruns de oráculo dominan, y están siendo encerrados. Dado que casi todas las liquidaciones de mercados de dinero son disparadas por actualizaciones de oráculo, el espacio de estrategias rentables colapsó en un solo punto: ganar el slot justo después de la transmisión. Los mecanismos estilo SVR formalizan esto — el protocolo subasta ese slot y se queda con la mayor parte de los ingresos. La ganancia del searcher se reduce de "el bono menos el gas" al "margen del ganador de la subasta," que la puja competitiva empuja hacia cero.
La cola larga es lo que queda. Los nichos realistas para un nuevo entrante en 2026: chains y L2 donde los mercados de builders son inmaduros; forks de lending de cola larga con parámetros de bono mal calibrados y pocos bots compitiendo; posiciones con colateral exótico donde la simulación del swap de salida es genuinamente difícil (ventaja mediante mejor ejecución, no mejor latencia); y eventos de estrés, cuando el gas se dispara y las fallas de RPC dejan fuera a los operadores marginales — el Jueves Negro de MakerDAO (marzo de 2020), cuando subastas con puja cero permitieron a los liquidadores reclamar $8.3M de colateral esencialmente gratis porque la infraestructura de nadie más funcionaba, sigue siendo el ejemplo canónico de que la carrera paga mejor precisamente cuando es más difícil de correr.
Dimensionando la expectativa honesta: esto es ahora un negocio con costos fijos reales (nodos, relaciones con builders, monitoreo a través de una docena de despliegues) compitiendo por un pool de premios fuertemente rebajado. Es una buena manera de aprender más sobre las interioridades de la EVM, los oráculos y la plomería del MEV de lo que cualquier curso te enseñará. Es una manera difícil de ganarse la vida.
Liquidaciones en perp-DEX: misma palabra, juego distinto
Los DEX de perpetuos también "liquidan," y las cifras titulares son mayores — pero el mecanismo, y por lo tanto la oportunidad, es estructuralmente distinto.
GMX (v2): las posiciones operan contra un pool de liquidez a precios de oráculo (Chainlink low-latency Data Streams). La liquidación se dispara cuando el colateral menos las pérdidas y comisiones cae por debajo de los requisitos de mantenimiento, y la ejecutan keepers — infraestructura designada que opera con precios firmados por el oráculo, no una carrera abierta. No hay una función pública que pague un bono del 5% a quien llame primero; el colateral restante fluye hacia el pool según las reglas del protocolo. Desde la perspectiva de un searcher, no hay nada que ganar.
Hyperliquid: las liquidaciones corren dentro del propio motor de emparejamiento de la L1. Cuando el equity de una cuenta cae por debajo del margen de mantenimiento (evaluado a un precio de referencia mezclado a partir de feeds de exchanges centralizados y el libro de órdenes, precisamente para resistir los juegos de oráculo descritos arriba), el motor envía órdenes de mercado de liquidación al libro de órdenes — posiciones grandes en fragmentos parciales para limitar el impacto. Si el equity sigue cayendo por debajo de dos tercios del margen de mantenimiento, la posición es tomada al precio de referencia por una bóveda liquidadora de respaldo que es una estrategia dentro de HLP, la bóveda de market-making de propiedad comunitaria del protocolo, con auto-desapalancamiento como capa final. El P&L de la liquidación se acumula para los depositantes de HLP — la "ganancia del liquidador" se socializa en una bóveda a la que cualquiera puede unirse, no se compite por evento.
La consecuencia para un trader: en los mercados de dinero, el juego es ser el liquidador — una carrera de infraestructura por un spread fijo. En los perp-DEX, el rol de liquidador está cerrado, así que el juego se desplaza a operar alrededor de las liquidaciones: los precios de liquidación son calculables a partir de las posiciones abiertas, el flujo forzado golpea un libro de órdenes visible, y los niveles de liquidación agrupados se convierten tanto en un imán como en una fuente de combustible para los movimientos de precio. Esa es la misma lógica que hace tradeables las cascadas de liquidación en los exchanges centralizados — la dinámica que tocamos en las tasas de funding matan tu apalancamiento (el costo del apalancamiento es lo que empuja a las posiciones hacia el precipicio) y en la mecánica de pump-and-dump de shitcoins (empujones diseñados hacia clústeres de liquidación). El tratamiento completo de las cascadas como señal — detectando cómo se forman, midiendo su combustible, operando el sobreimpulso — es el tema del próximo artículo de esta serie.
Qué llevarse de esto
La liquidación de mercados de dinero es el raro rincón de las criptomonedas donde todo es legible: la condición del disparador es una fórmula, el premio es una constante fijada por gobernanza, el disparo de salida es una transacción de oráculo que puedes ver venir. Esa legibilidad construyó un negocio genuinamente abierto en 2019–2021, y luego — precisamente porque todo era legible — la competencia bajó el margen al nivel de la calidad de la infraestructura y subastó el remanente de vuelta a los protocolos. La mecánica sigue siendo conocimiento esencial: si pides prestado on-chain, esta matemática es tu modelo de riesgo; si operas alrededor del flujo forzado, la cadencia del oráculo y los close factors te dicen cuándo y cuánto; y si de todas formas construyes el bot, al menos constrúyelo sabiendo adónde va realmente el dinero.
Authors
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.