Statsmodels in Python: Statistische tests uitvoeren op tijdreeksen

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Python Libraries voor Algoritmische Trading · 2026-02-15 · 7 min leestijd

Stel je voor: je hebt een backtest draaien op een Python-bot die handelt op de Euronext Amsterdam. Je ziet een mooie equity curve, maar klopt die wel?

Misschien zit er een verborgen trend in je data die je resultaten vertekent.

Statsmodels is je microscoop voor tijdreeksen. Je gebruikt het om te checken of je data stabiel is, of er correlaties zijn tussen instrumenten, en of je strategie echt werkt. Je combineert het met libraries als Pandas en Backtrader, en je haalt data via een broker API zoals Interactive Brokers of LYNX. Het is een simpele manier om je trading beslissingen op te bouwen.

Wat is Statsmodels en waarom gebruik je het in trading?

Statsmodels is een Python-bibliotheek die statistische modellen en tests biedt voor tijdreeksen. Je kunt er trends mee detecteren, seasonality checken, en tests uitvoeren op stationariteit en autocorrelatie.

In algoritmische trading bots draait alles om betrouwbare data. Als je data niet stabiel is, misleidt je backtest je.

Statsmodels helpt je die valkuilen te ontwijken. Waarom is dat relevant? Omdat je risicomanagement en broker-API calls niet genoeg zijn.

Je wilt weten of je signaal echt voorspelt, of toeval is. Denk aan een mean-reversion strategie op AEX-futures.

Statsmodels test of de residuals stationair zijn en of er geen verborgen trends zitten in je prijsreeks. Dat geeft je meer vertrouwen in je live-uitvoering. Je kunt Statsmodels combineren met je bestaande Python-pipeline. Gebruik Pandas voor data-invoer, Scikit-learn voor feature engineering, en Backtrader of Zipline voor backtesting.

Statsmodels zit er tussenin als de kwaliteitscontrole. Je test je data voor je het risico neemt om echt te traden.

Kern en werking: tests op tijdreeksen stap voor stap

Een tijdreeks is simpelweg een reeks data-punten in volgorde van tijd, zoals de slotkoers van een aandeel elke minuut.

Statsmodels helpt je patronen te ontdekken en te testen of die patronen betrouwbaar zijn. Je start met je data inladen, meestal als een Pandas DataFrame met een DateTimeIndex. Vervolgens pas je tests toe die je helpen beslissen wat je met je trading-bot doet.

Een basis test is de Augmented Dickey-Fuller test (ADF). Die test of je tijdreeks stationair is, oftewel of de statistische eigenschappen niet veranderen over tijd.

Voor trading is dat belangrijk omdat veel modellen, zoals ARIMA, stationariteit vereisen.

Je voert de test uit met een paar regels code, en je krijgt een p-waarde. Een lage p-waarde (bijvoorbeeld onder 0,05) suggereert stationariteit. Als je tijdreeks niet stationair is, kun je een differencing stap toevoegen, zoals je rendement berekenen in plaats van prijzen. Een andere nuttige test is de Ljung-Box test op autocorrelatie.

Die test of er nog correlatie zit in de residuals van je model. Als je residuals gecorreleerd zijn, is je model niet volledig en kun je je strategie verbeteren.

Bij een mean-reversion strategie op een index ETF zoals de iShares AEX ETF (Euronext: IEF) controleer je of de residuals witte ruis zijn. Als er structurele patronen overblijven, pas je je parameters aan of voeg je extra features toe. Voor meer geavanceerde analyses kijk je naar cointegratie.

Als je twee instrumenten combineert, zoals een aandeel en een futurescontract, test je of ze samen stationair zijn.

Je gebruikt de Engle-Granger test of de Johansen test. Als je een cointegrerend paar vindt, bouw je een spread-strategie. Je koopt het ene en short het andere als de spread afwijkt.

Statsmodels helpt je die spread te berekenen en te testen. De werking is concreet: je laadt je data, je past een model toe (bijvoorbeeld een ARIMA via statsmodels.tsa.arima.model.ARIMA), en je inspecteert de summary.

Die summary toont coëfficiënten, standaardfouten en p-waarden. Je gebruikt die info om je bot te fijnstellen. Je kunt ook een rolling window analyse doen om te zien of je parameters stabiel blijven over tijd. Dat voorkomt dat je een oude calibratie gebruikt in een nieuwe markt.

Varianten en modellen met prijsindicaties voor algoritmische trading

Een klassieke variant is ARIMA. Je gebruikt het voor prijsvoorspelling op korte termijn, bijvoorbeeld voor een scalping-bot op een liquid instrument zoals de future op de AEX.

Je kiest p, d, q parameters en je traint op een rolling window van 50 tot 200 candles. De output is een voorspelling voor de volgende candle.

