← العودة إلى قائمة المقالات
February 23, 2026
5 دقائق للقراءة

خوارزميات الرسوم البيانية لاكتشاف المراجحة: من Bellman-Ford إلى RICH

خوارزميات الرسوم البيانية لاكتشاف المراجحة: من Bellman-Ford إلى RICH
#arbitrage
#graph algorithms
#Bellman-Ford
#RICH
#rust
#cryptocurrency
#optimization
#negative cycles

الجزء الأول من سلسلة "سلاسل المراجحة المعقدة بين العقود الآجلة والفورية"

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

كيف نجد هذه السلاسل بين ملايين الاحتمالات في الوقت الفعلي؟ الإجابة تكمن في نظرية الرسوم البيانية.

في هذه المقالة، سنتتبع المسار من الخوارزميات الكلاسيكية إلى أحدث الأبحاث الأكاديمية، مع تنفيذ كل شيء بلغة Rust لتحقيق أقصى أداء.

رسم بياني معقد لمراجحة العملات المشفرة تصور عالي التقنية لرسم بياني للمراجحة: العقد تمثل الأصول، والحواف تمثل أزواج التداول. الدورة المُبرزة تمثل فرصة ربحية مكتشفة.

1. السوق كرسم بياني

لتطبيق خوارزميات الرسوم البيانية، يجب أولاً تمثيل السوق بشكل صحيح.

1.1 الرؤوس والحواف

  • الرؤوس (العقد): الأصول (BTC، ETH، USDT، إلخ).
  • الحواف (الروابط): أزواج التداول (BTC/USDT، ETH/BTC).
  • الأوزان: سعر الصرف.

إذا كان لدينا سعر R(i,j)R(i, j) (كم من الأصل jj نحصل عليه مقابل وحدة واحدة من الأصل ii)، فإن فرصة المراجحة موجودة إذا كانت الدورة (i1,i2,,ik,i1)(i_1, i_2, \dots, i_k, i_1) تحقق: R(i1,i2)×R(i2,i3)××R(ik,i1)>1R(i_1, i_2) \times R(i_2, i_3) \times \dots \times R(i_k, i_1) > 1

1.2 من الضرب إلى الجمع

الحواسيب أسرع بكثير في الجمع من الضرب، ومعظم خوارزميات أقصر مسار مصممة للمجاميع. نستخدم حيلة رياضية بسيطة: اللوغاريتم. بما أن ln(a×b)=ln(a)+ln(b)\ln(a \times b) = \ln(a) + \ln(b)، يصبح الشرط: ln(R1)+ln(R2)++ln(Rk)>0\ln(R_1) + \ln(R_2) + \dots + \ln(R_k) > 0 أو بعكس الإشارة لإيجاد دورة سالبة: (ln(R1))+(ln(R2))++(ln(Rk))<0(-\ln(R_1)) + (-\ln(R_2)) + \dots + (-\ln(R_k)) < 0

الآن، كل حافة لها وزن w=ln(R)w = -\ln(R). مهمتنا هي إيجاد دورة ذات وزن إجمالي سالب.

2. النهج الكلاسيكي: Bellman-Ford

خوارزمية Bellman-Ford هي "Hello World" لاكتشاف المراجحة. صُممت لإيجاد أقصر المسارات ويمكنها اكتشاف الدورات السالبة بشكل طبيعي.

2.1 الخوارزمية بلغة Rust

باستخدام مكتبة petgraph، يمكننا التنفيذ بكفاءة:

use petgraph::graph::{DiGraph, NodeIndex};
use petgraph::algo::bellman_ford;

fn find_arbitrage_bellman_ford(
    graph: &DiGraph<&str, f64>,
    start_node: NodeIndex
) -> Option<Vec<NodeIndex>> {
    // Bellman-Ford returns distances or an error if a negative cycle is found
    match bellman_ford(graph, start_node) {
        Ok(_) => None, // No negative cycles
        Err(error) => {
            // In a real implementation, we would reconstruct the cycle
            // using the predecessor map from the error
            println!("Arbitrage detected!");
            None
        }
    }
}

2.2 التعقيد والقيود

تعمل خوارزمية Bellman-Ford بتعقيد O(V×E)O(V \times E)، حيث VV هو عدد الأصول و EE هو عدد أزواج التداول.

  • المزايا: تضمن العثور على دورة إذا كانت موجودة.
  • العيوب: بطيئة جداً للتداول عالي التردد (HFT) عندما يزداد عدد الأصول. كما أنها تجد دورة واحدة فقط في كل مرة.

3. SPFA: بديل أسرع

خوارزمية أسرع مسار أقصر (SPFA) هي نسخة محسنة من Bellman-Ford تستخدم طابوراً لتجنب الحسابات الزائدة.

