Wat is 'Bayesian Optimization' en waarom is het efficiënter dan Grid Search?

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

Stel je dit eens voor: je hebt een prachtige handelsstrategie gebouwd in Python. Je gebruikt de API van een broker zoals Interactive Brokers of Degiro, je backtest met historical data van 2018 tot nu, en de resultaten zien er veelbelovend uit. Nu is het tijd om de parameters te tunen.

Hoeveel periodes moet die RSI indicator hebben? Wat is de ideale stop-loss?

Je besluit Grid Search te gebruiken. Je test 10 verschillende waardes voor de RSI en 10 voor de stop-loss.

Dat zijn 100 runs. Je computer draait een uur. Dan pas je de RSI lichtjes aan en draait opnieuw 100 runs.

Je verliest uren, soms dagen, aan domme berekeningen. Je bent je kostbare tijd aan het verbranden.

Bayesian Optimization is de oplossing voor dit specifieke probleem. In plaats van een blind schot hagel over een breed veld, is het alsof je een slimme gids bij je hebt die precies weet waar de hoogste bergtoppen liggen. Het is een manier om je trading bot slimmer te maken, sneller te optimaliseren en betere resultaten te vinden met minder rekenkracht. Laten we eens kijken hoe dit werkt en waarom je dit direct moet gebruiken voor je eigen algoritmen.

Waarom Grid Search je tijd verspilt

Voordat we in de oplossing duiken, moeten we het probleem begrijpen. Grid Search is de ouderwetse manier van optimaliseren.

Je zet een raster (een grid) uit over je parameter-ruimte. Stel, je optimaliseert een momentum-strategie op de S&P 500. Je wilt de beste instellingen vinden voor de 'lookback period'. Je kiest een grid van waardes: 10, 20, 30, 40, 50.

Het algoritme test nu braaf elke optie: 10, 20, 30, 40, 50. Vervolgens ontdek je dat de 30 het beste presteert.

Dus je maakt een nieuw grid: 28, 29, 30, 31, 32. Je computer draagt weer alle vijf de tests uit.

Dit proces herhaalt zich. Je betaalt voor elke iteratie met tijd en rekenkracht. Veel van die tests zijn pure verspilling.

Je weet al dat een lookback van 10 waarschijnlijk slechter is dan 30, dus waarom test je die dan opnieuw in een fijnmaziger grid? Het ergste aan Grid Search is dat het geen geheugen heeft.

Het kijkt niet naar wat er net gebeurde. Als je net ontdekte dat een hoge RSI-waarde (zoals 80) dramatisch presteert, zal Grid Search toch vrolijk verder testen in diezelfde slechte regio. In de wereld van algorithmic trading, waar je te maken hebt met overfitting en computationele kosten, is dit een onnodige verspilling.

De slimme aanpak: hoe Bayesian Optimization werkt

Bayesian Optimization werkt niet als een robot die een checklist aftikt. Het werkt meer als een ervaren handelaar die een patroon probeert te herkennen.

De kern van de zaak is simpel: het probeert zo min mogelijk tests te doen om zo dicht mogelijk bij de optimale waarde te komen.

Het doet dit door twee dingen constant te doen: schatten en beslissen. De 'Probabilistic Model' (meestal een Gaussian Process) is het brein. In gewoon Nederlands: het probeert een landschap te tekenen van hoe je parameters presteren.

In het begin is die kaart leeg. Na één test (bijvoorbeeld: RSI 30 leverde 5% winst op) tekent het een berg.

Na een tweede test (RSI 15 leverde 1% verlies op) ziet het die berg iets veranderen. Het houdt rekening met onzekerheid. Het weet precies waar het zeker is (dicht bij gemeten punten) en waar het gokt (ver van gemeten punten). De 'Acquisition Function' is de beslisser.

  • Exploitation (Uitbuiten): Testen dicht bij waar we al weten dat het goed is (de top van de berg).
  • Exploration (Verkennen): Testen in gebieden waar we weinig over weten (misschien zit er een onbekende bergtop).

Deze functie kijkt naar de kaart die het brein heeft getekend. Ze stelt de volgende vraag: "Waar moet ik de volgende test draaien om de meeste kennis te winnen over het optimum?" Dit leidt tot een balans tussen:

Bayesian Optimization kiest dus de volgende parameter combinatie die het meest waarschijnlijk de beste is of die de grootste onzekerheid wegneemt. Dit betekent dat het nooit tijd verspilt met het testen van parameters die duidelijk waardeloos zijn. Als je een parameter test en de performance is -50%, dan schrapt het de hele regio eromheen direct van de testlijst.

De praktische voordelen voor jouw Trading Bot

Waarom maakt dit nu echt uit voor je Python script? Omdat je in de echte wereld niet oneindig veel tijd hebt.

Je wilt je bot optimaliseren terwijl de markt open is, of je wilt snel kunnen inspelen op nieuwe marktomstandigheden.

