Wat is 'Unit Testing' en waarom is het verplicht voor financiële code?

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Foutmeldingen & Debugging Live Bots · 2026-02-15 · 6 min leestijd

Je staat te popelen. Je hebt een nieuwe handelsstrategie gebouwd in Python, je backtest ziet er prachtig uit met een Sharpe ratio van 1.8, en je hebt je bot klaar om te koppelen aan de API van Interactive Brokers of Binance. Je bent er klaar voor om geld te verdienen. Maar voordat je de live-knop indrukt, is er één cruciale stap die je niet mag overslaan, en die het verschil kan beteken tussen een stabiele bot en een financiële ramp: Unit Testing.

Wat is Unit Testing eigenlijk?

Stel je voor dat je een precisie-instrument bouwt, zoals een horloge. Je zou niet zomaar alle tandwielen in elkaar draaien en hopen dat het loopt.

Nee, je controleert elk onderdeel afzonderlijk. Is dit tandwiel groot genoeg? Draait het soepel?

Doet het wat het moet doen? Unit Testing is precies dat, maar dan voor je code. In de wereld van algoritmische trading is een "unit" een klein, onafhankelijk stukje van je bot.

Het kan een functie zijn die de RSI-indicator berekent, een stukje code dat een stop-loss order plaatst, of een logica die bepaalt of de markt bullish is. Unit Testing betekent dat je voor elk van deze kleine stukjes een eigen test schrijft om te controleren of het precies doet wat jij verwacht. Je schrijft dus een mini-programma dat je hoofdprogramma test. Je voert deze testen uit voordat je ook maar één echte euro in de markt zet.

Het doel is simpel: isoleren, controleren en valideren. Als je functie voor het berekenen van een Moving Average fouten maakt op historische data, gaat je hele strategie mis zodra de markt beweegt.

Waarom is dit verplicht voor financiële code?

Financiële code is niet zomaar code. Een bug in een website betekent misschien dat een knop er raar uitziet; een bug in je trading bot kan je account leegtrekken in enkele seconden.

Stel je voor dat je stop-loss functie een foutmelding geeft bij een hoge volatiliteit en de order niet uitvoert. Je verlies loopt op van €50 naar €500, terwijl je bot vastloopt. De markten zijn meedogenloos.

Ze laten geen ruimte voor gokken. Als je bot verbonden is met een broker API via een REST-verbinding, moet elk request perfect zijn.

Een verkeerd getal in je payload, een verkeerd formaat voor een timestamp, en je order wordt geweigerd of erger, verkeerd uitgevoerd. Unit tests vangen deze fouten voordat ze echt geld kosten. Denk ook aan risicomanagement.

Je risico-berekening moet waterdicht zijn. Als je functie die het maximale risico per trade berekent, per ongeluk een deling door nul doet of een verkeerde hefboom toepast, zet je je kapitaal op het spel.

Testen is niet alleen handig; het is een morele plicht tegenover jezelf en je investeerders.

Bovendien, als je je bot later wilt aanpassen - misschien voeg je een nieuwe filter toe of verander je de tijdsframe - wil je niet opnieuw alles moeten nakijken. Unit tests geven je vertrouwen. Je weet dat je aanpassingen niet bestaande logica breken. Het is je veiligheidsnet.

Hoe werkt het in de praktijk? Een concrete aanpak

Oké, genoeg theorie. Laten we kijken hoe dit eruitziet voor een Python trading bot.

Stel, je gebruikt bibliotheken zoals Pandas voor data, NumPy voor berekeningen, en misschien een framework als Backtrader of een eigen script voor live trading. Je schrijft een test voor elke functie.

Neem een functie die een simple moving average (SMA) berekent. Je test zou er zo uit kunnen zien: je neemt een kleine lijst met getallen, bijvoorbeeld [10, 20, 30, 40, 50], en je verwacht een SMA van 5 over de laatste 3 data punten van 40. Je schrijft een test die deze input geeft en checkt of de output klopt. Gebruik een testing framework zoals pytest.

Het is gratis en super makkelijk. Je installeert het met pip install pytest, en dan schrijf je een bestandje, bijvoorbeeld test_indicators.py.

In dat bestand definieer je een functie test_sma_berekening(). Binnen die functie roep je je SMA-functie aan met je testdata en gebruik je assert om de output te vergelijken met wat je verwacht. Voor API-interacties test je de logica zonder echt te handelen.

