Technische indicatoren optimaliseren met de Optuna library
Stel je voor: je hebt een handelsstrategie gebouwd in Python, je backtest draait soepel via de API van Interactive Brokers of Alpaca, en toch voelt het alsof je mist ziet. De parameters van je technische indicatoren zijn net niet scherp genoeg.
Je MACD crossover voelt lui, je RSI-triggers zijn te laat. Dat is precies waar Optuna het verschil maakt. Deze library helpt je om de exacte waarden van je indicatoren te vinden, zonder dagenlang handmatig te tunen.
Je geeft Optuna een doel, en het zoekt de beste combinaties voor je bot.
Sneller, slimmer en met minder frustratie.
Wat is Optuna en waarom gebruik je het voor trading bots?
Optuna is een open-source hyperparameter optimalisatie bibliotheek voor Python. In gewone taal: het is een slimme zoekmachine voor je algoritmische parameters.
Je geeft Optuna een doel, bijvoorbeeld de hoogste Sharpe ratio of het laagste drawdown, en het probeert duizenden combinaties uit. Denk aan de snelheid van een backtest bij een broker zoals Interactive Brokers of Alpaca, maar dan geautomatiseerd voor je indicatoren.
Waarom is dat belangrijk? Omdat de meeste technische indicatoren gevoelig zijn voor hun instellingen. Een RSI met een periode van 14 werkt voor de ene markt, maar faalt voor een andere. Optuna vindt de beste waarden voor jouw timeframe, broker en instrument.
Je bespaart tijd en vermindert het risico op overdrijven van je parameters.
Je bot wordt robuuster. Optuna werkt met drie kernconcepten: studie, suggestie en prunen. Een studie is je zoekopdracht.
Suggesties zijn mogelijke parameterwaarden. Prunen is het vroegtijdig afbreken van slechte runs.
Dat is handig bij backtests die veel tijd kosten. Je bot blijft sneller zonder kwaliteit te verliezen.
De kern: hoe Optuna technische indicatoren optimaliseert
Je begint met een functie die je strategie definieert. Die functie neemt een trial-object van Optuna en retourneert een score.
Bijvoorbeeld: de totale return na een backtest op 1 jaar data. Optuna probeert dan verschillende waarden voor je indicatoren. Voor een EMA crossover test het waarden tussen 10 en 200. Voor een RSI test het tussen 2 en 30.
Je kunt ook discrete stappen kiezen, zoals 5, 10, 15, 20. Een concreet voorbeeld voor een Python bot:
- EMA_fast: suggestie tussen 10 en 50, stap 5
- EMA_slow: suggestie tussen 50 en 200, stap 10
- RSI_period: suggestie tussen 10 en 30, stap 2
- RSI_overbought: suggestie tussen 60 en 80, stap 5
Optuna gebruikt onder de motorkap Tree-structured Parzen Estimators (TPE). Dat is een Bayesian aanpak die slim leert uit eerdere runs.
Je hoeft dat niet zelf te implementeren. Je roept gewoon study.optimize aan, en Optuna doet de rest. Je kunt ook meerdere cores gebruiken voor parallelle zoektochten, handig bij grotere backtests, of wiskundige optimalisatie-algoritmen inzetten voor je strategie.
Voor risicomanagement kun je Optuna ook scoren op drawdown en winstfactor. Je bouwt een functie die de max drawdown berekent via de equity curve van je broker API.
Dan kiest Optuna parameters die niet alleen winstgevend zijn, maar ook stabiel. Voor geavanceerde strategieën kun je zelfs complexe derivaten en opties prijzen met QuantLib, wat extreme pieken en dalen in je equity voorkomt.
Praktijk: integratie met backtesting en broker API’s
Je sluit Optuna aan op je backtesting pipeline. Volg onze gids voor hyperparameter tuning en gebruik library’s zoals Backtrader, VectorBT of je eigen pandas-loop.
Optuna stuurt de parameters aan en haalt de resultaten op. Voor live trading stuur je de beste parameters naar je broker API. Bij Interactive Brokers via ib_insync, bij Alpaca via hun Python SDK.
Je kunt ook een aparte configuratiebestand genereren dat je bot inlaadt. Een concrete workflow:
- Verzamel historische data via je broker API, bijvoorbeeld 1 jaar 1-uur bars voor EUR/USD.
- Bouw een backtestfunctie die parameters accepteert en een
