Genetische algoritmes gebruiken om een strategie te 'evolueren'

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Optimalisatie & Performance Tuning · 2026-02-15 · 7 min leestijd

Je kent het wel: je hebt een handelsstrategie die redelijk werkt, maar je wilt meer. Sneller, scherper, beter.

In plaats van eindeloos te pielen aan instellingen, laat je de computer het werk doen. Met genetische algoritmes laat je jouw strategie letterlijk evolueren, net als in de natuur, tot die optimaal presteert onder de marktcondities van nu.

Stel je voor: je bouwt een Python bot die duizenden varianten van je strategie doorloopt. De beste overleven, de slechtste gaan dood. Na een paar generaties heb je een configuratie die je nooit zelf had kunnen bedenken. Dat is de kracht van evolutionair optimaliseren binnen algorithmic trading.

Wat zijn genetische algoritmes?

Een genetisch algoritme is een zoekmethode die geïnspireerd is op de evolutie. Je start met een groep willekeurige oplossingen, je test ze, en je laat de beste combinaties ‘voortplanten’ en ‘muteren’.

In trading vertaalt zich dat naar parameters van je strategie: stop-loss, take-profit, moving average periodes, RSI-drempels, of de gewichten in een machine learning model.

Denk aan een eenvoudige EMA-cross strategie. In plaats van handmatig de 12 en 26 te testen, definieer je een zoekruimte van 5 tot 50 voor de korte EMA en 20 tot 100 voor de lange EMA. Het algoritme probeert combinaties, selecteert die met de hoogste Sharpe ratio, en kruist ze om nieuwe kandidaten te genereren.

Waarom is dit belangrijk? Omdat de markt niet stil staat. Een vaste set parameters die vandaag werkt, kan morgen onderpresteren. Met een genetisch algoritme ontdek je robuuste configuraties die beter omgaan met wisselende volatiliteit en liquiditeit op bijvoorbeeld Binance, Interactive Brokers of Bitvavo.

Hoe het werkt: stappen en details

Start met een duidelijke doelfunctie. Gebruik een backtest in Python met historical data van je broker API.

Meet niet alleen winst, maar risico: Sharpe, Sortino, max drawdown, en winstpercentage. De doelfunctie is je fitnessscore: hoe hoger, hoe beter het individu presteert. Kies een representatie voor je genen.

Een gen is een parameter. Bij een trendvolgende bot kunnen genen zijn: short EMA (5–50), long EMA (20–100), ATR-multiplicator voor stops (1.0–4.0), en position sizing (1–5% per trade).

Sla deze genen op in een lijst of dictionary, zodat je ze makkelijk kunt kopiëren en aanpassen.

Initialiseer een populatie van bijvoorbeeld 100 individuen. Elk individu is een willekeurige set parameters binnen je grenzen. Backtest elk individu over een vaste periode, bijvoorbeeld 2 jaar minutelijke data van een populaire markt zoals BTC-USD of EUR-USD. Sla de fitnessscores op.

Voer selectie uit. Kies de top 20% als ‘ouders’.

Gebruik roulette-wiel selectie of simpelweg de beste helft. Bij crossover combineer je parameters van twee ouders: pak de short EMA van ouder A en de long EMA van ouder B. Bij mutatie verander je één gen licht: bijvoorbeeld long EMA van 60 naar 63.

Houd mutatie laag, rond 1–5%, om stabiliteit te behouden. Herhaal dit proces over meerdere generaties, bijvoorbeeld 30–50.

Stop als de fitness niet meer verbetert of na een vaste tijd. Gebruik out-of-sample data om te valideren: test de beste configuratie op data die het algoritme niet heeft gezien. Zo voorkom je overfitting.

Varianten en modellen met prijsindicaties

Je kunt genetische algoritmes op verschillende manieren inzetten, afhankelijk van je strategie en broker.

  • Baseline EMA-cross met Python: Gebruik Backtrader of Lean (QuantConnect) voor backtesting. Kosten: €0 voor de libraries. Data via Binance API (gratis voor historische candles) of Interactive Brokers (vanaf €10 per maand voor data). Een VPS voor 24/7 draaien kost €5–€15 per maand (bij DigitalOcean of Hetzner).
  • Optimalisatie op Interactive Brokers: Voor aandelen en futures. TWS API gratis toegankelijk bij een account. Commissies: ongeveer €1–€2 per 1000 aandelen, futures vanaf €0,85 per contract. Genetische optimalisatie op 2 jaar 1-minuut data kan €5–€15 aan dataverbruik en rekenkosten kosten op een VPS.
  • Crypto-strategie op Binance: Spot of futures. API gratis. Commissies: 0,1% spot, futures vanaf 0,02% maker. Voor een genetisch algoritme met 100 individuen en 30 generaties op 1-minuut data reken je op 50–100 uur rekenen op een 4-core VPS (€10–€15 per maand). Opslag van data: €1–€2 per maand.
  • Machine learning gewogen strategie: Gebruik een lichtgewicht model (lineaire regressie of decision tree) als extra gen: gewicht tussen trend en momentum. Library scikit-learn is gratis. Trainkosten op een VPS nihil, maar houd het simpel om latency te beheersen. Vooral nuttig voor indices of forex paren met lage spreads.
  • Multi-timeframe combinatie: Voeg genen toe voor timeframe-combinatie, bijvoorbeeld 5-minuut entry op basis van 1-uur trend. Backtest via Lean of Backtrader. Kosten vergelijkbaar, maar zorg voor schone historische data via de broker API om scheeftrekking te voorkomen.

