← Terug naar artikelen
July 29, 2025
5 min leestijd

Diffusiemodellen vs cryptovaluta-anarchie: waarom DDPM Bitcoin-crashes beter voorspelt dan jouw astroloog

Diffusiemodellen vs cryptovaluta-anarchie: waarom DDPM Bitcoin-crashes beter voorspelt dan jouw astroloog
#diffusion models
#cryptocurrency
#forecasting
#machine learning
#Bitcoin
#DDPM
#time series
🧠
Part 2 of 4 · Collection
Deep Learning for Markets

In plaats van een voorwoord: wanneer klassieke machine learning het opgeeft

Cryptovalutamarkten zijn de plek waar traditionele voorspellingsmethoden komen te sterven. LSTM-modellen worden zenuwachtig van de volatiliteit van Bitcoin, ARIMA-modellen krijgen hysterische aanvallen van de scherpe sprongen van Ethereum, en klassieke neurale netwerken geven simpelweg op zodra ze de grafiek van Dogecoin zien. En dan betreden de diffusiemodellen het toneel — technologie die oorspronkelijk computers leerde katten te tekenen en nu probeert te voorspellen wanneer Bitcoin besluit om weer een "Zwarte Maandag" te organiseren.

Grappig genoeg wordt de architectuur die Stable Diffusion en DALL-E voortbracht, nu actief toegepast op de analyse van financiële tijdreeksen. En weet je wat? Het werkt best goed. Vooral wanneer klassieke benaderingen beginnen te hallucineren door de extreme volatiliteit van cryptovaluta.

Market Chaos vs Diffusion Signal Van chaos naar helderheid: hoe diffusiemodellen gestructureerde signalen halen uit de zeer ruizige omgeving van cryptovalutamarkten

Waarom werken diffusiemodellen eigenlijk met tijdreeksen?

Diffusiemodellen zijn een klasse van generatieve modellen die leren om oorspronkelijke data te herstellen uit ruis via een proces van opeenvolgende "ruisonderdrukking". Het basisidee is eenvoudig: we nemen echte data, voegen daar geleidelijk Gaussische ruis aan toe totdat we pure ruis krijgen, en leren vervolgens een neuraal netwerk om dit proces om te keren.

In de context van financiële tijdreeksen betekent dit dat het model leert om signaal van ruis te scheiden, in de letterlijke zin. Cryptovalutamarkten staan bekend om hun extreme ruis — willekeurige tweets van Elon Musk, paniekverkopen, FOMO-aankopen. Een diffusiemodel kan leren om structurele patronen "te zien" door al deze chaos heen.

Wiskundig ziet het proces er zo uit:

  • Voorwaarts proces: q(xtxt1)=N(xt;1βtxt1,βtI)q(x_t | x_{t-1}) = \mathcal{N}(x_t; \sqrt{1-\beta_t}x_{t-1}, \beta_t I)
  • Omgekeerd proces: pθ(xt1xt)=N(xt1;μθ(xt,t),Σθ(xt,t))p_\theta(x_{t-1} | x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \Sigma_\theta(x_t, t))

waarbij βt\beta_t het ruisschema is en θ\theta de parameters van het neurale netwerk zijn.

Diffusion Process for Time Series Opeenvolgende ruisonderdrukking: het voorwaartse proces (ruis toevoegen) en het omgekeerde proces (ruis onderdrukken) om financiële tijdreeksen te reconstrueren

Concrete bibliotheken en kant-en-klare oplossingen

1. Diffusion-TS: de universele soldaat voor tijdreeksen

GitHub: Y-debug-sys/Diffusion-TS

Dit is de vlaggenschipbibliotheek voor het werken met diffusiemodellen voor tijdreeksen, gepubliceerd op ICLR 2024. Het grootste voordeel is dat het zowel conditioneel (voorspellen) als onconditioneel (genereren) werkt.

import torch
from diffusion_ts import DiffusionTS
import pandas as pd

btc_data = pd.read_csv('btc_prices.csv')
prices = torch.tensor(btc_data['close'].values).float()

