Stress-testing: Wat gebeurt er met je bot bij een renteverhoging van 2%?
Je bot draait als een zonnetje. De markten zijn rustig, de winst loopt binnen.
En dan komt het nieuws: de ECB verhoogt de rente met 2 procentpunt.
Niet 0,25, maar een volle twee procent. In één klap verandert de hele markt. Je bot, die gisteren nog perfect presteerde, zit nu midden in een aardverschuiving.
Hoe weet je of hij dit overleeft? Dat is precies wat stress-testing doet: je bot blootstellen aan extreme, onrealistische scenario’s om te zien waar hij breekt. In dit geval: een renteshock van 2%.
Wat is stress-testing eigenlijk?
Stress-testing is het simuleren van extreme marktomstandigheden om te zien hoe je handelsbot reageert.
Het is niet hetzelfde als normaal backtesten. Bij backtesting kijk je naar het verleden: hoe had je bot gepresteerd in de afgelopen 5 jaar? Bij stress-testing vraag je: wat gebeurt er als er iets gebeurt dat nog nooit is gebeurd?
Een renteverhoging van 2% is zo’n scenario. De ECB heeft dat in recente decennia niet gedaan.
Het is een extreme shock voor de hele financiële markt. Je bot is gebouwd voor normale markten.
Hij reageert op prijsbewegingen, volume, technische indicatoren. Maar een renteshock verandert de basisregels van het spel. Obligaties worden plotseling veel aantrekkelijker. Aandelen dalen. Valuta’s schudden heen en weer. Je bot moet hierop anticiperen, maar als hij niet getest is op deze scenario’s, loopt hij vast of maakt hij verliezen die je nooit had verwacht.
Waarom een renteshock van 2% zo impactvol is
Een renteverhoging van 2% is niet zomaar een cijfertje. Het beïnvloedt alles.
Ten eerste: de financieringskosten. Veel handelsstrategieën, zoals carry trades of leverage-posities, vertrouwen op lage rentes. Een plotselinge stijging van 2% maakt deze strategieën opeens veel duurder.
Je bot kan hierdoor onverwachte verliezen maken, zelfs als de markt zelf niet zo extreem beweegt. Ten tweede: de waardering van activa.
Obligaties worden direct meer waard door de rentestijging. Aandelen dalen vaak, omdat investeerders overstappen naar veiligere obligaties.
Je bot, die bijvoorbeeld op basis van momentum in aandelen handelt, kan hierdoor in een val lopen. Als hij niet is gebouwd om te reageren op rentewijzigingen, zal hij doorgaan met kopen terwijl de markt daalt. Ten derde: liquiditeit. Een renteshock kan de markt minder vlot maken.
Handelaren worden voorzichtig, spreads groeien. Je bot, die normaal snel in- en uitstapt, kan vastlopen in een illiquide markt. Dit leidt tot extra kosten en vertragingen, wat de winstgevendheid verder aantast. Spreid je kansen met meerdere strategieën om dit risico te beperken.
Hoe je een stress-test opzet voor je bot
Om een stress-test uit te voeren, begin je met je backtesting-omgeving. Gebruik een Python-omgeving met bibliotheken zoals Backtrader of Zipline.
Deze tools laten je historische data simuleren, maar je kunt ook eigen scenario’s bouwen. Voor een renteshock van 2% pas je de historische data aan: voeg een plotselinge rentestijging toe aan een bepaalde datum in het verleden, of simuleer een nieuwe periode vanaf nul. Stel je voor: je bot handelt op basis van een Python-script dat gebruikmaakt van de API van Interactive Brokers.
Je script haalt historische data op via de API en voert transacties uit.
Voor de stress-test voeg je een parameter toe: een rentestijging van 2% op dag 100 van de simulatie. Je laat de bot draaien en kijkt wat er gebeurt. Hoe reageert hij op de plotselinge wijziging in obligatieprijzen?
Hoe verandert zijn risicomanagement? Een praktische aanpak is om gebruik te maken van de ‘what-if’-functies in je backtesting-tool.
In Backtrader kun je een custom feed maken die de rente-ontwikkeling simuleert.
Je kunt ook de yield curve aanpassen om de impact op verschillende looptijden te zien. Dit geeft je een gedetailleerd beeld van hoe je bot reageert op de renteshock.
Modellen en prijsindicaties voor je stress-test
Er zijn verschillende modellen die je kunt gebruiken om de impact van een renteshock te meten.
Een eenvoudig model is de ‘duration’-aanpak. Obligaties hebben een looptijd (duration) die aangeeft hoe gevoelig ze zijn voor rentewijzigingen. Een obligatie met een duration van 10 jaar verliest ongeveer 10% in waarde bij een rentestijging van 1%.
Bij 2% is dat 20%. Zorg dat je bij het instellen van je 1% risico per trade altijd anticipeert op deze volatiliteit in je algoritme.
Een ander model is de ‘factor exposure’-aanpak. Hierbij kijk je naar hoe je bot is blootgesteld aan verschillende factoren, zoals rente, valuta en aandelen.
Je kunt deze blootstelling meten met behulp van een Python-script dat gebruikmaakt van de pandas-bibliotheek. Voeg een renteshock toe aan je factor-model en bereken de impact op je portfolio. Dit geeft je een idee van welke posities het meest kwetsbaar zijn. Voor prijsindicaties: stel je voor dat je bot handelt in Duitse Bund-futures.
Een 2% renteshock zou de prijs van een 10-jaars Bund met ongeveer €200 per contract laten dalen (afhankelijk van de exacte duration). Als je bot 10 contracten aanhoudt, is dat een verlies van €2.000 in één dag. Zulke getallen helpen je om de impact te visualiseren en je risicomanagement aan te passen.
Praktische tips voor het testen en verbeteren
Begin klein. Test eerst met een enkele positie en een eenvoudige strategie.
Gebruik een demo-account bij een broker zoals Interactive Brokers of Degiro om de impact te zien zonder echt geld te riskeren.
Zorg dat je bot is gebouwd om te reageren op rentewijzigingen. Voeg een rente-indicator toe aan je Python-script, bijvoorbeeld door de ECB-rente op te halen via een API. Pas je stop-loss en take-profit aan op basis van de nieuwe marktomstandigheden.
Gebruik realistische scenario’s. Een rentestijging van 2% is extreem, maar je kunt ook kleinere stappen testen, zoals 0,5% of 1%.
Zo zie je hoe je bot reageert op verschillende nivevens van schokken. Combineer dit met andere stress-scenario’s, zoals een beurscrash of een valutacrisis. Dit geeft je een volledig beeld van je bot’s veerkracht. Monitor je bot continu.
Zelfs na een succesvolle stress-test moet je de prestaties in de gaten houden.
Gebruik tools zoals Grafana of een custom dashboard in Python om je bot’s risicopositie realtime te volgen. Stel alerts in voor grote bewegingen in rentes of markten. En vergeet niet: risicomanagement is een doorlopend proces, niet een eenmalige test.
Een renteshock van 2% is een extreme test, maar het is een goede oefening om je bot klaar te maken voor de echte wereld. Door te testen, aan te passen en te verbeteren, zorg je dat je bot niet alleen in goede tijden presteert, maar ook overleeft als de markt opeens heel anders wordt. En dat is precies wat je wilt: een bot met een realistische risico-rendement verhouding die bestand is tegen de onvoorspelbare werkelijkheid.
