Wat is de Yfinance library en hoe betrouwbaar is de data?
Je zit klaar met je Python-omgeving en je wilt meteen data scoren voor je trading bot. Yfinance is dan je eerste stop. Deze library haalt gratis beursdata van Yahoo Finance en is razendpopulair onder algoritmische traders.
Je pakt er historische koersen mee, checkt dividend en split je data voor backtesting.
Je kunt er ook live tickers uithalen, voor snelle checks. Je bent benieuwd hoe betrouwbaar die data is voor serieuze beslissingen.
Daar gaan we nu helder en concreet doorheen. Je hoeft geen expert te zijn, we doen het samen stap voor stap.
Wat je nodig hebt voordat je start
Zorg dat je Python 3.9 of nieuwer hebt draaien. Een simpele installatie via pip volstaat, bijvoorbeeld op Windows, macOS of Linux.
Gebruik een virtuele omgeving, zoals venv of Conda, om je dependencies netjes te scheiden. Je hebt minimaal 2 GB vrije schijfruimte nodig en 4 GB RAM voor comfortabel werken. Voor backtesting met grotere datasets of meerdere tickers is 8 GB RAM aan te raden.
Zorg voor een stabiele internetverbinding; Yfinance haalt data rechtstreeks van Yahoo. Wil je extra zekerheid, koppel dan een broker-API voor prijsvalidatie, bijvoorbeeld Interactive Brokers of DEGIRO.
- Python 3.9+ geïnstalleerd
- Virtuele omgeving actief
- Pip beschikbaar
- Stabiele internetverbinding
- Optioneel: broker-API toegang
Voor risicomanagement bouw je later een aparte module, bijvoorbeeld met numpy en pandas. Hou je editor bij de hand: VS Code of PyCharm werkt prima. Reken op 15 minuten voor de eerste setup.
Veelgemaakte fouten: vergeten een virtuele omgeving aan te maken, waardoor pakketten door elkaar lopen. Ook zie je soms oude Python-versies die niet compatibel zijn.
Check daarom altijd je versie met python --version. Een andere valkuil is een trage verbinding, wat tijdens grotere downloads voor timeouts zorgt.
Plan je backtests buiten piekuren om.
Yfinance installeren en je eerste data ophalen
Open je terminal en activeren je virtuele omgeving. Installeer yfinance met pip install yfinance.
De installatie duurt meestal 1 tot 3 minuten. Start daarna Python en importeer de library met import yfinance as yf.
Je bent nu klaar voor je eerste ticker. Kies een bekende ticker, bijvoorbeeld AAPL voor Apple of MSFT voor Microsoft. Voor de Europese markt probeer je ASML.AS of ADYEN.AS.
- Activeer je virtuele omgeving
- Installeer yfinance via pip
- Start Python en importeer yfinance
- Download een ticker voor een specifieke periode
- Check de eerste regels met head()
Haal data op met data = yf.download("AAPL", start="2023-01-01", end="2024-12-31"). Binnen een seconde tot vijf seconden heb je een DataFrame met Open, High, Low, Close, Volume. Check de kolommen met data.head(). Je ziet meteen of de data klopt.
Veelgemaakte fouten: verkeerde datumformaat, bijvoorbeeld dag-maand-jaar in plaats van jaar-maand-dag. Yahoo verwacht YYYY-MM-DD.
Een andere fout is het vergeten van de ticker-extensie bij Europese aandelen, zoals .AS of .DE. Dat leidt tot foutmeldingen of lege data.
Tijdens drukke beursmomenten kan een download soms 10 seconden duren. Wees geduldig en probeer opnieuw bij een timeout.
Data betrouwbaarheid: wat je moet weten
Yahoo Finance is een gratis bron en dat heeft gevolgen. Leer hoe je de YFinance library gebruikt voor historische analyses en backtests, al moet je rekening houden met hiaten in delisting of splitsingen.
Yfinance corrigeert voor stock splits en geeft aangepaste closing prices. Dividenddata is meestal correct, maar controleer af en toe bij een broker-API voor zekerheid. Voor intraday data is Yahoo beperkt; je krijgt vooral dagdata. Als je high-frequentie bots bouwt, is dat niet voldoende.
Voor dag- en weekstrategieën is de data prima bruikbaar. Je kunt meerdere tickers tegelijk downloaden, maar hou rekening met rate limits.
Gratis data is handig, maar vertrouwen komt met controleren. Dubbele checks houden je bot stabiel.
Test altijd een kleine subset voordat je een grootschalige backtest draait. Gebruik een tweede bron voor validatie, bijvoorbeeld Alpha Vantage of je broker-API.
Op die manier beperk je risico’s in je trading bot. Veelgemaakte fouten: blind vertrouwen op één bron zonder validatie. Ook het negeren van splitsingen of dividenduitkeringen leidt tot vertekende resultaten.
Een andere valkuil is het overschrijven van lokale data zonder backups. Sla je datasets altijd op als CSV of parquet voor herhaalbare tests.
Backtesting met Yfinance: een praktijkvoorbeeld
Je wilt een eenvoudige backtest doen voor een moving average crossover. Haal data op voor een ticker zoals SPY of AAPL voor de afgelopen 2 jaar.
Bereken een 50-dagen en 200-dagen moving average met pandas. Ga long als de 50 boven de 200 komt, short als die eronder duikt.
Simuleer een startkapitaal van €10.000, met transactiekosten van €2 per trade en 0,1% spread. Dat is realistisch voor veel brokers. Je script levert een equity curve op en een drawdown. Controleer of de drawdown onder de 20% blijft voor je risicomanagement.
- Download historische data
- Bereken moving averages
- Definieer entry- en exit-regels
- Voeg kosten en spread toe
- Evalueer equity curve en drawdown
Gebruik een aparte functie voor risicoberekening, zoals Sharpe ratio en max drawdown.
De backtest duurt op een gemiddelde laptop 2 tot 10 seconden, afhankelijk van de datasetgrootte. Zorg dat je logfiles bijhoudt voor reproduceerbaarheid. Veelgemaakte fouten: kosten vergeten, wat te optimistische resultaten geeft.
Ook het gebruik van toekomstige data in je indicatorberekening is een klassieker die je backtest ongeldig maakt. Test altijd out-of-sample om overfitting te voorkomen. Houd rekening met delisting en tickers die stoppen met verhandelen; die kun je beter uitsluiten.
Live data en broker-API integratie
Yfinance is prima voor historische data, maar voor live trading koppel je een broker-API. Gebruik Interactive Brokers via ib_insync of TWS API voor order execution.
Je kunt yfinance gebruiken voor signalen en de broker-API voor orderplaatsing. Voor Nederlandse brokers zoals DEGIRO of Binck kijk je naar hun REST API’s of derde partijen.
Zorg dat je order types kent: market, limit en stop. Test je order flow met een paper trading account voordat je echt geld inzet. Plan een heartbeat-check elke 5 minuten om connectie te monitoren.
Je risicomanagement module beperkt posities tot een maximum, bijvoorbeeld 2% per trade. Gebruik een aparte key voor live en test omgevingen. Verifieer prijzen met een tweede bron om slippage te minimaliseren. Veelgemaakte fouten: live orders plaatsen zonder pre-trade checks.
Een andere fout is het verkeerd omgaan met timezones; Yahoo gebruikt vaak UTC, je broker lokale tijd.
Zorg voor tijdcorrecties in je code. Ook het vergeten van error handling bij API-fouten kan je bot stilleggen. Implementeer retries met backoff voor robuustheid.
Verificatie-checklist
Voordat je je bot live zet, loop je deze checklist af. Zo voorkom je verrassingen en hou je je risico’s in de hand.
- Yfinance geïnstalleerd en geïmporteerd
- Historische data gedownload voor minimaal 2 tickers
- Data gecontroleerd op splitsingen en dividend
- Backtest uitgevoerd met kosten en spread
- Drawdown onder 20% en Sharpe ratio boven 0,5
- Broker-API geïntegreerd en getest met paper trading
- Risicomanagement module actief, positiebeperkingen ingesteld
- Logfiles bijgehouden en data backups gemaakt
Als je deze stappen volgt, weet je zeker dat je data betrouwbaar is en je bot stabiel draait. Yfinance is een krachtige start, maar combineer het met een broker-API voor live validatie. Installeer de Pandas library voor financiële data om een stevig fundament te bouwen voor algoritmische trading met Python. Je bent klaar om te testen, te verbeteren en stap voor stap te groeien.
