Een Random Forest classifier trainen om 'Buy' of 'Sell' te voorspellen
Stel je voor: je zit achter je scherm, de markt beweegt razendsnel en je wilt niet elke seconde handmatig beslissen. Een Random Forest classifier kan je helpen om in één oogopslag te zien of je moet kopen of verkopen.
Dit is geen magie, maar een slimme Python-machinelearning-aanpak die je kunt backtesten via je broker-API, met risicomanagement ingebouwd.
Je bouwt een model dat patronen herkent en een eenvoudig signaal geeft: Buy of Sell. Je hoeft geen wiskundige genius te zijn. Je begint met data, een paar features, een classifier en een backtest.
De resultaten vertellen je of je setup kansrijk is. En als het werkt, koppel je het aan een trading bot die via je broker-API orders plaatst. Zo wordt theorie praktijk, zonder emotie.
Wat is een Random Forest classifier?
Een Random Forest is een verzameling van beslissingsbomen. Elk boom kijkt naar je data en geeft een voorspelling.
De meeste stemmen tellen: als 70 bomen ‘Buy’ zeggen en 30 ‘Sell’, dan kies je Buy. Zo werkt de classifier: het is een democratie van bomen. Het mooie is dat je weinig hoeft te tunen voor een stabiel resultaat.
Je kunt het zien als een robuuste bot die niet snel overfit.
De bos-methode verdeelt het risico over veel bomen. Dat helpt bij markten die soms onvoorspelbaar zijn. Je kunt classifiers bouwen die naar prijsindicaties kijken, zoals RSI, MACD of Bollinger Bands. Je kunt ook volume, orderboek-data of macro-features toevoegen. Zo maak je een model dat bij jouw tradingstijl past, van daytraden op smallcaps tot swingtraden op large caps.
Waarom dit trainen voor Buy/Sell?
Handmatig beslissen is vermoeiend en emotioneel. Een getrainde classifier geeft je een consistent signaal dat je kunt backtesten.
Je ziet wat er gebeurt als je volgens het model handelt, zonder hindsight-bias. Dat maakt je proces transparant en verbeterbaar. Je kunt risicomanagement direct inbouwen: stop-loss, take-profit en position sizing. Je kunt ook filters toevoegen, zoals geen trades tijdens earnings of na grote macro-berichten.
Zo blijft je bot beschermd tegen uitschieters. Met Python en een broker-API kun je alles automatiseren.
Je haalt data via de API, traint je model, backtest en executeert trades.
Zo sluit je de cirkel van idee naar resultaat, zonder handmatig te klikken.
Hoe bouw je zo’n classifier in Python?
Je begint met data. Haal historische koersen op via je broker-API, bijvoorbeeld van Interactive Brokers, Alpaca of een Nederlandse broker.
Je slaat ze op in een DataFrame met prijs, volume en eventueel orderboek-info.
- RSI over 14 perioden
- MACD lijn en signaal
- Bollinger Bands breedte
- 5-daags en 20-daags voortschrijdend gemiddelde
- Volume-ratio versus gemiddelde
Je berekent features die je vertrouwt. Features zijn de ingrediënten van je model. Denk aan: Je maakt een label: Buy of Sell.
Bijvoorbeeld: als de prijs binnen 5 dagen 2% stijgt, dan is het label Buy. Anders is het Sell.
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
model = RandomForestClassifier(n_estimators=200, max_depth=10)
model.fit(X_train, y_train)
predictions = model.predict(X_test)
Je splitst de data in train- en testperiodes, bijvoorbeeld 2019-2022 voor trainen en 2023 voor testen. Je gebruikt een RandomForestClassifier uit scikit-learn. Een simpel voorbeeld van code-idee: Je evalueert met nauwkeurigheid, precisie en recall.
Nauwkeurigheid zegt hoe vaak je model goed zit. Precisie zegt hoe vaak een Buy-signal echt een winnaar is.
Recall zegt hoeveel van de echte kansen je pakt. Je kijkt ook naar de F1-score voor een balans. Je kunt hyperparameters tunen, maar begin simpel.
Een Random Forest met 100-300 bomen en een diepte van 8-12 werkt vaak goed. Je kunt feature-importance bekijken om te zien welke indicaties het meest tellen. Zo begrijp je je model.
Backtesten en risicomanagement
Een backtest is je proefrit. Je simuleert trades op historische data, met transaction costs en slippage.
Je kunt libraries als Backtrader of Zipline gebruiken, of een eigen script schrijven. Je test op minimaal 2-3 jaar data, liefst met wisselende marktomstandigheden. Je bouwt risicomanagement in. Stel je inleg is €5.000.
Je riskeert maximaal 1% per trade, dus €50. Je stop-loss zet je op 1-2% onder je entry, afhankelijk van volatiliteit.
Je take-profit zet je op een risk-reward van 1:2, dus €100 winst bij €50 risico.
Je voegt filters toe. Geen trades op dagen met grote macro-cijfers of earnings. Je kunt een volatiliteitsfilter instellen: alleen trades als de ATR onder een bepaalde waarde is.
Zo voorkom je dat je in extreme bewegingen stapt. Je kijkt naar drawdown.
Een drawdown van 10-15% is voor veel traders acceptabel, maar je moet weten of je dat psychologisch aankan. Je kunt position sizing aanpassen: bij drawdown verlaag je de grootte van je positie, bij winst verhoog je deze voorzichtig. Je test verschillende tijdframes.
Een classifier op 5-minuten data geeft meer trades, maar ook meer kosten.
Een classifier op dagdata geeft minder trades, maar vaak betere risk-reward. Kies wat bij je broker en je kostenstructuur past.
Varianten en prijsindicaties
Je kunt je classifier verrijken met extra indicaties. Voeg de RSI toe als momentum-check.
Gebruik MACD voor trendsterkte. Bollinger Bands helpen bij volatiliteit. Volume-ratio laat zien of een beweging ondersteund wordt.
Combineer ze tot een mix die je vertrouwt. Je kunt ook externe data meenemen.
Denk aan sentiment uit nieuws of social media, of macro-cijfers zoals inflatie en rente. Je kunt deze data als extra features toevoegen. Zo wordt je model gevoeliger voor marktcontext.
Er zijn varianten van Random Forest. Je kunt een Gradient Boosting Classifier proberen, zoals XGBoost of LightGBM.
Die zijn vaak iets accurater, maar kunnen sneller overfitten. Je kunt ook een eenvoudige Logistic Regression als baseline gebruiken.
Zo vergelijk je of je complexiteit de moeite waard is. Prijsindicaties kun je vertalen naar een score. Bijvoorbeeld: RSI onder 30 is +1 voor Buy, boven 70 is +1 voor Sell. MACD crossover geeft +1 voor Buy of Sell.
Je kunt deze scores combineren in een ensemble-model. Zo maak je een robuust signaal dat minder afhankelijk is van één indicator.
Praktische tips voor je bot
Begin klein. Kies één markt, bijvoorbeeld een populaire ETF of large cap.
Gebruik één timeframe en een beperkte set features. Zo leer je je pipeline kennen zonder overweldigd te raken.
Automatiseer je pipeline. Haal data op via de broker-API, sla op in een database, train je model, backtest en log je resultaten. Gebruik een scheduler om je bot dagelijks of per uur te laten draaien.
Zorg dat je logs en alerts hebt voor fouten. Test op out-of-sample data. Splits je data altijd in train en test. Gebruik een aparte validatieperiode.
Zo voorkom je dat je model te goed past op historie en faalt in de toekomst.
Monitor je prestaties. Houd winst, drawdown, gemiddelde winst per trade en hit-rate bij.
Pas je risicomanagement aan als je drawdown te groot wordt. Vergeet niet transaction costs: een broker rekent €2-5 per trade, plus eventuele spread. Dat eet je winst op.
Keep it simple. Een Random Forest met 200 bomen, 10 features en een stop-loss van 1% is een sterk begin.
Je hoeft niet meteen complexe deep learning te gebruiken. Eerst bewijs dat je pipeline werkt, dan pas schalen.
Afsluitend
Een Random Forest classifier is een praktische, benaderbare manier om Buy/Sell te voorspellen.
Je combineert data, features en risicomanagement tot een systeem dat je kunt testen en verbeteren. Je bouwt een bot die via je broker-API orders uitvoert, zonder emotie en met een duidelijk plan. Terwijl je dit doet, is het goed om stil te staan bij de ethiek van AI in de financiële markten. Je hoeft niet perfect te zijn. Je hoeft alleen consistent te zijn.
Train je model, backtest je resultaten, manage je risico’s en sla je model op voor live trading. Zo groeit je bot met je mee, stap voor stap, trade na trade.
