Hoe gebruik je 'Pytest' voor je trading bot functies?

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 bot draait, je ziet percentages vliegen, en opeens crasht alles. Pijnlijk. Met Pytest check je je trading bot functies voor ze live gaan, zonder dat je elke keer handmatig moet klikken en hopen.

Zo voorkom je dat je broker-API je positie op het verkeerde moment sluit of dat je risicomanagement-script een foutieve stop-loss berekent. We gaan dit samen opbouwen, stap voor stap, in helder Nederlands, zonder gedoe. Je hoeft geen testexpert te zijn; je wilt gewoon betrouwbare bots die niet in de soep lopen.

Wat je nodig hebt

Begin met een simpele set tools die je trading workflow stabiel houden. Je hebt geen dure spullen nodig, maar wel de juiste. Reken op ongeveer 30 minuten om alles te installeren en je eerste test te laten draaien. Budget: €0 voor de tools, tenzij je broker-API-toegang betaalt (meestal gratis voor testaccounts).

  1. Python 3.11 of nieuwer, lokaal geïnstalleerd via pyenv of je OS.
  2. Een virtuele omgeving (venv) per project, om dependencies gescheiden te houden.
  3. Pytest en pytest-mock: installeer met pip install pytest pytest-mock.
  4. Een broker-API die je kunt mocken, bijvoorbeeld Interactive Brokers (TWS API), Degiro API of Binance API.
  5. Een backtesting-omgeving (Backtrader, Lean/QuantConnect, of je eigen engine) voor repeatable data.
  6. Een editor (VS Code of PyCharm) en Git voor versiebeheer.

Stap 1: je projectstructuur opzetten

Goede tests starten met een logische indeling. Zorg dat je bot-logica gescheiden is van je broker- en data-laag, zodat je functies makkelijk kunt testen zonder live connecties.

  1. Maak een map trading_bot met daarin src, tests en data.
  2. In src: leg modules voor risk.py, orders.py, strategy.py en broker_api.py.
  3. In tests: maak per module een testbestand, bijvoorbeeld test_risk.py.
  4. Gebruik conftest.py in de tests-map voor fixtures die je vaak hergebruikt (bijv. een mock broker).
  5. Houd je data in data/sample_bars.csv met 1.000–5.000 rijen voor snelle tests.

Veelgemaakte fout: alles in één groot bestand proppen. Dat maakt tests traag en lastig te vinden.

Splits op per verantwoordelijkheid, dan blijft het overzichtelijk. Tip: begin klein. Test één functie per keer. Je zult zien dat je snel vertrouwen opbouwt.

Stap 2: schrijf je eerste test met Pytest

Pytest draait om simpele functies die beginnen met test_. Je schrijft een test die een functie aanroept, de output checkt en eventuele uitzonderingen vangt.

  1. Open tests/test_risk.py en schrijf een test voor je positieberekening.
  2. Gebruik een fixture voor een standaard portfolio van €10.000.
  3. Test een berekening: risicopercentage van 1% op een €50.000 positie = €500 risico.
  4. Voeg een test toe voor foute input (bijv. negatief kapitaal) en verwacht een ValueError.
  5. Draai de test met pytest -v en kijk of de output groen is.

Concrete maatvoering: houd tests onder de 100 ms per stuk. Gebruik mock data van 1.000 candles, niet 1 miljoen. Tijdsindicatie: je eerste test is klaar in 10 minuten.

Als je test faalt, lees dan de foutmelding. Pytest vertelt precies welke waarde niet klopt.

Veelgemaakte fout: tests die te veel tegelijk checken. Breek op in aparte tests voor positief, negatief en randgeval.

Stap 3: mock je broker-API en externe calls

Je wilt geen live API-aanroepen tijdens tests. Gebruik pytest-mock om calls te vervangen door voorspelbare data.

  1. Importeer je broker-module en gebruik mocker.patch om de API-call te vervangen.
  2. Mock een get_position(symbol) call zodat deze een vaste positie teruggeeft, bijv. 100 aandelen AAPL.
  3. Mock een place_order call zodat deze een succesvol antwoord geeft zonder echt te traden.
  4. Test of je bot de mockwaarde correct verwerkt en geen uitzondering gooit.
  5. Voeg een test toe voor een time-out of error response van de API.

