Xarray voor quants: Werken met multidimensionale financiële data

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 berg data. Niet zomaar een rijtje koersen, maar een complete 3D-bubbel van tijd, tickers en indicatoren. Xarray is de tang die je gebruikt om die bubbel vast te pakken en te bewerken zonder dat ie uit elkaar spat.

Als je met Python backtests bouwt of risicomanagement scripts schrijft, is dit de library die je dataset netjes houdt.

Geen gedoe met eindeloze numpy arrays en index-gepruts. Gewoon helder, direct, en snel.

Wat is Xarray precies?

Xarray is een Python library die multidimensionale data beheert met labels. Je kent het wel: je hebt een DataFrame met kolommen als ‘timestamp’, ‘ticker’ en ‘price’.

Handig, maar als je er meerdere tijdreeksen tegelijkertrekken wilt, wordt het rommelig. Xarray introduceert ‘DataArrays’ en ‘Datasets’ die elke as een naam geven, bijvoorbeeld ‘time’, ‘asset’ en ‘feature’. Stel je een dataset voor met 500 tickers, over 3 jaar, met 10 technische indicatoren. In Xarray is dat een object met drie assen: tijd (1095 dagen), assets (500) en features (10).

Je kunt elke as aanspreken met een label, niet met een nummer. Dat maakt code leesbaarder en minder foutgevoelig.

Waarom is dat handig voor quants? Omdat je snel kunt slicen, aggregeren en berekenen over specifieke dimensies.

Je pakt bijvoorbeeld alle ‘RSI’-waarden voor de Nasdaq-tickers in Q3 2023 in één regel code. Geen extra loops, geen uitzoekwerk. Xarray begrijpt wat je bedoelt.

Een ander voordeel: metadata blijft meeliften. Je kunt per ticker een broker-tag meenemen, of een risicoklasse.

Zo blijft je dataset rijk zonder dat je losse dictionaries moet bijhouden. Dat is fijn bij backtests waar je later nog wilt filteren op asset-klasse of datakwaliteit. Quants houden van snelheid.

Xarray bouwt op numpy en ondersteunt Dask voor parallelle berekeningen. Dat betekent dat je grote datasets kunt verwerken op meerdere cores, of zelfs over clusters heen.

Handig als je intraday data voor 2000 assets verwerkt en tegelijkertijd risico’s berekent.

Waarom Xarray in algoritmische trading?

Backtesting leeft van betrouwbare data. Als je tijdreeksen per ongeluk verschuift, krijg je verkeerde signalen en vals optimisme.

Xarray voorkomt dat doordat elk datapunt een label heeft. Je kunt niet per ongeluk een verkeerde index gebruiken, want de assen zijn benoemd.

Denk aan een multi-asset strategie. Je wilt weten: wat is de Sharpe voor elke ticker per maand, en hoe verhouden die zich tot de drawdown? In Xarray schrijf je een functie die over de tijd- en asset-dimensie heen aggregateert. Je krijgt meteen een nette 2D uitkomst terug, klaar voor visualisatie.

Bij risicomanagement is context alles. Xarray helpt om meerdere bronnen te combineren: tickdata van broker A, fundamentals van broker B, macrodata van je eigen ETL.

Je kunt ze in één Dataset stoppen en op dimensies joinen. Dat voorkomt mismatch en versnelt je analyse. Ook praktisch: herhaalbare workflows.

Als je een script bouwt dat elke ochtend een portefeuille-check draait, wil je geen data-verwarring. Xarray’s labeled arrays maken je pipeline voorspelbaar.

Je kunt makkelijk testen of je data klopt door simpelweg te printen wat de assen zijn.

En dan de performance. Je kunt met Dask lazy loading gebruiken: je definieert berekeningen zonder meteen alles in memory te laden. Pas als je een .compute() doet, wordt het echt uitgevoerd. Dat scheelt enorm bij grotere datasets, bijvoorbeeld 10 jaar tickdata voor 1000 assets.

Kern en werking: hoe begin je?

Eerst installeren: pip install xarray. Voor nettere output en snellere IO voeg je netCDF toe via pip install netcdf4.

Als je met Dask wilt schalen, pip install dask. Je bent klaar in een paar minuten. Geen complexe setup. Je begint met een DataArray.

Stel je hebt een numpy array van formaat (tijd, assets, features). Je geeft elke dimensie een label en eventueel een coordinate.

Voor tijd kun je een DatetimeIndex gebruiken. Voor assets een lijst tickers.

Voor features een lijst namen als ‘close’, ‘volume’, ‘RSI’. Hierna bouw je een Dataset. Dat is een verzameling DataArrays die samen horen, bijvoorbeeld ‘prices’ en ‘volumes’. Je kunt variabelen toevoegen en verwijderen zonder de structuur te verliezen.

Metadata kun je op datasetniveau zetten, zoals broker, resolutie en data-versie. Rekenen gaat intuïtief.

Wil je het gemiddelde per maand per asset? Gebruik groupby op de tijd-dimensie en mean over de juiste assen. Wil je een rolling window van 20 dagen voor een moving average?

