Unsupervised Learning: Marktregimes ontdekken met Clustering

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Machine Learning & AI in Trading · 2026-02-15 · 6 min leestijd

Stel je voor: je zit achter je scherm, de markt beweegt als een dolle. De ene dag groen, de volgende dag bloedrood.

Je probeert patronen te vinden, maar het voelt als gokken. Wat als je een manier had om te zien dat de markt nu in een "paniekfase" zit of juist in een "rustige opbouw"? Dat is precies wat unsupervised learning doet.

Het sorteert al die chaos voor je in logische stapels, zonder dat je het hoeft te vertellen wat die stapels betekenen.

Je geeft de data en de computer doet de rest. Zo ontdek je marktregimes die je met het blote oog nooit zou zien.

Wat zijn marktregimes eigenlijk?

Een marktregime is simpelweg een 'modus' waarin de markt verkeert. Denk aan een stijgende markt met lage volatiliteit (een saaie, stabiele opwaartse trend), een dalende markt met extreme pieken (paniekverkoop), of een chaotische zijwaartse beweging.

Elke regime heeft zijn eigen karakter. Je strategie die vandaag werkt, kan morgen falen omdat de markt van regime is veranderd. Clustering is de techniek die deze regimes voor je vindt.

Het kijkt naar data zoals prijsactie, volume en volatiliteit. Het groept data punten die op elkaar lijken.

Je hoeft niet te zeggen: "Dit is een bearmarkt". De algoritmen doen dat zelf. Zo krijg je een kaart van de markt, met zones die logisch zijn. Je weet straks precies welke strategie je moet gebruiken in welke zone.

Waarom is dit essentieel voor algoritmische traders? Omdat de markt nooit statisch is.

Een bot die in alle regimes hetzelfde doet, verliest geld. Je wilt een bot die weet: "Oké, nu zijn we in een 'snelle beweging', zet de stop-loss wat strakker" of "Nu is het rustig, ik kan wat meer risico nemen". Clustering geeft je die context. Het is als een extra zintuig voor je bot.

Hoe werkt clustering in de praktijk?

Het proces begint met data. Je haalt historische data op via je broker API, zoals Interactive Brokers of een crypto exchange als Binance.

Je kiest een tijdsframe, bijvoorbeeld 1-uur candles. Dan bereken je kenmerken: de absolute verandering in prijs (price change), de volatiliteit (hoe breed de candle is), en misschien het volume. Je normaliseert deze data, want een prijs van €50.000 mag niet zwaarder tellen dan een volume van 1000.

Vervolgens kies je een algoritme. De meest gebruikte is K-Means.

Je geeft aan hoeveel groepen je wilt, zeg 3 of 4. Het algoritme pakt lukraak een aantal 'middelpunten' en trekt grenzen. Het past dit aan totdat de groepen zo zuiver mogelijk zijn. Een andere optie is DBSCAN, dat groepen vindt op basis van dichtheid.

Handig als je wilt weten wat de 'drukte' in de markt is. Je codeert dit in Python met bibliotheken als Scikit-learn.

Stel je voor: je draait de clustering over de afgelopen 2 jaar Bitcoin data. De output is een label bij elke candle: 0, 1, 2 of 3. Je plot dit terug op de grafiek.

Je ziet ineens dat label 2 altijd voorkomt tijdens de enorme pieken en dalen.

Label 0 is die saaie, stijgende periode. Nu weet je wat die labels betekenen. Je hebt de chaos geordend.

Modellen en strategie-aanpassingen per regime

Zodra je de regimes hebt, koppel je er een strategie aan. Tijdens de 'lage volatiliteit opwaartse' fase (vaak label 0) werken trendvolgende strategieën perfect.

Denk aan een simple moving average crossover. Je loopt lekker mee met de stroom. De stop-loss kun je verder weg zetten omdat de markt rustig beweegt.

