← العودة إلى قائمة المقالات
July 29, 2025
5 دقائق للقراءة

نماذج الانتشار ضد فوضى العملات المشفرة: لماذا يمكن لـ DDPM التنبؤ بانهيارات البيتكوين أفضل من منجّمك

نماذج الانتشار ضد فوضى العملات المشفرة: لماذا يمكن لـ DDPM التنبؤ بانهيارات البيتكوين أفضل من منجّمك
#diffusion models
#cryptocurrency
#forecasting
#machine learning
#Bitcoin
#DDPM
#time series

بدلاً من المقدمة: عندما يستسلم التعلم الآلي الكلاسيكي

أسواق العملات المشفرة هي المكان الذي تأتي فيه طرق التنبؤ التقليدية لتموت. نماذج LSTM تصبح عصبية من تقلبات البيتكوين، ونماذج ARIMA تصاب بالهستيريا من قفزات الإيثريوم الحادة، والشبكات العصبية الكلاسيكية تستسلم ببساطة عندما ترى مخطط Dogecoin. وعندها تدخل نماذج الانتشار إلى المسرح — التكنولوجيا التي علّمت الحواسيب أصلاً رسم القطط، والآن تحاول التنبؤ بموعد قرار البيتكوين بإحداث "إثنين أسود" آخر.

من المضحك أن البنية التي أنجبت Stable Diffusion وDALL-E تُطبّق الآن بنشاط على تحليل السلاسل الزمنية المالية. وتعرف ماذا؟ إنها تعمل بشكل جيد جداً. خاصة عندما تبدأ المقاربات الكلاسيكية في الهلوسة من التقلب الشديد للعملات المشفرة.

فوضى السوق مقابل إشارة الانتشار من الفوضى إلى الوضوح: كيف تستخلص نماذج الانتشار إشارات منظمة من بيئة العملات المشفرة عالية الضوضاء

لماذا تعمل نماذج الانتشار مع السلاسل الزمنية أصلاً؟

نماذج الانتشار هي فئة من النماذج التوليدية التي تتعلم استعادة البيانات الأصلية من الضوضاء من خلال عملية "إزالة ضوضاء" متسلسلة. الفكرة الأساسية بسيطة: نأخذ بيانات حقيقية، نضيف إليها تدريجياً ضوضاء غاوسية حتى نحصل على ضوضاء بحتة، ثم نعلّم شبكة عصبية عكس هذه العملية.

في سياق السلاسل الزمنية المالية، هذا يعني أن النموذج يتعلم فصل الإشارة عن الضوضاء بالمعنى الحرفي. أسواق العملات المشفرة معروفة بضوضائها الشديدة — تغريدات إيلون ماسك العشوائية، البيع بدافع الذعر، الشراء بدافع الخوف من فوات الفرصة. يمكن لنموذج الانتشار أن يتعلم "رؤية" الأنماط البنيوية عبر كل هذه الفوضى.

رياضياً، تبدو العملية هكذا:

  • العملية الأمامية: 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)
  • العملية العكسية: 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))

حيث βt\beta_t هو جدول الضوضاء، و θ\theta هي معاملات الشبكة العصبية.

عملية الانتشار للسلاسل الزمنية إزالة الضوضاء المتسلسلة: العملية الأمامية (إضافة الضوضاء) والعملية العكسية (إزالة الضوضاء) لإعادة بناء السلاسل الزمنية المالية

مكتبات وحلول جاهزة محددة

1. Diffusion-TS: الجندي الشامل للسلاسل الزمنية

GitHub: Y-debug-sys/Diffusion-TS

هذه المكتبة الرائدة للعمل مع نماذج الانتشار للسلاسل الزمنية، نُشرت في ICLR 2024. الميزة الرئيسية هي أنها تعمل بشكل مشروط (التنبؤ) وغير مشروط (التوليد).

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)

يستخدم النموذج محوّل مشفّر-مفكّك شفرة مع تمثيلات زمنية منفصلة، حيث يساعد التفكيك في التقاط المعنى الدلالي للسلاسل الزمنية.

2. TSDiff: نهج أمازون لفوضى العملات المشفرة

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

اقترحت Amazon Research نموذج TSDiff — نموذج انتشار غير مشروط يمكنه العمل مع التنبؤ من خلال آلية التوجيه الذاتي. الخصوصية هي أن النموذج لا يتطلب شبكات إضافية للتكييف.

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: البيانات المالية الجدولية تلتقي بالانتشار

الورقة البحثية: FinDiff مصمم خصيصاً لتوليد بيانات مالية جدولية اصطناعية. مناسب لإنشاء سيناريوهات سوق متنوعة.

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. تطبيق سريع مع pytorch-forecasting

لمن يريد تجربة نماذج الانتشار سريعاً بالدمج مع بنيات معتمدة:

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))

النتائج العملية: الانتشار ضد الكلاسيكيات

تُظهر الأبحاث نتائج مثيرة للاهتمام. في ورقة "Prediction of Cryptocurrency Prices through a Path Dependent Monte Carlo Simulation"، يستخدم المؤلفون نموذج انتشار القفزات لـ Merton — هجين من العمليات العشوائية والتعلم الآلي. النتيجة؟ تمكّن النموذج من التقاط كل من التغيرات التدريجية في الأسعار والقفزات الحادة المميزة لأسواق العملات المشفرة.

