← Terug naar artikelen
July 19, 2026
5 min leestijd

Liquidaties on-chain: de mechanica van Aave en Compound, en de bot-business eromheen

Liquidaties on-chain: de mechanica van Aave en Compound, en de bot-business eromheen
#defi
#liquidaties
#aave
#compound
#mev
#chainlink
#flash loans
#crypto

Een liquidatie op Aave is een permanent openbaar aanbod: los de schuld van iemand anders af en ontvang hun onderpand met 5–15% korting. Dat aanbod staat geschreven in een onveranderlijk contract, vereist geen toestemming, geen KYC, geen relatie met het protocol — je hoeft alleen het eerste adres te zijn dat liquidationCall() aanroept in het blok waarin een positie de grens overschrijdt. Het is de zuiverste race in crypto: de prijs is bekend tot op de cent, de trigger is (meestal) voorspelbaar, en de enige vraag is of jouw infrastructuur er eerder is dan die van iedereen.

Dit artikel ontleedt de machine van begin tot eind: de exacte wiskunde die bepaalt wanneer een positie liquideerbaar wordt, waarom de Chainlink oracle-mechanica liquidaties voorspelbaar maakt in plaats van reactief, waaruit een competitieve liquidatiebot daadwerkelijk bestaat, en waarom de economie van de race zo is samengeperst dat het grootste deel van de bonus nu weglekt naar block builders — en, in toenemende mate, terugvloeit naar de protocollen zelf. Aan het einde zetten we dit af tegen liquidaties op perp-DEX's (GMX, Hyperliquid), die oppervlakkig gezien hetzelfde lijken maar een compleet ander spel zijn.

De mechanica: health factor, thresholds, bonussen

LTV versus liquidation threshold

Elk onderpand-asset op Aave v3 heeft twee afzonderlijke risicoparameters, en ze door elkaar halen is de meest gemaakte fout van leners:

  • LTV (loan-to-value) — het maximum dat je bij het openen van de positie kunt lenen tegen het asset. Voor WETH op Aave v3 mainnet is dit rond de 80%.
  • Liquidation threshold — het onderpandniveau waarbij de positie liquideerbaar wordt. Voor WETH rond de 83%.

De marge daartussen is een bewuste buffer: je kunt geen positie openen die direct liquideerbaar is. Maar de buffer is dun — een paar procent ongunstige prijsbeweging scheidt "maximaal geleend" van "vrij voor het grijpen."

De health factor brengt alles samen in één getal:

HF=iCiPiLTijDjPjHF = \frac{\sum_i C_i \cdot P_i \cdot LT_i}{\sum_j D_j \cdot P_j}

waarbij CiC_i de hoeveelheid onderpand-asset ii is, PiP_i de oracle-prijs ervan, LTiLT_i de liquidation threshold ervan, en DjPjD_j \cdot P_j de waarde van elke schuldpositie. Wanneer HF<1HF < 1, mag iedereen liquideren. Er is geen respijtperiode, geen margin call, geen melding. De voorwaarde wordt lazy geëvalueerd — er gebeurt niets totdat iemand de functie aanroept.

Health factor-banden: veilige zone boven HF 1, gedeeltelijke liquidatie tussen 0,95 en 1, volledige liquidatie onder 0,95

Close factor en liquidation bonus

Nog twee parameters bepalen wat de liquidator krijgt:

  • Close factor — het deel van de schuld dat één liquidatie mag aflossen. De standaard van Aave v3 is 50%. Sinds Aave v3.3 springt de close factor naar 100% wanneer HF<0,95HF < 0,95 (de CLOSE_FACTOR_HF_THRESHOLD), of wanneer het onderpand of de schuld van de positie onder een dust threshold (~$2.000) ligt — kleine posities zijn geen twee transacties waard, en overgebleven dust veroorzaakt problemen in de bad-debt-boekhouding.
  • Liquidation bonus (ook wel liquidation penalty genoemd, afhankelijk van welke kant je op staat) — de korting waartegen de liquidator onderpand koopt. Op Aave is dit een vaste spread, per asset ingesteld door governance: ongeveer 5% voor WETH en de belangrijkste stablecoins, tot 10–15% voor volatiel long-tail onderpand.