model = DiffusionTS(
    input_dim=1,
    hidden_dim=64,
    num_layers=4,
    max_sequence_length=100,
    num_diffusion_steps=1000
)

model.fit(prices, epochs=100)

forecast = model.predict(prices[-100:], forecast_horizon=24)

Het model gebruikt een encoder-decoder-transformer met gescheiden temporele representaties, waarbij de decompositie helpt om de semantische betekenis van tijdreeksen vast te leggen.

2. TSDiff: Amazons aanpak van de cryptovalutachaos

GitHub: amazon-science/unconditional-time-series-diffusion

Amazon Research stelde TSDiff voor — een onconditioneel diffusiemodel dat kan werken met voorspellen via een zelfsturingsmechanisme. Het bijzondere is dat het model geen aanvullende netwerken nodig heeft voor het conditioneren.

from tsdiff import TSDiff
import numpy as np

crypto_data = load_cryptocurrency_data(['BTC', 'ETH', 'LTC'])

tsdiff = TSDiff(
    input_size=crypto_data.shape[-1],
    hidden_size=128,
    num_layers=6,
    diffusion_steps=1000,
    beta_schedule='cosine'
)

tsdiff.train(crypto_data, num_epochs=200)

synthetic_crypto = tsdiff.sample(num_samples=1000, length=365)

forecast = tsdiff.forecast_with_guidance(
    context=crypto_data[-30:],  # last 30 days
    forecast_length=7,          # week forecast
    guidance_scale=2.0
)

3. FinDiff: financiële tabeldata ontmoet diffusie

Paper: FinDiff is specifiek ontworpen voor het genereren van synthetische financiële tabeldata. Geschikt voor het creëren van uiteenlopende marktscenario's.

import torch
from findiff import FinancialDiffusion

market_data = pd.read_csv('crypto_market_features.csv')

financial_features = [
    'price', 'volume', 'market_cap', 'volatility',
    'rsi', 'macd', 'bollinger_bands'
]

findiff = FinancialDiffusion(
    categorical_columns=['exchange', 'crypto_type'],
    numerical_columns=financial_features,
    embedding_dim=32,
    hidden_dim=256
)

findiff.fit(market_data[financial_features])

synthetic_scenarios = findiff.generate(n_samples=10000)

stress_test_data = findiff.generate_conditional(
    conditions={'volatility': '>0.8'}  # high volatility
)

4. Snelle implementatie met pytorch-forecasting

Voor wie snel diffusiemodellen wil uitproberen in combinatie met beproefde architecturen:

import lightning.pytorch as pl
from pytorch_forecasting import TimeSeriesDataSet, TemporalFusionTransformer
from diffusion_wrapper import DiffusionTFT  # hypothetical wrapper

crypto_df = pd.read_csv('hourly_crypto_data.csv')

training = TimeSeriesDataSet(
    crypto_df,
    time_idx="hour",
    target="btc_price",
    group_ids=["crypto_pair"],
    max_encoder_length=168,  # week back
    max_prediction_length=24,  # day forward
    time_varying_unknown_reals=["price", "volume", "volatility"],
    time_varying_known_reals=["hour_of_day", "day_of_week"],
)

diffusion_tft = DiffusionTFT.from_dataset(
    training,
    hidden_size=64,
    attention_head_size=4,
    diffusion_steps=100,
    noise_schedule='linear'
)

trainer = pl.Trainer(max_epochs=50, accelerator="gpu")
trainer.fit(diffusion_tft, train_dataloaders=training.to_dataloader(train=True))

Praktische resultaten: diffusie vs klassiekers

Onderzoek levert opmerkelijke resultaten op. In het artikel "Prediction of Cryptocurrency Prices through a Path Dependent Monte Carlo Simulation" gebruiken de auteurs het jump-diffusiemodel van Merton — een hybride van stochastische processen en machine learning. Het resultaat? Het model was in staat om zowel geleidelijke prijsveranderingen als de scherpe sprongen die kenmerkend zijn voor cryptovalutamarkten vast te leggen.

