Wat is 'Supervised Learning' in de context van koersvoorspelling?
Stel je voor: je bouwt een handelsbot in Python, je sluit een API aan bij een broker zoals Interactive Brokers of Alpaca, en je wilt dat die bot slimme beslissingen maakt. Hoe leer je die bot dan om patronen in koersdata te herkennen?
Het antwoord is supervised learning. Dit is de hoeksteen van veel algoritmische trading systemen.
Je traint een model met historische data, zodat het kan voorspellen wat er waarschijnlijk gaat gebeuren. Het is een manier om je bot ‘ervaring’ te geven zonder dat je hem fysiek achter je scherm hoeft te zetten. In deze gids duiken we erin, specifiek voor traders die met backtesting en risicomanagement bezig zijn.
Wat is supervised learning precies?
Stel je voor dat je een kind leert fietsen. Je geeft het sturen en trappen aanwijzingen, en je corrigeert het als het bijna valt.
Bij supervised learning werkt het hetzelfde, maar dan met data. Je geeft een model een stuk historische data – bijvoorbeeld de prijs van Bitcoin over de laatste 30 dagen – en je vertelt het wat het had moeten voorspellen. Je traint het model met een dataset waarin de input (bijvoorbeeld de open, high, low, close en volume van de afgelopen 10 candles) en de output (de richting van de volgende candle) duidelijk gelabeld zijn.
De kern is simpel: je hebt features (de input) en een target (de output). In trading is de feature meestal technische indicaties zoals RSI, MACD of Bollinger Bands.
De target is wat je wilt voorspellen: stijgt de prijs morgen met 1% of daalt hij?
Het model leert de relatie tussen features en target. Het doet dit door een functie te vinden die de kans op de juiste uitkomst maximaliseert. Hoe meer data en hoe beter de features, hoe beter de voorspellingen. Waarom is dit cruciaal voor algo traders?
Omdat je zonder deze aanpak alleen maar op gevoel of simpele regels handelt. Supervised learning stelt je in staat om complexe patronen te herkennen die een menselijke trader misschien over het hoofd ziet.
Je kunt een model trainen op duizenden uren marktdata en het dan testen op een onafhankelijke dataset (backtesting) om te zien of het echt werkt. Dit is essentieel voor risicomanagement: je wilt niet een bot inzetten die alleen maar toevallig goed presteert op de data waarop het is getraind.
Hoe het werkt: van data tot voorspelling
Stap 1 is dataverzameling. Je haalt historische koersdata via een API van een broker zoals Alpaca, of je downloadt CSV-bestanden van exchanges.
Voor een stabiele bot wil je minimaal 5 tot 10 jaar aan data, afhankelijk van de asset. Je schoont de data op: je verwijderd outliers, vult missende waarden en zorgt voor consistente tijdframes (bijvoorbeeld 1-uur candles). Dan creëer je features.
Dit zijn de inputvariabelen. Voor een aandelenbot zou je kunnen kijken naar de 14-daagse RSI, de 50-daagse moving average, en het volume van de afgelopen candle.
Voor een crypto-bot voeg je misschien nog de funding rate toe. Vervolgens definieer je de target. Dit is wat je model moet voorspellen. Een klassieke aanpak is classificatie: stijgt de prijs morgen met meer dan 0.5% (label: 1) of niet (label: 0)?
Een andere aanpak is regressie: je voorspelt de exacte prijs. Voor de meeste trading bots is classificatie praktischer, omdat het makkelijker is om een beslissing te nemen (kopen of verkopen) op basis van een kans.
Je splitst je data in een trainingset (bijvoorbeeld 70%) en een testset (30%). Het model leert van de trainingset en wordt geëvalueerd op de testset. De training zelf gebeurt met een algoritme.
Voor supervised learning zijn er veel opties: lineaire regressie voor eenvoudige voorspellingen, decision trees voor meer complexe patronen, of neural networks voor diepgaande analyse.
Je traint het model door het duizenden keren te laten kijken naar de trainingdata en de fouten te corrigeren. Dit proces heet ‘gradient descent’ – het model past zijn parameters aan om de voorspellingsfout te verkleinen. Na de training test je het model op ongeziene data. Als de nauwkeurigheid hoog is (bijvoorbeeld 60% of meer bij tweezijdige voorspellingen), kun je overwegen om het in een live omgeving te zetten, met strikte risicolimieten.
Modellen en prijsindicaties voor trading bots
Een populair model voor supervised learning in trading is de Random Forest, maar voor meer geavanceerde strategieën kun je ook kijken naar de basis van Reinforcement Learning voor trading agents. Dit is een verzameling van beslissingsbomen.
Elke boom bekijkt een deel van de features en geeft een voorspelling.
De uiteindelijke beslissing is een gemiddelde van alle bomen. Random Forest is robuust en minder gevoelig voor overfitting. Je kunt het implementeren in Python met bibliotheken zoals scikit-learn.
Stel je traint een Random Forest op S&P 500 data met features als de 14-daagse RSI, de 50-daagse moving average en het volume. De target is of de index morgen stijgt.
Een getraind model kan dan een kans geven: 65% kans op stijging. Je kunt dan een positie openen met een stop-loss van 1% en een take-profit van 2%. Wil je verder gaan dan supervised learning? Dan kun je een trading agent trainen met Reinforcement Learning. Een ander krachtig model is de LSTM (Long Short-Term Memory), een type recurrent neural network. LSTMs zijn speciaal ontworpen voor tijdreeksdata, zoals koersprijzen.
Ze onthouden patronen over langere periodes. Voor crypto trading kun je een LSTM trainen op 100 candles van 1 uur, met features als open, high, low, close, volume en de 20-perioden EMA.
De target is de richting van de volgende candle. Een goed getrainde LSTM kan patronen herkennen zoals ‘een stijgende trend wordt ondersteund door een stijgend volume’. Dit soort modellen vereist meer rekenkracht en data, maar kan zeer nauwkeurig zijn.
Je kunt ze testen met backtesting tools zoals Backtrader of Zipline, en live zetten via een broker API met een risicobeheer script dat je positiegrootte beperkt tot 1% van je kapitaal. Prijsindicaties zijn de features die je model gebruikt.
Bijvoorbeeld: als de RSI onder 30 is en de prijs boven de 50-daagse moving average, geeft je model een koopsignaal. Een andere indicatie is de Bollinger Bands squeeze: als de bands smal worden, duidt dat op een uitbraak. Je kunt deze indicaties combineren in een supervised learning model.
Stel je bouwt een bot die op basis van 5 jaar AAPL data een kansberekening maakt: als de RSI laag is en de MACD crossover bullish, is er een 70% kans op een stijging van 1% in de volgende 24 uur. Je zet dan een order via de API van Interactive Brokers, met een stop-loss op 0.5% onder de instapprijs. Dit combineert technische analyse met data-gedreven voorspellingen.
Praktische tips voor je eigen trading bot
Begin klein. Pak een enkele asset, zoals een populaire aandelen-ETF of een crypto-paar zoals BTC/USD. Verzamel 5 jaar aan data via een broker API of een dienst als Yahoo Finance.
Gebruik Python libraries zoals pandas voor dataverwerking en scikit-learn voor je eerste model.
Train een eenvoudig model, bijvoorbeeld een lineaire regressie of decision tree, en evalueer de nauwkeurigheid op een testset. Als je een nauwkeurigheid van 55-60% haalt, ben je al verder dan een gemiddelde trader.
Vergeet niet om je model te testen met backtesting: simuleer trades op historische data en bekijk de winst/verlies curve. Risicomanagement is essentieel. Geen enkel model is perfect.
Gebruik altijd stop-losses en position sizing. Stel je inleg per trade in op maximaal 1% van je totale kapitaal.
Test je bot op out-of-sample data om overfitting te voorkomen: als je model te goed presteert op de trainingsdata maar faalt op nieuwe data, is het overfit. Gebruik cross-validation om dit te controleren. En begin met een paper trading account bij een broker zoals Alpaca of Interactive Brokers voordat je echt geld inzet. Zo bouw je vertrouwen op zonder risico.
Experimenteer met verschillende modellen en features. Voeg nieuwe indicatoren toe, zoals de ATR voor volatiliteit, of pas je target aan: voorspel niet alleen richting, maar ook de magnitude van de prijsbeweging.
Gebruik bibliotheken als TensorFlow of PyTorch voor geavanceerde modellen, maar begin met eenvoudige oplossingen.
En tot slot: houd een log bij van al je trades en modelprestaties. Dit helpt je om te leren en je bot te verbeteren. Met Machine Learning voor Trading bouw je niet zomaar een bot – je bouwt een systeem dat leert en zich aanpast, met de juiste risicobeperkingen voor langdurig succes.