Bayesian Optimization is vaak 10x tot 50x sneller dan Grid Search om dezelfde (of betere) optimalisatie te bereiken. Stel je voor dat je een Mean Reversion strategie op Bitcoin draait. Je wilt de 'lookback window' en de 'standard deviation multiplier' optimaliseren.

Met Grid Search zou je misschien 200 runs nodig hebben om een fatsoenlijke dekking te krijgen. Met Bayesian Optimization heb je vaak al na 30 tot 40 runs een beter resultaat gevonden.

Dat scheelt je uren wachten op je backtest resultaten. Een ander groot voordeel is de omgang met ruis (noise). Financiële data is extreem ruisachtig. Een strategie die bij toeval een winst van 8% maakt, is misschien niet echt beter dan een die 7,8% maakt.

Bayesian Optimization begrijpt dit beter dan Grid Search vs Random Search voor het vinden van de beste indicatoren. Het kijkt naar het gemiddelde en de variantie.

Het is minder snel geneigd om een toevallige piek te volgen (overfitting) en zoekt naar robuuste optimalisatie. Denk aan de kosten. Als je gebruik maakt van een cloud provider voor je backtesting (zoals AWS EC2 instances of Google Cloud), betaal je per minuut.

Door de efficiëntie van Bayesian Optimization verminder je de rekenuren aanzienlijk. Je betaalt misschien €5,- aan rekenkracht in plaats van €50,- voor hetzelfde of zelfs betere resultaat.

Tools en modellen: Wat moet je gebruiken?

Je hoeft dit niet vanaf het begin af aan zelf te coderen.

Er bestaan uitstekende bibliotheken in Python die dit voor je regelen. De meest populaire en toegankelijke is Optuna.

Het is een framework dat specifiek is ontworpen voor hyperparameter optimalisatie en werkt naadloos samen met bibliotheken als Scikit-learn, TensorFlow en PyTorch, maar ook gewoon met je eigen Python functies voor trading. Een andere sterke speler is Hyperopt. Deze wordt vaak gebruikt in combinatie met de bibliotheken voor machine learning. Beiden zijn gratis en open-source.

De implementatie is vaak zo simpel als het definiëren van een 'doel-functie' (objective function).

Jij geeft aan: "Hier is mijn backtest functie, geef hem de parameters X en Y, en retourneer de winst (of de Sharpe ratio)." Door de rol van objective functions in je optimalisatie script goed te begrijpen, doet de optimizer de rest. Er zijn ook betaalde oplossingen, hoewel die vaak meer gericht zijn op enterprise-level. Voor de individuele retail trader met een Python bot zijn Optuna en Hyperopt de gouden standaard. Ze kosten €0,00.

De 'investering' is de tijd die je steekt in het begrijpen van de syntax, wat vaak minder is dan een uur. Qua modellen binnen de optimalisatie zelf kies je meestal voor de standaard instellingen van Optuna: de 'TPE' (Tree-structured Parzen Estimator).

Dit is een specifieke variant van Bayesian Optimization die extreem efficiënt werkt voor dit soort taken.

Je hoeft de wiskunde erachter niet te snappen om het te gebruiken, net zoals je de motor van je auto niet hoeft te begrijpen om te rijden.

Praktische tips voor je eerste optimalisatie

Begin klein. Verleid jezelf niet om direct 10 parameters tegelijk te optimaliseren.

Start met de 2 of 3 meest invloedrijke parameters. In een trendvolgende strategie zijn dat vaak de entry-triggers en de stop-loss.

Optuna visualiseert de resultaten vaak in een 'contour plot' of 'slice plot', waardoor je precies ziet hoe de parameters samenwerken. Dit helpt je echt begrip te krijgen van je strategie, niet alleen een getal. Gebruik de juiste 'objective'.

Winst is leuk, maar risico is belangrijk. Richt je optimalisatie niet alleen op maximale winst, maar op de hoogste Sharpe Ratio of de laagste Maximum Drawdown. Je kunt in je Python code simpelweg de return van je backtest functie vervangen door je risico-gecorrigeerde metric. Bayesian Optimization zoekt dan automatisch naar de parameters die dit risico-rendementsprofiel maximaliseren.

Let op 'pruning'. Optuna heeft een feature genaamd pruning.

Dit betekent dat als een bepaalde run halverwege de backtest al duidelijk slecht presteert, de run wordt gestopt. Je verspilt geen tijd aan het uitrekenen van een run die toch geen kansen maakt. Zet dit aan!

Het scheelt je op een grote backtest zo 20% tot 30% aan tijd. Als je eenmaal een optimale set parameters hebt gevonden, onthoud dan dit: de markt verandert. Bayesian Optimization geeft je de beste parameters voor de historische data die je hebt ingevoerd. Gebruik Walk-Forward Optimization voor robuustere resultaten.

Draai je Bayesian Optimalisatie periodiek op recente data. Op die manier blijft je bot meebewegen met de markt en voorkom je dat je een bot handelt die is gebaseerd op verouderde marktcondities.

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