Hoe gebruik je 'WandB' (Weights & Biases) voor het tracken van je experimenten?

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Strategie Optimalisatie & Tuning · 2026-02-15 · 7 min leestijd

Stel je voor: je hebt een prachtige trading bot geschreven. De backtests op historical data van Interactive Brokers of Alpaca zien er veelbelovend uit.

Je rendement is mooi, de drawdown is beheersbaar. Nu wil je de bot live zetten of verder optimaliseren, maar je bent de draad kwijt. Welke hyperparameters gaven dat goede resultaat? Welke run was het nu precies?

Zonder goede tracking verdwaal je snel in een wirwar van scripts en resultaten. Hier komt Weights & Biases (WandB) om de hoek kijken.

Het is je persoonlijke vluchtrecorder voor al je experimenten. In deze handleiding leer je stap-voor-stap hoe je WandB integreert in je Python trading bot, zodat je nooit meer een winstgevend experiment kwijtraakt.

Wat heb je nodig? (De basisvoorbereiding)

Voordat we beginnen, zorgen we dat de plankenkoers op orde is. Je hebt niet veel nodig, maar wat je nodig hebt, moet goed staan.

We werken in een typische Python-omgeving voor quant-trading. Denk aan libraries als Pandas voor data, NumPy voor wiskunde, en eventueel een library voor de broker API zoals 'ib_insync' of 'alpaca-trade-api'. Een typische set-up ziet er zo uit:

  • Een Python omgeving (bijvoorbeeld via Anaconda of een virtuele omgeving).
  • Je broker API keys (van bijvoorbeeld Interactive Brokers, Alpaca, of Binance).
  • Een account bij Weights & Biases (gratis te starten op wandb.ai).

Verwacht geen hoge kosten. De gratis tier van WandB is voor individuele traders en kleine teams ruim voldoende.

Je betaalt pas als je heel veel complexe projecten tegelijk draait of enterprise features nodig hebt. De installatie is simpel: via pip draai je pip install wandb. Zorg dat je Python versie 3.7 of hoger draait; oudere versies zorgen voor onnodige compatibiliteitsproblemen.

Stap 1: Inloggen en je project starten

De eerste stap is het verbinden van je lokale code met de WandB cloud.

Dit is je 'check-in' voordat de vlucht begint. Open je terminal of command prompt.

Je kunt inloggen door simpelweg wandb login te typen. Je krijgt dan een prompt om je API key in te voeren. Die key vind je op je WandB profielpagina. Voer hem in, en je bent verbonden.

Dit hoef je maar één keer per machine te doen. Daarna initialiseren we WandB in je Python script.

import wandb
wandb.init(project="trading-bot-strategie", entity="jouw_username")

Dit is een korte handeling die ongeveer 5 minuten duurt om goed te zetten. Zet de volgende code bovenaan je main script of notebook: Vervang "jouw_username" door je eigen WandB gebruikersnaam.

Het project "trading-bot-strategie" is een label dat je zelf verzint. Zorg dat je naamgeving consistent is; noem het niet vandaag "strat1" en morgen "botA".

Kies een naam die de strategie omschrijft, zoals "MeanReversion_EURUSD" of "Momentum_SPY". Veelgemaakte fout: Vergeet niet de wandb.finish() call aan het einde van je script.

Als je dit vergeet en je draait meerdere runs achter elkaar in een loop, kunnen de logs door elkaar lopen of incompleet opslaan. Zorg dat elke run netjes wordt afgesloten.

Stap 2: Hyperparameters loggen en configuratie

Elke goede trading bot draait om instellingen. Wat is je stop-loss? Je take-profit?

Welke moving averages gebruik je? In plaats van deze waarden hard te coderen, stop je ze in een dictionary die WandB bijhoudt.

Dit maakt je experimenten reproduceerbaar. Als je later ziet dat een stop-loss van 1.5% het beste werkte, weet je precies welke run dat was. Gebruik de wandb.config namespace.

Doe dit direct na wandb.init(). Ziet er ongeveer zo uit: Je kunt ook command-line arguments gebruiken voor je script (met argparse) en die direct doorgeven aan WandB. Dit is super handig als je via een cloud server (zoals AWS EC2 of DigitalOcean) meerdere bots tegelijk draait.

config = {
    "stop_loss_pct": 1.5,
    "take_profit_pct": 3.0,
    "timeframe": "15m",
    ma_period: 20
}
wandb.config.update(config)

Je kunt dan bijvoorbeeld 5 varianten van je bot tegelijk testen met verschillende stop-loss percentages, en WandB splitst dit automatisch voor je op in het dashboard.

Let op: typ je getallen als floats (1.5) en niet als strings ("1.5") voor de beste analyse in het dashboard.

Stap 3: Metrics en resultaten live tracken

Hier wordt het echt interessant. Tijdens het draaien van je backtest of live trading wil je zien wat er gebeurt, maar pas op voor de gevaren van curve fitting bij het optimaliseren.

Log regelmatig je belangrijkste KPI's (Key Performance Indicators). Denk aan je equity curve, het aantal trades, winst percentage, en drawdown. Zo ontdek je ook sneller hoe je omgaat met over-optimization in een volatiele markt.

wandb.log({
    "equity": current_equity,
    "drawdown": current_drawdown,
    "trade_count": trade_counter,
    "daily_return": daily_return
})

