De psychologie van een 'Live Bug': Rustig blijven als er geld op het spel staat
Stel je voor: het is 3 uur ’s nachts. Je bent net wakker geworden van een push-notificatie op je telefoon.
Je live trading bot op Binance of Interactive Brokers heeft zojuist €2.500 verloren in drie minuten.
Je hart bonkt in je keel. Je handen trillen als je de laptop opent. Dit is het moment waarop elke algoritmische trader vroeg of laat mee te maken krijgt: de 'Live Bug'.
Een Live Bug is niet zomaar een programmeerfout. Het is een fout die pas ontdekt wordt terwijl er echt geld op het spel staat.
Terwijl je backtests in Python met historische data perfect liepen, loopt de bot nu in de echte markt vast. Dit fenomeen is net zo veel psychologie als techniek. Het gaat over hoe je reageert onder druk, zonder de koele logica van een algoritme.
Wat is een Live Bug precies?
Een Live Bug is een onverwacht gedrag van je trading bot dat alleen optreedt tijdens het handelen met echt kapitaal via een broker API. In je backtesting omgeving met Python en libraries als Backtrader of Zipline leek alles perfect. Je winstcurve ging gestaag omhoog.
Maar nu, in de live markt, crasht de bot of voert hij duizenden transacties uit met een verkeerde marge-instelling.
Waarom gebeurt dit? Omdat de echte markt chaotischer is dan een historisch CSV-bestand.
Je API-verbinding met een broker zoals Kraken of Bitvavo kan vertragen. Een market order kan gedeeltelijk worden uitgevoerd. Een bug in de error-handling code zorgt ervoor dat de bot paniekerig blijft doorgaan met kopen wanneer de API een 'Rate Limit' foutmelding geeft.
Stel je voor dat je bot is gebouwd om te handelen op de BTC/EUR-paar.
Je backtest laat een jaarlijkse return zien van 15% met een drawdown van maximaal 8%. Maar in de live omgeving, tijdens een flash crash, probeert de bot een short positie te sluiten via de IBKR API. Door een bug in de timestamp-logica denkt de bot dat de order is mislukt en probeert het opnieuw. Binnen een minuut heb je drie keer zoveel positie als gepland.
Waarom rustig blijven letterlijk geld bespaart
De impact van een Live Bug is direct en voelbaar. Wanneer je bot fouten maakt, gaat het niet alleen om de verloren €500 of €2.000 van die ene trade.
Het gaat om de cascade van emotionele beslissingen die daarna volgen. De menselijke neiging om in te grijpen is groot, maar vaak destructief. Denk aan de psychologie van 'Loss Aversion'.
De pijn van €1.000 verliezen voelt twee keer zo sterk als de vreugde van €1.000 winnen.
Wanneer je een Live Bug ziet, wil je instinctief de stekker eruit trekken. Je sluit handmatig posities af, precies op het verkeerde moment. Je bot had misschien een herstelstrategie ingebouwd, maar door jouw tussenkomst realiseer je het verlies pas echt. Een ander gevaar is 'Revenge Trading'.
Nadat de bot een fout heeft gemaakt, ga je zitten en probeer je de fout te fixen terwijl de markt beweegt. Je past de code aan zonder grondig te testen en zet de bot weer aan.
Dit is het financiële equivalent van autorijden terwijl je huilend met je handen voor je ogen zit. Het resultaat is bijna altijd meer schade. Er is een duidelijk verschil tussen een bug in de backtest-fase en een bug in de live-fase.
In een backtest met Python loop je misschien tegen een 'Look-ahead bias' aan.
Dat is vervelend, maar het kost je niets. Een Live Bug bij een broker als DEGIRO of Saxo Bank kost je daadwerkelijk kapitaal. De emotionaliteit neemt toe naarmate het bedrag groter wordt.
Hoe een Live Bug er in de praktijk uitziet
Laten we een specifiek scenario bekijken met een Python-bot die gebruikmaakt van de CCXT-library voor crypto-handel.
Je bot is ingesteld om te handelen op basis van RSI-indicatoren. Tijdens de backtest liep alles soepel. Maar in de live-omgeving treedt er een 'race condition' op.
Stel, de markt beweegt razendsnel. Je bot stuurt een order naar de API van Binance.
De API bevestigt de order, maar door een vertraging in je Python-script (een zogenaamde latency issue), ontvangt je bot de bevestiging net te laat.
Het script denkt dat de order niet is uitgevoerd en stuurt opnieuw een order. Binnen seconden heb je een positie die 10 keer zo groot is als je risicomanagement toestaat. De financiële gevolgen zijn direct. Stel je risicobeheer is ingesteld op maximaal 1% van je totale kapitaal per trade.
Door de bug loop je plotseling 10% risico. Bij een account van €10.000 is dat €1.000 in gevaar, terwijl je backtest liet zien dat je nooit meer dan €100 risico liep.
Dit is een klassiek voorbeeld van een 'API disconnectie' of 'slippage' die niet is meegenomen in de simulatie. Een andere veelvoorkomende Live Bug is het ontbreken van 'Circuit Breakers'. In een backtest stop je de bot handmatig als het te hard gaat, maar in productie moet je ook weten hoe je latency issues op een Linux server debugt.
In live trading moet je code dit zelf doen. Als je geen maximum drawdown-limiet in je Python-script hebt gebouwd, kan een bug ervoor zorgen dat de bot blijft doorgaan met kopen terwijl de markt instort, in de hoop op een rebound die nooit komt.
Modellen voor mentale voorbereiding en prijsindicaties
Hoewel psychologie niet direct in euro's is uit te drukken, kun je wel een kostenplaatje hangen aan het niet hebben van een plan. Laten we kijken naar de kosten van het 'niet voorbereid zijn' versus het 'wel voorbereid zijn'. Stel, je bouwt een bot zonder mentale stoploss.
Een Live Bug zorgt voor een verlies van 5% op een account van €5.000.
Dat is €250 verlies. Als je geen plan hebt, volgen er vaak meer van dit soort dagen.
- Kritiek: De bot handelt verkeerd en verliest snel geld. Directe actie vereist (API sleutels intrekken).
- Waarschuwing: De bot loopt vast maar verliest geen geld. Monitor de situatie.
- Stilstand: De bot stopt met werken maar de markt is rustig. Log het en fix het later.
Gemiddeld kan een onbeheerste emotie een jaarlijkse return van 10% terugbrengen naar 0% of zelfs negatief. Er zijn verschillende 'modellen' van mentale paraatheid. Een populair model is de 'Triage-methode'.
Wanneer een bug optreedt, deel je het probleem in drie categorieën in:
De kosten voor het opzetten van een dergelijk systeem zijn laag. Het kost je tijd om de code te schrijven (ongeveer 5-10 uur extra programmeertijd), maar het bespaart je duizenden euro's aan emotionele fouten. Een ander model is de 'Paniek-Knop'. Dit is een apart script dat je via een hotkey of een tweede telefoon kunt activeren.
Wanneer je deze activeert, sluit het direct alle open posities bij je broker en zet het de bot stil. De investering hierin is minimaal (een paar uur coderen), maar de gemoedsrust is onbetaalbaar.
Je weet dat er een vangnet is. Prijsindicaties voor professionele ondersteuning variëren.
Een freelance Python-developer die gespecialiseerd is in trading bots vraagt tussen de €75 en €150 per uur voor het debuggen van live systemen. Een enkele bug-fix sessie kan snel oplopen tot €500. Zelf leren rustig blijven en je eigen bugs oplossen bespaart dus direct geld op consultancy-kosten.
Praktische tips voor de volgende crash
Het belangrijkste is voorbereiding. Je emoties bedriegen je wanneer er geld op het spel staat.
Je hebt een koele, berekenende benadering nodig, net als je algoritme. Hier zijn concrete stappen die je vandaag nog kunt nemen.
Test je error-handling extreem streng en valideer je trading bot functies met Pytest. Schrijf Python-scripts die expres de API-verbinding verbreken tijdens je testfase. Zie hoe je bot reageert.
Doet hij een backoff (wacht hij even) of blijft hij eindeloos proberen? Een goede backoff-strategie voorkomt dat je broker je IP-adres blokkeert of je account bevroest. Check ook wat te doen als je bot een 'Ghost Trade' opent. Gebruik een 'Paper Trading' omgeving voordat je live gaat. Dit is een demo-omgeving bij brokers zoals Interactive Brokers of eToro.
Hier handel je met nepgeld maar echte marktdata. Zorg dat je bot hier minimaal 2 weken stabiel draait zonder bugs voordat je echt geld inzet.
Let op: zelfs hier kunnen API-verschillen optreden, maar het filtert de grootste fouten eruit. Stel harde limieten in op broker-niveau.
De meeste brokers laten je een maximum dagverlies instellen. Bij Bitvavo of Binance kun je limieten instellen voor het aantal API-aanvragen per minuut. Zet deze op een niveau dat veilig is voor je bot, maar laag genoeg om een bug te stoppen voordat hij je account leegtrekt.
Een limiet van €1.000 per dag is een veilige start voor een klein account.
Accepteer dat bugs horen bij algorithmic trading. Zelfs de grootste fondsen hebben last van 'flash crashes' door softwarefouten. Het doel is niet om perfectie te bereiken, maar om veerkrachtig te zijn.
Wanneer de volgende Live Bug toeslaat, adem je diep in, check je de 'Triage'-lijst, en grijp je alleen in als het echt nodig is. Je hebt een plan. Je bent er klaar voor.
