Wat is 'Kibana' en hoe visualiseer je de logs van je trading systeem?

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Dev-Ops & Infrastructuur voor Traders · 2026-02-15 · 6 min leestijd

Je hebt een trading bot gebouwd in Python, je hebt een broker API gekoppeld en je backtests draaien soepel. Maar als er iets misgaat, wil je weten waarom.

Logs zijn je beste vriend, maar zonder visualisatie is het een chaos van tekstregels.

Kibana is de oplossing: een krachtige tool om je logs te doorzoeken, te filteren en in dashboards te gieten. Stel je voor dat je in één oogopslag ziet welke trades mislukken, welke API-fouten optreden en hoe je risicomanagement presteert. In deze handleiding bouwen we een Kibana-omgeving die specifiek is ingericht voor algoritmische trading.

We doen dit stap voor stap, zonder poespas. Je bent klaar om je trading systeem transparant te maken.

Wat je nodig hebt voordat je start

Voordat we beginnen, zorgen we dat de basis stabiel is. Je hebt een computer nodig met minimaal 8 GB RAM en 5 GB vrije schijfruimte.

Een moderne processor (Intel i5 of beter, of AMD-equivalent) helpt om Elasticsearch soepel te laten draaien. We werken met gratis tools, dus geen kosten. Je hebt Python 3.9 of nieuwer nodig, plus een broker API-sleutel van bijvoorbeeld Interactive Brokers of Alpaca.

Zorg dat je bot logs schrijft in een gestructureerd formaat, bijvoorbeeld JSON.

Gebruik de Python-library logging met een JSONFormatter, of ga voor structlog. Je hebt ook Docker Desktop nodig om Elasticsearch en Kibana eenvoudig op te zetten. Reken op een uur voor de installatie, plus 30 minuten voor configuratie. Veelgemaakte fouten: vergeten om Docker te starten, of een verkeerde Python-versie installeren. Check vooraf of je Python kunt draaien met python --version en of Docker actief is.

Stap 1: Installeer Docker en start Elasticsearch

  1. Download en installeer Docker Desktop vanaf de officiële site. Kies de stabiele versie voor je besturingssysteem. Dit duurt 10-15 minuten.
  2. Open een terminal en draai docker pull docker.elastic.co/elasticsearch/elasticsearch:8.11.0. We kiezen versie 8.11.0 voor stabiliteit en compatibiliteit met de nieuwste Kibana.
  3. Start een Elasticsearch-container met: docker run -d --name elasticsearch -p 9200:9200 -e "discovery.type=single-node" -e "xpack.security.enabled=false" docker.elastic.co/elasticsearch/elasticsearch:8.11.0. De poort 9200 is standaard. Zet security uit voor eenvoudige lokale test; voor productie zet je het aan.
  4. Wacht 2-3 minuten tot Elasticsearch draait. Test met curl http://localhost:9200. Je krijgt een JSON-antwoord met cluster-naam en versie.
  5. Veelgemaakte fouten: firewall blokkeert poort 9200, of je vergeet --name waardoor je container niet vindt. Herstart Docker als het misgaat.

Deze stap zet een lichte database neer die je logs opslaat. Voor trading data is 1 GB ruimte genoeg voor duizenden transacties.

Elasticsearch indexeert je logs snel, zodat je later kunt zoeken op symbool, timestamp of foutcode.

Stap 2: Zet Kibana op en verbind met Elasticsearch

  1. Pull het Kibana-image: docker pull docker.elastic.co/kibana/kibana:8.11.0. Houd versies gelijk voor compatibiliteit.
  2. Start Kibana met: docker run -d --name kibana -p 5601:5601 -e "ELASTICSEARCH_HOSTS=http://host.docker.internal:9200" docker.elastic.co/kibana/kibana:8.11.0. Poort 5601 is de webinterface. De variabele wijst Kibana naar je Elasticsearch-container.
  3. Wacht 3-5 minuten. Open je browser op http://localhost:5601. Je ziet het Kibana-welkomstscherm.
  4. Kies "Explore on my own" en ga naar "Stack Management" > "Data Views". Maak een nieuwe data view aan voor je logs, bijvoorbeeld "trading-logs-*". Dit vertelt Kibana welke indices te doorzoeken.
  5. Veelgemaakte fouten: verkeerde ELASTICSEARCH_HOSTS, waardoor Kibana niet verbindt. Gebruik host.docker.internal op Windows/Mac; op Linux gebruik je http://localhost:9200.

Kibana is nu klaar voor gebruik. Je dashboard voelt direct levendig: bekijk ook onze gids voor Grafana dashboards om je live trades professioneel te visualiseren.

Stel je voor dat je filtert op "order rejected" en direct de oorzaak ziet.

Stap 3: Schrijf je trading logs naar Elasticsearch

Je bot moet logs sturen naar Elasticsearch. Volg onze gids voor logging in Python om fouten in je live bot effectief op te sporen. Gebruik hiervoor de library elasticsearch (installeren met pip install elasticsearch).

Schrijf een eenvoudige logger die JSON-berichten verzendt. Voorbeeldcode:

from elasticsearch import Elasticsearch
import logging
import json
from datetime import datetime

es = Elasticsearch(["http://localhost:9200"])
logger = logging.getLogger("trading")
handler = logging.StreamHandler()

