Hoe bouw je een Bollinger Bands Mean Reversion bot in Python?

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Trading Strategieën & Logica · 2026-02-15 · 6 min leestijd

Algo Trading Strategy: Mean Reversion Strategy (Bollinger Bands)

Stel je voor: je zit achter je laptop met een bak koffie en je wilt een bot bouwen die geld verdient wanneer de markt even doordraait. Bollinger Bands Mean Reversion is precies dat: een strategie die inspeelt op uitschieters die weer terugkeren naar hun gemiddelde.

Je koopt als de prijs te ver is weggedraaid naar beneden en verkoopt als hij te hoog is geschoten.

Simpel, effectief en perfect te automatiseren met Python. Waarom werkt dit? Omdat aandelen in een range vaak heen en weer bewegen tussen steun en weerstand.

Je bot grijpt in zodra de prijs de onderste of bovenste band raakt. Het enige wat je nodig hebt, zijn de juiste data, een broker API en een simpele logica die niet doorslaat in complexiteit. Laten we beginnen.

Wat je nodig hebt voordat je start

Zorg dat je Python geïnstalleerd hebt, bijvoorbeeld versie 3.9 of nieuwer. Gebruik een IDE zoals VS Code of PyCharm, en maak een virtuele omgeving aan voor je project.

Je hebt de volgende bibliotheken nodig: pandas, numpy, requests en python-dotenv voor je API-sleutels. Installeer ze met pip install pandas numpy requests python-dotenv. Voor data gebruik je Alpha Vantage, gratis en betrouwbaar voor aandelenkoersen.

Vraag een API-sleutel aan via hun website. Je broker API hangt af van je keuze: Interactive Brokers (TWS API), Alpaca (gratis voor paper trading) of een Nederlandse broker zoals Binck met een eigen API.

Begin met paper trading, nooit meteen met echt geld. Timing: reken op 2 à 3 uur voor de eerste werkende versie. De meeste tijd gaat zitten in data ophalen en controleren of je signalen kloppen.

Een veelgemaakte fout is meteen willen handelen zonder backtest. Doe eerst een backtest op ten minste 2 jaar historische data.

Stap-voor-stap bouwen van de bot

Stap 1: Haal data op met Alpha Vantage

Maak een bestand data_fetcher.py. Haal dagkoersen op voor een aandeel dat in een range beweegt, bijvoorbeeld een mid-cap met sterke horizontale levels.

  1. Sleutel in een .env bestand: ALPHA_VANTAGE_API_KEY=je_sleutel
  2. Codeer een functie die ticker, tijdvak en outputformat accepteert.
  3. Haal minimaal 500 dagen data op, liever 1000.
  4. Controleer op missende waarden; vul eventueel forward-fill in.

Gebruik de Alpha Vantage functie TIME_SERIES_DAILY_ADJUSTED. Sla de data op als CSV voor hergebruik.

Stap 2: Bereken Bollinger Bands en RSI

Veelgemaakte fout: data niet adjusted gebruiken, waardoor dividend- en splitscorrecties ontbreken. Gebruik altijd adjusted close. Tijdsindicatie: 20 minuten. Maak een bestand indicators.py.

  1. Bereken SMA20 op de adjusted close.
  2. Bereken de standaarddeviatie over dezelfde 20 dagen.
  3. Upper band = SMA20 + 2 * std, lower band = SMA20 − 2 * std.
  4. Bereken RSI6 op basis van dagelijkse returns; gebruik pandas rolling en diff.

Gebruik de standaard Bollinger Bands: 20-day SMA en 2 standaarddeviaties. Voor RSI kiezen we een afwijkende periode van 6 dagen, omdat dit in short-term mean reversion sneller reageert dan de klassieke 14 dagen.

Stap 3: Definieer entry- en exit-signalen

Veelgemaakte fout: bands berekenen op onbewerkte data zonder rolling window. Gebruik shift(1) om lookahead-bias te voorkomen. Tijdsindicatie: 30 minuten. De logica is helder: koop als de prijs de onderste band raakt of kruist, en verkoop als de prijs de bovenste band raakt of kruist. Wie liever start met een Moving Average Crossover als klassieke strategie, kan dit eenvoudig in Python implementeren. RSI6 dient als filter: koop alleen als RSI6 onder 30 is (extreem laag), verkoop als RSI6 boven 70 is (extreem hoog).

  1. Entry long: close ≤ lower_band en RSI6 ≤ 30.
  2. Exit long: close ≥ upper_band of na 5 dagen (max holding time).
  3. Entry short: close ≥ upper_band en RSI6 ≥ 70 (optioneel, afhankelijk van broker).
  4. Exit short: close ≤ lower_band of na 5 dagen.

Zo voorkom je entries in zwakke momenten. Let op: Bron 1 beperkt de scope tot long-only.