Compound v2 werkt op dezelfde manier met andere constanten: liquidateBorrow() met een close factor van 50% en een liquidation incentive van 8% (het geconfisqueerde cToken-onderpand is 1,08× de afgeloste schuld waard). Compound v3 (Comet) heeft de flow herontworpen in twee stappen: absorb() trekt de onderwaterpositie naar de eigen balans van het protocol (de schuld wordt gesocialiseerd in de reserves, het onderpand wordt eigendom van het protocol), en buyCollateral() laat iedereen dat onderpand van het protocol kopen tegen een door governance ingestelde korting, betaald in het base asset. In de praktijk roept een liquidator beide in één transactie aan — absorb zelf levert niets op, de winst zit volledig in de gekorte buyCollateral.

Een concrete positie, stap voor stap geliquideerd

Neem representatieve Aave v3 WETH-parameters: LTV 80%, liquidation threshold 83%, liquidation bonus 5%.

Uitgangspunt. Je stort 10 WETH tegen $3.000 ($30.000 onderpand) en leent 20.000 USDC.

HF=30,000×0.8320,000=1.245HF = \frac{30{,}000 \times 0.83}{20{,}000} = 1.245

Liquidatieprijs. HF=1HF = 1 wanneer de onderpandwaarde daalt tot 20{,}000 / 0.83 = \24{,}096, oftewel ETH op **\2.410** — een drawdown van 19,7%. Voelt veilig. Is het niet, want ETH doet drawdowns van 20% bij het ontbijt.

De daling. ETH print $2.350 op de oracle. Het onderpand is nu $23.500:

HF=23,500×0.8320,000=0.975HF = \frac{23{,}500 \times 0.83}{20{,}000} = 0.975

0.95<HF<10.95 < HF < 1, dus de close factor van 50% geldt. Een liquidator lost 10.000 USDC van je schuld af en confisqueert onderpand ter waarde van 10{,}000 \times 1.05 = \10{,}500$ tegen oracle-prijs:

10,5002,350=4.468 WETH\frac{10{,}500}{2{,}350} = 4.468 \text{ WETH}

De P&L van de liquidator. Ze gaven $10.000 uit en ontvingen $10.500 aan ETH: $500 bruto winst voor één functieaanroep, vóór gas, swapkosten om uit de ETH te stappen, en — cruciaal — vóór wat ze moesten bieden om de race te winnen (meer daarover verderop).

Jouw P&L. Schuld gedaald tot $10.000, onderpand gedaald tot 5,532 WETH ($13.000). Nieuwe health factor:

HF=13,000×0.8310,000=1.079HF = \frac{13{,}000 \times 0.83}{10{,}000} = 1.079

Let op twee ongemakkelijke feiten. Ten eerste betaalde je $500 voor het voorrecht van geforceerde deleveraging — de bonus komt volledig uit jouw equity. Ten tweede staat de nieuwe HF van 1,079 nauwelijks boven water: nog eens 7% daling in ETH triggert opnieuw liquidatie op de overgebleven helft. Fixed-spread liquidatie herstelt solvabiliteit, niet veiligheid. Dit patroon van "halve liquidatie, nog steeds fragiel, opnieuw geliquideerd" is de microstructuur achter cascade-dynamiek, die we behandelen in het zusterartikel over liquidatiecascades als handelssignaal.

De trigger: liquidaties zijn voorspelbaar, niet reactief

Hier zit het onderdeel dat mensen die deze business begrijpen scheidt van mensen die dat niet doen: op Aave en Compound worden posities niet liquideerbaar wanneer de marktprijs beweegt. Ze worden liquideerbaar wanneer de oracle update.

Beide protocollen lezen prijzen uit Chainlink data feeds. Een Chainlink feed op Ethereum mainnet duwt een nieuwe on-chain prijs zodra een van twee voorwaarden afgaat:

  • Deviation threshold — de off-chain geaggregeerde prijs beweegt meer dan een ingesteld percentage ten opzichte van de laatste on-chain waarde: 0,5% voor ETH/USD op mainnet, 1–2% voor de meeste kleinere feeds.
  • Heartbeat — een maximaal interval (3.600 seconden voor ETH/USD) waarna sowieso een update wordt gepusht, ongeacht de afwijking.

Dit heeft een verstrekkend gevolg. Tussen updates in is de on-chain prijs per constructie verouderd. Als Binance ETH 0,6% daalt terwijl de on-chain feed nog de oude prijs toont, weet elke geraffineerde partij dat er een oracle-updatetransactie aankomt, weet (bij benadering) wat de nieuwe prijs zal zijn, en kan — voordat de update landt — precies berekenen welke posities HF<1HF < 1 zullen kruisen zodra dat gebeurt.

