Je machine learning model opslaan en laden voor live trading
Stel je voor: je hebt uren getraind, data geanalyseerd en een model gebouwd dat nu eindelijk winstgevend lijkt op historische data. Je wilt het inzetten met je broker, maar dan sta je stil.
Hoe zorg je dat je model niet alleen in je Jupyter Notebook leeft, maar ook live trades uitvoert zonder elke keer opnieuw te beginnen? Het antwoord ligt in het slim opslaan en laden van je model, en dat proces is makkelijker dan je denkt.
Wat betekent opslaan en laden eigenlijk?
Opslaan van een machine learning model betekent dat je de getrainde parameters en architectuur vastlegt in een bestand. Je laadt dit bestand later weer in je Python-script om direct te gebruiken, zonder opnieuw te trainen.
Denk aan een JSON- of pickle-bestand dat je model representeert, inclusief gewichten, features en eventuele schaalinstellingen.
Waarom is dit essentieel voor live trading? Omdat je tijd bespaart en consistentie bewaakt. Je vermijdt data leakage tijdens het opnieuw laden en zorgt dat je bot dezelfde logica volgt als bij je backtest met tools als Backtrader of Zipline.
Bij een broker zoals Interactive Brokers of LYNX kun je dan via API-call direct signalen uitvoeren. Een typisch model voor algoritmische trading, zoals een XGBoost-classifier voor trendvoorspelling, neemt maar enkele megabytes in. Een eenvoudig bestand van 5 MB is al voldoende voor een complete set features en parameters. Je kunt dit bestand veilig bewaren op je server of in een cloud bucket, klaar voor gebruik.
Waarom dit cruciaal is voor je live bot
Je wilt geen uren wachten tot een model opnieuw getraind is terwijl de markt beweegt. Met een opgeslagen versie start je je bot binnen seconden op. Dit is vooral belangrijk bij daghandel of scalping, waar elke seconde telt.
Consistentie is key. Als je model elke keer anders laadt, kunnen kleine afwijkingen in data preprocessing leiden tot andere trades.
Door een vast bestand te gebruiken, weet je zeker dat je live resultaten overeenkomen met je backtest op historische data van bijvoorbeeld de AEX of S&P 500. Risicomanagement wint hier ook mee.
Je kunt verschillende modelversies testen en opslaan, zoals versie 1.0 voor defensieve trades en 1.1 voor agressievere posities. Kies welke je laadt op basis van je risicoprofiel, en beperk zo verliezen tijdens volatiele markten.
De kern: hoe werkt het in Python?
Begin met trainen van je model in Python, bijvoorbeeld met scikit-learn of TensorFlow. Gebruik een pipeline voor preprocessing, zoals standaardisatie van prijsdata en feature engineering met moving averages.
import joblib
joblib.dump(model, 'trading_model_v1.pkl')
Sla het getrainde model op met pickle of joblib: Voor deep learning modellen, zoals een LSTM voor prijsvoorspelling, sla je het model op met TensorFlow's save-functie.
Dit creeert een map met gewichten en architectuur, ongeveer 10-50 MB voor een standaard setup. Je laadt het later eenvoudig in met model = tf.keras.models.load_model('lstm_model.h5'). In je live bot script laad je het model aan het begin van de sessie.
Gebruik een API zoals die van Alpaca of Interactive Brokers om trades te plaatsen. Stel een eenvoudige loop in: laad model, haal live data op via de API, voorspel, en executeer trades met risicogrenzen zoals een stop-loss van 2% per positie. Voorbeeldcode voor laden en predicten: Zorg dat je preprocessing consistent is.
import joblib
model = joblib.load('trading_model_v1.pkl')
data = get_live_data_from_api() # via broker API
prediction = model.predict(data)
if prediction == 1: place_buy_order()
Sla ook je scaler op met joblib.dump(scaler, 'scaler.pkl') en laad deze bij je model.
Zonder dit worden je features verkeerd geschaald, wat tot foute trades leidt.
Varianten en prijsindicaties voor je setup
Er zijn verschillende manieren om modellen op te slaan, afhankelijk van je type model.
Voor eenvoudige lineaire modellen of decision trees is pickle/joblib prima: gratis en lichtgewicht, ideaal voor backtesting met Backtrader. Voor complexere deep learning modellen, zoals CNN's voor beeldherkenning van candlestick patronen, gebruik je TensorFlow of PyTorch formaten. Deze nemen meer ruimte in, tot 100 MB, maar zijn krachtiger voor tijdreeksanalyse met kwalitatieve data.
Een populaire variant is een ensemble model, zoals een combinatie van XGBoost en een random forest. Dit sla je op als een dictionary met meerdere bestanden.
Kosten: XGBoost is open-source en gratis, maar voor productie op een VPS van DigitalOcean betaal je ongeveer €10-€20 per maand voor 2GB RAM.
Als je cloud opslag wilt, zoals AWS S3, kost dat €0.023 per GB per maand – voor een model van 10 MB is dat verwaarloosbaar. Prijsindicaties voor hardware: een basis laptop met 16GB RAM is genoeg voor training en live draaien, rond €800-€1200. Wil je professioneler, ga voor een dedicated server van OVH vanaf €50 per maand, met API-integratie voor brokers als DEGIRO of Saxo Bank. Voor risicomanagement voeg je een portfolio tracker toe, zoals QuantConnect's tool (vanaf €20 per maand), om je modelprestaties te monitoren.
Specifieke merken en tools voor trading bots
Een andere optie is containerisatie met Docker. Pak je model en script in als een image van ongeveer 500 MB, en deploy het op een server.
Dit maakt updaten makkelijk: je laadt een nieuwe versie zonder downtime. Kosten voor Docker hosting zijn vergelijkbaar met een VPS, vanaf €10 per maand. Gebruik voor Python backtesting eerst Backtrader of Lean (van QuantConnect).
Beide zijn gratis en ondersteunen het opslaan van modellen als onderdeel van je strategie.
Voor live trading koppel je aan een broker API: Interactive Brokers biedt gratis toegang voor rekeningen vanaf €100.000, maar voor kleinere rekeningen zijn er kosten van €10 per maand. Als je machine learning wilt integreren, kijk naar libraries als Alpha Vantage voor data (gratis tier beschikbaar) of Polygon.io voor real-time data (vanaf €199 per jaar). Sla je model op na elke retrain sessie, bijvoorbeeld wekelijks, om marktveranderingen bij te houden. Voor risicomanagement voeg je stop-loss en position sizing toe via libraries als PyPortfolioOpt, gratis beschikbaar. Denk bij het automatiseren ook na over de ethiek van AI in de financiële markten.
Praktische tips voor soepel live draaien
Test altijd eerst op een demo-account voordat je echt geld inzet. Gebruik een broker zoals Plus500 of eToro voor paper trading via hun API, zonder kosten voor de demo-modus. Laad je model en draai een simulatie van een week om afwijkingen te spotten.
Hou je bestanden klein en georganiseerd. Geef versienummers aan je modellen, zoals trading_model_v1.2.pkl, en bewaar ze in een map met logs van je backtests.
Gebruik git voor versiebeheer van je code, maar sla de grote modelbestanden buiten git op via .gitignore. Monitor je bot continu.
Stel alerts in via de broker API of tools als Telegram bots (gratis) om trades te volgen. Als je model presteert zoals verwacht, houd het dan vast; bij afwijkingen, laad je een eerdere versie terug. Vergeet niet je API-sleutels veilig te bewaren, bijvoorbeeld in environment variables, om hacking te voorkomen.
Begin klein: bouw eerst een simpel model voor één asset, zoals EUR/USD, en breid uit naar een portfolio van 5-10 instruments.
Met deze aanpak wordt live trading met machine learning een stuk toegankelijker en minder riskant.
