Parquet vs CSV: Wat is sneller voor het inladen van miljoenen rijen?

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Data Acquisitie & Opschonen · 2026-02-15 · 7 min leestijd
Transparantie: Dit artikel bevat affiliate links. Als je via onze link een product koopt, ontvangen wij een kleine commissie. Dit kost jou niets extra en helpt ons om deze site te onderhouden.

Stel je voor: je hebt een backtest draaien op een dataset met 10 miljoen tick data punten van de S&P 500. Je script loopt vast. De reden?

Het CSV-bestand van 2 GB wordt zo langzaam ingeladen dat je broker API de verbinding verbreekt voordat je überhaupt een trade kunt simuleren. Dit is een klassieke valkuil voor elke quant of trader die met grote datasets werkt. Het verschil tussen een backtest die in 5 minuten klaar is en eentje die een uur duurt, zit hem vaak niet in je Python-code, maar in het bestandsformaat waarin je je data opslaat. De strijd tussen Parquet en CSV is meer dan een technische discussie; het is een keuze voor snelheid, efficiëntie en een stabiele trading infrastructuur.

Parquet vs CSV: Welke kiezen?

Om meteen met de deur in huis te vallen: voor serieuze algoritmische trading bots die met historische data werken, wint Parquet met overmacht. CSV (Comma Separated Values) is de universele taal van data; het is simpel, overal te openen en perfect voor kleine datasets of het uitwisselen van configuratiebestanden.

Maar zodra je in de wereld van miljoenen rijen en complexe analytische queries duikt, verandert CSV van een vriend in een blok aan je been. Parquet is specifiek ontworpen voor prestaties en schaalbaarheid. Het is een columnair formaat, wat een totaal andere benadering is dan de regel-georiënteerde structuur van CSV.

Dit ene verschil bepaalt alles wat volgt: opslagruimte, laadsnelheid en hoe makkelijk je data kunt verwerken met Python libraries zoals Pandas of DuckDB.

Stel je een CSV-bestand voor als een gigantische spreadsheet. Om één specifieke waarde te vinden, moet het systeem elke regel langslopen totdat het de juiste kolom en rij vindt. Dit is een 'row-oriented' aanpak. Parquet werkt anders.

Het slaat alle waarden van één kolom bij elkaar op. Als jij de gemiddelde 'sluitprijs' van een aandeel wilt berekenen over 10 miljoen ticks, hoeft Parquet alleen de 'sluitprijs'-kolom in te laden.

Het negeert de data voor 'volume', 'datum' of 'ticker symbol' volledig. Dit bespaart enorm veel tijd en geheugen, vooral als je werkt met een dataset die groter is dan het RAM-geheugen van je computer.

Prestatieverschillen bij miljoenen rijen

Dit is precies de reden waarom high-frequency trading firms en quantitative hedge funds massaal overstappen op columnair opslagformaten. De getallen liegen er niet om. Laten we kijken naar een concrete vergelijking voor een dataset van 1 miljard rijen, vergelijkbaar met een paar jaar aan tick data. Een CSV-bestand met deze data neemt al snel 80 tot 100 GB aan schijfruimte in beslag.

De zelfde data opgeslagen in Parquet, dankzij zijn compressie-algoritmen, is vaak maar 10 tot 20 GB. We hebben het hier over een reductie van 5 tot 10 keer.

Dit betekent dat je opslagkosten bij een cloud provider als AWS S3 of Google Cloud Storage direct 90% lager uitvallen. Voor een trader die zijn eigen data lake beheert, is dit een directe besparing van honderden euro's per jaar. Waar het écht om draait is laadsnelheid.

In benchmarks (zoals ClickBench) zie je dat het inladen van 82 GB ongecomprimeerde CSV data in DuckDB (een populaire database voor data-analyse in Python) al snel een minuut of meer kan duren. De zelfde data, gecomprimeerd naar 15 GB in Parquet, is in seconden binnen.

Deze 10- tot 100x snellere laadtijd is cruciaal voor snelle iteraties. Je wilt niet 5 minuten wachten op je data voordat je je backtest kunt draaien, zeker niet als je aan het debuggen bent of je parameters aan het fijnstemmen bent. Bovendien ondersteunt Parquet 'predicate pushdown'.

Dit betekent dat je al filters kunt toepassen voordat de data je geheugen in komt.

Je kunt bijvoorbeeld direct alleen de data voor 'AAPL' laden, wat in CSV onmogelijk is zonder eerst het hele bestand te lezen.

De impact op je Trading Stack

Denk na over hoe je data door je stack stroomt. Je haalt data van een broker API (zoals Interactive Brokers of Alpaca), verwerkt het, slaat het op, en laadt het later in voor een backtest. Voordat je begint, is het verstandig om de 10 stappen voor het opschonen van je trading data te doorlopen. Als je een CSV gebruikt, zit je vaak vast aan trage, single-threaded verwerking.

