Plotly Dash: Een interactief trading dashboard bouwen met Python
Je kent dat gevoel wel: je hebt een algoritmische bot gebouwd in Python, je backtest draait soepel, maar je mist die ene plek om alles in één oogopslag te zien.
Een dashboard dat niet alleen cijfers toont, maar echt reageert op je klikken. Plotly Dash is precies dat: een Python-bibliotheek waarmee je web-achtige interfaces bouwt zonder een regel HTML of CSS te schrijven. Je blijft gewoon in je vertrouwde Jupyter-omgeving of je favoriete code-editor zitten.
Stel je voor: je zit achter je scherm, je broker-API (bijvoorbeeld Interactive Brokers of Alpaca) streamt live data, en je ziet meteen welke posities open staan, wat je risico is per trade en hoe je equity curve erbij ligt. Met Dash sleep je eenvoudig een slider voor je stop-loss naar boven of beneden en ziet je bot direct de nieuwe parameters aanpassen. Geen gedoe met losse scripts of handmatig plakken in Excel.
Wat is Plotly Dash en waarom is het onmisbaar voor traders?
Dash is een open-source Python-bibliotheek van Plotly. Het combineert interactieve grafieken met webcomponenten, allemaal geschreven in Python.
Je maakt een layout (hoe het eruitziet) en koppelt die aan callbacks (hoe het reageert). Zo bouw je een dashboard dat direct communiceert met je trading bot, backtests en risicobeheer. Waarom is dit essentieel voor algoritmische trading? Omdat je sneller inzicht krijgt en beter beslissingen neemt.
In plaats van aparte scripts voor data, grafieken en besturing, heb je één omgeving. Je ziet meteen wat er gebeurt als je een parameter wijzigt.
Je voorkomt versnippering en verlaagt de kans op fouten. Denk aan concrete voordelen: je bouwt een dashboard voor €0 (dash is gratis), je kunt het draaien op je laptop of op een lichte VPS vanaf €5 per maand, en je koppelt het aan broker-API’s zoals Interactive Brokers, Alpaca of Binance.
Je houdt alles in Python, dus je backtesting-pipeline (met libraries als backtrader of zipline) blijft naadloos aansluiten.
De kern: hoe Dash werkt, stap voor stap
Een Dash-app bestaat uit drie delen: layout, callbacks en de server. De layout bepaalt wat er op het scherm staat: grafieken, sliders, dropdowns, data tables. Je schrijft dit in Python met components als dcc.Graph, dcc.Slider en html.Div.
Je hoeft geen CSS te kennen; Dash gebruikt standaard styling die er netjes uitziet.
Callbacks verbinden interactie met logica. Een callback neemt inputs (bijvoorbeeld een sliderwaarde) en geeft outputs (bijvoorbeeld een bijgewerkte grafiek).
Als je de stop-loss slider verplaatst, past je callback de risico-berekening aan en vernieuwt de equity curve. Dat gebeurt automatisch, zonder dat je op een submit-knop hoeft te drukken. Wil je live data tonen?
Gebruik dcc.Interval of WebSocket-verbindingen om elke seconde nieuwe data te laden. Je kunt een loop draaien die de broker-API pollt, of een event-driven aanpak bouwen met callbacks die reageren op nieuwe ticks.
Zo blijft je dashboard realtime en voelt het levend. Voor backtesting kun je een aparte layout maken waar je parameterreeksen instelt (bijvoorbeeld stop-loss van 0,5% tot 3% en take-profit van 1% tot 6%). Je berekent de resultaten met je favoriete backtesting-engine en toont de equity curve, drawdown en winst per trade in interactieve grafieken. De lezer kan de parameters aanpassen en ziet meteen hoe de prestaties veranderen.
Praktische bouwstenen: voorbeelden uit de trading-wereld
Begin met een simpel dashboard dat je portefeuille toont. Gebruik dcc.Graph voor een lijngrafiek van je equity curve en een bar chart voor exposure per instrument.
Voeg een dropdown toe om tussen brokers te wisselen (Interactive Brokers, Alpaca, Binance). Je kunt een data table van html.Table gebruiken om open posities te tonen, inclusief stop- en target-prijzen. Voeg risicomanagement toe met sliders voor max risico per trade (bijvoorbeeld 1% tot 3%) en een slider voor totaal exposure (bijvoorbeeld €10.000 tot €50.000).
De callback berekent het aantal contracten of aandelen op basis van je stop-loss en risicopercentage.
Voor een future op de Eurex met een notional van €50 per punt en een stop van 20 punten, kom je uit op een positiegrootte die je direct in de grafiek ziet. Gebruikdcc.Interval voor live updates. Stel een polling interval in van 5 seconden voor rustige markten of 1 seconde voor snelle crypto-paren. Je kunt ook een WebSocket-verbinding bouwen naar een broker-API die streaming ondersteunt.
Zo blijft je dashboard realtime zonder je CPU te belasten. Integreer je backtesting-pipeline.
Maak een apart tabblad “Backtest” met sliders voor parameters (bijvoorbeeld atr-periode van 10 tot 30, risk-reward van 1:2 tot 1:3). De callback voert de backtest uit (met backtrader of je eigen script) en toont de resultaten: winstpercentage, gemiddelde winst/verlies, maximale drawdown. Je kunt de resultaten exporteren naar CSV voor verdere analyse in Excel of Python voor financiële analyse.
Varianten en modellen: van simpel naar geavanceerd
Een basisdashboard (€0) bevat een paar grafieken, sliders en een live update.
Dit draait op je laptop en is perfect voor starters. Je kunt het hosten op een lokale machine of een lichte VPS. Kosten: €0 voor de software, €5-€10 per maand voor een VPS als je 24/7 wilt draaien.
Een gevorderd dashboard (€0-€50 per maand) voegt meerdere brokers toe, geavanceerde grafieken (candlesticks, volume, indicatoren zoals SMA/EMA), en risicomanagement met alerts. Je kunt een database (SQLite of PostgreSQL) gebruiken voor trade-logboeken.
Hosting op een VPS kost €5-€15 per maand; voor extra betrouwbaarheid kies je een managed service vanaf €20 per maand.
Een professioneel dashboard (€50-€200 per maand) integreert live order placement, position sizing op basis van portefeuille-risico, en geautomatiseerde alerts via e-mail of Telegram. Je kunt een tweede scherm gebruiken voor monitoring, met een aparte layout voor risk management en een voor trade execution. Kosten hangen af van broker-fees en eventuele cloud-diensten (bijvoorbeeld AWS Lambda of Google Cloud Run vanaf €10 per maand). Modellen voor risicomanagement: fixed fractional sizing (1% risico per trade), Kelly-criterium (voor gevorderden), of volatiliteit-gewogen sizing (gebruik ATR).
In Dash kun je deze modellen als sliders instellen en direct zien hoe de positiegrootte verandert. Voor een account van €25.000 met 1% risico en een stop van 2% op een aandeel van €100, kom je uit op een positie van €12.500 (125 aandelen). Dat toont je dashboard meteen in een overzichtelijke tabel.
Praktische tips om snel aan de slag te gaan
Start klein. Bouw eerst een dashboard met één grafiek en één slider. Voeg daarna live data toe en pas dan risicomanagement toe.
Zo blijf je overzichtelijk en voorkom je dat je je verliest in complexiteit.
Gebruik sterke bibliotheken naast Dash. Kies de juiste visualisatie-tool voor grafieken, pandas voor data-verwerking, backtrader of zipline voor backtesting, en een broker-API zoals ib_insync (Interactive Brokers), alpaca-py (Alpaca) of python-binance (Binance).
Voor risicomanagement kun je eigen functies schrijven of bestaande libraries gebruiken voor position sizing. Host slim. Lokale ontwikkeling is gratis en snel.
Voor 24/7 draaien kies je een VPS vanaf €5 per maand. Zorg voor beveiliging: gebruik environment variables voor API-keys, zet een firewall op, en draai de app achter een reverse proxy (nginx) met HTTPS.
Zo voorkom je dat je keys lekken. Test je callbacks grondig. Gebruik dcc.Store om tussentijdse data op te slaan en voorkom dat je te veel data ophaalt bij elke update. Cache waar mogelijk, bijvoorbeeld door historische data één keer te laden en alleen nieuwe ticks te appenden.
Zo blijft je dashboard soepel lopen, zelfs met live streaming. Houd rekening met broker-limieten.
Sommige brokers rekenen kosten per request of per trade. Bij Interactive Brokers betaal je voor marktdata; bij Alpaca zijn er gratis data-feeds voor aandelen.
Plan je polling-interval slim: elke 5 seconden voor rustige markten, elke seconde voor actieve crypto-paren. Zo beperk je kosten en belasting van je account. Maak het persoonlijk.
Gebruik je eigen kleuren, logo’s en naamgeving. Voeg een tabblad toe voor je favoriete strategieën, zoals een trendvolgende bot op DAX-futures of een mean-reversion bot op EUR/USD. Zo voelt het dashboard echt van jou en blijf je gemotiveerd om het te gebruiken.
Met Dash bouw je een trading dashboard dat naadloos aansluit op je Python-bots, backtests en risicomanagement, waarbij je eenvoudig koersgrafieken in Python visualiseert.
Het is snel, interactief en volledig in je vertrouwde omgeving. Begin vandaag nog, experimenteer met sliders en callbacks, en ervaar hoeveel sneller je beslissingen neemt als alles in één oogopslag zichtbaar is.