Je kunt die voorspelling vertalen in een ordergrootte, bijvoorbeeld 1 contract per €10.000 account-equity, met een stop op 1 procent. Een andere optie is een GARCH-model voor volatiliteit. Als je een optie-strategie draait, wil je weten of volatiliteit gaat stijgen. Je gebruikt een GARCH(1,1) via statsmodels.tsa.arch.

Je past het toe op dagelijkse rendementen van een tracker zoals de SPDR S&P 500 ETF.

Als de geïmpliceerde volatiliteit laag is maar je model verwacht een stijging, kun je long vega gaan. Je kunt een prijsindicatie koppelen: als je verwachte volatiliteit 5 procentpunten stijgt, en je positie is €10.000, dan is je verwachte winst ongeveer €500 minus kosten. Voor pairs trading kijk je naar cointegratie.

Je selecteert twee aandelen op Euronext, bijvoorbeeld Philips en ASML. Je berekent de spread en test die op stationariteit.

Als de spread stationair is, zet je een mean-reversion strategie op. Je koopt de underperformer en short de outperformer als de spread 2 standaarddeviaties afwijkt.

Je stopt uit als de spread terugkeert naar het gemiddelde. Je kunt een prijsindicatie geven: bij een spread van €2 en een target van €0,50, riskeer je €1,50 per eenheid. Je positiegrootte bepaal je via risicomanagement, bijvoorbeeld 1 procent van je account per trade.

Je kunt ook VAR-modellen (Vector Autoregression) gebruiken voor multivariate analyse. Als je een portefeuille van 5 aandelen beheert, test je of er interacties zijn tussen de rendementen.

Je gebruikt die info voor dynamische hedge-ratio’s. Bijvoorbeeld: je houdt 100 aandelen van een bedrijf en short een indexfuture met een hedge-ratio van 0,6.

Statsmodels helpt je die ratio te schatten en te valideren met tests.

Praktische tips voor je trading-pipeline

Begin met schone data. Haal je data via een broker API zoals Interactive Brokers of LYNX, en sla ze op in Parquet of CSV.

Gebruik Pandas om te resamplen naar je gewenste frequentie, bijvoorbeeld 5-minuten candles voor een intraday-bot. Verwijder outliers en check op missing values. Gewogen voortschrijdende gemiddelden berekenen met Pandas helpt je bij het filteren van ruis, terwijl Statsmodels het beste werkt met complete tijdreeksen.

Combineer tests met backtesting. Draai je strategie eerst in Backtrader of Zipline, en voeg Statsmodels tests toe als extra validatie.

Als je de Augmented Dickey-Fuller test uitvoert en een hoge p-waarde krijgt, overweeg dan differencing of een andere feature. Gebruik een rolling window voor je parameters, zodat je model zich aanpast aan marktveranderingen. Beheer risico’s concreet. Stel een maximum risico per trade in, bijvoorbeeld 1 procent van je account.

Gebruik een stop-loss en een take-profit op basis van je statistische analyse. Bij een spread-strategie zet je de stop op 2 standaarddeviaties.

Je kunt een prijsindicatie koppelen: als je spread €3 is en je target €0,80, riskeer je €2,20 per eenheid. Op een account van €25.000 betekent dat een positie van ongeveer 11.360 eenheden (€25.000 × 0,01 / €2,20). Documenteer je aanpak.

Schrijf op welke tests je gebruikt, welke parameters je kiest, en wat je beslissingen zijn.

Dat helpt je bij live-uitvoering en bij het verbeteren van je bot. En onthoud: statistiek is een hulpmiddel, geen garantie. Gebruik het om beter te begrijpen wat er gebeurt, niet om blind te vertrouwen.

Afsluitende gedachten en volgende stappen

Statsmodels geeft je een heldere lens op je tijdreeksen. Je test of je data stabiel is, of je residuals witte ruis zijn, en of je spreads cointegreren.

Dat versterkt je algoritmische trading-beslissingen en je risicomanagement. Je bouwt een robuuste pipeline van data via een broker API, analyse via Statsmodels, en backtesting met Python-tools. Voor een vliegende start in dit vakgebied kun je onze Python voor financiële analyse gids raadplegen. Probeer een simpele workflow: laad een dataset van een AEX-aandeel, draai een ADF-test op de prijs en op het rendement, en pas een ARIMA-model toe.

Bekijk de summary en pas je parameters aan. Test op een tweede instrument en kijk of er cointegratie is.

Zet een kleine backtest op en meet de drawdown. Je zult snel zien welke aanpak werkt voor jouw bot en je accountgrootte. Met deze aanpak stap je uit de wereld van guesswork en in de wereld van meetbare beslissingen. Statsmodels is je gereedschap, je Python-pipeline is je werkplaats, en je broker API is de deur naar de markt. Ga aan de slag, experimenteer, en bouw stap voor stap een betrouwbare trading-bot.

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 Python Libraries voor Algoritmische Trading
Ga naar overzicht →