Tijdlijn die laat zien hoe de off-chain prijs de deviation threshold kruist, de aanstaande oracle-update, en de liquidatie uitgevoerd in hetzelfde blok als de update

De dominante strategie is dus niet "houd health factors in de gaten en reageer" maar backrun de oracle-update: bouw een bundle waarin jouw liquidationCall() direct na de Chainlink transmit-transactie wordt uitgevoerd, in hetzelfde blok. De oracle-update is het startschot, en iedereen kan de starter het pistool zien heffen. De bundle-mechanica — private submission naar block builders, atomaire ordering-garanties — is dezelfde machinerie die we behandelden in het artikel over sandwich-aanvallen en mempool-frontrunning; liquidaties zijn simpelweg het meest legitieme gebruik ervan.

Twee verfijningen zijn in de praktijk van belang:

  1. Je hoeft de transmit niet eens in de mempool te zien. Omdat de off-chain aggregatie observeerbaar is (je kunt dezelfde prijsberekening draaien op basis van CEX-feeds), kun je voorspellen dat een update moet afgaan zodra de afwijking de threshold overschrijdt, en kun je vooraf bundles bouwen voor zowel het prijspad omhoog als omlaag.
  2. Heartbeat-updates zijn geplande liquiditeitsgebeurtenissen. Als een feed een uur lang niet 0,5% is afgeweken, landt er toch een update — en als de prijs 0,4% is verschoven tegen een muur van posities die geclusterd zijn rond HF=1HF = 1, is die "onschuldige" heartbeat de trigger. Competitieve operators volgen time-since-last-update per feed als volwaardig signaal.

Deze voorspelbaarheid is ook de reden waarom de protocollen uiteindelijk zijn overgegaan tot het terugclaimen van de waarde. In maart 2025 integreerde Aave Chainlink SVR (Smart Value Recapture): oracle-updates voor deelnemende feeds worden gerouteerd via Flashbots MEV-Share, het recht om ze te backrunnen wordt geveild, en het winnende bod wordt verdeeld tussen de Aave DAO (65%) en Chainlink (35%) in plaats van volledig weg te lekken naar searchers en builders. Binnen enkele maanden had het systeem meer dan $32M aan liquidaties verwerkt en meer dan $1,1M teruggewonnen, waarmee 80%+ van de in aanmerking komende liquidatie-MEV werd afgevangen. Lees dat als een marktprijs: de open race was zo efficiënt geworden dat het protocol de finishlijn kon veilen.

De bot bouwen: de vier subsystemen

Een competitieve liquidatiebot is geen script; het is infrastructuur ter waarde van een kleine trading firm. Vier subsystemen, elk afzonderlijk eenvoudig, allemaal samen latency-kritiek.

Architectuur van een liquidatiebot: indexer, health monitor met oracle-simulatie, flash-loan uitvoeringscontract, bundle-submission naar builders

1. Positie-indexering

Je hebt de volledige set leners en hun saldi nodig, real-time bijgehouden. De bootstrap is een event-backfill — elke Supply, Borrow, Repay, Withdraw, LiquidationCall sinds de deployment van het protocol — samengevouwen tot actuele saldi per gebruiker, vervolgens live gehouden via een websocket-abonnement op nieuwe logs. Aave's getUserAccountData(address) geeft de health factor direct terug, maar die per gebruiker per blok aanroepen voor 100k+ leners is kansloos; serieuze operators repliceren de boekhouding van het protocol lokaal (inclusief de rente-index-wiskunde, aangezien de schuld elke seconde groeit) en bewaren RPC-calls voor verificatie.

2. Health factor-monitoring met oracle-simulatie

De kernloop is niet "bereken HF bij de huidige oracle-prijzen." Het is "bereken HF bij de prijs die de oracle op het punt staat te publiceren":

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))

Door posities te sorteren op nabijheid tot HF=1HF = 1 (een priority queue gesleuteld op de prijs die elke positie zou triggeren) blijft de hot set klein. De factor 0,8 is het hele spel: je wilt bundles gebouwd en ingediend hebben voordat de update zeker is, niet erna.

3. Uitvoering gefinancierd met flash loans

