Unit Testing voor trading bots: Hoe test je kleine stukjes code?

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Dev-Ops & Infrastructuur voor Traders · 2026-02-15 · 7 min leestijd

Stel je voor: je hebt een prachtige trading bot geschreven die moet scoren op de API van Interactive Brokers of Degiro. Je draait hem live en ineens gebeurt er iets geks. De bot koopt 1000 aandelen in plaats van 10, of hij sluit een positie net op het verkeerde moment.

Je kijkt in de code en ziet een klein foutje in de risicomanagement-functie.

Dat had je kunnen voorkomen met unit tests. Unit tests zijn als een veiligheidsnet: ze checken elk klein stukje code apart, voordat je het grotere geheel draait.

In dit stuk leer je hoe je dat doet, specifiek voor Python trading bots. Je hoeft geen programmeergenie te zijn om dit te begrijpen. We doen het stap voor stap, met concrete voorbeelden.

Je leert wat je nodig hebt, hoe je begint, en hoe je fouten opvangt.

Dit helpt je om je bot stabieler te maken en minder risico te lopen met je kapitaal. Laten we beginnen.

Wat je nodig hebt voor unit testing in Python

Voordat je code schrijft, zorg je dat je omgeving klaar is. Je hebt Python nodig, versie 3.8 of nieuwer.

Download het van python.org en installeer het. Check of het werkt door in je terminal 'python --version' te typen. Je ziet dan een versie zoals 3.10.0. Dat is je basis.

Installeer pytest. Dat is een populair testframework voor Python.

Typ 'pip install pytest' in je terminal. Het kost niets en is klaar in 2 minuten.

Gebruik geen oude versies; pytest 7.0 of hoger is stabiel. Je hebt ook een code-editor nodig, zoals VS Code (gratis) of PyCharm Community (gratis). Installeer de Python-extensie in VS Code voor betere ondersteuning.

Verder heb je je trading bot-code nodig. Als je nog geen bot hebt, begin dan met een simpele functie die een order berekent.

Bijvoorbeeld: een functie die het risico per trade uitrekent op basis van je account saldo. Gebruik libraries zoals numpy voor wiskunde en pandas voor data. Installeer ze met 'pip install numpy pandas'.

Als je met een broker-API werkt, zoals die van Interactive Brokers (IBKR), installeer dan 'ib_insync' via pip.

Dat kost niets extra. Zorg dat je een testaccount hebt bij je broker, met €1000 speelgeld, om te oefenen zonder echt geld te riskeren.

Tot slot, maak een aparte map voor tests. Noem die 'tests' naast je hoofdmap.

Dit houdt je code schoon. Tijd nodig: 15-30 minuten om alles te installeren. Veelgemaakte fout: vergeten om Python toe te voegen aan je systeem-PATH, waardoor commando's niet werken. Check dit door 'python' te typen in je terminal. Als het niet herkend wordt, herinstalleer Python en vink 'Add Python to PATH' aan.

Stap 1: Begrijp wat unit tests zijn en waarom ze belangrijk zijn

Unit tests checken een klein stukje code, zoals een enkele functie. Ze draaien die functie met bekende invoer en vergelijken de uitvoer met wat je verwacht.

Als het matcht, is de test geslaagd. Zo niet, dan weet je meteen waar het misgaat. Voor trading bots is dit essentieel omdat fouten in risicoberekeningen of orderlogica snel geld kosten.

Een verkeerde stop-loss kan honderden euro's verlies opleveren. Stel je voor: je hebt een functie die de stop-loss prijs berekent voor een aandeel.

Koopprijs €50, risico 2%. De stop moet op €49 zijn. Een unit test controleert dit. Je schrijft de test, draait hem, en als ie faalt, fix je de code.

Dit voorkomt dat je bot op een verkeerde API-call een verkeerde order plaatst. In Python schrijf je tests in bestanden die eindigen op '_test.py' of in aparte testmappen.

Begin klein. Pak een simpele functie uit je bot, zoals een die je portefeuille-saldo uitrekent. Test die eerst. Dit bouwt vertrouwen op.

Tijd nodig: 10 minuten om een eerste test te schrijven. Veelgemaakte fout: tests schrijven die te complex zijn, waardoor je snel frustreert.

Hou het simpel: één test per functie.

Unit tests zijn als een medische check-up voor je code: ze vinden problemen voordat ze pijn doen.

Stap 2: Schrijf je eerste unit test in Python

Maak een nieuw bestand in je tests-map, bijvoorbeeld 'test_risico.py'. Daarin schrijf je een test voor een risicofunctie.

Stel je hebt deze functie in je bot-code (bijvoorbeeld 'bot.py'): def bereken_stop_loss(koopprijs, risico_percent):
stop_prijs = koopprijs * (1 - risico_percent / 100)
return round(stop_prijs, 2) In 'test_risico.py' schrijf je dit:

