Een 3D 'Optimization Surface' plotten om stabiliteit te checken

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

Stel je voor: je hebt een handelsstrategie gebouwd in Python, getest met Backtrader of QuantConnect, en je hebt een broker-API zoals die van Interactive Brokers of Alpaca al klaarstaan.

Je bent er bijna, maar hoe weet je of je parameters echt stabiel zijn? Een 3D optimalisatiesurface is je antwoord.

Het is een visuele check die je helpt om betrouwbare instellingen te vinden, niet gewoon de beste piek. Een 3D optimalisatiesurface is een driedimensionaal oppervlak waarop je de prestatie van je strategie ziet, afhankelijk van twee parameters. De derde dimensie is je resultaat: winst, Sharpe-ratio of drawdown. Je kijkt niet naar één getal, maar naar een heel gebied van mogelijke instellingen. Zo zie je direct of er stabiele zones zijn of dat je toevallig een geluksvondst hebt.

Wat is een 3D optimalisatiesurface precies?

Op de x-as en y-as zet je twee parameters, bijvoorbeeld de periode van je EMA en de afwijking voor een Bollinger Band.

Op de z-as komt je performance-maat, zoals de Sharpe-ratio. Het resultaat is een soort berglandschap: hoge toppen zijn goede instellingen, diepe dalen zijn slechte. Je wilt niet op een smalle piek staan, maar op een brede plateau.

Je bouwt deze surface door een grid van parameterwaardes te draaien en voor elk punt je backtest te runnen. Gebruik een broker-API voor live data, maar voor de surface volstaat historical data van je broker.

In Python pak je vaak Backtrader, VectorBT of Zipline voor de backtests, en plot je met Plotly of Matplotlib.

De resolutie bepaal je zelf: 20x20 punten is een snelle check, 50x50 geeft meer detail. Waarom is dit belangrijk? Omdat je anders blind afstevent op één optimum dat bij de eerste marktverandering al in elkaar zakt. Een 3D surface maakt stabiliteit zichtbaar.

Je ziet meteen of je parameters gevoelig zijn voor kleine veranderingen. Dat helpt je risicomanagement enorm.

Waarom stabiliteit belangrijker is dan een enkele piek

Een enkele piek is vaak toeval. Je vindt een set waardes die perfect werken op een specifieke periode, maar zodra de markt een andere dynamiek krijgt, stort het in.

Dat is het verschil tussen curve-fitting en robuustheid. Je zoekt brede zones van goede prestaties, niet smalle toppen.

Een 3D surface helpt je om de gevoeligheid van je parameters te testen. Stel je EMA-periode is 21 en je afwijking 2,0. Als de surface rond dat punt stabiel is, mag je vertrouwen hebben.

Als het een smalle bergtop is, weet je dat je voorzichtig moet zijn. Je kunt dan een bandbreedte kiezen, bijvoorbeeld EMA 18–24 en afwijking 1,8–2,2.

Je risicomanagement wordt concreter. Je ziet niet alleen je winst, maar ook je drawdown per parametercombinatie. Dat maakt het makkelijker om limieten te stellen, zoals een maximale drawdown van 15%. Je kunt ook je commission en slippage meenemen, zodat de surface realistisch blijft. In de praktijk betekent dit: minder verrassingen live.

Stap voor stap bouwen: van grid naar surface

Kies je parameters en je performance-maat. Als je wilt begrijpen wat parameter optimization inhoudt, kijk dan naar hoe je EMA- en ATR-parameters voor trendvolgende strategieën instelt. Voor mean-reversion strategieën analyseer je vervolgens de Bollinger Bands en RSI.

Je performance-maat kan Sharpe-ratio zijn, profit factor, of max drawdown. Houd het simpel: één maat per surface, en bouw later meerdere surfaces.

Zet een grid op. Bijvoorbeeld: EMA van 10 tot 50 in stappen van 5, en ATR-multiplicator van 1,5 tot 3,0 in stappen van 0,25.

Dat levert 9 x 7 = 63 runs op. Voor meer detail kies je 20x20 of 25x25. Hou rekening met je rekenkracht: 1.000 runs met een minutieuze backtest kunnen even duren.

Gebruik een lokaal draaiende bot of een cloud-VM voor grotere grids. Backtesten moet consistent zijn.

Gebruik vaste dataranges, bijvoorbeeld 2018–2023, en neem commission en slippage mee. Bij Interactive Brokers ligt commission vaak rond €0,005 per aandeel en $0,70 per optiecontract; voor CFD’s hangt het af van de broker. Slippage zet je in Python in als vaste spread of percentage, bijvoorbeeld 0,05% voor liquidere markten. Zorg dat je live-omgeving straks dezelfde kosten hanteert.

