Hoe check je de 'Integriteit' van je database: Dubbele rijen opsporen

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

Stel je voor: je hebt een prachtige Python trading bot gebouwd, de backtests zien er veelbelovend uit en je bent klaar om live te gaan.

Je koppelt je broker API, stuurt de eerste orders en... de chaos breekt los. Je bot koopt 100 aandelen Tesla terwijl je al 100 had, of erger, hij verkoopt je positie dubbel.

Binnen een paar uur staat je risicomanagement op z'n kop en heb je onnodige transactiekosten gedraaid. Dit scenario is geen technisch probleem; het is een data-integriteit probleem. Je database, de hersenpan van je hele operatie, bevat dubbele records. En zoals Gartner al aangeeft, kost slechte datakwaliteit organisaties gemiddeld $12,9 miljoen per jaar.

Bij een individuele trader betekent dit direct verlies van kapitaal en vertrouwen.

Gelukkig is dit makkelijk te voorkomen en op te lossen. Laten we eens kijken hoe je de integriteit van je database checkt en dubbele rijen voorgoed uitbannen.

Wat is Data Validatie?

Voordat we diep duiken in het opsporen van dubbele records, moeten we het hebben over de eerste verdedigingslinie: data validatie. Stel je data validatie voor als de portier bij een exclusieve club.

Alleen data die er netjes uitziet, de juiste format heeft en niet al eerder is binnengekomen, mag naar binnen.

Validatie controleert op drie dingen: formaat, consistentie en volledigheid. Denk aan een API response van je broker die een timestamp verwacht, maar een verkeerd formaat krijgt. Of een handelsnaam die soms 'BTC-USD' is en elders 'Bitcoin/USD'.

1. Data-eisen definiëren

Zonder validatie loop je het risico dat je bot beslissingen baseert op incomplete of corrupte data, wat direct leidt tot fatale fouten in je executie. Voordat je ook maar één regel code schrijft, moet je weten wat goede data is.

Maak een lijstje met harde eisen voor je database. Welke velden zijn essentieel? Bij een trade-log denk je aan: timestamp, asset_symbol, price, volume en order_id. Stel regels op: de timestamp moet uniek zijn per trade, het asset_symbol moet voldoen aan een specifieke ISO-standaard (bijv.

6 karakters), en price mag nooit negatief zijn. Door deze eisen nu vast te leggen, creëer je een blauwdruk voor je database structuur.

Dit voorkomt dat er rommel binnenkomt. Zorg dat deze validatieregels actief zijn vóór de invoer, niet erna. Zo voorkom je directe corruptie.

Dubbele records opsporen

Nu we de basis hebben gelegd, gaan we op jacht. Dubbele records zijn de stille moordenaars van een algoritmische strategie.

Dubbele records zoeken (Access)

Ze ontstaan vaak door netwerk glitches (een order wordt twee keer doorgestuurd) of door meerdere users die tegelijkertijd aan dezelfde dataset sleutelen, zoals Microsoft aangeeft. In de wereld van trading bots wil je zeker weten dat elke trade uniek is. Een 'double spend' is je grootste angst.

We gaan systematisch te werk om duplicaten te vinden, te isoleren en te verwijderen.

  1. Open je Access database en selecteer de tabel die je wilt controleren.
  2. Ga naar het tabblad 'Start' en klik op 'Dubbele records zoeken' (meestal onder 'Opzoeken').
  3. De wizard start. Kies de velden die een duplicaat definiëren. Voor een trade-log kies je vaak voor order_id of een combinatie van timestamp + asset.
  4. Access scant de tabel en maakt een nieuwe tabel aan met alleen de dubbele records. Let op: de wizard verwijderd niets direct, dat is veilig.
  5. Analyseer de nieuwe tabel. Zijn het echte duplicaten of slechts bijna-identieke data? Verwijder handmatig de rotzooi uit je originele tabel.

Dit kan handmatig in een tool als Access, of geautomatiseerd via queries die je in je Python script inbouwt. Voor degenen die hun data tijdelijk in Access dumpen voor snelle analyse, heeft Microsoft een handige wizard ingebouwd. Dit is ideaal voor als je even snel een CSV vol trade-data, bijvoorbeeld na web scraping van financiële data, wilt checken voordat je het in je main database gooit. Veelgemaakte fout: Vergeten te specificeren welke velden uniek moeten zijn.

Als je alleen op 'price' zoekt, vind je ook trades die toevallig even duur waren. Wees specifiek! Deze methode is prima voor kleine datasets, maar voor honderdduizenden regels is het te traag.