Xarray heeft een rolling-functie die je makkelijk combineert met reduce. Voor wie nog dieper in de data wil duiken: NumPy is essentieel voor snel rekenen. Je code blijft leesbaar.

IO is makkelijk. Xarray leest en schrijft onder andere netCDF, HDF5 en zarr. Die formaten zijn snel en compact.

Voor financiële data die je lang bewaart, is netCDF een uitkomst. Je laadt je dataset in één keer terug, inclusief assen en metadata.

Dat maakt herhalende backtests stabiel. Voorbeeld in code-achtige uitleg: je maakt een dataset met tijd van 1 jan 2022 tot 1 jan 2024, 500 assets en 5 features. Je vult deze met willekeurige data, bijvoorbeeld voor een Monte Carlo-simulatie.

Je berekent vervolgens de cumulatieve return per asset. Je ziet meteen hoe de lijnen zich gedragen zonder dat je hoeft te puzzelen met indexen.

Varianten, modellen en prijsindicaties

Als je met Xarray werkt, zijn er een paar patronen die terugkomen. Je kunt kiezen voor een eenvoudige 2D-set met tijd en assets voor basis backtests, of een 3D-set met features voor complexere modellen.

Een 2D-set is lichter en sneller. Een 3D-set geeft meer flexibiliteit voor factormodellen.

Voor prijsindicaties is een simpele structuur vaak het best. Bewaar ‘close’, ‘open’, ‘high’, ‘low’ en ‘volume’ als aparte variabelen. Gebruik een aparte variabele voor ‘signals’ of ‘weights’ als je portefeuillebeslissingen opslaat.

Zo blijft je dataset overzichtelijk en kun je makkelijk verschillende strategieën vergelijken. Een uitgebreider model voegt macro-features toe, zoals rentecurves of volatiliteit indices. Die kun je als extra dimensie toevoegen, of als extra variabele binnen je Dataset. Voor een factormodel met 10 features per asset over 5 jaar, houd je rekening met ongeveer 50.000 datapunten per feature.

Xarray schaalt hier soepel mee. Prijsindicaties voor data-opslag: een netCDF-bestand van 1 GB kost bij cloud-opslag vaak tussen de €0,02 en €0,05 per maand.

  • Rolling factor models: combineer tijd- en feature-dimensie voor snelle berekeningen.
  • Portfolio-allocatie: bewaar weights per asset en tijd, en bereken risico’s per dimensie.
  • Risk dashboards: aggregatie over tijd en assets voor dagelijkse checks.

Als je elke nacht een nieuwe versie opslaat, loopt dat op, maar het blijft goedkoop. Voor rekenkracht: een Dask-cluster op 4 cores op een cloud VM kost ongeveer €0,10 per uur.

Voor grotere backtests met tickdata kun je rekenen op €0,30 tot €0,80 per uur, afhankelijk van provider en configuratie. Modellen die goed passen bij Xarray zijn: Elk model profiteert van labeled assen en lazy computing. Je bouwt sneller, je debug makkelijker, en je resultaten zijn herhaalbaar.

Praktische tips voor algoritmische trading

Houd je assen consistent. Gebruik altijd UTC voor tijd, en zorg dat je assets uniek zijn.

Als je van broker wisselt, voeg een broker-dimensie toe of een broker-attribute per asset.

Zo voorkom je mismatch tussen tickers en datakwaliteit. Combineer Xarray met je bestaande stack. Gebruik pandas voor gestructureerde trading data en conversie, en stop het daarna in Xarray voor berekeningen.

Voor backtesting kun je vectorbt of backtrader gebruiken voor signalen, en Xarray voor data-orchestratie. Zo blijft elke tool doen waar hij goed in is. Optimaliseer IO. Sla je dataset op in netCDF of zarr, en gebruik lazy loading met Dask voor grote bestanden.

Vermijd het opslaan van losse CSV’s per ticker; gebruik liever PyStore voor snelle opslag van tick data, want CSV's zijn traag en foutgevoelig.

Een enkel bestand met labels is sneller en betrouwbaarder. Test je berekeningen.

Schrijf kleine unit tests die controleren of de assen kloppen en of de data niet verschuift. Controleer of groupby-operaties overeenkomen met je verwachte tijdreeksen. Een simpele assert over de shape en labels voorkomt veel pijn.

Denk aan risicomanagement. Sla niet alleen prijzen op, maar ook je risico-parameters per asset.

Bijvoorbeeld stop-loss niveaus, position sizing, en exposure-limieten. In Xarray kun je die als extra variabelen opslaan. Zo blijft je risicobeheer gekoppeld aan je data.

Gebruik specifieke voorbeelden uit je eigen handel. Als je een momentumstrategie draait op Nasdaq-tickers, sla dan de 20- en 50-day moving averages op als aparte variabelen.

Bereken de Sharpe per maand en de max drawdown per asset. Xarray maakt die vergelijking makkelijk en overzichtelijk.

En tot slot: hou het simpel. Begin met een 2D dataset, voeg pas later extra dimensies toe als je ze echt nodig hebt. Schrijf je code zodat je makkelijk kunt filteren op tijd, asset en feature. Zo blijft je workflow snel, begrijpelijk en robuust.

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 →