Stap 4: Backtesten met een broker API

Wil je short selling, check dan je broker API en margin requirements. Begin zonder shorts om de bot eenvoudig te houden. Tijdsindicatie: 20 minuten. Gebruik een broker API voor realistische backtests. Wil je verder gaan dan simpele regels? Leer hoe je een voorspellende bot bouwt met Python.

  1. Initialiseer je broker account in een paper trading omgeving.
  2. Loop over de dataset per dag; pas signalen toe na market close.
  3. Log elke trade: entry, exit, size, kosten, P&L.
  4. Bereken drawdown, winstpercentage en Sharpe ratio.

Interactive Brokers biedt historische data en een simulator. Alpaca is beginner-vriendelijk en gratis voor paper trading.

Stap 5: Risicomanagement en stop-loss

Schrijf een backtest die per dag beslist of je in de markt zit, rekening houdt met transactiekosten en spread. Veelgemaakte fout: geen transactiekosten meenemen. Reken met minimaal €2 per trade en een spread van 0,1% tot 0,3%.

  1. Stop-loss: zet op 2% onder entry voor long, 2% boven voor short.
  2. Trailing stop: activeer na 1% winst, volg met 1% afstand.
  3. Max position size: 10% van kapitaal; nooit meer.
  4. Daglimiet: max 3 trades per dag om overtrading te voorkomen.

Tijdsindicatie: 45 minuten tot 1 uur. Risicomanagement is je vangnet.

Stap 6: Optimalisatie en live test

Implementeer een stop-loss van 2% tot 3% per trade, afhankelijk van de volatiliteit van het aandeel.

Gebruik een trailing stop voor winnende posities. Zet een maximum position size in, bijvoorbeeld 10% van je totale kapitaal per trade. Veelgemaakte fout: geen stop-loss instellen tijdens markt breakouts.

  1. Kies 3 aandelen met lage trend en hoge volatiliteit.
  2. Backtest op 2 jaar; valideer op de laatste 6 maanden.
  3. Log elke aanpassing en de impact op P&L.
  4. Start met paper trading voor 2 weken.

Een breakout kan je bot snel verliezen laten lopen. Tijdsindicatie: 20 minuten. Test de bot op ten minste drie verschillende aandelen in een range-bound markt.

Gebruik Finviz als screener om aandelen te vinden met sterke horizontale support en resistance en hoge volatiliteit. Pas parameters voorzichtig aan: RSI6 naar 5 of 7, stop-loss naar 2,5% of 1,5%. Veelgemaakte fout: te veel optimaliseren op één dataset (overfitting). Gebruik out-of-sample data. Tijdsindicatie: 1 tot 2 dagen.

Veelgemaakte fouten en hoe je ze vermijdt

Short selling uitsluiten is veilig voor beginners, maar beperkt je bot in dalende markten.

Als je broker short selling ondersteunt, voeg dan een aparte short-strategie toe met aparte risicolimieten. Test short-only op paper, nooit direct met echt geld.

Geen backtest in trending markten is een klassieke val. Bollinger Bands mean reversion presteert slecht in sterke trends. Test je bot op een stijgende markt (bijvoorbeeld 2021) en een dalende markt (2022). Als de drawdown te groot is, voeg een trendfilter toe, bijvoorbeeld een 50-day SMA die de richting bepaalt.

Veelgemaakte fout: vergeten om data te controleren op splitsingen en dividends. Gebruik adjusted close.

Controleer ook op afwijkende dagen (feestdagen, earnings) die de banden vertekenen. Tijdsindicatie: 30 minuten voor extra checks.

Verificatie-checklist

Voordat je live gaat, loop deze checklist langs. Elk punt moet groen zijn voor je echt geld inzet.

  • API-sleutel geactiveerd en .env correct ingesteld.
  • Data opgehaald en gecontroleerd op adjusted close en missende dagen.
  • Bollinger Bands en RSI6 berekend zonder lookahead-bias.
  • Entry- en exit-signalen gedefinieerd en getest op een kleine dataset.
  • Backtest uitgevoerd op minimaal 2 jaar, inclusief transactiekosten.
  • Risicomanagement ingesteld: stop-loss, trailing stop, position size.
  • Geen overtrading: max 3 trades per dag, holding time max 5 dagen.
  • Paper trading draait 2 weken zonder onverwachte errors.
  • Logboek bijgehouden met elke trade en beslissing.
  • Plan voor live start: klein kapitaal, strikte risicolimieten.

Als je alle punten afvinkt, ben je klaar om je Bollinger Bands Mean Reversion bot live te zetten.

Blijf monitoren, pas alleen parameters aan na nieuwe tests en houd het leuk. Trading is een marathon, geen sprint.

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 Trading Strategieën & Logica
Ga naar overzicht →