Python's `read_csv` is krachtig, maar kan de data niet parallel verwerken zonder complexe werk-arbeid.

Parquet daarentegen is gebourd voor parallelisme. Moderne libraries zoals Polars of DuckDB kunnen meerdere CPU-cores gebruiken om kolommen tegelijkertijd in te laden.

Dit betekent dat je investeert in een snellere CPU niet verspilt; met Parquet benut je de hardware veel efficiënter. Wat kost dit in de praktijk? Laten we een scenario schetsen.

Stel, je slaat 500 GB aan historische data op in de cloud.

Bij CSV betaal je voor de opslag en, belangrijker nog, voor de rekentijd als je queries draait. Een simpele backtest die 10 GB aan data inlaadt, kost je bij CSV misschien 30 seconden rekentijd per run. Bij Parquet is dat misschien maar 3 seconden. Als je elke dag 50 verschillende strategieën test, elk met 10 runs, bespaar je op een dag al 20 minuten rekentijd. Op jaarbasis is dat een enorme besparing op cloud-kosten (zoals AWS EC2 of Lambda) en een hoop tijd die je beter kunt besteden aan het verbeteren van je strategie in plaats van wachten op je computer.

Wanneer kies je wat? Een Praktische Keuzehulp

Het gaat er niet om dat CSV 'slecht' is; het heeft zijn plaats, net als een schroevendraaier naast een boormachine.

Het gaat erom het juiste gereedschap te kiezen voor de klus. Gebruik de onderstaande checklist om snel de juiste keuze te maken voor jouw trading project, zeker als je data van verschillende brokers wilt combineren. Een middenweg die steeds populairder wordt, is DuckDB.

  • Kies Parquet als: Je dataset groter is dan 100 MB. Dit is een vuistregel; zodra je data niet meer in één oogopslag op je scherm past, wordt Parquet interessant.
  • Kies Parquet als: Je werkt met analytische queries, aggregaties (gemiddelden, sommen) of het draaien van backtests. De kolom-georiënteerde structuur is hier een enorme versnelling.
  • Kies Parquet als: Je data opslaat in de cloud of voor langere tijd bewaart. De compressie bespaart je direct geld op opslagkosten.
  • Kies CSV als: Je dataset kleiner is dan 10 MB. Voor zulke kleine bestanden is het verschil in snelheid verwaarloosbaar.
  • Kies CSV als: Je data moet delen met mensen of systemen die geen speciale software hebben. Iedereen kan een CSV openen in Excel; Parquet vereist een specifieke library.
  • Kies CSV als: Je een eenmalige data-export maakt voor een externe partij. Het is de lingua franca van data-uitwisseling.

Dit is een lichtgewicht database die je lokaal kunt draaien vanuit Python. DuckDB is extreem goed in het snel inladen van zowel CSV als Parquet.

Een gave feature is de 'CSV-sniffer': DuckDB kan automatisch het bestandstype en schema detecteren, inclusief scheidingstekens en datatypen, waardoor je geen tijd verliest aan handmatige configuratie.

Je kunt een CSV direct inladen en het als Parquet opslaan, of queries draaien alsof het Parquet is. Voor traders die een snelle, lokale data-omgeving willen zonder de complexiteit van een volledige data warehouse, is DuckDB een game-changer.

De Valkuilen van CSV vermijden

Een veelgemaakte fout is het handmatig ontdekken van het schema van een CSV-bestand. Je downloadt een bestand van een broker en je weet niet zeker of de kolom 'price' een integer, float of string is.

Of de datum staat in formaat 'YYYY-MM-DD' of 'DD-MM-YYYY'. Je gaat zitten met een proefritje en probeert de types te raden.

Dit is tijdrovend en extreem foutgevoelig. Een verkeerd datatype kan leiden tot verkeerde berekeningen in je backtest, wat resulteert in een strategie die in de simulatie fantastisch lijkt, maar in de echte wereld geld verliest. Parquet verhelpt dit doordat het schema (de datatypen en kolomnamen) is ingebakken in het bestand zelf.

Wat je ziet is wat je krijgt. Een andere pijnpunt is parallelisatie. In de wereld van trading bots wil je zo snel mogelijk zijn. Als je een CSV van 5 GB moet verwerken, kan een Python script met Pandas dit vaak maar één kern van je CPU laten werken.

Je betaalt voor een 8-core machine, maar gebruikt er maar één. Met Parquet, en libraries zoals Polars of PyArrow, kun je met één regel code aangeven dat de data over alle beschikbare CPU-kernen verspreid moet worden.

Dit kan de verwerkingstijd van 10 minuten terugbrengen naar 1 minuut. Het is een directe investering in snelheid en efficiëntie, die zich dubbel en dwars uitbetaalt op het moment dat je jouw trading bot in productie neemt en de markt sneller moet verwerken dan je concurrenten, zeker als je de kosten van real-time data versus vertraagde data goed hebt afgewogen.

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.