Je neemt een positie in van bijvoorbeeld 2% van je portfolio. In de 'hoge volatiliteit neerwaartse' fase (label 2) verandert het spel.

Trendstrategieën werken vaak averechts of stoppen eruit door schommelingen. Hier schakel je naar mean-reversion of je trekt je helemaal terug. Je gebruikt smaller stops, bijvoorbeeld op 1% risico, omdat de markt je snel kan uitstoppen.

Of je wacht juist tot de paniek voorbij is en de prijs stabiliseert, om dan in te stappen voor de rebound. Een leuk model om te testen is Gaussian Mixture Models (GMM).

Dit is iets geavanceerder dan K-Means. Het geeft niet alleen een hard label, maar ook een 'kans' voor wie koersrichting wil voorspellen met labels.

Het zegt: "Deze candle heeft 80% kans om bij het 'paniekregime' te horen". Dit helpt bij twijfelachtige momenten. Je kunt je positiegrootte dan dynamisch aanpassen. Hoe hoger de kans op een riskant regime, hoe kleiner de positie.

Dit is risicomanagement op topniveau. Vergeet de prijsindicaties niet.

Clustering werkt het beste als je het combineert met andere data. Gebruik de ATR (Average True Range) als input voor je clustering. Zo leer je de bot direct het verschil tussen een 'normale' dag en een uitschieter.

De API van je broker stuurt deze data vaak realtime. Je kunt dus een live dashboard bouwen dat aangeeft: "Waarschuwing: Markt regime verandert naar Hoog Risico". Wees je hierbij bewust van de ethiek van AI in trading, zeker bij extreme volatiliteit.

Praktische tips voor jouw trading bot

Begin klein. Je hoeft geen supercomputer te gebruiken.

Een simpele Python script op een VPS van €5 per maand is genoeg om te starten. Haal data van de afgelopen 6 tot 12 maanden via je broker API. Gebruik de 'OHLCV' data (Open, High, Low, Close, Volume) en verrijk je marktanalyse met ChatGPT API.

Sla dit op in een CSV of een lichte database zoals SQLite.

Zo hoef je niet telkens opnieuw te downloaden. Kies het juiste aantal clusters. Te weinig (bijv. 2) geeft te weinig nuance. Te veel (bijv. 10) geeft ruis. Begin met 3 of 4.

Gebruik de 'Elbow Method' om dit te bepalen: plot de afwijkingen en zoek de 'elleboog' in de grafiek. Dat is vaak het beste aantal.

Test dit terug in de tijd (backtesting) om te zien of de verdeling logisch voelt. Pas je code aan totdat de clusters overeenkomen met wat jij als mens ziet. Test elk regime apart.

Schrijf je backtesting script in Python met libraries als Backtrader of VectorBT.

Simuleer wat er was gebeurd als je in label 0 altijd 'buy and hold' had gedaan, en in label 2 short was gegaan. Kijk naar de drawdown. Als je in het 'paniekregime' te veel verliest, pas dan je stop-loss aan of sluit je posities helemaal.

Dit is het moment dat je risicomanagement optimaal wordt. Automatiseer de update. De markt verandert.

Jouw cluster van vandaag is misschien over een half jaar anders. Bouw een script dat elke week of maand opnieuw draait op de nieuwste data.

Sla de 'centroids' (de gemiddelde kenmerken van een regime) op. Als live data hier ver vanaf wijkt, weet je dat er iets fundamenteels verandert. Zo blijft je bot leren, zonder dat je er elke dag naar omkijkt.

Let op de kosten. Als je elke seconde data aanroept via een API, betaal je soms per request.

Of je broker rekent kosten voor het verwerken van data streams. Plan je calls slim. Update de clustering eens per uur, niet elke seconde. Zo hou je de kosten laag (denk aan €0 tot €10 per maand bij veel brokers) en blijft je bot efficiënt draaien.

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 Machine Learning & AI in Trading
Ga naar overzicht →