Hieronder vind je praktische varianten met concrete kostenindicaties voor de Nederlandse markt. Kies een model dat past bij je broker en markt.

Voor crypto is Binance populair en goedkoop, voor aandelen en futures is Interactive Brokers een sterke keuze. Voor Nederlandse particulieren is Bitvavo een optie voor spot crypto met lage fees (0,1%–0,25%) en een makkelijke API.

Praktische tips voor robuuste optimalisatie

Focus op risico, niet alleen op winst. Gebruik naast Sharpe ook Sortino en max drawdown.

Een strategie met 15% jaarwinst en 8% drawdown is vaak beter dan 20% met 20% drawdown. Stel in je fitnessfunctie een cap op drawdown, bijvoorbeeld maximum 10%, en geef een forse penalty bij overschrijding. Beperk de zoekruimte.

Te veel genen leiden tot overfitting. Start met 4–6 parameters: entry-EMA, exit-EMA, stop-loss ATR-multiplicator, position size, en eventueel een filter op volume of volatiliteit.

Houd ranges klein: EMA’s in stappen van 1, ATR-multiplicators in stappen van 0,1. Gebruik out-of-sample en walk-forward testen. Deel je data op: 70% voor training, 30% voor validatie.

Voer de genetische optimalisatie uit op de trainingsset, en test de top-5 op de validatieset. Herhaal dit in een walk-forward schema: optimaliseer elk kwartaal op de afgelopen 18 maanden, test op het volgende kwartaal.

Zorg voor reproduceerbaarheid. Zet een seed voor de random number generator, zodat je resultaten herhaalbaar zijn.

Sla elke generatie op: beste individu, gemiddelde fitness, en diversiteit. Dat helpt bij het analyseren van convergentie en het opsporen van overfitting. Beheer de computational cost. Een backtest op 1-minuut data over 2 jaar kan snel intensief worden.

Gebruik 1-uur data voor de initiële zoektocht en verfijn daarna op 5-minuut data. Op een 4-core VPS kun je met Python multiproc parallel generaties draaien, wat de tijd vaak halveert.

Pas op voor data leakage. Gebruik voor elke generatie alleen data die tot dat moment beschikbaar was. Sluit corporate actions en dividendcorrecties in bij aandelen.

Bij crypto: houd rekening met onderhoudsmarges en funding rates bij futures, want die beïnvloeden de fitness van je strategie. Combineer met risicomanagement.

De beste parameters betekenen niets zonder goed beheer. Koppel je bot aan de broker API met rate limits en order types (limit vs market). Gebruik een circuit breaker: stop traden bij een drawdown van 5% op een dag.

Zet een maximum position size in, bijvoorbeeld 2–3% van je equity per trade.

Test op meerdere markten. Een strategie die goed werkt op BTC-USD kan falen op EUR-USD. Voer een robuustheidstest uit door je genetisch algoritme los te laten op drie tot vijf paren of aandelen.

Kies configuraties die consistent scoren, niet uitschieters op één markt. Pas je strategie aan op specifieke marktsituaties; denk daarnaast aan latency en uitvoering.

Een mooie backtest zegt niets over werkelijke fills. Test met slippage en commissies.

Bij Binance futures kun je met de API orderboeken uitlezen voor betere inschattingen. Bij IBKR kun je historical slippage data gebruiken voor aandelen. Start klein en bouw uit. Begin met een eenvoudige EMA-cross, voeg daarna een filter toe voor volatiliteit.

Gebruik een genetisch algoritme om de parameters te finetunen, niet om een compleet nieuwe strategie te verzinnen. Zo blijft het proces beheersbaar en begrijpelijk.

Met deze aanpak haal je meer uit je trading bot zonder eindeloos te tunen. Je laat de computer zoeken, jij houdt de regie. En na een paar generaties heb je een strategie die niet alleen presteert, maar ook weerbaar is tegen de markt van morgen.

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 Optimalisatie & Performance Tuning
Ga naar overzicht →