class ElasticsearchHandler(logging.Handler):
    def emit(self, record):
        log_entry = {
            "timestamp": datetime.utcnow().isoformat(),
            "level": record.levelname,
            "message": record.getMessage(),
            "symbol": getattr(record, "symbol", "N/A"),
            "order_id": getattr(record, "order_id", "N/A"),
            "error_code": getattr(record, "error_code", None)
        }
        es.index(index="trading-logs", body=log_entry)

es_handler = ElasticsearchHandler()
logger.addHandler(es_handler)
logger.setLevel(logging.INFO)

# Gebruik in je bot
logger.info("Order geplaatst", extra={"symbol": "AAPL", "order_id": "12345"})

  1. Voeg deze code toe aan je trading bot. Log elke key event: orderaanvraag, API-response, foutmelding, risicowaarschuwing.
  2. Test door de bot een simulatie te laten draaien. Stuur 10-20 logentries. Controleer met curl -X GET "localhost:9200/trading-logs/_search?pretty" of data aankomt.
  3. Voor productie: gebruik een buffer zoals Logstash (via Docker) voor betere performance. Installeer met docker pull docker.elastic.co/logstash/logstash:8.11.0 en configureer een pipeline voor je broker API-logs.
  4. Tijdsindicatie: 20-30 minuten voor code integratie. Veelgemaakte fouten: vergeten extra velden toe te voegen (zoals "symbol"), waardoor zoekopdrachten mislukken. Test altijd met een paar entries.

Je logs zijn nu gestructureerd en doorzoekbaar. Denk aan risicomanagement: log je positiegrootte en stop-loss niveaus, zodat je later kunt analyseren of je risico te hoog was.

Stap 4: Visualiseer logs in Kibana dashboards

  1. Open Kibana en ga naar "Analytics" > "Discover". Selecteer je "trading-logs-*" data view. Je ziet een tijdlijn van logs. Zoek naar "order_id:12345" om een specifieke trade te vinden.
  2. Maak een dashboard: ga naar "Analytics" > "Dashboard" > "Create dashboard". Voeg panels toe. Voorbeeld: een "Line chart" voor aantal orders per uur, gebaseerd op timestamp. Stel X-as in op "@timestamp", Y-as op "Count".
  3. Voeg een "Data table" toe voor foutanalyse: groepeer op "error_code". Zo zie je snel welke API-fouten vaker voorkomen (bijvoorbeeld "429 Too Many Requests" van je broker).
  4. Bouw een trading-specifiek panel: gebruik "Lens" voor een bar chart van winst/verlies per symbool. Haal data uit velden zoals "profit" of "pnl" die je in de log opneemt. Stel tijdfilter in op de afgelopen 24 uur.
  5. Sla het dashboard op als "Trading Log Monitor". Deel het met je team als je samenwerkt.
  6. Veelgemaakte fouten: verkeerde tijdzone (zet Kibana op UTC voor trading data), of te veel data in één keer laden, wat traag is. Begin met filters zoals "level:ERROR" om focus te houden.

Dit dashboard geeft je direct inzicht. Stel je voor dat je ziet dat 15% van de orders faalt door vertragingen bij de broker API, en je past je bot aan met retries.

Kibana maakt complexe logs begrijpelijk.

Stap 5: Optimaliseer voor trading en risicomanagement

Nu je visuals draaien, tune je voor je niche. Voeg velden toe voor risicobeheer: log je "risk_per_trade" (bijvoorbeeld 1% van kapitaal) en "max_drawdown".

Gebruik Kibana's "Alerting" om waarschuwingen te sturen als error-rate boven 5% komt. Ga naar "Stack Management" > "Alerts and Actions" en stel een regel in op je trading-logs index. Voor backtesting: log je backtest-resultaten naar Elasticsearch.

Voeg velden toe zoals "backtest_id", "Sharpe_ratio" en "max_drawdown". Visualiseer met een "Metric" panel om snel je Sharpe ratio te zien.

Integreer met Python: gebruik de elasticsearch library om backtest-logs te verzenden, of sla je tijdreeksdata efficiënt op na elke run.

Combineer met broker API's: log elke API-call met response-tijd. Gebruik Kibana om pieken te detecteren (bijvoorbeeld vertragingen tijdens marktopen). Voor Interactive Brokers of Alpaca: voeg "broker_response" veld toe voor foutcodes. Tijdsindicatie: 30-45 minuten voor tuning.

Veelgemaakte fouten: te complexe queries bouwen die traag zijn; houd het simpel met filters. Test elke alert met een simulatie.

Verificatie-checklist

  • Docker draait en Elasticsearch/Kibana containers zijn actief (check met docker ps).
  • Je kunt http://localhost:9200 en http://localhost:5601 bereiken.
  • Trading logs verschijnen in Elasticsearch (test met curl of Kibana Discover).
  • Dashboard toont tijdlijn, fouten en trading-metrics zonder errors.
  • Alerts werken: stuur een test-waarschuwing voor error-rate.
  • Logs bevatten niche-velden: symbool, order_id, error_code, risk_per_trade.
  • Performance OK: queries laden binnen 2-3 seconden.

Als alles klopt, heb je een krachtig monitoringssysteem voor je trading bot.

Je bent nu in control van je logs, van API-fouten tot risico-analyses. Ga ervoor en bouw verder op deze basis.

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 Dev-Ops & Infrastructuur voor Traders
Ga naar overzicht →