Je hebt geen kapitaal nodig om te liquideren — je hebt het nodig voor ongeveer 200 milliseconden blocktijd. Het klassieke uitvoeringscontract doet, atomair:

  1. Flash-leen het schuld-asset (Balancer tegen 0 bps, of Aave zelf tegen ~5 bps — dezelfde primitive die we opbouwden in atomaire arbitrage met flash loans).
  2. Roep liquidationCall(collateral, debtAsset, user, repayAmount, false) aan — de false ontvangt onderliggend onderpand in plaats van aTokens.
  3. Swap het geconfisqueerde onderpand terug naar het schuld-asset op welk venue dan ook de beste koers geeft (Uniswap v3 / v4, 1inch-route, of een private fill).
  4. Los de flash loan af; de rest is winst, geverifieerd met een require(profit >= minProfit) zodat een verouderde simulatie revert in plaats van met verlies uit te voeren.

De swap-poot is waar slordige bots sterven: $10.500 aan een long-tail token confisqueren betekent de DEX-liquiditeit ervan opeten, en price impact bij het uitstappen kan de liquidation bonus overstijgen. Competitieve operators simuleren de volledige rondrit — inclusief de exit-swap — en slaan liquidaties over waarvan het netto negatief is, of houden het onderpand aan en hedgen op een perp in plaats van het op de markt te dumpen.

4. Bundle-submission

De uiteindelijke transactie komt nergens in de buurt van de publieke mempool. Ze wordt als bundle ingediend bij block builders (of in de SVR/OEV-veiling waar van toepassing), met de boodschap: "plaats mijn liquidatie direct na deze oracle-transmit; hier is mijn tip." De tip is jouw bod in een all-pay-nothing-if-you-lose-veiling tegen elke andere bot die dezelfde simulatie draaide. Wat ons bij de ongemakkelijke economie brengt.

De concurrentie: waar de bonus daadwerkelijk naartoe gaat

De academische baseline is Qin, Zhou, Gamito, Jovanovic en Gervais, "An Empirical Study of DeFi Liquidations: Incentives, Risks, and Instabilities" (2021), dat de business over Aave, Compound, MakerDAO en dYdX mat van april 2019 tot april 2021: 28.138 liquidaties ter waarde van in totaal $807M, met $63,6M aan gezamenlijke liquidatorwinst. De paper documenteerde ook de structurele inefficiëntie van fixed-spread liquidatie — de korting is een bot instrument dat leners routinematig zwaarder straft dan een veiling zou doen — en liet zien dat liquidators met naïeve strategieën meetbaar geld op tafel lieten liggen.

De winsten uit dat tijdperk zullen zich niet herhalen, om drie elkaar versterkende redenen:

De gasveiling werd een builder-veiling. In 2019–2020 concurreerden liquidators in priority-gas-veilingen in de open mempool; de winnaar betaalde te veel gas, de verliezers reverteerden, en een aanzienlijk deel van de bonus bleef bij de liquidator. Na MEV-Boost vindt concurrentie plaats in gesloten builder-veilingen. Wanneer N bots dezelfde deterministische kans simuleren tot hetzelfde winstcijfer, convergeert het bieden naar de volledige prijs: de winnende bundle geeft routinematig 90%+ van de brutowinst als tip aan de builder/validator. De edge van de liquidator krimpt tot wie marginaal betere exit-pricing heeft, marginaal lagere kosten, of kansen die anderen over het hoofd zagen.

Oracle-backruns domineren, en ze worden ingekaderd. Aangezien vrijwel alle liquidaties op geldmarkten worden getriggerd door oracle-updates, is de winstgevende strategieruimte samengevallen tot één punt: win de slot direct na de transmit. SVR-achtige mechanismen formaliseren dit — het protocol veilt die slot en houdt het grootste deel van de opbrengst. Het aandeel van de searcher krimpt van "de bonus minus gas" naar "de marge van de veilingwinnaar," die competitief bieden richting nul drijft.

De long tail is wat overblijft. De realistische niches voor een nieuwkomer in 2026: chains en L2's waar builder-markten nog onvolwassen zijn; long-tail lending-forks met verkeerd geprijsde bonusparameters en weinig concurrerende bots; posities met exotisch onderpand waar de exit-swap-simulatie echt lastig is (edge door betere uitvoering, niet betere latency); en stressgebeurtenissen, wanneer gas piekt en RPC's uitvallen waardoor marginale operators uitgeschakeld raken — MakerDAO's Black Thursday (maart 2020), toen zero-bid-veilingen liquidators $8,3M aan onderpand vrijwel gratis lieten claimen omdat de infrastructuur van niemand anders functioneerde, blijft het klassieke voorbeeld dat de race het best uitbetaalt precies wanneer hij het moeilijkst te draaien is.