Bulksysteemtaken uitvoeren

Als serieuze trader werk je met grote hoeveelheden data. Handmatig klikken in Access is geen optie.

Je hebt een bulksysteem nodig dat draait op de achtergrond. Hier komen geautomatiseerde scripts en krachtige platformen om de hoek kijken. Denk aan de Power Platform van Microsoft, waarmee je complexe data-opschoningsregels kunt definiëren.

De kracht van zo'n systeem is dat het patronen herkent die jij met het blote oog mist.

Je kunt een taak inplannen die elke nacht je database scant op duplicaten. Power Platform vereist wel een specifieke aanpak. Je moet je duplicaatdetectieregels publiceren voordat je een bulktaak start.

Als je dat vergeet, draait de taak op niets uit of, erger, gooit hij verkeerde data weg. Het idee is simpel: je definieert een regel (bijv.

'order_id mag niet dubbel voorkomen in de laatste 24 uur') en activeert deze als een service.

Dit systeem scant dan je gehele dataset en marqueert de overtreders. Dit is de manier om schaalbaar te werken zonder dat je elke dag zelf aan de knoppen hoeft te draaien.

Pro-tip: Plan detectietaken in voor dagelijks onderhoud. Laat je bot 's nachts, net voordat de markten openen, zijn eigen database opschonen. Zo start je elke sessie met een schone lei.

Geautomatiseerde opschoning met Python

Je bent hier waarschijnlijk omdat je met Python en API's werkt. Dus laten we het technisch maken. In plaats van een externe tool, bouw je de opschoning direct in je bot.

Dit is krachtiger en flexibeler. Gebruik libraries zoals Pandas of werk direct met een SQL database (SQLite, PostgreSQL).

De meest effectieve manier om duplicaten te vinden, is door te kijken naar de unieke combinatie van parameters die je broker API levert. Als je bijvoorbeeld Order Book data (Level 2) via Python ophaalt, zou een typisch script zo kunnen werken: je laadt je recente data in een DataFrame.

Vervolgens gebruik je de functie df.duplicated(subset=['order_id'], keep='first'). Dit geeft je een lijst van alle rijen die een dubbele order_id hebben, behalve de eerste die is binnengekomen. Die eerste houd je, de rest is rommel.

  1. Direct na ontvangst: Zodra je via de API een JSON response krijgt, check je of de order_id al bestaat in je tijdelijke buffer.
  2. Voor de executie: Voordat je bot een order plaatst, checkt hij of er al een identieke order bestaat. Dit voorkomt 'double spending' van je capital.
  3. Tijdens de nachtelijke batch: Een script dat alle tabellen scant en fysiek dubbele rijen verwijdert uit de database.

Je kunt dit nog verfijnen door ook te kijken naar timestamps; als twee trades binnen milliseconden van elkaar binnenkomen met dezelfde parameters, is het waarschijnlijk een glitch.

Je kunt deze check inbouwen op drie plekken: Veelgemaakte fout: Vertrouwen op alleen de API voor uniekheid. Soms stuurt een broker bij een netwerkprobleem dezelfde callback twee keer. Jouw database moet slimmer zijn dan de API. Zorg dat je validatieregels actief zijn vóór invoer om corruptie te voorkomen, niet erna.

Verificatie Checklist

Je hebt je database gecheckt, je scripts draaien en je voelt je veilig.

  • Unieke sleutels: Zijn er database-level constraints (Primary Keys) die fysiek voorkomen dat een dubbele regel wordt ingevoerd? Dit is de ultieme fail-safe.
  • API vs Database: Loop een willekeurige dag uit je log na. Tel het aantal trades in je database en vergelijk dit met de transactiehistorie van je broker (bijv. Interactive Brokers of Binance). Zitten de aantallen exact gelijk?
  • Foutlogboeken: Worden er dubbele records detecties gelogd? Weet je welke data er verwijderd is en waarom?
  • Backtest validatie: Draai een backtest op een dataset die je handmatig hebt gecontroleerd op duplicaten. De resultaten moeten significant verbeteren (lagere transactiekosten, realistischere winst).
  • Is je Power Platform regel gepubliceerd? Als je die tool gebruikt, check dan of de status 'Actief' is. Een niet-gepubliceerde regel doet niets.

Maar ben je het echt? Voer deze snelle check uit om er zeker van te zijn dat je geen gaten in je emmer hebt. Als je je trading data grondig opschoont, weet je dat je database op orde is. Je risico op fatale data-fouten is geminimaliseerd en je bot kan veilig zijn werk doen. Succes met traden!

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.