On-chain data analyseren met Python (Web3.py)
Stel je voor: je zit achter je scherm, kijkt naar een live transactie op Ethereum en ziet precies waar het geld naartoe gaat. Geen zwarte doos, maar een openbaar grootboek waar je met Python gewoon doorheen kunt bladeren.
Met Web3.py tap je rechtstreeks in op die stroom van on-chain data.
Je hoeft geen cryptoninja te zijn om dit te doen, alleen een paar regels code en een nieuwsgierige blik. On-chain data is simpelweg alles wat er op een blockchain gebeurt: transacties, blokken, smart contracts, tokenoverdrachten. Met Web3.py verbind je jouw Python-script met een node (een endpoint van een broker of provider zoals Infura, Alchemy of een eigen node) en lees je die data uit. Het mooie?
Je kunt het direct koppelen aan je trading bot, backtesting-pijplijn of risicomanagementsysteem. Zo wordt on-chain data geen leuk weetje, maar een actieve input voor je algoritmische strategie.
Wat is Web3.py en waarom gebruik je het?
Web3.py is een Python-bibliotheek om met blockchains te praten. Je kunt ermee lezen (data ophalen) en schrijven (transacties verzenden), maar voor data-analyse draait het vooral om lezen.
Je stelt een verbinding in met een RPC-endpoint en vraagt bijvoorbeeld om het saldo van een adres, de logs van een smart contract of de laatste blokken. Waarom zou je dit doen? Omdat on-chain data je helpt om signalen vroeg te zien.
Denk aan een grote stablecoin-storting naar een exchange, een whale die zijn posities verplaatst, of een plotselinge piek in het aantal actieve adressen.
Deze signalen kun je combineren met prijsdata van brokers zoals Binance, Kraken of Bitvavo, en zo je trading bot slimmer maken. Web3.py werkt met elk Ethereum-achtig netwerk (Ethereum, Polygon, Arbitrum). Voor Bitcoin moet je meestal een andere tool gebruiken, maar voor de meeste DeFi-protocollen en tokens is Web3.py je vriend. Je kunt het bovendien integreren in bestaande Python-pijplijnen voor backtesting en risicomanagement.
De kern: hoe werkt het in de praktijk?
Stap 1 is installeren: pip install web3. Daarna kies je een node-provider.
Voor snelle experimenten pak je een publieke endpoint, maar voor productie gebruik je een betaalde service zoals Infura of Alchemy. Kosten? Vaak rond €10-€40 per maand, afhankelijk van je verkeer.
Je kunt ook een eigen node draaien (duurder en technischer), maar voor data-analyse is een provider vaak prima. Verbinden gaat zo: from web3 import Web3
w3 = Web3(Web3.HTTPProvider('https://mainnet.infura.io/v3/YOUR_KEY'))
print(w3.is_connected()) Als je verbonden bent, kun je basisinfo opvragen.
Bijvoorbeeld het huidige bloknummer: w3.eth.block_number. Of het saldo van een adres: w3.eth.get_balance('0x...').
Je kunt ERC-20 token-saldi ophalen via de contract-interface. Zo bouw je in een paar regels een simpel dashboard voor portefeuillemonitoring. Wil je transacties volgen?
Haal logs op van een smart contract. Stel je volgt een DEX-contract, dan kun je met get_logs de Swap-events uitlezen.
Je filtert op adres en blokrange, en je krijgt een lijst met gebeurtenissen inclusief hoeveelheden, tokens en partijen.
Dat is pure on-chain intelligence voor je bot.
Varianten, modellen en kosten
Er zijn verschillende manieren om on-chain data te verwerken. Je kunt een batchaanpak kiezen (historische data ophalen en opslaan in een database) of een streamingaanpak (live events volgen). Voor backtesting is batch handig; voor live signalen kies je streaming.
Providers zoals Infura en Alchemy bieden WebSocket-endpoints voor real-time events. Voor een vergelijkbare aanpak kun je ook real-time prijsdata ophalen van Bybit met WebSockets. Modellen voor analyse:
- Whale tracking: volg grote adressen en detecteer verplaatsingen naar exchanges. Signaal: risico op verkoopdruk.
- Liquidity monitoring: volg liquiditeit in DEX-pools. Signaal: slippage en prijsimpact voor je bot.
- Active addresses: tel unieke adressen per uur. Signaal: stijgende netwerkactiviteit.
- Smart money: volg wallets die historisch winstgevend zijn. Signaal: vroege instap of exit.
Kostenindicaties (schattingen, variëren per provider en netwerk): Je kunt deze on-chain signalen combineren met prijsdata van je broker.
- Infura of Alchemy free tier: tot ~100k requests/maand, geschikt voor testen. Betaalde tiers vanaf €10-€40/maand.
- Privé-node op een VPS (bijv. Geth of Erigon): €50-€200/maand, afhankelijk van opslag en bandbreedte.
- Data-opslag (PostgreSQL/InfluxDB): €5-€20/maand voor een kleine cloud-db.
- Backtesting infrastructuur: lokaal gratis, in de cloud (AWS/GCP) vanaf €20-€100/maand.
Bijvoorbeeld: als een whale naar Binance verplaatst, verlaag je de positie of zet je een stop-loss strakker. Je risicomanagement wordt zo data-gedreven, niet alleen technisch.
Praktische tips voor integratie in je trading bot
Bouw modulariteit. Scheid je data-collector (Web3.py), je signaalengine (pandas-gebaseerde regels) en je order-executie (broker API).
Zo kun je elk deel los testen en upgraden. Voor backtesting gebruik je historical on-chain data en historical prijsdata. Sla timestamps en bloknummers op, zodat je kunt synchroniseren.
Begin klein. Pak 1 contract en 1 event-type, bijvoorbeeld Swap-events van een grote DEX, en maak verbinding met de Binance API via CCXT.
Schrijf een script dat de afgelopen 24 uur uitleest en een CSV genereert. Voeg een eenvoudig signaal toe (bijv. als volume > X, trigger een alert). Test met een papertrading-account bij je broker.
Beheer rate limits en fouten. Gebruik retries met exponential backoff.
Log fouten en blokken die je mist. Zet een fallback-provider klaar voor als de primary down is.
Voor productie draai je services als een daemon of container (Docker), met monitoring (bijv. uptime en error rates). Risicomanagement blijft cruciaal. On-chain signalen zijn geen garantie. Combineer ze met technische indicaties, position sizing en stop-losses.
Bijvoorbeeld: als een whale-signaal verschijnt, verklein je positie met 30% en zet je een trailing stop. Test dit in je backtesting-pijplijn voor je het live zet.
Veiligheid: bewaar je API-sleutels buiten je code (environment variables). Gebruik aparte wallets voor testen. Als je transacties verzendt, bevestig altijd handmatig in het begin.
On-chain data is openbaar, maar je eigen keys en orders moeten beveiligd zijn. Wil je een volledige pijplijn bouwen?
Denk aan: Web3.py collector → database (PostgreSQL) → signaalengine (pandas/numpy) → broker API (Binance/Kraken/Bitvavo) → backtesting met historical data → risicomanagement dashboard. Vergeet ook niet om belastingrapportages te genereren voor je crypto trades. Kosten voor een basissetup: €30-€100/maand, afhankelijk van provider en opslag. Zo wordt on-chain data een dagelijkse routine, niet een experiment.