Een andere studie toonde aan dat ADE-TFT (Advanced Deep Learning-Enhanced Temporal Fusion Transformer) met diffusiecomponenten klassieke benaderingen aanzienlijk overtreft op de MAPE-, MSE- en RMSE-metrieken. De resultaten van de configuratie met 8 verborgen lagen zijn bijzonder indrukwekkend.

Forecasting with Confidence Intervals Probabilistisch voorspellen: het gebruik van diffusiemodellen om toekomstige prijstrajecten te genereren met bijbehorende betrouwbaarheidsintervallen

De schaduwzijde van diffusiemodellen in de financiële wereld

Maar laten we eerlijk zijn. Diffusiemodellen zijn geen wondermiddel. Ze hebben serieuze problemen:

1. Rekenkundige vraatzucht

Het trainen van een diffusiemodel op cryptovalutadata vereist serieuze rekenkracht. Als je model 1000 diffusiestappen uitvoert, heb je voor één enkele voorspelling 1000 doorgangen door het neurale netwerk nodig. Dit is niet erg geschikt voor hoogfrequente handel.

2. Het zwarte-zwaanprobleem

Cryptovalutamarkten staan bekend om hun extreme gebeurtenissen — een crash van 50% op één dag, een cryptovalutaverbod in China, de hack van een grote exchange. Diffusiemodellen die op historische data zijn getraind, voorspellen zulke gebeurtenissen slecht.

3. Regime-afhankelijkheid

Cryptovalutamarkten kennen verschillende gedragsregimes — bullmarkt, bearmarkt, zijwaartse beweging. Een diffusiemodel kan uitstekend werken in het ene regime en volledig falen in het andere.

Optimalisatie en versnelling: hoe je niet failliet gaat aan de GPU

Token Merging voor diffusie

GitHub: dbolya/tomesd

De Token Merging-bibliotheek maakt het mogelijk om diffusiemodellen met 1,24x te versnellen zonder kwaliteitsverlies, door redundante tokens samen te voegen:

import tomesd
from diffusion_model import CryptoDiffusion

model = CryptoDiffusion(...)

tomesd.apply_patch(model, ratio=0.7)  # remove 30% of tokens

forecast = model.predict(btc_data)

Cached Adaptive Token Merging

GitHub: omidiu/ca_tome

CA-ToMe combineert ruimtelijke en temporele optimalisatie, wat vooral belangrijk is voor tijdreeksen:

from ca_tome import apply_ca_tome

apply_ca_tome(
    model, 
    threshold=0.7,
    caching_steps=[0, 10, 20, 30, 40]  # cache every 10 steps
)

Praktisch voorbeeld: complete pipeline voor Bitcoin

Hier is een realistisch voorbeeld van hoe je diffusiemodellen kunt gebruiken voor het voorspellen van Bitcoin:

import torch
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
from diffusion_ts import DiffusionTS

class CryptoDiffusionPipeline:
    def __init__(self, sequence_length=100, forecast_horizon=24):
        self.sequence_length = sequence_length
        self.forecast_horizon = forecast_horizon
        self.scaler = MinMaxScaler()
        self.model = None
        
    def prepare_data(self, crypto_data):
        """Data preparation considering cryptocurrency features"""
        crypto_data['returns'] = crypto_data['close'].pct_change()
        crypto_data['volatility'] = crypto_data['returns'].rolling(24).std()
        crypto_data['rsi'] = self.compute_rsi(crypto_data['close'])
        
        features = ['close', 'volume', 'volatility', 'rsi']
        scaled_data = self.scaler.fit_transform(crypto_data[features])
        
        return scaled_data
    
    def train_model(self, data):
        """Training diffusion model"""
        self.model = DiffusionTS(
            input_dim=data.shape[1],
            hidden_dim=128,
            num_layers=6,
            diffusion_steps=1000,
            noise_schedule='cosine',
            loss_type='l2'
        )
        
        X, y = self.create_sequences(data)
        
        self.model.fit(
            X, y,
            epochs=200,
            batch_size=32,
            learning_rate=1e-4,
            validation_split=0.2
        )
    
    def forecast(self, recent_data):
        """Forecasting with confidence intervals"""
        predictions = []
        
        for _ in range(100):  # Monte Carlo sampling
            pred = self.model.sample_forecast(
                context=recent_data[-self.sequence_length:],
                horizon=self.forecast_horizon
            )
            predictions.append(pred)
        
        predictions = np.array(predictions)
        
        mean_pred = np.mean(predictions, axis=0)
        std_pred = np.std(predictions, axis=0)
        
        return {
            'forecast': mean_pred,
            'confidence_95': mean_pred + 1.96 * std_pred,
            'confidence_5': mean_pred - 1.96 * std_pred
        }

