Hoe gebruik je de YFinance library voor gratis historische koersdata?

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 wilt een trading bot bouwen die automatisch aandelen koopt als ze ondergewaardeerd zijn.

Je hebt een idee, je hebt Python, maar je mist één cruciaal ding: data. Veel data. En het liefst gratis. YFinance is de gouden standaard voor algoritmische traders die net beginnen of snel een backtest willen draaien zonder meteen honderden euro's neer te leggen voor een Bloomberg-terminal. Het is jouw onmisbare gereedschap om historische koersdata te plukken en je strategieën te valideren.

In deze handleiding leid ik je persoonlijk door elke stap. We gaan van nul naar een werkende dataset die je direct kunt gebruiken in je backtesting-scripts of risicomanagement-modellen. Zet je schrap, we gaan aan de slag.

Wat je nodig hebt voordat je begint

Voordat we code schrijven, zorgen we dat de basis stabiel is. Je hebt niet veel nodig, maar wat je nodig hebt, moet goed staan.

Denk aan een stevige fundering voordat je een huis bouwt. Je hebt een computer nodig met Python geïnstalleerd. Een simpele laptop van €500 voldoet prima.

Zorg dat je minimaal Python 3.8 of nieuwer hebt. Check dit door in je terminal python --version te typen.

Als je geen terminal hebt, installeer dan eerst Python via python.org. Het installatieproces duurt ongeveer 10 minuten.

Daarnaast heb je een IDE nodig. Visual Studio Code is gratis en werkt perfect. Download het, installeer het, en je bent klaar om te programmeren. Ook handig: een virtuele omgeving.

Dit voorkomt dat je packages door elkaar haalt. Maak een map aan, open die in VS Code, en typ in de terminal: python -m venv venv.

Activeer de omgeving met venv\Scripts\activate op Windows of source venv/bin/activate op Mac/Linux. Dit duurt 2 minuten. Verder is internetverbinding nodig.

YFinance haalt data rechtstreeks van Yahoo Finance, dus een stabiele connectie is essentieel.

Tot slot: een broker-account is niet verplicht voor deze stap, maar als je later live wilt traden, kies dan een broker met een goede API, zoals Interactive Brokers of Degiro. Hun datafeeds zijn betrouwbaar en snel.

Stap 1: YFinance installeren en importeren

YFinance is een Python-package. Je installeert het met pip, de package-manager van Python.

Open je terminal in de virtuele omgeving en typ: pip install yfinance. Dit duurt 30 seconden tot 1 minuut, afhankelijk van je internet. Als je een foutmelding krijgt over permissions, voeg dan --user toe aan het commando.

Nu importeren we de library in een Python-script. Maak een nieuw bestand aan, bijvoorbeeld data_fetcher.py.

Schrijf bovenaan: import yfinance as yf. Dit is de enige regel die je nodig hebt om de deur naar duizenden aandelen te openen. Sla het bestand op.

Als je geen foutmelding ziet, is de installatie geslaagd. Veelgemaakte fout: je vergeet de virtuele omgeving te activeren.

Dan installeer je YFinance in je systeem-Python, wat later tot conflicts leidt.

Check altijd of je terminal de naam van je venv toont, bijvoorbeeld (venv). Een andere fout is een verouderde pip-versie. Update pip met python -m pip install --upgrade pip. Dit duurt 20 seconden.

Verificatie: typ in Python import yfinance en druk op Enter. Geen fout? Perfect. Je bent klaar voor de volgende stap.

Stap 2: Kies je ticker en tijdframe

Een ticker is het symbool van een aandeel of index. Bijvoorbeeld: AAPL voor Apple, SPY voor de S&P 500, of BTC-USD voor Bitcoin.

Kies een ticker die relevant is voor je strategie. Als je een bot bouwt voor Europese aandelen, pak dan ASML (ASML.AS) of Shell (SHEL.AS). Voor crypto: BTC-USD of ETH-USD. Wees specifiek; een verkeerde ticker geeft lege data.

Definieer je tijdframe. Wil je dagelijkse data van de afgelopen 5 jaar?

Of uursdata van de laatste 30 dagen? YFinance ondersteunt verschillende intervals: 1m, 5m, 15m, 1h, 1d, 1wk, 1mo.

Voor backtesting van een daghandel-bot gebruik je 1d of 1h. Voor scalping kies je 5m. Stel je doel: bijvoorbeeld data van 1 januari 2020 tot nu, dagelijks.

Veelgemaakte fouten: een te kort timeframe kiezen voor een lange-termijn strategie. Een backtest op 1 week data zegt niets over marktcrashes.

Of een te lang timeframe voor een snelle bot, wat je computer traag maakt. Start met 1 jaar data voor testen, en bouw uit. Concrete voorbeeldcode: data = yf.download("AAPL", start="2020-01-01", end="2023-12-31", interval="1d").

Dit duurt 5-10 seconden om te laden. Sla dit op in je script en print de eerste rijen met print(data.head()).

Stap 3: Data ophalen en opslaan

YFinance haalt data via de Yahoo Finance API. Het is gratis, maar niet altijd even stabiel – soms is er vertraging tijdens piekuren.

