Een LSTM model bouwen in Keras voor het voorspellen van Bitcoin prijzen

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Machine Learning & AI in Trading · 2026-02-15 · 6 min leestijd

Stel je voor: je zit achter je scherm, de Bitcoin koers schommelt als een achtbaan en jij wilt die beweging een stapje voor zijn. Je bent niet de enige. Handelaren over de hele wereld proberen de toekomst te voorspellen met data.

Een van de krachtigste gereedschappen in hun digitale toolbox is een LSTM-model.

Dit is een speciaal soort kunstmatige intelligentie dat dingen als tijdreeksen – ja, zo'n Bitcoin-koers die door de tijd heen verandert – heel slim kan analyseren. In deze gids bouwen we samen een simpel model in Keras, de populaire Python-bibliotheek. We doen dit zonder moeilijke woorden, stap voor stap, zodat je precies snapt hoe het werkt en wat je ermee kunt.

Wat is een LSTM eigenlijk?

De naam klinkt ingewikkeld, maar het idee is simpel. LSTM staat voor Long Short-Term Memory.

Je kunt het zien als een geheugensteuntje voor een algoritme. Een normaal computerprogramma vergeet alles zodra het een nieuwe regel code leest.

Een LSTM-model bewaart belangrijke informatie van eerder. Denk aan de prijs van Bitcoin van gisteren, die van vorige week en die van vijf minuten geleden. Het model beslist zelf wat het onthoudt en wat het weglaat.

Waarom is dat handig voor Bitcoin? Omdat de markt vol patronen zit die je alleen over tijd ziet.

Een plotselinge prijsval betekent misschien niets, maar als die gebeurt na drie dagen stijgen en met een enorme piek in het volume, dan is het een signaal. Een LSTM herkent die connecties. Het kijkt niet naar één getal, maar naar de hele rij getallen daarvoor. Zo leert het de 'ritmes' van de markt kennen.

Je bouwt deze modellen meestal in Python. De bibliotheek Keras maakt het bouwen van zo'n netwerk net zo makkelijk als blokjes stapelen.

Je definieert laagjes, geeft ze een grootte en klaar is Kees. Geen wiskundige formules die je uit je hoofd hoeft te leren.

De basis: Data voorbereiden is 80% werk

Voordat we één regel code typen voor het model, moeten we aan de slag met data. Een LSTM kan niet zomaar een CSV-bestand met Bitcoin-prijzen lezen. Het wil getallen die schoon en gestandaardiseerd zijn.

We downloaden data via een broker API, zoals die van Kraken of Binance.

Meestal halen we de 'candlesticks': open, high, low, close en volume. Laten we uitgaan van 1 jaar aan uursdata, dat zijn ongeveer 8.760 datapunten.

De eerste stap is schalen. De Bitcoin-prijs schommelt tussen €20.000 en €60.000. Die grote getallen zorgen voor een instabiel model.

We gebruiken de MinMaxScaler van de bibliotheek Scikit-learn. Die knijpt alle waarden tussen 0 en 1.

Zo leert het model sneller. Daarna maak je een venster (window). Je model krijgt een stukje data te zien, bijvoorbeeld de prijzen van de afgelopen 24 uur (24 stappen), en moet de prijs van het volgende uur voorspellen. Je schuift dit venster steeds één stap verder door je hele dataset heen.

Zo creëer je duizenden setjes van 'input' (het verleden) en 'output' (de toekomst). Een valkuil: je mag de toekomst niet gebruiken om het verleden te voorspellen.

Splits je data dus altijd netjes. Gebruik de eerste 80% voor training en de laatste 20% voor testen.

Zorg dat je de schaalwaarden opslaat, want straks moet je de voorspellingen weer terugrekenen naar echte euro's.

Bouwen in Keras: Stap voor stap

Het leuke aan Keras is dat je code bijna gewoon Nederlands lijkt. We importeren de benodigde modules: Sequential voor het model, en Dense, LSTM en Dropout voor de lagen.

We beginnen met een leeg model. De kern is de werking van LSTM-netwerken.

Je kunt beginnen met 50 neuronen. Dat klinkt als veel, maar voor Bitcoin is dat best bescheiden. Je moet de input_shape precies instellen op de vorm van je venster, bijvoorbeeld (24, 1) als je 24 uur terugkijkt en alleen naar de prijs (close) kijkt.

Voeg een tweede LSTM-laag toe om de complexiteit te verhogen. Daarna een Dense-laag (een normale laag) die het uiteindelijke getal uitrekent: de voorspelde prijs. Gebruik de activatiefunctie 'linear' want we voorspellen een getal, niet een keuze (0 of 1). Voordat je je model traint voor prijsvoorspelling, moet je het compileren.

Kies de 'adam' optimizer (de standaard die goed werkt) en als loss-functie 'mean_squared_error'.

Dat betekent dat het model probeert de afstand tussen de werkelijke prijs en de voorspelling zo klein mogelijk te maken.

Trainen, testen en optimaliseren

Nu komt het magische moment: fit(). Je geeft de trainingdata mee en stelt in hoe vaak het model de volledig voorbereide dataset ziet (epochs).

Begin met 10 of 20 epochs. Te veel training leidt tot 'overfitting': het model kent de data uit zijn hoofd maar snapt de markt niet. Als de training klaar is, draai je de voorspellingen terug naar echte euro's.

De waarden waren tussen 0 en 1, dus je vermenigvuldigt ze weer met de schaalwaarden.

Nu kun je de grafiek plotten. De blauwe lijn is de echte Bitcoin-prijs, de oranje lijn is jouw voorspelling. Ze zullen nooit 100% matchen, maar als ze dezelfde pieken en dalen volgen, heb je gewonnen. Wil je het beter?

Probeer dan meer features. Kijk niet alleen naar de prijs, maar ook naar het volume of technische indicatoren als de RSI.

Voeg die toe als extra kolom in je data. Je input_shape verandert dan van (24, 1) naar (24, 2) of meer. Een andere truc is het toevoegen van 'Dropout'.

Dit is een laag die willekeurig neuronen uitschakelt tijdens het trainen. Het klinkt gek, maar het forceert het model om robuustere patronen te leren in plaats van te vertrouwen op één specifiek getal.

Dit voorkomt dat je model alleen maar gokt.

Van model naar handelsbot

Een voorspelling is nog geen winst. Als je model zegt dat Bitcoin morgen €50.100 wordt, en nu is het €50.000, is dat een verschil van €100.

Is dat genoeg om winst te maken? Zeker niet. Je moet rekening houden met kosten.

Een broker zoals Bitvavo of Binance rekent ongeveer 0,25% per transactie. Voor een ronde heen en weer ben je dus 0,5% kwijt. Daarom moet je een drempel instellen.

Als je model een stijging van minder dan 0,6% voorspelt, doe je niets. Je wacht tot de voorspelling groot genoeg is om de kosten te dekken en nog wat over te houden. Dit heet 'thresholding'. Risicomanagement is hierbij cruciaal. Gebruik nooit je hele kapitaal op één trade.

Een veilige bot zet bijvoorbeeld maar 2% van je totale portfolio in op basis van een signaal.

Zorg ook voor een stop-loss. Als de markt opeens instort terwijl je model even niet oplet, word je niet met lege handen achtergelaten.

Als je dit allemaal hebt, kun je de API van je broker koppelen. Je script haalt elke minuut de nieuwste data op, berekent de voorspelling, en als die voldoet aan je regels, stuurt het een order via de API naar de exchange. Zo wordt je Keras-model de hersenen van je eigen algoritmische trading bot.

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 Machine Learning & AI in Trading
Ga naar overzicht →