Hoe ga je om met 'Regime Switches' in je trading model?
Je zit achter je scherm, je Python-bot draait, en opeens verandert de markt totaal. De ene dag loopt je strategie als een trein, de volgende dag lijkt het wel of-ie op hol slaat.
Dat is geen toeval, dat is een regime switch. In deze handleiding leer je hoe je die marktveranderingen herkent en hoe je je algoritmische trading bot daarop aanpast, zonder dat je meteen je hele kapitaal op het spel zet.
Wat is een regime switch eigenlijk?
Een regime switch is simpelweg een moment waarop de markt van gedrag verandert. Je hebt rustige, stabiele periodes (lage volatiliteit) en plotseling heel bewegelijke markten (hoge volatiliteit).
In forex zie je dit bijvoorbeeld tijdens de Aziatische sessie versus de Londen/NYC overlap. Je bot moet dit herkennen, want wat gisteren werkte, werkt vandaag misschien niet meer. Stel je voor: je EUR/USD bot draait op een 15-minuten timeframe met een gemiddelde true range (ATR) van 10 pips.
Opeens schiet de ATR naar 25 pips door een ECB-announcement. Je risico per trade is nu ineens veel te groot.
Een regime switch is dus niet iets engs, maar iets meetbaars. Je kunt erop anticiperen als je weet hoe. De kunst is om je model flexibel te maken. Je wilt niet elke week je parameters handmatig bijstellen. Je wilt een bot die zegt: "Hé, de markt doet nu iets anders, pas je positiegrootte en stoploss aan." Dat begint met data.
Wat heb je nodig om regime switches te detecteren?
Voor je begint, zorg je dat je de juiste tools hebt. Dit is je basisuitrusting:
- Een broker met een stabiele API: Kies een broker zoals Interactive Brokers, OANDA of FXCM. Deze bieden real-time forex data via API en zijn geschikt voor Python-bots. Let op: bij CFD’s en opties geldt in Nederland dat 72% van de retailbeleggers verliest (bron 2 en 3). Gebruik dus nooit geld dat je niet kunt missen.
- Python-omgeving met de juiste libraries: Pandas, NumPy, TA-Lib (voor technische indicatoren), en eventeel scikit-learn voor machine learning. Installeer via pip:
pip install pandas numpy ta-lib scikit-learn. - Historische data met voldoende granulariteit: Voor forex scalping heb je tickdata of 1-minuut data nodig. Voor swing trading volstaat 15-minuten of 1-uur data. Minimaal 2 jaar historische data om marktregimes te vangen.
- Een backtesting framework: Gebruik Backtrader of Zipline voor Python. Test je regime-detectie op oude data voordat je live gaat.
- Risicomanagement tools: Stoploss, take-profit, en position sizing gebaseerd op ATR. Gebruik een fixed fractional risico model: riskeer max 1% per trade.
Zonder deze tools begin je blind. Met deze tools kun je elke regime switch meten en erop reageren.
Stap-voor-stap: bouw een regime-detectie in je trading bot
Stap 1: Verzamel en schoon je data
Download je forex data via de API van je broker. Voor EUR/USD bijvoorbeeld: vraag 1-minuut candles van de afgelopen 2 jaar. Gebruik Python: Check op gaten: handelsuren kunnen gaten hebben.
import pandas as pd
data = pd.read_csv('eurusd_1min.csv')
data['datetime'] = pd.to_datetime(data['datetime'])
data.set_index('datetime', inplace=True)
data = data[['open', 'high', 'low', 'close', 'volume']]
Vul ze met forward-fill of verwijder incomplete dagen. Tijdsindicatie: 1-2 uur voorbereiding.
Stap 2: Bereken volatiliteit indicatoren
Veelgemaakte fout: te weinig data gebruiken, waardoor je geen echte regimes vangt. Houd er rekening mee dat de normaalverdeling niet werkt voor financiële markten; gebruik daarom ATR (Average True Range) om volatiliteit te meten.
import talib
data['atr'] = talib.ATR(data['high'], data['low'], data['close'], timeperiod=14)
ATR toont de gemiddelde beweging per candle. In Python met TA-Lib: Plot de ATR en kijk naar pieken en dalen.
Stap 3: Identificeer regimes met een simpele classifier
Een plotse stijging van 50% of meer is een signaal van een regime switch. Gebruik change point detection in tijdreeksen voor een nauwkeurige tijdsindicatie: 30 minuten.
data['regime'] = pd.qcut(data['atr'], q=3, labels=['low', 'medium', 'high'])
Fout: vergeten om ATR te normaliseren (deel door de prijs) voor vergelijking tussen paren. Je kunt regimes indelen in drie categorieën: laag, medium en hoog volatiliteit. Gebruik percentielen op ATR: Of gebruik een machine learning model zoals een Hidden Markov Model (HMM) via hmmlearn voor meer finesse.
Stap 4: Pas je strategie per regime aan
Voor beginners: start met percentielen. Tijdsindicatie: 1 uur. Fout: te complexe modellen bouwen zonder te begrijpen wat ze doen.
- Laag volatiliteit: Gebruik een langere moving average (bijv. 50-perioden) en smallere stops (10 pips).
- Medium volatiliteit: 20-perioden MA, stops van 15-20 pips.
- Hoog volatiliteit: Kortere MA (10-perioden), brede stops (30 pips), en verlaag je positiegrootte met 50%.
Elk regime vraagt om andere parameters. Voor een trendvolgende bot:
if data['regime'] == 'high':
stoploss = 30 # pips
position_size = base_size * 0.5
else:
stoploss = 10
position_size = base_size
In Python: pas je stoploss en position sizing dynamisch aan op basis van de regime. Voorbeeld: Tijdsindicatie: 2 uur om te coderen en testen. Fout: vasthouden aan vaste stops ongeacht de markt, wat leidt tot te veel stops.
Stap 5: Backtest en verifieer
Gebruik Backtrader om je aangepaste strategie te testen op historische data. Draai minimaal 1000 trades om betrouwbaarheid te krijgen. Check: Tijdsindicatie: 4-6 uur voor een volledige backtest.
- Winrate per regime (doel: >50% in medium/high regimes).
- Risk-reward ratio (doel: minimaal 1:1.5).
- Maximum drawdown (houd onder 10% van je kapitaal).
Fout: alleen kijken naar totale winst, niet naar drawdown per regime. Start met een demo-account of een klein live-bedrag (bijv. €500).
Stap 6: Ga live met kleine bedragen
Monitor de eerste 20 trades. Gebruik een stoploss en take-profit op elke trade.
Pas je bot aan als je afwijkingen ziet. Tijdsindicatie: 1 week live testen. Fout: te snel opschalen naar grotere bedragen zonder bewijs van werking.
Veelgemaakte fouten en hoe je ze vermijdt
Een klassieke fout is het negeren van liquiditeit en volatiliteit, vooral bij scalping. In forex is de dagelijkse liquiditeit enorm (ongeveer $6,6 triljoen per dag), maar tijdens de Aziatische sessie kunnen spreads oplopen tot 3-5 pips op minder liquide paren.
Gebruik dus alleen liquidere paren voor scalping: EUR/USD, GBP/USD, USD/JPY. Een pip-beweging van 1,3980 naar 1,3979 is een daling van 1 pip – klein, maar bij hoge volumes telt het op. Een andere fout: te veel vertrouwen op één regime.
- Heb je minimaal 2 jaar data?
- Is ATR genormaliseerd?
- Werk je met dynamische stops en position sizing?
- Heb je getest op minimaal 1000 trades?
- Is je risico per trade max 1%?
Test je bot op zowel rustige als hectische markten. Begrijp de marktmicrostructuur onder de motorkap en gebruik een verificatie-checklist:
Door deze stappen te volgen, bouw je een bot die niet alleen reageert op regime switches, maar er profiteert van. Onthoud: trading is geen garantie op winst, maar een goed model verhoogt je kansen aanzienlijk.