Plot de surface met Plotly of Matplotlib. In Plotly draai je de grafiek makkelijk met je muis, zodat je hoeken en dalen goed ziet.

In Matplotlib gebruik je ax.plot_surface voor een snelle eerste indruk. Voeg contour-plots toe voor een 2D-overzicht van de zones.

Sla je resultaten op in een DataFrame, zodat je later filters kunt toepassen. Je checkt stabiliteit door te kijken naar de breedte van de toppen. Zoek naar robuuste plateaus met een vergelijkbare Sharpe-ratio; dat is wat je wilt.

Je kunt ook een tweede surface maken voor een andere periode om te zien of het patroon blijft. Als de toppen verschuiven, is je strategie te gevoelig. Pas je parameters of je risicolimieten aan.

Prijsindicaties voor data, tools en brokers

Backtesting data: voor een grove check volstaan gratis historische data van Yahoo Finance via yfinance. Voor meer kwaliteit kijk je naar broker-data of betaalde aanbieders.

Interactive Brokers levert kwalitatief goede data voor een redelijke prijs, vaak rond €10–€30 per maand voor een basisdatafeed, afhankelijk van markt en dekking.

Als je futures handelt, verwacht dan €20–€50 per maand voor de juiste datafeed. Brokers en API’s: Interactive Brokers is populair voor Python-bots via ib_insync of de officiële API. Kosten voor transacties liggen laag, bijvoorbeeld €0,005 per aandeel met een minimum van €1–€2.

Bij Alpaca is de API gratis voor historische data en betaal je commissies per trade, vergelijkbaar met IB. Voor CFD’s of crypto hangen kosten af van de broker; reken op 0,1%–0,2% per trade plus spread.

Tools en cloud: Python is je hoofdtaal. Backtrader is gratis, VectorBT is gratis met een pro-optie voor extra features, en QuantConnect draait in de cloud met gratis en betaalde tiers. Voor plotting betaal je niets extra, want Plotly en Matplotlib zijn open source. Als je grotere grids draait, kan een cloud-VM van €10–€20 per maand je tijd halveren.

Risicomanagement: je kunt een aparte surface maken voor drawdown. Dat helpt je om niet alleen winst, maar ook pijn te meten.

Stel een limiet in, bijvoorbeeld max drawdown 15%. Je ziet dan direct welke parametercombinaties die limiet overschrijden. Je kunt ook een tweede surface maken voor een andere marktperiode, zoals een bear market, om te zien of je stabiliteit behouden blijft.

Praktische tips voor stabiele optimalisatie

  • Kies een performance-maat die bij je doel past: Sharpe voor evenwicht, profit factor voor winstgericht, drawdown voor veiligheid.
  • Beperk je parameters: begin met twee en voeg er pas een derde toe als je de surface goed begrijpt.
  • Gebruik vaste dataranges en neem kosten mee: commission en slippage horen in je backtest, anders is je surface te optimistisch.
  • Check de breedte van toppen: smalle pieken zijn risicovol, brede zones zijn stabiel.
  • Test op een tweede periode: als de top verschuift, verlaag je de gevoeligheid of pas je risicolimieten aan.
  • Bewaar je runs: sla de grid-waardes en resultaten op, zodat je later snel een nieuwe surface kunt maken.
  • Automatiseer je pipeline: van data ophalen via broker-API tot backtest en plot, zodat je snel kunt itereren.
  • Gebruik een demo-account voor live tests: bijvoorbeeld een IB-papertrading account, gratis te gebruiken.

Met een 3D optimalisatiesurface kijk je niet alleen naar een getal, maar naar een heel gebied.

Je ziet waar je strategie echt stabiel is en waar je beter kunt vermijden. Dat maakt je beslissingen concreter en je risicomanagement sterker. En het beste: je bouwt het in Python met tools die je al kent, en je sluit het naadloos aan op je broker-API en live-omgeving.

Begin klein, bijvoorbeeld met een grid van 20x20 en een Sharpe-ratio als doel. Plot de surface, draai hem rond, en zoek de brede toppen.

Pas je parameters aan, test op een tweede periode, en bepaal hoe vaak je opnieuw moet optimaliseren om je limieten voor drawdown te bewaken.

Dan stap je live met meer vertrouwen, en met een bot die niet alleen snel is, maar ook stabiel.

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 →