from bot import bereken_stop_loss

def test_bereken_stop_loss():
resultaat = bereken_stop_loss(50, 2)
assert resultaat == 49.0 Dit importeert je functie, roept hem aan met €50 en 2% risico, en checkt of de stop op €49.00 uitkomt.

De 'assert' is je test: als het klopt, is het oké. Draai de test met 'pytest tests/test_risico.py' in je terminal.

Je ziet '1 passed' als het lukt. Voeg meer tests toe voor randgevallen. Test met risico 0% (stop op koopprijs), of met een negatief risico (moet een fout geven). Gebruik 'assert' voor verwachte waarden.

Tijd nodig: 20-30 minuten voor 3-5 tests. Veelgemaakte fout: vergeten te importeren wat je nodig hebt, waardoor 'ModuleNotFoundError' optreedt.

Check je imports altijd. Als je bot met API's werkt, test dan ook mock-data. Gebruik 'unittest.mock' van Python.

Bijvoorbeeld: simuleer een API-response van IBKR met een dummy-saldo van €5000. Zo test je zonder echte connectie.

Stap 3: Test specifieke trading-bot-onderdelen

Focus op delen die risico's dragen: orderberekeningen, risicomanagement, en API-calls. Voor orderberekeningen: test een functie die het aantal aandelen berekent op basis van risicobedrag.

Stel je risico is €100 per trade, en je stop-loss is 2% van de koopprijs. Bereken aantal aandelen: risico / (koopprijs * 0.02).

Schrijf een test die checkt of je bij €50 koopprijs 100 aandelen krijgt (€100 / (50*0.02) = 100). Voor API-interacties: gebruik mocks om de broker-API te simuleren. Installeer 'responses' via pip voor HTTP-mocks. Test bijvoorbeeld een functie die een order plaatst via de Degiro-API.

Simuleer een succesvolle response en check of de functie de juiste parameters stuurt (bijv. symbool 'AAPL', aantal 10, prijs €150).

Dit voorkomt dat je echte orders test met je €1000 testaccount. Risicomanagement is cruciaal. Test een functie die je totale exposure berekent.

Als je bot op meerdere posities draait, check of de som klopt. Voeg tests toe voor fouten: wat als de API-timeout geeft? Vergeet niet om je bot sessies actief te houden op een server met Tmux.

Gebruik 'pytest.raises' om exceptions te testen. Tijd nodig: 30-45 minuten per onderdeel.

Veelgemaakte fout: te veel afhankelijkheden testen in één keer. Splits het op: test één functie per test. Gebruik specifieke getallen uit je trading-wereld.

Test met prijzen zoals €150 voor Tesla-aandelen of €50 voor indexfondsen. Voor IBKR: test API-keys in een .env-bestand (gebruik python-dotenv). Hou je testaccount-saldo onder de €5000 om risico te minimaliseren.

Stap 4: Draai en onderhoud je tests

Als je tests geschreven hebt, draai ze regelmatig. Typ 'pytest' in je terminal (zonder bestandsnaam) om alle tests in de map te runnen.

Je ziet een overzicht: hoeveel tests, hoe lang het duurde, welke faalden. Stel een test faalt op een stop-loss berekening. Fix de code, draai opnieuw. Herhaal dit elke keer als je code wijzigt.

Integreer tests in je workflow en leer via versiebeheer met Git en GitHub hoe je jouw trading scripts veilig beheert. Gebruik GitHub Actions voor automatisch testen bij elke commit.

Maak een '.github/workflows/test.yml' bestand met regels om pytest te draaien. Dit is gratis en duurt 5 minuten om in te stellen.

Voor trading bots: test ook met historische data. Gebruik pandas om CSV-bestanden met koersdata te laden en je bot te simuleren. Vergeet niet SSH keys in te stellen voor veilige toegang tot je bot. Onderhoud je tests.

Verwijder oude als je code verandert. Voeg nieuwe toe voor bugs die je tegenkomt.

Tijd nodig: 10 minuten per dag om tests te draaien. Veelgemaakte fout: tests negeren na een faal, waardoor bugs blijven. Zet een reminder in je agenda: test elke vrijdag.

Een goede test-suite is als een backup voor je bot: het redt je als er iets misgaat.

Verificatie-checklist

  • Python geïnstalleerd en werkend (versie 3.8+).
  • Pytest geïnstalleerd en draait zonder fouten.
  • Eerste test geschreven voor een simpele functie (bijv. stop-loss).
  • Minimaal 3 tests per trading-onderdeel (risico, orders, API-mocks).
  • Tests draaien in minder dan 5 minuten voor je bot-code.
  • Geen import-fouten of onverwachte exceptions in tests.
  • Mock-data gebruikt voor API-calls om risico te vermijden.
  • Checklist nagelopen en alle items groen?
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 Dev-Ops & Infrastructuur voor Traders
Ga naar overzicht →