Voorspel de aandelenkoers van Nvidia
Het kan je haast niet ontgaan zijn, Nvidia is inmiddels het grootste bedrijf ter wereld. En op dit moment lijkt het er niet op dat de koers van Nvidia binnen enige tijd afkoelt. Nu ben jij, net als wij, natuurlijk ook erg benieuw naar wat de prijs van het aandeel in de toekomst zal gaan doen. We lopen je in een aantal stappen door een script dat een voorspelling doet van de toekomstige prijs van het aandeel. Je kunt dit script natuurlijk ook aanpassen en toepassen op enig ander aandeel.
In het kort: We gebruiken een model dat de koers van de afgelopen maanden 6 maanden extrapoleert naar de toekomst.
Het script dat de aandelenkoers voorspelt
In dit script maken we gebruik van het ARIMA-model (AutoRegressive Integrated Moving Average). We leggen je precies uit hoe je het ARIMA-model kunt gebruiken en hoe aanpassingen aan de modelparameters de voorspellingen kunnen beïnvloeden.
import yfinance as yf
import pandas as pd
import numpy as np
from statsmodels.tsa.arima.model import ARIMA
from datetime import datetime, timedelta
# Haal de aandelengegevens van Nvidia op
ticker = 'NVDA'
aandeel_data = yf.Ticker(ticker)
# Verkrijg de huidige aandelenprijs
huidige_prijs = aandeel_data.history(period='1d')['Close'].iloc[-1]
# Haal historische aandelengegevens op
hist = aandeel_data.history(period='6mo') # Haal gegevens op voor de afgelopen 6 maanden
# Preprocess gegevens
hist['Datum'] = hist.index
hist['Datum'] = pd.to_datetime(hist['Datum'])
hist.set_index('Datum', inplace=True)
hist = hist.asfreq('B') # Zet frequentie op werkdagen (Business days)
# Train het ARIMA-model
model = ARIMA(hist['Close'], order=(5, 1, 0)) # Gebruik ARIMA(5, 1, 0)
model_fit = model.fit()
# Voorspel toekomstige aandelenprijs
voorspelling = model_fit.forecast(steps=7) # Voorspel 7 dagen in de toekomst
voorspelde_prijs = voorspelling.iloc[-1]
# Output de resultaten
print(f"Huidige Nvidia aandelenprijs: ${huidige_prijs:.2f}")
print(f"Voorspelde Nvidia aandelenprijs over 7 dagen: ${voorspelde_prijs:.2f}")
De output is als volgt:
Uitleg van de Stappen
- Gegevens ophalen:
- We gebruiken de
yfinance
-bibliotheek (van Yahoo Finance) om de huidige en historische aandelenprijzen van Nvidia op te halen. De historische gegevens zijn afkomstig van de afgelopen zes maanden.
- We gebruiken de
- Gegevens voorbewerken:
- De datumindex wordt ingesteld en geformatteerd als werkdagfrequentie (business days), zodat de data consistent zijn voor tijdreeksanalyse.
- ARIMA-model trainen:
- Het ARIMA-model wordt getraind met de historische slotkoersen. De gekozen parameters
(5, 1, 0)
geven het model de specificaties voor autoregressieve (AR) termen, integratie (I), en bewegende gemiddelde (MA) termen.
- Het ARIMA-model wordt getraind met de historische slotkoersen. De gekozen parameters
- Voorspellen van toekomstige prijzen:
- Het model voorspelt de slotkoers voor de komende zeven dagen. De voorspelde prijs aan het einde van deze periode wordt weergegeven.
Het ARIMA-model uitgelegd
Het ARIMA-model is een veelgebruikt tijdreeksvoorspellingsmodel dat drie componenten combineert:
- AutoRegressive (AR) component: Modellen waarbij de huidige waarde afhankelijk is van een bepaalde hoeveelheid vorige waarden.
- Integrated (I) component: Het aantal keren dat de gegevens moeten worden gedifferentieerd om stationair te worden (d.w.z. verwijderen van trends en seizoensinvloeden).
- Moving Average (MA) component: Modellen waarbij de huidige waarde wordt bepaald door een gewogen som van vorige verstoringen (fouten).
De parameters van een ARIMA-model worden vaak als (p, d, q) geschreven, waarbij:
p
de orde van het AR-model is (het aantal lag-termen).d
het aantal keer differentiëren aangeeft.q
de orde van het MA-model is (het aantal lag-verstoringen).
Effect van het Aanpassen van de Parameters
- Aanpassen van
p
(AR-term):- Verhoogt of verlaagt het aantal vorige waarden dat het model gebruikt om voorspellingen te doen. Meer lag-termen kunnen leiden tot een beter model als er voldoende historische afhankelijkheid is.
- Aanpassen van
d
(integratie-term):- Verandert hoe vaak de gegevens moeten worden gedifferentieerd. Dit is nuttig om de data stationair te maken. Te veel differentiëren kan ruis toevoegen, terwijl te weinig een trend kan achterlaten.
- Aanpassen van
q
(MA-term):- Verhoogt of verlaagt het aantal vorige fouten dat wordt gebruikt om voorspellingen te doen. Dit helpt om onverwachte schommelingen in de gegevens te modelleren.
Door met deze parameters te experimenteren, kunnen we het ARIMA-model optimaliseren voor nauwkeurigere voorspellingen.
Let wel op dat deze voorspelling slechts een indicatie is van de mogelijke toekomstige prijs. De uitkomst van dit script is natuurlijk geen beleggingsadvies.