WandB kan deze waarden live plotten. Binnen je trading loop roep je wandb.log() aan. Dit doe je meestal na elke trade of aan het einde van elke candle (bar). Een voorbeeld: Probeer dit niet bij elke microseconde te doen; dat overlaadt het systeem.

Loggen per candle of per trade is meestal voldoende. Als je een complexe machine learning bot gebruikt (bijvoorbeeld voor order execution prediction), kun je ook je loss en accuracy loggen.

Let op: log getallen, niet strings. Als je "winnaar" logged, kan WandB er geen grafiek van maken. Tip: Gebruik wandb.define_metric("custom_metric", step_metric="time") als je eigen tijd-as wilt gebruiken.

Standaard gebruikt WandB het aantal stappen (steps), wat bij een backtest vaak de candle index is. Als je handmatig een tijd-as wilt plotten (bijv. werkelijke datums), moet je dit even instellen.

Stap 4: Visualisaties en artefacten (De kracht van WandB)

Nu je data binnenkomt, wil je het zien. Het WandB dashboard is je control room.

Je vindt hier standaard tabbladen voor Logs, System usage, en Charts. Als je de code hierboven hebt gebruikt, zie je nu je equity curve groeien. Maar je kunt meer.

Voeg handmatige grafieken toe om patronen te zien. Bijvoorbeeld een scatter plot van je entry punten versus je winst.

Dit doe je met wandb.log({"scatter_plot": wandb.plot.scatter(...)}). Ook kun je je 'artefacten' opslaan. Dit zijn bestanden die bij een bepaalde run horen.

wandb.save("equity_curve.png")

Denk aan de CSV met je historische data, of het plot van je equity curve. Waarom is dit belangrijk?

Omdat je later exact wilt terugzien *waarom* een bepaalde run goed was.

Misschien had die run een rare piek door een bug in de data? Als je de artefacten bewaart, kun je het script van die run herladen en de data inspecteren. Dit is essentieel voor risicomanagement. Je wilt geen bot live zetten die gebaseerd is op een artefact van een corrupte datafile die je per ongeluk bewaard hebt.

Veelgemaakte fout: Vergeet niet de wandb.watch() functie te gebruiken als je een neuraal netwerk gebruikt. Dit visualiseert je model graph. Voor simpele trading bots is dit niet nodig, maar als je met PyTorch of TensorFlow bot-strategieën bouwt, is dit onmisbaar.

Stap 5: Hyperparameter Sweeps (Optimalisatie)

Dit is de reden waarom je WandB eigenlijk gebruikt. Je hebt een basisstrategie, maar je weet niet wat de beste waarden zijn voor je parameters.

Moet je RSI periode 14 zijn of 21? Is een stop-loss van 1% beter of 2%?

program: mijn_bot.py
method: bayes
metric:
  name: net_profit
  goal: maximize
parameters:
  stop_loss_pct:
    min: 0.5
    max: 2.0
  rsi_period:
    values: [14, 21, 28]

In plaats van dit handmatig aan te passen en 100 keer je script te draaien, gebruik je de WandB Sweeps functionaliteit. Je definieert een 'sweep' bestand (YAML). Hierin zet je de zoekruimte voor je parameters. Bijvoorbeeld: Je upload dit bestand via de WandB interface of CLI.

Vervolgens start je de sweep. WandB stuurt dan automatisch agents (je scripts) aan om de parameters te testen.

De 'Bayes' methode leert van eerdere runs; als een bepaalde range van stop-loss slecht presteert, wordt die sneller overgeslagen. Dit bespaart je uren backtest-tijd. Tijdsindicatie: Een sweep opzetten kost 30 minuten, maar het optimaliseren kan uren tot dagen duren, afhankelijk van je backtest snelheid. Vergeet niet om out-of-sample te valideren na je optimalisatie. Zet dit 's nachts aan op een cloud server.

Verificatie-checklist

Voordat je je resultaten accepteert, loop je deze lijst even na. Zo voorkom je teleurstellingen.

  • Is de API key goed? Check in je terminal of wandb login "Success" meldt.
  • Zijn de logs live? Kijk in je terminal tijdens de run; zie je "wandb: ... logged in..." en updates?
  • Staan de juiste parameters er? Open het run in het dashboard. Klik op "Overview". Check of je stop-loss en andere parameters kloppen. Dit voorkomt dat je een goede run reproduceert met de vererde parameters.
  • Zijn de grafieken logisch? Ziet je equity curve eruit als een nette lijn of zitten er rare sprongen in? Een sprong kan duiden op een bug in je logica of een stock split in de data.
  • Is de run afgesloten? Zit er een groen vinkje bij de run of is de status "Finished"?

Met deze stappen ben je klaar om professioneel te experimenteren. WandB haalt de chaos uit je development proces. Je weet precies wat je doet, waarom je het doet, en wat de resultaten zijn. Dat is de basis van serieus risicomanagement en winstgevende algoritmische trading.

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Over Alex de Vries

Alex is een ervaren quantitatief analist en Python-ontwikkelaar die complexe trading concepten vertaalt naar begrijpelijke, praktische handleidingen voor zowel beginners als gevorderden.

Volgende stap
Bekijk alle artikelen over Strategie Optimalisatie & Tuning
Ga naar overzicht →