use std::collections::VecDeque;

fn spfa_negative_cycle(n: usize, adj: &Vec<Vec<(usize, f64)>>) -> bool {
    let mut dist = vec![0.0; n];
    let mut count = vec![0; n];
    let mut in_queue = vec![false; n];
    let mut queue = VecDeque::new();

    for i in 0..n {
        in_queue[i] = true;
        queue.push_back(i);
    }

    while let Some(u) = queue.pop_front() {
        in_queue[u] = false;
        for &(v, weight) in &adj[u] {
            if dist[v] > dist[u] + weight {
                dist[v] = dist[u] + weight;
                count[v] = count[u] + 1;
                if count[v] >= n {
                    return true; // Negative cycle detected
                }
                if !in_queue[v] {
                    queue.push_back(v);
                    in_queue[v] = true;
                }
            }
        }
    }
    false
}

عملياً، تعمل SPFA غالباً بتعقيد O(k×E)O(k \times E) حيث kVk \ll V، مما يجعلها أسرع بكثير للرسوم البيانية السوقية المتناثرة.

4. أحدث الأبحاث: خوارزمية RICH

في عام 2024، اقترح الباحثون خوارزمية RICH (التحديد السريع للدورات عالية الربحية). على عكس Bellman-Ford، فإن RICH محسنة خصيصاً للرسوم البيانية المالية حيث:

  1. الرسم البياني صغير إلى متوسط الحجم (مئات الأصول).
  2. الأوزان تتغير كل مللي ثانية.
  3. نحتاج إلى إيجاد الدورة الأكثر ربحية، وليس فقط أي دورة.

4.1 الابتكارات الرئيسية في RICH

  • التقليم: تستبعد فوراً المسارات التي لا يمكن أن تؤدي إلى دورة مربحة بناءً على أفضل مسار معروف حالياً.
  • البحث المتدرج: تبحث عن دورات ذات أطوال متزايدة (3 أرجل، 4 أرجل، 5 أرجل) باستخدام تحسينات قناع البت.
  • التحديثات التزايدية: بدلاً من إعادة تشغيل الخوارزمية بالكامل، تحدث فقط أجزاء الرسم البياني المتأثرة بتغيير السعر.

5. تحديات التنفيذ: الرسوم والسيولة

التداول الحقيقي ليس مجانياً. دورة متعددة الأرجل (ABCA)(A \to B \to C \to A) تتحمل ثلاث رسوم تداول منفصلة.

5.1 دمج الرسوم

يجب تعديل أوزان الحواف: w=ln(R×(1fee))w = -\ln(R \times (1 - \text{fee})) هذا يقلم الرسم البياني بشكل كبير، حيث تُلغى العديد من الدورات النظرية بسبب تكلفة التنفيذ.

5.2 السيولة والانزلاق السعري

كلما اشتريت أكثر من أصل ما، ارتفع السعر (الانزلاق السعري). دورة تبدو مربحة بـ 100 دولار قد تكون خسارة بـ 10,000 دولار. تستخدم نماذج الرسوم البيانية المتقدمة أوزاناً بارامترية، حيث ww هي دالة في الحجم VV. هذا يحول المشكلة من بحث بسيط عن أقصر مسار إلى مسألة تحسين محدب على رسم بياني.

6. لماذا Rust؟

في عالم المراجحة، 100 ميكروثانية هي الفرق بين الربح والفرصة "الضائعة".

  • أمان الذاكرة: لا توقفات لجامع القمامة (GC) قد تجمد البوت في لحظة حرجة.
  • تجريدات بتكلفة صفرية: يمكننا استخدام هياكل رسوم بيانية عالية المستوى دون فقدان أداء المؤشرات الخام.
  • التزامن: تتيح "التزامن بلا خوف" في Rust تحليل تغذيات WebSocket من 10 بورصات بالتوازي وتحديث الرسم البياني المشترك بأمان.

الخلاصة

خوارزميات الرسوم البيانية هي المحرك وراء مراجحة العملات المشفرة الحديثة. بينما يوفر Bellman-Ford الأساس، تستخدم الأنظمة الحديثة متغيرات محسنة مثل SPFA أو خوارزميات متخصصة مثل RICH.

في الجزء التالي من هذه السلسلة، سنتناول مراجحة العقود الآجلة والفورية، حيث نوسع الرسم البياني من مبادلات الأصول البسيطة ليشمل معدلات التمويل واستراتيجيات الشراء والحمل.


هل تبني أنظمة تداول منخفضة التأخير؟ تفقد قالب Rust HFT مفتوح المصدر.

blog.disclaimer

MarketMaker.cc Team

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

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

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

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

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