Specifiek voorbeeld: voor IB TWS API mock je ib.reqPositions() naar een lijst met een fictieve positie. Voor Binance mock je client.get_account() naar een vaste JSON. Tijdsindicatie: 15–20 minuten. Veelgemaakte fout: mock niet specifiek genoeg. Gebruik exacte paden naar de functie die je wilt mocken, anders werkt je test niet.

Stap 4: test je risicomanagement en orderlogica

Risk management is het hart van je bot. Test je positiebepaling, stop-loss en take-profit, en je risicobudget.

  1. Test je risicoberekening: risico per trade = kapitaal × risicopercentage (bijv. €10.000 × 1% = €100).
  2. Test je stop-loss: bij entry €50 en stop €48, risico per aandeel = €2. Check of je aantal aandelen klopt.
  3. Test je order types: market, limit, stop-market. Mock de broker en controleer of de juiste order wordt geplaatst.
  4. Test position sizing: maximum 2% van je equity per trade, maximaal 5 open posities.
  5. Test fouten: probeer een order te plaatsen zonder voldoende cash; verwacht een foutmelding.

Gebruik concrete getallen: risicopercentage 1–2%, max drawdown 10%, SL 1–3% per trade.

Tijdsindicatie: 20–30 minuten voor een stevige set tests. Veelgemaakte fout: risico per trade vergeten te delen door het stop-verschil. Dat levert een verkeerd aantal aandelen op. Check altijd de formule.

Stap 5: backtesting integreren in je tests

Backtesting geeft je herhaalbare data voor je strategie. Gebruik een historische sample van 1.000–5.000 candles en test je strategie-logica zonder live data.

  1. Laad een CSV met OHLCV-data in je backtesting-engine (bijv. Backtrader).
  2. Schrijf een test die je strategie draait op de sample-data en de output checkt (bijv. aantal trades, winst/verlies).
  3. Mock de broker-API binnen je backtest zodat er geen orders naar de live broker gaan.
  4. Test parameters: verander de stop-loss van 1% naar 2% en controleer of de resultaten logisch zijn.
  5. Voeg een test toe voor slippage en kosten (bijv. €2 per trade en 0,1% fee).

Specifieke maatvoering: gebruik 1.000 candles voor snel draaien, 5.000 voor een realistischere test. Tijdsindicatie: 30–45 minuten. Veelgemaakte fout: backtests zonder kosten meenemen. Zonder fees lijkt je bot winstgevend, maar in de praktijk verliest hij geld.

Stap 6: debug en verbeter je tests

Tests moeten je helpen sneller te vinden waar het misgaat. Gebruik Pytests debugger en output om fouten in je trading bot op te sporen voordat ze geld kosten.

  1. Gebruik pytest -v -s om print-statements te zien en tijdens tests te debuggen.
  2. Voeg fixtures toe voor herbruikbare data, zoals een mock portfolio of een standaard candle-set.
  3. Check edge cases: lege data, extreme prijzen, time-outs, en net-na-sluiting orders.
  4. Meet performance: als een test langer dan 100 ms duurt, verklein je dataset of optimaliseer je code.
  5. Log fouten duidelijk: gebruik custom error messages zodat je snel ziet wat er mis is.

Veelgemaakte fout: te veel logs waardoor je de kern mist. Zorg voor een reproduceerbare omgeving met een requirements.txt of Poetry file, en log daarnaast alleen wat nodig is voor debugging.

Een goede test faalt met een duidelijke boodschap, niet met een onbegrijpelijke stack trace.

Verificatie-checklist

Gebruik deze lijst om te controleren of je klaar bent voor de live bot. Vink elk item af.

  • Elke kernfunctie (risico, orders, strategie) heeft minstens één test.
  • Broker-API calls zijn gemocked en tests draaien zonder netwerk.
  • Backtests draaien op sample-data en geven logische resultaten.
  • Edge cases (lege data, foute input, time-outs) zijn getest.
  • Performance is OK: tests onder 100 ms per stuk, totaal onder 5 seconden.
  • Tests draaien in CI (GitHub Actions of vergelijkbaar) bij elke commit.
  • Je risicoregels (1–2% per trade, max 5 posities) zijn gecheckt met concrete getallen.
  • Foutmeldingen zijn begrijpelijk en helpen je snel debuggen.

Als je deze checklist afrondt, draai je met vertrouwen live. Je weet nu dat je bot getest is op de cruciale onderdelen: risicomanagement, orderlogica, broker-API en backtesting. Voorkom bovendien veelgemaakte Python fouten in je trading scripts, zodat je niet handmatig hoeft in te grijpen. Veel succes met testen en traden.

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 →