Wat is een 'Liquidation Price' en hoe voorkom je dit algoritmisch?
Een liquidatie. Het is het angstdroomscenario van elke crypto trader met een hefboom.
In een fractie van een seconde zie je je harde werk en kapitaal verdampen, zonder dat je er erg in had. Je orderboek was rood, de markt draaide en paf, je positie was weg. Het voelt oneerlijk, bijna persoonlijk. Maar vaak is het een simpele, voorspelbare wiskundige grens die je had kunnen vermijden.
De markt straft geen traders; de markt stopt simpelweg posities die het risico niet meer kunnen dragen. De oplossing ligt niet in een glazen bol, maar in code.
Algoritmische trading geeft je de kracht om deze emotie en paniek uit te schakelen en je liquidatieprijs te managen als een professional.
In deze guide bouwen we een simpel systeem in Python dat je helpt om op tijd te handelen en die ene, dodelijke liquidatie voor te zijn.
Stap 1: Je gereedschap klaarzetten
Voordat we een regel code schrijven, hebben we een stabiele basis nodig. We gaan niet gokken; we gaan bouwen.
- Python 3.8+: De taal waarin we onze logica schrijven. Zorg dat je deze geïnstalleerd hebt. Dit is je hoofdprogramma.
- Een broker API: Dit is de deur naar de markt. Kies een broker met een stabiele API en lage liquidatiekosten, bijvoorbeeld Bybit of Binance. Je hebt je API-sleutel en geheime sleutel nodig. Let op: gebruik bij voorkeur een 'read-only' sleutel voor het uitlezen van data en een aparte sleutel met beperkte rechten voor het plaatsen van orders.
- Jupyter Notebook: Dit is perfect om interactief te testen en je data te visualiseren. Je ziet direct wat er gebeurt.
- Python libraries: Installeer deze met
pip install pandas ccxt. 'Pandas' helpt je met data-analyse (het Excel voor programmeurs) en 'CCXT' is een bibliotheek die de taal van elke crypto-exchange vertaalt naar makkelijke Python-commando's. Het bespaart je uren werk.
Je hebt een paar dingen nodig die met elkaar praten. Denk aan een soort digitale hamer en aambeeld. Neem 15 minuten de tijd om je API-sleutels te koppelen en te testen of je een simpele prijsopvraag kunt doen. Een foutje hier kost je later hoofdpijn.
Stap 2: De liquidatieprijs berekenen
Voordat je een systeem bouwt om een probleem te voorkomen, moet je het probleem begrijpen. De liquidatieprijs is geen mysterie; het is een formule.
Het hangt af van je hefboom, je positierichting (long of short) en de door de broker berekende kosten.
- Voor een LONG positie (je koopt, prijs mag niet dalen):
Liquidatieprijs = Entry_prijs - (Maintenance Margin / Aantal contracts)
Als je een long op €25.000 hebt met 10x hefboom, en je broker eist een maint. margin van 0,5%, dan ligt je liquidatie ongeveer op €22.500 (afhankelijk van de exacte formule van je broker, soms tellen ze ook funding fees mee). - Voor een SHORT positie (je verkoopt, prijs mag niet stijgen):
Liquidatieprijs = Entry_prijs + (Maintenance Margin / Aantal contracts)
Short je op €25.000? Dan ligt je liquidatie dus boven je entry, rond de €27.500 bij 10x.
Hieronder de basisformules voor een lineair contract (USDT perpetual). Veel traders maken de fout om alleen naar hun entry te kijken. "Ik heb nog 5% ruimte." Dat klopt niet als de markt scherp beweegt.
De broker rekent namelijk met de 'Maintenance Margin', die groter wordt naarmate je positie groter is. Een positie van €100.000 vereist simpelweg meer onderhoudsmarge dan een van €1.000.
Onthoud dit: Liquidatie gebeurt niet op de cent, maar op het moment dat je 'Available Balance' (je bruikbare margin) op €0 komt.
Stap 3: Je eigen Liquidatie Monitor bouwen
Deze stap is de kern van onze operatie. We bouwen een scriptje dat constant je posities checkt. We gebruiken hier de CCXT bibliotheek om je data op te halen.
We gaan geen complexe grafieken bouwen, maar een simpele waarschuwing die afgaat als het gevaarlijk wordt.
import ccxt
import pandas as pd
import time
# Configuratie
exchange = ccxt.bybit({
'apiKey': 'JOUW_API_KEY',
'secret': 'JOUW_SECRET',
'enableRateLimit': True,
})
def check_liquidation_risk():
try:
# Haal je open posities op
positions = exchange.fetch_positions()
for pos in positions:
# We kijken alleen naar posities met een size groter dan 0
if pos['contracts'] > 0:
symbol = pos['symbol']
entry_price = float(pos['entryPrice'])
liquidation_price = float(pos['liquidationPrice'])
unrealized_pnl = float(pos['unrealizedPnl'])
# Haal de huidige marktprijs op
ticker = exchange.fetch_ticker(symbol)
current_price = float(ticker['last'])
# Bereken de afstand tot liquidatie in percentage
if pos['side'] == 'long':
distance = ((entry_price - liquidation_price) / entry_price) * 100
current_risk = ((entry_price - current_price) / entry_price) * 100
else: # short
distance = ((liquidation_price - entry_price) / entry_price) * 100
current_risk = ((current_price - entry_price) / entry_price) * 100
print(f"--- Positie: {symbol} ---")
print(f"Entry: €{entry_price}")
print(f"Liquidatie: €{liquidation_price}")
print(f"Risico buffer: {distance:.2f}%")
print(f"Huidige markt: €{current_price}")
# De waarschuwing
if distance < 5.0:
print(f"!! WAARSCHUWING: {symbol} is binnen 5% van liquidatie !!")
# Hier zou je een extra functie aanroepen, bv. een email sturen of een alert
else:
print(f"Status: OK (Nog {distance:.2f}% ruimte)")
print("-----------------------------")
except Exception as e:
print(f"Er ging iets mis: {e}")
# Check elke 60 seconden
while True:
check_liquidation_risk()
time.sleep(60)
Hier is een Python-voorbeeld dat je in Jupyter kunt draaien. Vervang 'JOUW_EXCHANGE', 'JOUW_API_KEY' en 'JOUW_SECRET' door je eigen gegevens.
Dit scriptje draait nu elke minuut. Als een positie binnen 5% van de liquidatieprijs komt, schreeuwt het script het uit. Je kunt dit eenvoudig uitbreiden met een Telegram-berichtje of email via API's, zodat je niet achter je scherm hoeft te zitten.
Stap 4: Automatische Preventie met Stop-Loss Orders
Een script dat alleen waarschuwt, is nuttig. Een script dat ingrijpt, is levensreddend.
De meeste brokers (zoals Bybit, Binance, Kraken) bieden een 'Stop Loss' order aan die je kunt koppelen aan je positie. Dit is je digitale parachute. Zodra je winst hebt gemaakt, wil je deze veilig van de exchange halen. Je moet je stop-loss strategisch plaatsen.
De fout die beginners maken is dat ze hun stop-loss precies op hun liquidatieprijs zetten. Dat is te laat.
Tussen je stop-loss en je liquidatieprijs zit de 'slippage'. In een crash beweegt de prijs sneller dan je order verwerkt kan worden.
Je order wordt uitgevoerd op €24.900, terwijl je liquidatie op €25.000 lag? Dan ben je alsnog geliquideerd omdat er geen kopers waren op dat moment. Het juiste protocol: Veel brokers hebben een 'Risk Limit' functie.
- Bereken je liquidatieprijs (zie Stap 2).
- Bepaal je maximale pijn: hoeveel verlies wil je maximaal nemen? Laten we zeggen 2% van je totale account.
- Zet je Stop Loss op een veilige marge van je liquidatieprijs. Als je liquidatie op €22.500 ligt, en je entry is €25.000, zet je stop-loss misschien op €23.000. Je accepteert een kleiner verlies om totale vernietiging te voorkomen.
- Gebruik bij voorkeur een Trailing Stop Loss. Als de prijs in je voordeel beweegt, beweegt je stop-loss mee op. Zo lock je winst terwijl je tegelijkertijd je liquidatiegrens verlegt.
Als je positie te groot wordt voor je account balance, mag je niet meer bijkopen. Gebruik dit! Zorg dat je, mede door de impact van stablecoins op je portfolio, nooit je maximale hefboom gebruikt.
Gebruik 3x of 5x op een 10x of 20x account. Dat geeft je een gigantische buffer.
Stap 5: Backtesten van je Risico Logica
Je hebt nu een script en een plan. Maar werkt het? Je wilt niet je echte geld gebruiken om erachter te komen dat je code een rekenfout maakte. Daarom moet je backtesten.
Backtesting betekent: je strategie toepassen op oude data om te zien wat er gebeurd zou zijn.
Je hebt historische data nodig. Via de API van je broker kun je 'candlesticks' (prijsdata per minuur of uur) ophalen.
Met Pandas kun je deze data laden. Het backtest-proces ziet er zo uit: Een veelgemaakte fout is het over-optimizen.
- Data laden: Haal de candles op van de afgelopen 3 maanden voor bijvoorbeeld BTC/USDT.
- Simuleren: Schrijf een loop die door elke candle gaat. Op elke candle check je: "Als ik hier een long had geopend op 10x hefboom, wat was dan mijn liquidatieprijs geweest?"
- Triggeren: Loop door de data heen en kijk of de 'low' van de candle ooit je liquidatieprijs heeft geraakt. Zo ja, was het een liquidatie of had je stop-loss het gered?
- Optimaliseren: Pas je stop-loss afstand aan in de simulatie. Test met 2%, 5% of 10% buffer. Welke buffer voorkomt liquidatie het beste zonder je winst te verknallen?
Je past je strategie zo aan de data aan dat hij perfect werkt op het verleden, maar faalt in de toekomst.
Zorg dat je test op data die je nog niet hebt gezien (out-of-sample testing). Een backtest duurt vaak seconden tot minuten, afhankelijk van de data-hoeveelheid.
Stap 6: De Verificatie-Checklist
Voordat je live gaat met je bot of je nieuwe risicomanagement-regels, loop je deze checklist af. Eerst controleren, dan pas vliegen. Als je deze stappen hebt doorlopen, ben je klaar voor algoritmische crypto trading en ben je niet langer een gokker die hoopt dat de markt niet naar beneden stort.
- API Rechten: Is je API-key ingesteld op 'Trade' maar niet op 'Withdraw'? (Veiligheid eerst!)
- Formules gecheckt: Heb je de liquidatieformule getest op een bestaande positie? Log in op de broker en vergelijk de uitkomst van je Python-script met de 'Liquidation Price' in de interface. Ze moeten overeenkomen (of heel dicht bij elkaar zitten).
- Stop-Loss Plaatsing: Weet je zeker dat je stop-loss order een 'Limit' order is en geen 'Market' order? Bij een Market order betaal je de 'taker fee' en loop je risico op slippen. Een Limit order geeft je meer controle.
- Funding Fees: Weet je hoeveel funding fee je positie per 8 uur kost? Bij een short positie betaal je soms, bij een long ontvang je soms. Dit verandert je liquidatieprijs langzaam. Je script moet dit idealiter meenemen.
- Alerts Actief: Is je Telegram of Email alert ingesteld en getest? Stuur jezelf een testberichtje.
- Emergency Fund: Heb je stablecoins (USDT/USDC) op je account staan om een margin call te voorkomen? Een kleine buffer van €100 kan een liquidatie van €1000 voorkomen.
Je bent een systeembeheerder die zijn posities beschermt met wiskunde en code.
Dat is het verschil tussen pro's en amateurs. Veel succes en trade veilig.