دراسة أخرى أظهرت أن ADE-TFT (Advanced Deep Learning-Enhanced Temporal Fusion Transformer) مع مكونات الانتشار يتفوق بشكل كبير على المقاربات الكلاسيكية في مقاييس MAPE وMSE وRMSE. النتائج على تكوين الـ 8 طبقات مخفية مثيرة للإعجاب بشكل خاص.

التنبؤ مع فترات الثقة التنبؤ الاحتمالي: استخدام نماذج الانتشار لتوليد مسارات أسعار مستقبلية مع فترات ثقة مرتبطة

الجانب المظلم لنماذج الانتشار في المالية

لكن لنكن صريحين. نماذج الانتشار ليست رصاصة فضية. لديها مشاكل خطيرة:

1. جشع الحوسبة

تدريب نموذج انتشار على بيانات العملات المشفرة يتطلب موارد حوسبة جدية. إذا كان نموذجك يقوم بـ 1000 خطوة انتشار، فللحصول على تنبؤ واحد تحتاج 1000 مرور عبر الشبكة العصبية. هذا ليس مناسباً جداً للتداول عالي التردد.

2. مشكلة البجعة السوداء

أسواق العملات المشفرة معروفة بـ الأحداث المتطرفة — انهيار 50% في يوم واحد، حظر العملات المشفرة في الصين، اختراق بورصة كبرى. نماذج الانتشار المدربة على بيانات تاريخية تتنبأ بمثل هذه الأحداث بشكل سيئ.

3. الاعتماد على النظام

أسواق العملات المشفرة لديها أنظمة سلوكية مختلفة — سوق صاعد، سوق هابط، حركة جانبية. يمكن لنموذج الانتشار أن يعمل بشكل ممتاز في نظام واحد ويفشل تماماً في آخر.

التحسين والتسريع: كيف لا تفلس على GPU

Token Merging for Diffusion

GitHub: dbolya/tomesd

مكتبة Token Merging تسمح بتسريع نماذج الانتشار بمقدار 1.24 مرة بدون فقدان الجودة عبر دمج الرموز المكررة:

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 يجمع بين التحسين المكاني والزمني، وهو مهم بشكل خاص للسلاسل الزمنية:

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
)

مثال عملي: خط أنابيب كامل للبيتكوين

هذا مثال واقعي لكيفية استخدام نماذج الانتشار للتنبؤ بالبيتكوين:

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}")

متى يجب استخدام نماذج الانتشار؟

يستحق الاستخدام إذا:

  • لديك الكثير من البيانات التاريخية (سنة واحدة كحد أدنى من البيانات بالساعة)
  • يمكنك تحمّل تدريب طويل (أيام-أسابيع على GPU)
  • تحتاج توليد سيناريوهات اصطناعية للاختبار الخلفي
  • تعمل مع سلاسل زمنية متعددة المتغيرات
  • تقدير عدم اليقين في التنبؤات مهم

لا يستحق الاستخدام إذا:

  • تحتاج تنبؤات سريعة في الوقت الحقيقي
  • تعمل مع سلاسل زمنية قصيرة
  • الموارد الحوسبية محدودة
  • قابلية تفسير النموذج حرجة

مستقبل نماذج الانتشار في تحليلات العملات المشفرة

نماذج الانتشار في المالية مثل العملات المشفرة في 2010. التكنولوجيا خام وكثيفة الموارد، لكن الإمكانات هائلة. نرى بالفعل مقاربات هجينة: DDPM + Transformer، انتشار + تعلم معزز، انتشار مشروط لأنظمة السوق.

الاختراق التالي متوقع في الانتشار متعدد الوسائط — نماذج ستأخذ في الاعتبار ليس فقط الأسعار ولكن أيضاً الأخبار والإشارات الاجتماعية ومقاييس السلسلة. تخيّل نموذج انتشار "يرى" العلاقة بين تغريدة إيلون ماسك وحركة Dogecoin.

الخلاصة: الانتشار كتطور وليس ثورة

نماذج الانتشار لن تحل محل المقاربات الكلاسيكية للتنبؤ بالعملات المشفرة. ستكمّلها. LSTM سيبقى للتنبؤات السريعة، ARIMA — للمقاطع المستقرة، والانتشار سيتولى توليد السيناريوهات والعمل مع التقلب الشديد.

الدرس الرئيسي: في عالم العملات المشفرة، لا توجد رصاصات فضية. هناك فقط مزيج ذكي من الأدوات، فهم عميق للسوق، وشك صحي تجاه أي حلول "ثورية". نماذج الانتشار أداة قوية، لكن تذكّر: إنها تحاول فقط إيجاد أنماط في الفوضى. والفوضى، كما نعلم، لا تحب أن يتم التنبؤ بها.

ملاحظة: إذا أظهر نموذج الانتشار الخاص بك دقة 95% في التنبؤ بالبيتكوين — تحقق من الكود مرتين. على الأرجح هناك تسرب بيانات في مكان ما 😉

blog.disclaimer

MarketMaker.cc Team

البحوث والاستراتيجيات الكمية

ناقش في تلغرام
Newsletter

ابقَ متقدماً على السوق

اشترك في نشرتنا الإخبارية للحصول على رؤى حصرية حول تداول الذكاء الاصطناعي وتحليلات السوق وتحديثات المنصة.

نحترم خصوصيتك. يمكنك إلغاء الاشتراك في أي وقت.