Gebruik de functie download() voor flexibiliteit. Je kunt meerdere tickers tegelijk ophalen: tickers = ["AAPL", "MSFT", "GOOGL"] en dan data = yf.download(tickers, start="2023-01-01"). Dit geeft een DataFrame met kolommen als Open, High, Low, Close, Volume (OHLCV).

Sla de data op voor later gebruik. YFinance-data is een Pandas DataFrame, dus je kunt het exporteren naar CSV: data.to_csv("AAPL_data.csv").

Dit bestand kun je inlaten in je backtesting-tool, zoals Backtrader of Zipline.

Of sla op als Excel voor snelle analyse. Bestandsgrootte: voor 5 jaar dagdata van 1 aandeel is het ~50 KB. Voor 100 aandelen, ~5 MB. Veelgemaakte fouten: de datumformaat verkeerd schrijven (gebruik YYYY-MM-DD).

Of vergeten de timezone te checken – Yahoo Finance data is in UTC, wat voor Nederlandse traders soms verwarrend is. Convert naar lokale tijd met Pandas: data.index = data.index.tz_convert('Europe/Amsterdam').

Een andere fout: niet controleren op missende data. Sommige aandelen hebben gaps in weekends; check met data.isnull().sum(). Tip voor risicomanagement: voeg kolommen toe voor returns: data['Return'] = data['Close'].pct_change().

Dit helpt bij het berekenen van volatiliteit. Als je een bot bouwt, bewaar deze data lokaal om API-limieten te vermijden – YFinance blokkeert je niet snel, maar wees beleefd.

Stap 4: Data valideren en fouten oplossen

Nadat je data hebt, controleer je of het klopt. Print data.info om rijen, kolommen en datatypes te zien.

Voor een backtest verwacht je minimaal 250 handelsdagen per jaar. Check de eerste en laatste datum: klopt die met je ingestelde start en end? Plot de data voor visuele validatie.

Gebruik Matplotlib: import matplotlib.pyplot as plt; data['Close'].plot(); plt.show(). Dit duurt 2 seconden.

Zie je een logische koerslijn? Bij AAPL zou je de stijging van €50 naar €150 zien tussen 2020 en 2023. Geen rare spikes?

Die kunnen wijzen op stock splits – YFinance past dit automatisch aan, maar check de kolom 'Adj Close' voor gecorrigeerde prijzen. Veelgemaakte fouten: vergeten de 'Adj Close' te gebruiken voor aandelen met dividend of splits. Gebruik altijd 'Adj Close' voor accurate returns. Een andere fout: API-fouten door rate limits.

YFinance limiteert niet streng, maar als je 100 tickers in één keer ophaalt, wacht 1-2 seconden tussen calls met time.sleep(1). Test op een enkele ticker eerst.

Als data leeg is, check je ticker-symbool. Sommige brokers gebruiken andere notaties, zoals .AS voor Amsterdamse aandelen. Of probeer een alternatieve bron als fallback, maar YFinance is meestal betrouwbaar voor beginners.

Stap 5: Integratie in je trading bot of backtesting

Nu je data hebt, sluit je aan op je algoritmische trading setup.

Gebruik de data in een backtesting-framework. Bijvoorbeeld met Backtrader: laad de CSV en creër een strategie-klasse die koopt als de prijs onder de 50-dagen moving average daalt. Test dit op je historische data om winstgevendheid te meten. Voor risicomanagement: bereken metrics zoals Sharpe Ratio of Max Drawdown met je dataset.

Gebruik libraries als NumPy of Pandas voor financiële data. Bij een bot voor Interactive Brokers API, voeg de data toe als feed voor live trading.

Stel in: elke ochtend haal je verse data voor je watchlist van 10 aandelen.

Veelgemaakte fouten: te complexe bot bouwen zonder data te testen. Start simpel: een moving-average crossover op 1 jaar data. Een andere fout: live traden zonder paper trading, of het negeren van de gevaren van verouderde libraries in je trading stack.

Test altijd eerst met virtueel geld. YFinance data is gratis, maar live markten zijn onvoorspelbaar.

Concrete tijdindicatie: integratie duurt 1-2 uur voor een simpele bot. Gebruik specifieke prijzen: als je bot €1000 inlegt, simuleer returns op basis van je data om te zien of je onder de €900 drawdown blijft voor risicobeperking.

Verificatie-checklist

Gebruik deze lijst om je werk te controleren. Elk punt moet groen zijn voor je verder gaat.

  • Python en virtuele omgeving actief? Check met python --version en terminal-prefix.
  • YFinance geïnstalleerd? Importeer zonder fouten.
  • Ticker en timeframe gedefinieerd? Download werkt en geeft data terug.
  • Data opgeslagen als CSV? Bestand bestaat en is >0 KB.
  • Geplot en gevalideerd? Koerslijn ziet er realistisch uit, geen nullen.
  • Gebruikt voor backtest? Strategie draait en geeft resultaten zonder errors.
  • Risico-check gedaan? Returns berekend, drawdown onder 20% voor test.

Als alles klopt, ben je klaar om te bouwen. YFinance opent de deur naar eindeloze mogelijkheden voor je trading bots. Ga ervoor, en test je ideeën!

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 →