Triangular Arbitrage handleiding: Valutaverschillen op één exchange vinden
Je zit achter je scherm, kijkt naar drie paren op Binance en ziet iets raars: BTC/USDT, ETH/BTC en ETH/USDT bewegen niet synchroon. Dat gat is geld. Triangular arbitrage draait om die momenten waarop drie valuta’s op één exchange tijdelijk niet in evenwicht zijn.
Je koopt en verkoopt in een snelle driehoek, pakt de mismatch en sluit weer af zonder restposities.
In dit stuk leer je precies hoe je die kansen op één exchange vindt, test en – heel belangrijk – veilig uitvoert.
Wat je nodig hebt: materialen en voorwaarden
Begin met een exchange met diepe liquiditeit en snelle API’s. Binance of Kraken werken goed voor crypto-triangular trades.
Je hebt minimaal €500–€1.000 startkapitaal nodig om na fees nog winst te zien. Reken op 0,1%–0,2% totaalfee per driehoek (maker/taker en eventuele withdrawal fees tellen niet mee bij same-exchange trades). Gebruik een broker/exchange met lage latency.
Een VPS dicht bij de exchange (bijvoorbeeld AWS in Frankfurt voor Kraken of Tokyo voor Binance) scheelt 20–80 ms per request.
Zorg dat je API-sleutels activeren: read-only voor prijzen, trade-permissie voor orders, maar nooit withdrawal. Beveilig met IP-whitelisting en 2FA. Software: Python 3.10+, ccxt (unified API), eventueel een lightweight backtesting-framework zoals vectorbt of een simpele eigen simulator.
Voor productie: een messagebus (RabbitMQ of Redis Streams) en een database (PostgreSQL of Timescale). Monitoring: Grafana + Prometheus of simpelweg cloudwatch-achtige logs.
Veiligheid eerst: begin met paper trading. Gebruik een testnet (Binance Testnet of Kraken Sandbox).
Draai minimaal 2 weken live-data paper trading voordat je echt geld inzet. Risicomanagement is je tweede natur: max risk per trade, max exposure per driehoek, en kill-switch bij fouten.
Stap 1: kies je driehoek en begrijp de logica
Een triangular trade loopt altijd in drie benen: bijvoorbeeld USDT → BTC → ETH → USDT.
- Bepaal de basisvaluta (USDT of EUR). Kies een driehoek met voldoende volume: BTC/USDT, ETH/BTC, ETH/USDT is klassiek.
- Bekijk de orderboeken. Je hebt diepte nodig: minstens 5–10 levels per kant voor elke pair.
- Reken de implied cross-koers: ETH/USDT via BTC. Vergelijk met de directe ETH/USDT-prijs.
- Voeg fees toe: 0,1% taker per been is 0,3% totaal. Een marge van 0,2%–0,5% is reëel doelwit.
- Bepaal grootte: start klein (bijv. €100–€200 per trade) om slippage te meten.
Je start en eindigt in dezelfde munt. De kunst is om te zien of de product van de drie wisselkoersen groter is dan 1 (na fees). Als (BTC/USDT) × (ETH/BTC) × (USDT/ETH) > 1 + fees, is er sprake van winstgevende crypto arbitrage.
Veelgemaakte fout: een driehoek kiezen met lage liquiditeit. Een smal ETH/BTC-boek zorgt voor 0,3%+ slippage en vreet je marge op. Tijdsindicatie: configuratie duurt 15–30 minuten, maar het begrijpen van je driehoek kan een uur duren.
Stap 2: data halen en synchroniseren
Je hebt real-time tickdata en orderboekdata nodig. Met ccxt haal je in één call de bid/ask van de drie paren.
- Installeer ccxt:
pip install ccxt. Test de API: vraag een ticker en een orderboek op. - Haal voor elk paar de top 5–10 levels op. Voor Binance:
exchange.fetch_order_book('BTC/USDT', limit=10). - Synchroniseer tijd: log server time vs. exchange time. Max verschil: 50 ms.
- Meet latency: stuur een ping naar de exchange endpoint en log round-trip time. Doel: <100 ms per request.
- Bewaar tickdata met timestamp in een database. Gebruik een tabel met: timestamp, pair, bid, ask, volume.
Synchroniseer de clocks: gebruik NTP op je VPS en log de timestamps. Veelgemaakte fout: vergeten de juiste symbolen te gebruiken. Binance gebruikt ‘BTC/USDT’ maar soms ‘BTC-USDT’ in endpoints.
Test elk paar apart. Tijdsindicatie: 30–45 minuten voor een werkende data-pijplijn.
Stap 3: de arbitrage-check en berekening
Reken elke seconde de implied koers. Voor USDT → BTC → ETH → USDT: Formule: implied_usdt = (1 / btc_bid) × (1 / eth_btc_ask) × eth_usdt_bid
Vergelijk met 1. Als implied_usdt > 1 + fees, is er een kans.
Fees reken je per been: 0,1% taker = 0,001. Voor drie benen: 1,003.
- Haal bids en asks per paar: BTC/USDT (bid/ask), ETH/BTC (bid/ask), ETH/USDT (bid/ask).
- Bereken de driehoek in beide richtingen: USDT→BTC→ETH→USDT en USDT→ETH→BTC→USDT.
- Pas slippage toe op basis van orderboekdiepte: voor €200 volume kijk je naar level 1–3. Schat extra 0,05%–0,1% slippage.
- Bepaal minimale marge: pas trades toe boven 0,2% na fees. Lager is riskant door fixed kosten en afronding.
- Log elke berekening met timestamp en winstpercentage. Bewaar voor analyse.
Dus doel: implied_usdt > 1,0035–1,005 (afhankelijk van spread en slippage). Veelgemaakte fout: vergeten het juiste been te kiezen (bid vs. ask). Koop altijd tegen ask, verkoop tegen bid. Bepaal met de Z-score wanneer de spread afwijkt. Tijdsindicatie: rekenloop van 1–2 seconden per cyclus op een gemiddelde VPS.
Stap 4: orderuitvoering en risicomanagement
Zodra de check slaat, leg je drie orders in één keer. Snelheid is belangrijk, maar veiligheid nog meer.
- Stel een max ordergrootte in: bijv. €200 per been of 1% van je totale kapitaal per driehoek.
- Plaats de orders in de juiste volgorde: eerst het eerste been, dan het tweede, dan het derde. Of gebruik een batch-order als je exchange dat ondersteunt.
- Set time-in-force: IOC (Immediate Or Cancel) of FOK (Fill Or Kill) om te voorkomen dat je half blijft hangen.
- Monitor slippage per trade: log de werkelijke gevulde prijs versus de gevraagde prijs. Stop bij >0,2% slippage drie trades op rij.
- Activeer kill-switch: als een order niet binnen 500 ms filled, annuleer de rest en log de fout.
Gebruik limit orders om te voorkomen dat je tegen een slechte prijs market-ordert. Risicoregels: max 5 open posities tegelijk, max 2% totaal exposure per keer. Zet een daily loss-limiet van 1% van je kapitaal.
Bij overschrijding: stop de bot en analyseer. Veelgemaakte fout: te grote orders zonder rekening te houden met diepte.
Bij €500 op een smal ETH/BTC-boek loop je 0,3%+ slip. Tijdsindicatie: orderuitvoering 100–300 ms per trade, totaal 0,5–1 seconde voor de driehoek.
Stap 5: backtesten en optimaliseren
Backtesten bij triangular arbitrage is anders dan bij trendstrategieën. Je simuleert orderboekdiepte en fees, niet alleen close-prijzen.
- Verzamel historische orderboekdata (top 10 levels) voor de drie paren, minimaal 2 weken.
- Bouw een simulator die per tick de arbitrage-check draait en realistische slippage toepast op basis van volume en diepte.
- Voeg fees toe per been (0,1% taker) en fixed costs (eventuele minimum fees).
- Run de backtest en meet: winst per dag, aantal trades, gemiddelde marge na fees, drawdown, en winst na slippage.
- Optimaliseer voorstelling: test verschillende marge-drempels (0,15%, 0,2%, 0,3%) en ordergroottes (€100, €200, €500).
Gebruik vectorbt of een eigen Pandas-simulator. Log elke trade met: timestamp, driehoek, grootte, gevulde prijzen, fees, werkelijke winst.
Visualiseer met Grafana of matplotlib. Veelgemaakte fout: backtesten op close-prijzen alleen. Dat geeft te optimistische resultaten.
Test altijd met bid/ask en diepte. Tijdsindicatie: backtest duurt 10–30 minuten voor 2 weken data, afhankelijk van je code.
Verificatie-checklist voor livegang
- API-sleutels: read + trade, geen withdrawal, IP-whitelisting aan.
- Paper trading minimaal 2 weken met live data.
- Latency <100 ms per request; VPS nabij exchange.
- Orderboekdiepte gecheckt voor elk paar; minimaal 5 levels.
- Fees correct ingebouwd: 0,1% per been, totaal 0,3%.
- Slippage model getest: 0,05%–0,1% voor kleine orders, meer voor grotere.
- Risico-limieten ingesteld: max ordergrootte, max exposure, daily loss-limiet.
- Kill-switch actief en getest: annuleer bij fout of vertraging.
- Monitoring draait: logs, dashboards, alerts bij afwijkingen.
- Backup plan: handmatige override, rollback naar paper trading bij problemen.
Als je deze checklist aftikt, ben je klaar om je eerste echte triangular arbitrage trades op één exchange te draaien. Begin klein, meet alles en schaal langzaam op. De kunst zit hem in discipline, snelle data en strak risicomanagement – verken ook eens onze gids over pairs trading voor meer strategieën, want het draait niet om de grootste order, maar om de beste uitvoering.