Je mockt de API-call. Dat betekent dat je een nep-antwoord simuleert van je broker, zoals die van Alpaca of Kraken.

Je test of je bot correct reageert op een succesvolle orderbevestiging, een foutmelding vanwege onvoldoende saldo, of een time-out.

Dit doe je met libraries als unittest.mock. En voor risicomanagement? Test elke berekening. Als je functie position size berekent op basis van je account equity en risico percentage (bijvoorbeeld 1% risico per trade), geef dan testinputs zoals een equity van €10.000 en een stop-loss van 2%. Let hierbij goed op het voorkomen van afrondingsfouten in je berekeningen.

Je verwacht een bepaalde positiegrootte. Schrijf een test die dit checkt en faalt als het afwijkt.

Varianten en modellen: van eenvoudig tot complex

Unit Testing kan op verschillende niveaus. Voor beginners is een eenvoudige benadering vaak voldoende: test elke functie afzonderlijk met vaste inputs.

Dit kost niets, behalve wat tijd, en het voorkomt de meeste basale fouten. Denk aan het controleren van prijsberekeningen of het parsen van JSON-data van een API. Als je bot complexer wordt, bijvoorbeeld met machine learning-modellen voor voorspellingen, kun je unit tests uitbreiden met property-based testing.

Hierbij gebruik je libraries zoals Hypothesis (ook gratis) om automatisch duizenden testinputs te genereren.

Je test niet alleen één getal, maar een range aan mogelijkheden, zoals wisselende volatiliteit of prijspieken. Voor live bots met echte brokers is er een kostenaspect. Sommige brokers rekenen voor elke API-call, dus je wilt integration testing uitvoeren om te zien of je bot echt praat met de broker sandbox, zonder live requests te sturen.

Gebruik mocken om dit te omzeilen. Als je wel live wilt testen, doe dit dan op een paper trading account.

Veel brokers, zoals Interactive Brokers of MetaTrader, bieden dit gratis aan. Je riskeert geen echt geld, maar je test wel de echte API-omgeving.

Prijsindicaties voor tools: pytest en Hypothesis zijn volledig gratis. Voor geavanceerdere testing, zoals integratie met CI/CD-pipelines (bijvoorbeeld GitHub Actions), betaal je niets extra voor de basisversies. Als je een professionele broker-API gebruikt, zoals die van Saxo Bank, kunnen er kosten zijn voor toegang, maar de testing zelf blijft low-cost. Reken op €0-€50 per maand voor extra tools zoals een cloud test-server als je dat nodig hebt.

Praktische tips om direct te starten

Begin klein. Pak één functie uit je bot, bijvoorbeeld die voor het berekenen van winst of verlies, en schrijf er vandaag nog een test voor.

Gebruik pytest en een simpel script. Je zult versteld staan hoeveel fouten je direct vindt.

Integreer testen in je workflow. Schrijf een test voordat je de code schrijft, of direct erna. Doe dit voor elke nieuwe functie.

Gebruik een version control systeem zoals Git, zodat je je tests kunt opslaan en delen. Zo bouw je een bibliotheek van tests die je bot sterk maken.

Test niet alleen de happy path – wat er gebeurt als alles goed gaat – maar ook de fouten. Wat doet je bot als de API down is? Of als een prijs null is? Deze "edge cases" zijn waar de meeste bugs zitten.

Schrijf testen die deze scenario's afdwingen. Automatiseer je tests.

Stel een script in dat elke keer dat je code wijzigt, alle testen draait. Dit voorkomt dat je per ongeluk iets breekt. Voor Python bots kun je dit eenvoudig opzetten met een Makefile of een CI-tool.

Het bespaart je uren debugging later. Tot slot, wees niet bang om hulp te vragen.

Community's op forums zoals Reddit's r/algotrading of Stack Overflow zitten vol met Python-traders die test-ervaringen delen. Onthoud: unit testing is geen extra werk, het is je verzekering tegen verlies. Plan ook regelmatig code reviews in, want druk niet op die live-knop zonder het.

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Over Alex de Vries

Alex is een ervaren quantitatief analist en Python-ontwikkelaar die complexe trading concepten vertaalt naar begrijpelijke, praktische handleidingen voor zowel beginners als gevorderden.

Volgende stap
Bekijk alle artikelen over Foutmeldingen & Debugging Live Bots
Ga naar overzicht →