Difüzyon Modelleri ve Kripto Para Anarşisi: Neden DDPM Bitcoin Çöküşlerini Astrologunuzdan Daha İyi Tahmin Edebilir
Önsöz Yerine: Klasik Makine Öğrenmesi Pes Ettiğinde
Kripto para piyasaları, geleneksel tahmin yöntemlerinin can çekiştiği yerdir. LSTM modelleri Bitcoin'in volatilitesinden gergin olmaya başlar, ARIMA modelleri Ethereum'un keskin sıçramalarından kriz geçirir, klasik sinir ağları ise Dogecoin grafiğini görünce tamamen pes eder. İşte bu noktada difüzyon modelleri sahneye çıkar — başlangıçta bilgisayarlara kedi çizmeyi öğreten ve şimdi Bitcoin'in bir sonraki "Kara Pazartesi"sini ne zaman yaşayacağını tahmin etmeye çalışan bir teknoloji.
İlginçtir ki, Stable Diffusion ve DALL-E'ye hayat veren mimari artık finansal zaman serisi analizine de aktif biçimde uygulanmaktadır. Ve bilir misiniz? Oldukça iyi çalışıyor. Özellikle klasik yaklaşımlar aşırı kripto para volatilitesinden halüsinasyon görmeye başladığında.
Kaostan Netliğe: Difüzyon modelleri, kripto para piyasalarının yüksek gürültülü ortamından nasıl yapısal sinyaller çıkarır
Difüzyon Modelleri Zaman Serileriyle Neden Çalışır?
Difüzyon modelleri, art arda "gürültü giderme" süreciyle orijinal veriyi gürültüden geri kazanmayı öğrenen üretici model sınıfıdır. Temel fikir basittir: gerçek veri alınır, üzerine saf gürültüye ulaşana kadar kademeli olarak Gaussian gürültüsü eklenir, ardından bir sinir ağı bu süreci tersine döndürmeyi öğrenir.
Finansal zaman serileri bağlamında bu, modelin sinyal ile gürültüyü gerçek anlamda ayırmayı öğrenmesi anlamına gelir. Kripto para piyasaları aşırı gürültülülükleriyle tanınır — rastgele Elon Musk tweet'leri, panik satışları, FOMO alımları. Bir difüzyon modeli, tüm bu kaos içinden yapısal örüntüleri "görmeyi" öğrenebilir.
Matematiksel olarak süreç şöyle görünür:
- İleri süreç:
- Geri süreç:
burada gürültü takvimi, ise sinir ağı parametreleridir.
Ardışık Gürültü Giderme: Finansal zaman serilerini yeniden oluşturmak için ileri süreç (gürültü ekleme) ve geri süreç (gürültü giderme)
Belirli Kütüphaneler ve Hazır Çözümler
1. Diffusion-TS: Zaman Serileri İçin Evrensel Asker
GitHub: Y-debug-sys/Diffusion-TS
Bu, ICLR 2024'te yayımlanan, zaman serileri için difüzyon modelleriyle çalışmaya yönelik amiral gemisi kütüphanesidir. Temel avantajı hem koşullu (tahmin) hem de koşulsuz (üretim) modda çalışabilmesidir.
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)
Model, zaman serilerinin anlamsal içeriğini yakalamaya yardımcı olan ayrıştırma ile birlikte encoder-decoder transformer kullanır.
2. TSDiff: Amazon'un Kripto Para Kaosuna Yaklaşımı
GitHub: amazon-science/unconditional-time-series-diffusion
Amazon Research, öz-yönlendirme mekanizması aracılığıyla tahminle çalışabilen koşulsuz bir difüzyon modeli olan TSDiff'i önerdi. Özelliği, modelin koşullandırma için ek ağlara ihtiyaç duymamasıdır.
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:], # son 30 gün
forecast_length=7, # haftalık tahmin
guidance_scale=2.0
)
3. FinDiff: Tablo Halindeki Finansal Veriler Difüzyonla Buluşuyor
Paper: FinDiff, sentetik finansal tablo verisi üretmek için özel olarak tasarlanmıştır. Çeşitli piyasa senaryoları oluşturmak için uygundur.
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'} # yüksek volatilite
)
4. pytorch-forecasting ile Hızlı Uygulama
Difüzyon modellerini kanıtlanmış mimarilerle hızlıca denemek isteyenler için:
import lightning.pytorch as pl
from pytorch_forecasting import TimeSeriesDataSet, TemporalFusionTransformer
from diffusion_wrapper import DiffusionTFT # varsayımsal sarmalayıcı
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, # bir hafta geri
max_prediction_length=24, # bir gün ilerisi
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))
Pratik Sonuçlar: Difüzyon ve Klasikler
Araştırmalar ilginç sonuçlar ortaya koymaktadır. "Yola Bağımlı Monte Carlo Simülasyonu ile Kripto Para Fiyatlarının Tahmini" başlıklı makalede yazarlar, stokastik süreçler ile makine öğrenmesinin bir melezi olan Merton'ın sıçrama difüzyon modelini kullanmaktadır. Sonuç? Model, kripto para piyasalarına özgü hem kademeli fiyat değişikliklerini hem de keskin sıçramaları yakalayabildi.
Bir başka çalışma, difüzyon bileşenlerine sahip ADE-TFT (Gelişmiş Derin Öğrenme Destekli Zamansal Füzyon Dönüştürücüsü) modelinin MAPE, MSE ve RMSE metriklerinde klasik yaklaşımları önemli ölçüde geride bıraktığını gösterdi. Özellikle 8 gizli katmanlı yapılandırmanın sonuçları son derece etkileyicidir.
Olasılıksal Tahmin: Gelecekteki fiyat yollarını ilişkili güven aralıklarıyla üretmek için difüzyon modellerinin kullanımı
Finansta Difüzyon Modellerinin Karanlık Yüzü
Ancak dürüst olalım. Difüzyon modelleri sihirli bir değnek değildir. Ciddi sorunları vardır:
1. Hesaplama Açgözlülüğü
Kripto para verileri üzerinde bir difüzyon modeli eğitmek ciddi hesaplama kaynakları gerektirir. Modeliniz 1000 difüzyon adımı gerçekleştiriyorsa, tek bir tahmin almak için sinir ağından 1000 geçiş gerekmektedir. Bu, yüksek frekanslı işlem için pek uygun değildir.
2. Kara Kuğu Sorunu
Kripto para piyasaları aşırı olaylarıyla tanınır — bir günde %50 çöküş, Çin'de kripto para yasağı, büyük borsa hacklemeleri. Geçmiş veriler üzerinde eğitilen difüzyon modelleri bu tür olayları zayıf biçimde tahmin eder.
3. Rejim Bağımlılığı
Kripto para piyasalarının çeşitli davranış rejimleri vardır — boğa piyasası, ayı piyasası, yatay hareket. Bir difüzyon modeli bir rejimde mükemmel çalışabilirken başka bir rejimde tamamen başarısız olabilir.
Optimizasyon ve Hızlandırma: GPU'da Nasıl İflas Edilmez
Difüzyon için Token Birleştirme
GitHub: dbolya/tomesd
Token Merging kütüphanesi, gereksiz token'ları birleştirerek difüzyon modellerini kalite kaybı olmadan 1,24 kat hızlandırır:
import tomesd
from diffusion_model import CryptoDiffusion
model = CryptoDiffusion(...)
tomesd.apply_patch(model, ratio=0.7) # token'ların %30'unu kaldır
forecast = model.predict(btc_data)
Önbelleğe Alınmış Uyarlamalı Token Birleştirme
GitHub: omidiu/ca_tome
CA-ToMe, zaman serileri için özellikle önemli olan mekansal ve zamansal optimizasyonu bir arada sunar:
from ca_tome import apply_ca_tome
apply_ca_tome(
model,
threshold=0.7,
caching_steps=[0, 10, 20, 30, 40] # her 10 adımda önbelleğe al
)
Pratik Örnek: Bitcoin için Eksiksiz Pipeline
Bitcoin tahmini için difüzyon modellerinin nasıl kullanılacağına dair gerçekçi bir örnek:
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):
"""Kripto para özelliklerini dikkate alarak veri hazırlama"""
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):
"""Difüzyon modelini eğitme"""
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):
"""Güven aralıklarıyla tahmin"""
predictions = []
for _ in range(100): # Monte Carlo örneklemesi
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"Sonraki 24 saat için Bitcoin tahmini: {forecast_result['forecast'][-1]:.2f}")
Difüzyon Modelleri Ne Zaman Kullanılmalı?
Kullanmaya değer eğer:
- Çok sayıda geçmiş veriye sahipseniz (en az bir yıllık saatlik veri)
- Uzun eğitim süresini karşılayabiliyorsanız (GPU'da günler-haftalar)
- Backtesting için sentetik senaryo üretimine ihtiyaç duyuyorsanız
- Çok değişkenli zaman serileriyle çalışıyorsanız
- Tahminlerin belirsizlik tahmini önemliyse
Kullanmaya değmez eğer:
- Gerçek zamanlı hızlı tahminlere ihtiyaç varsa
- Kısa zaman serileriyle çalışıyorsanız
- Hesaplama kaynakları sınırlıysa
- Model yorumlanabilirliği kritikse
Kripto Analitiğinde Difüzyon Modellerinin Geleceği
Finanstaki difüzyon modelleri, 2010'daki kripto paralar gibidir. Teknoloji ham, kaynak yoğun ama potansiyeli muazzam. DDPM + Transformer, difüzyon + pekiştirmeli öğrenme, piyasa rejimleri için koşullu difüzyon gibi hibrit yaklaşımları zaten görüyoruz.
Bir sonraki atılım çok modlu difüzyonda bekleniyor — yalnızca fiyatları değil, haberleri, sosyal sinyalleri ve zincir üstü metrikleri de dikkate alacak modeller. Elon Musk'ın tweet'i ile Dogecoin hareketi arasındaki korelasyonu "gören" bir difüzyon modelini hayal edin.
Sonuç: Devrim Değil, Evrim Olarak Difüzyon
Difüzyon modelleri, kripto para tahminindeki klasik yaklaşımların yerini almayacak. Onları tamamlayacak. LSTM hızlı tahminler için, ARIMA durağan kesimler için, difüzyon ise senaryo üretimi ve aşırı volatiliteyle çalışma için kullanılmaya devam edecek.
Ana ders şu: Kripto para dünyasında sihirli değnek yoktur. Yalnızca araçların akıllıca kombinasyonu, derin piyasa anlayışı ve her "devrimci" çözüme karşı sağlıklı şüphecilik vardır. Difüzyon modelleri güçlü bir araçtır; ancak unutmayın: bunlar yalnızca kaosta örüntü bulmaya çalışıyor. Kaos ise, bildiğimiz gibi, tahmin edilmeyi pek sevmez.
P.S.: Difüzyon modeliniz Bitcoin tahmininde %95 doğruluk gösteriyorsa — kodu iki kez kontrol edin. Büyük ihtimalle bir yerde veri sızıntısı vardır 😉
Yazarlar
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.