pipeline = CryptoDiffusionPipeline()
btc_data = pd.read_csv('btc_hourly.csv')

prepared_data = pipeline.prepare_data(btc_data)
pipeline.train_model(prepared_data)

forecast_result = pipeline.forecast(prepared_data)
print(f"Bitcoin forecast for next 24h: {forecast_result['forecast'][-1]:.2f}")

Wanneer zou je diffusiemodellen moeten gebruiken?

De moeite waard als:

  • Je veel historische data hebt (minimaal een jaar aan uurdata)
  • Je je een lange training kunt veroorloven (dagen tot weken op een GPU)
  • Je synthetische scenario's moet genereren voor backtesting
  • Je werkt met multivariate tijdreeksen
  • Het inschatten van de onzekerheid van voorspellingen belangrijk is

Niet de moeite waard als:

  • Je snelle voorspellingen in realtime nodig hebt
  • Je werkt met korte tijdreeksen
  • Je beperkte rekenkracht hebt
  • De interpreteerbaarheid van het model cruciaal is

De toekomst van diffusiemodellen in crypto-analyse

Diffusiemodellen in de financiële wereld zijn als cryptovaluta in 2010. De technologie is nog onrijp en resource-intensief, maar het potentieel is enorm. We zien nu al hybride benaderingen: DDPM + Transformer, diffusie + reinforcement learning, conditionele diffusie voor marktregimes.

De volgende doorbraak wordt verwacht in multimodale diffusie — modellen die niet alleen prijzen in overweging nemen, maar ook nieuws, sociale signalen en on-chain-metrieken. Stel je een diffusiemodel voor dat de correlatie "ziet" tussen een tweet van Elon Musk en een beweging van Dogecoin.

Conclusie: diffusie als evolutie, niet als revolutie

Diffusiemodellen zullen klassieke benaderingen van cryptovalutavoorspelling niet vervangen. Ze zullen ze aanvullen. LSTM blijft voor snelle voorspellingen, ARIMA voor stationaire stukken, en diffusie neemt de scenariogeneratie en het werken met extreme volatiliteit voor zijn rekening.

De belangrijkste les: in de wereld van cryptovaluta bestaan er geen wondermiddelen. Er is alleen een slimme combinatie van hulpmiddelen, een diepgaand begrip van de markt en een gezonde scepsis tegenover elke "revolutionaire" oplossing. Diffusiemodellen zijn een krachtig hulpmiddel, maar onthoud: ze proberen alleen patronen in de chaos te vinden. En chaos, zoals we weten, houdt er niet zo van om voorspeld te worden.

P.S.: als je diffusiemodel 95% nauwkeurigheid laat zien bij het voorspellen van Bitcoin — controleer je code dan twee keer. Hoogstwaarschijnlijk zit er ergens een datalek 😉

Disclaimer: De informatie in dit artikel is uitsluitend bedoeld voor educatieve en informatieve doeleinden en vormt geen financieel, beleggings- of handelsadvies. Het handelen in cryptovaluta brengt een aanzienlijk risico op verlies met zich mee.

Auteurs

Eugen Soloviov
Eugen Soloviov

Trading-systems engineer

Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.

Newsletter

Blijf de markt voor

Abonneer je op onze nieuwsbrief voor exclusieve AI-handelsinzichten, marktanalyses en platformupdates.

We respecteren je privacy. Je kunt je op elk moment afmelden.