De Optuna library gebruiken voor het vinden van de beste RSI parameters
Stel je voor: je hebt een RSI-strategie die best aardig presteert, maar je weet eigenlijk niet of de standaardinstellingen van 14 periodes wel echt het beste zijn. Misschien werkt een RSI van 9 of 21 veel beter voor de aandelen die jij verhandelt. Vroeger was dat een eindeloos gedoe van handmatig testen en gokken.
Tegenwoordig is er een veel slimmere manier. Optuna is een Python-bibliotheek die dit karwei voor je doet.
Het is alsof je een eigen datascientist inhuurt die razendsnel duizenden combinaties uitprobeert, speciaal voor jouw trading bot.
Waarom Optuna een gamechanger is voor je trading bot
Optuna is een hyperparameter optimization framework. In mensentaal: het zoekt automatisch de beste instellingen voor je algoritme.
Terwijl jij slaapt, test het 100 verschillende RSI-waardes en kijkt welke de meeste winst of de beste Sharpe-ratio oplevert. Je bent dus geen dagen kwijt aan het fijnstemmen van je Python-script.
Een klein verschil in parameters kan een wereld van verschil maken. Een RSI-strategie die op het oog prima loopt, kan met de juiste parameters ineens 10% meer winstgevend worden. Optuna helpt je om die perfecte parameters te vinden, zonder dat je er hoofdpijn van krijgt. De kracht zit 'm in de slimme algoritmes die Optuna gebruikt.
Het gooit niet zomaar wat getallen tegen de muur. Het leert van elke test die het doet.
Als een bepaalde RSI-waarde in de buurt van 20 veelbelovend is, zal Optuna daar automatisch meer tests rondom die waarde draaien. Zo kom je sneller bij de beste oplossing.
De basis: wat zijn hyperparameters voor een RSI-strategie?
Voordat we beginnen, even de basis. In machine learning praten we over hyperparameters.
- De RSI-periode: standaard is dit 14, maar misschien werkt 7 of 21 veel beter voor crypto of forex.
- De oversold- en overbought-niveaus: vaak 30 en 70, maar misschien is 20 en 80 veiliger.
- De stop-loss en take-profit: deze kun je ook laten optimaliseren op basis van historische data.
Voor een RSI-bot zijn dat de knoppen die je kunt draaien vóórdat je de bot live laat draaien. De meest voor de hand liggende zijn: Optuna probeert al deze waardes in verschillende combinaties uit tijdens een backtest. Het doel is om de combinatie te vinden die jouw specifieke handelsdoelen bereikt, of dat nu maximale winst is, een lage drawdown of een hoge win-ratio.
Hoe Optuna te werk gaat: van chaos naar winstgevende parameters
Optuna start een 'studie'. Je geeft het een doel: maximaliseer de winst of minimaliseer het risico.
Vervolgens begint het met 'trials'. Elke trial is een volledige backtest met een nieuwe set parameters. De eerste paar trials zijn vaak willekeurig om de speelruimte te verkennen. Daarna wordt het slimmer.
Een gave feature van Optuna is pruning. Stel, een bepaalde set parameters leidt na 100 trades al tot een enorme verliesreeks.
Waarom zou je dan de rest van de historische data nog testen?
Pruning stopt zo'n trial vroegtijdig. Dit bespaart je enorm veel rekenkracht en tijd, zodat je voorkomt dat je te lang doorgaat met optimaliseren en sneller naar de veelbelovende combinaties kunt kijken. Je kunt Optuna ook een dashboard geven.
Terwijl de optimalisatie draait, kun je in je browser live meekijken hoe de trials verlopen. Je ziet direct welke parameters goede resultaten geven en welke je beter kunt skippen. Dit maakt het proces van parameter optimization transparant en leerzaam.
Stap-voor-stap: je RSI-parameters optimaliseren met Python
Laten we het concreet maken. Je hebt een Python-script met een backtesting engine (zoals Backtrader, Lean of een simpele pandas-loop). Je wilt de RSI-periode en de oversold-waarde optimaliseren.
Eerst installeer je Optuna: pip install optuna. Daarna schrijf je een functie die Optuna aanroept.
def objective(trial): # Optuna stelt een waarde voor rsi_period = trial.suggest_int('rsi_period', 5, 30) oversold = trial.suggest_int('oversold', 10, 30) # Je voert je backtest uit met deze parameters winst = run_backtest(rsi_period, oversold) # Je geeft de score terug aan Optuna return winst
Die functie ziet er ongeveer zo uit: Vervolgens start je de studie:
study = optuna.create_study(direction='maximize') study.optimize(objective, n_trials=100)
Met n_trials=100 laat je Optuna 100 verschillende combinaties testen. Na afloop print je eenvoudig de beste parameters uit met study.best_params. Dit zijn de gouden instellingen voor jouw RSI-bot.
Geavanceerde trucs: define-by-run en pruning
Een krachtige functie van Optuna is de 'define-by-run' API. Dit betekent dat je zoekruimte niet statisch is, maar dynamisch.
Je kunt conditionele parameters instellen. Stel: als je kiest voor een RSI-strategie, wil je ook de oversold/waardes testen, maar bij een MACD-strategie zijn die niet nodig. Optuna kan dat automatisch aansturen.
Voor trading bots is pruning essentieel. Een backtest over 5 jaar kan lang duren.
Als een strategie na het eerste jaar al hopeloos verliest, heeft het geen zin om door te gaan. Met de callback-functie van Optuna kun je de backtest tussentijds afbreken als de resultaten onder een bepaalde grens vallen. Dit versnelt je optimalisatieproces enorm. Vraag je je af hoe vaak je jouw parameters opnieuw moet optimaliseren? Een andere tip is het gebruik van de OptunaHub.
Dit is een plek waar gebruikers kant-en-klare 'studies' en functies delen. Misschien heeft iemand al een perfect script geschreven voor het optimaliseren van een RSI-strategie op Binance data. Waarom het wiel opnieuw uitvinden?
Vergelijking: Optuna vs. de concurrentie
Er zijn meer tools voor hyperparameter optimalisatie, maar Optuna is voor Python-traders vaak de beste keuze. Laten we even kijken hoe het zich verhoudt tot zijn belangrijkste rivalen.
GridSearch (de standaard in Scikit-learn): Dit is de brute-force methode. Je zegt: test RSI van 5, 10, 15, 20, 25.
GridSearch probeert elke combinatie. Dit werkt voor 2 parameters, maar als je ook nog stop-loss en take-profit wilt testen, worden het er duizenden. Dit is traag en inefficiënt.
Optuna is intelligenter en veel sneller. Hyperopt: Dit is een andere populaire library.
Hij is krachtig, maar heeft een steilere leercurve. De syntax is soms lastiger te begrijpen voor beginners. Optuna voelt veel meer 'Pythonic' aan. De code leest als normale Python, wat het makkelijker maakt om te integreren in je bestaande trading bots.
Random Search: Dit is simpelweg willekeurig gokken. Dit werkt verrassend vaak beter dan GridSearch, maar mist de leercomponent die Optuna heeft.
Optuna bouwt kennis op tijdens het proces, waardoor het sneller convergeert naar de beste oplossing.
Aanbeveling: welke tool kies je?
Als je serieus bent over het optimaliseren van je algoritmische trading bots, is Optuna de standaard die je moet gebruiken. Voor beginners: Start met Optuna.
De documentatie is helder en de 'define-by-run' API voelt intuïtief. Je kunt een simpele studie opzetten in minder dan 20 regels code. Het is de perfecte manier om te leren hoe parameter-tuning werkt.
Voor gevorderden: Optuna blijft de beste keuze, zelfs op professioneel niveau. De mogelijkheid om studies op te slaan, te visualiseren met het dashboard en te integreren met complexe backtesting frameworks maakt het onverslaanbaar.
Bovendien is het open-source en gratis. Waar te beginnen? Zoek niet verder dan de officiële Optuna documentatie. Daar vind je tutorials die specifiek ingaan op het optimaliseren van functies (zoals je backtest resultaat). Je hoeft geen dure software te kopen; deze krachtige bibliotheek is gratis en wacht op jouw Python-code.