Een eerlijke verwachting: dit is nu een business met echte vaste kosten (nodes, builder-relaties, monitoring over een dozijn deployments) die concurreert om een zwaar gekorte prijzenpot. Het is een prima manier om meer te leren over EVM-internals, oracles en MEV-plumbing dan welke cursus dan ook je zal leren. Het is een moeilijke manier om de kost te verdienen.

Perp-DEX-liquidaties: hetzelfde woord, ander spel

Perpetual DEX's "liquideren" ook, en de krantenkoppen-cijfers zijn groter — maar het mechanisme, en dus de kans, is structureel anders.

GMX (v2): posities handelen tegen een liquiditeitspool tegen oracle-prijzen (Chainlink low-latency Data Streams). Liquidatie gaat af wanneer onderpand minus verliezen en fees onder de maintenance-vereisten zakt, en wordt uitgevoerd door keepers — aangewezen infrastructuur die op oracle-gesigneerde prijzen opereert, geen open race. Er is geen publieke functie die een bonus van 5% uitbetaalt aan wie als eerste belt; overblijvend onderpand stroomt volgens protocolregels naar de pool. Vanuit het perspectief van een searcher valt er niets te winnen.

Hyperliquid: liquidaties draaien binnen de eigen matching engine van de L1. Wanneer account-equity onder de maintenance margin zakt (geëvalueerd tegen een mark price gemengd uit CEX-feeds en het orderboek, precies om de hierboven beschreven oracle-spelletjes te weerstaan), stuurt de engine liquidatie-marktorders het orderboek in — grote posities in gedeeltelijke brokken om impact te beperken. Als de equity blijft dalen tot onder tweederde van de maintenance margin, wordt de positie overgenomen tegen mark price door een backstop liquidator vault die een strategie is binnen HLP, de community-owned market-making vault van het protocol, met auto-deleveraging als laatste laag. Liquidatie-P&L komt toe aan HLP-depositors — de "liquidatorwinst" wordt gesocialiseerd in een vault die iedereen kan joinen, niet per gebeurtenis bevochten.

Het gevolg voor een trader: op geldmarkten is het spel de liquidator zijn — een infrastructuurrace om een vaste spread. Op perp-DEX's is de rol van liquidator gesloten, dus verschuift het spel naar handelen rond liquidaties: liquidatieprijzen zijn berekenbaar uit open posities, geforceerde flow raakt een zichtbaar orderboek, en geclusterde liquidatieniveaus worden zowel een magneet als een brandstofbron voor prijsbewegingen. Dat is dezelfde logica die CEX-liquidatiecascades verhandelbaar maakt — de dynamiek die we aanstipten in funding rates verpesten je leverage (leveragekosten zijn wat posities richting de afgrond duwt) en in pump-and-dump-mechanica van shitcoins (gemanipuleerde pushes de liquidatieclusters in). De volledige behandeling van cascades als signaal — het detecteren van hun vorming, het meten van hun brandstof, het verhandelen van de overshoot — is het onderwerp van het volgende artikel in deze reeks.

Wat je moet onthouden

Geldmarkt-liquidatie is de zeldzame hoek van crypto waar alles legible is: de triggervoorwaarde is een formule, de prijs is een door governance vastgestelde constante, het startschot is een oracle-transactie die je aan ziet komen. Die legibility bouwde in 2019–2021 een oprecht open business op, en toen — precies omdat alles legible was — prijsde concurrentie de edge weg tot infrastructuurkwaliteit en veilde de rest terug naar de protocollen. De mechanica blijft essentiële kennis: als je on-chain leent, is deze wiskunde jouw risicomodel; als je rond geforceerde flow handelt, vertellen oracle-cadans en close factors je wanneer en hoeveel; en als je toch de bot bouwt, bouw hem dan tenminste met de wetenschap waar het geld daadwerkelijk naartoe gaat.

Disclaimer: De informatie in dit artikel is uitsluitend bedoeld voor educatieve en informatieve doeleinden en vormt geen financieel, beleggings- of handelsadvies. Het handelen in cryptovaluta brengt een aanzienlijk risico op verlies met zich mee.

Auteurs

Eugen Soloviov
Eugen Soloviov

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.

Newsletter

Blijf de markt voor

Abonneer je op onze nieuwsbrief voor exclusieve AI-handelsinzichten, marktanalyses en platformupdates.

We respecteren je privacy. Je kunt je op elk moment afmelden.