De 'Pairs Trading' Z-Score: Wanneer is het spread-verschil groot genoeg?

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Trading Strategieën & Logica · 2026-02-15 · 5 min leestijd

Stel je voor: je hebt twee aandelen die zo’n beetje hetzelfde pad lopen. Ze bewegen samen, tot op een dag één van de twee een sprintje trekt en de ander achterblijft.

Dat moment is goud waard voor een pairs trader. Je koopt de achterblijver en short de sprinter, wachtend tot ze weer samen komen. Maar hoe weet je zeker dat het verschil groot genoeg is om in te stappen?

Hier komt de Z-score om de hoek kijken. Het is jouw meetlat voor het spread-verschil.

Geen giswerk, maar een getal dat je vertelt: nu is het tijd.

Wat is de Z-score eigenlijk?

De Z-score is simpelweg een manier om te meten hoe ver de spread (het verschil tussen twee prijzen) afwijkt van zijn gemiddelde. Het zegt je niet óf de spread terugkeert, maar wel hoe extreem de huidige situatie is.

Stel, de spread tussen aandeel A en B is normaal €2,50. Nu is het €5,00.

De Z-score vertelt je: “Dit is 2 standaardafwijkingen verwijderd van het gemiddelde.” Waarom is dat belangrijk? Omdat je geen positions wilt openen wanneer de spread maar een beetje afwijkt.

Je wilt het moment pakken waarop de markt echt ontspoort. Een Z-score van 2 of meer is vaak de trigger. Dat betekent dat de afwijking groot genoeg is om kans te maken op een terugkeer, maar niet zo groot dat er iets structureels is veranderd. In de praktijk bereken je de Z-score over een rollend venster, bijvoorbeeld de laatste 20 dagen.

Je pakt de spread, trekt het gemiddelde eraf en deelt door de standaardafwijking.

Het resultaat is een getal dat je direct kunt vergelijken met historische pieken. Geen ingewikkelde wiskunde, gewoon een rekenformule in Python.

Hoe bouw je een Z-score trigger in je bot

Je begint met de data. Haal de historische prijzen op via je broker API, bijvoorbeeld Interactive Brokers of Alpaca.

Gebruik Python libraries als Pandas en NumPy om de spread te berekenen. Sla de dagelijkse sluitingsprijzen op en trek de prijs van aandeel B af van aandeel A. Nu heb je je spread-tijdreeks. Vervolgens bereken je het gemiddelde en de standaardafwijking over een venster van 20 tot 60 dagen, waarbij je voor de uitvoering van je orders grote posities onzichtbaar spreidt.

Hoe langer het venster, hoe robuuster, maar hoe minder snel je reageert op korte schokken. Voor een daghandel-bot kies je vaak 20 dagen, voor een swing-strategie 60 dagen.

De Z-score bereken je met: (spread - gemiddelde) / standaardafwijking. De trigger is eenvoudig: als de Z-score boven +2 uitkomt, short je de bovenliggende aandelen en koop je de onderliggende.

Bij een Z-score onder -2 draai je de positie om. Zorg dat je bot automatisch orders plaatst via de API, met limietorders om spread-slippage te minimaliseren. Test je setup eerst in een backtest met historical data van je broker.

Wanneer is het verschil groot genoeg?

Een Z-score van 2 is een goede vuistregel, maar geen heilige graal. De keuze hangt af van de volatiliteit van je aandelen en de kosten van transacties.

Bij een spread die normaal €1,50 is, is een afwijking van €3,00 (Z=2) significant.

Bij een spread van €10,00 is een afwijking van €20,00 pas groot genoeg. Je moet ook rekening houden met de transactiekosten. Als je broker €0,01 per aandeel rekent, en je handelt in batches van 100 aandelen, kost een round-trip al €2,00.

Als je spread maar €3,00 afwijkt, eet de kost je winst op. Pas je Z-score trigger dus aan op basis van je kostenstructuur. Bij Interactive Brokers kun je in Python met de TWS API de exacte commissies doorrekenen. Een andere factor is de historische verdeling van de Z-score.

Plot je Z-scores over een jaar en kijk naar de percentielen. Als 95% van de Z-scores onder +2,5 blijft, is een trigger op +2,5 conservatiever en veiliger.

Voor een agressievere strategie kies je +2,0. Gebruik je backtest om te zien welke trigger de beste risk-reward geeft.

Varianten en prijsindicaties

De klassieke Z-score is lineair, maar je kunt ook een exponentiële versie gebruiken. Hierbij geef je meer gewicht aan recente data.

In Python bereken je dit met Pandas ewm(). Dit maakt je trigger gevoeliger voor recente schokken, wat handig is als je momentum trading wilt automatiseren in snel bewegende markten zoals tech-aandelen.

Een andere variant is de geïmporteerde Z-score op de log-prijzen. In plaats van de spread in euro’s, werk je met de log-verhouding van de prijzen. Dit stabiliseert de variantie en is minder gevoelig voor uitschieters.

Voor aandelen met een hoge volatiliteit, zoals Tesla of Nvidia, is deze methode vaak beter. Voor prijsindicaties kijk je naar de historische pieken van de spread. Als de spread tussen Shell en BP de afgelopen jaar nooit meer dan €4,00 is afgeweken, is een Z-score trigger op €3,50 een veilige keuze. Gebruik je backtest om deze niveaus te bepalen. Zorg dat je bot deze niveaus als dynamische drempels instelt, zodat hij zich aanpast aan marktveranderingen.

Praktische tips voor je setup

  • Gebruik een broker met lage commissies en snelle API, zoals Interactive Brokers of Alpaca. Test de API eerst met een paper account.
  • Bouw je backtest in Python met historical data van minimaal 2 jaar. Gebruik libraries als Backtrader of Zipline voor realistische simulaties.
  • Monitor je spreads live. Sla de Z-score elke minuut op en log deze in een database. Zo herken je patronen en optimaliseer je je trigger.
  • Beheer risico’s met position sizing. Riskeer nooit meer dan 1% van je kapitaal per trade. Gebruik stop-losses op basis van de spread, niet op individuele aandelen.
  • Test verschillende Z-score triggers. Probeer +1,5, +2,0 en +2,5 en kijk welke de beste winst/risico verhouding geeft in je backtest.

Een laatste tip: houd rekening met marktomstandigheden. In een sterk opwaartse markt kunnen spreads langer ontsporen.

Pas je Z-score trigger aan in bull- of bear-markten. Gebruik een eenvoudige markt indicator, zoals een 200-daagse moving average van de S&P 500, om de marktconditie te bepalen. Met deze aanpak heb je een robuuste pairs trading strategie die niet alleen gebaseerd is op gevoel, maar op data en discipline. De Z-score is je kompas, je backtest je testrit en je broker API je voertuig. Stap in en laat de markt het werk doen.

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 Trading Strategieën & Logica
Ga naar overzicht →