VectorBT: الإطار الأسرع للاختبار العكسي باستخدام بايثون

إذا كنت قد شاركت في التداول الخوارزمي والاختبار العكسي لاستراتيجيات التداول باستخدام بايثون، فمن المحتمل أنك واجهت نفس المشكلة: السرعة. تستخدم المكتبات الكلاسيكية (مثل Backtrader أو Zipline) نهجاً موجهًا للكائنات، حيث تتنقل عبر البيانات التاريخية حدثاً تلو الآخر (مبني على الأحداث). هذا مريح لكتابة المنطق، ولكن عندما يتعلق الأمر بتحسين المعلمات على آلاف المجموعات، يصبح انتظار الساعات أمراً لا يطاق.
وهنا يأتي دور VectorBT — وهي مكتبة للتحليل الكمي تطبق نهجاً مختلفاً جذرياً للاختبار العكسي.
ما هو VectorBT؟

يعمل VectorBT حصرياً مع كائنات pandas و NumPy ، ويستخدم مترجم Numba لتسريع الحسابات. يتيح ذلك تحليل أي بيانات بسرعة فائقة وقابلية للتوسع، واختبار عشرات الآلاف من الاستراتيجيات في ثوانٍ معدودة.
بدلاً من معالجة كل شمعة أو تكة بالدور (كما تفعل أدوات الاختبار العكسي التقليدية)، يمثل VectorBT البيانات المعقدة كمصفوفات منظمة. يوفر توجيه العمليات بالاشتراك مع Numba (الذي يحل مشكلة الاعتماد على المسار من خلال السماح بترجمة حلقات بايثون إلى لغة الآلة) أداءً بمستوى لغة C.
الميزات الرئيسية

- الاختبار العكسي الموجه (Vectorized): اختبار الاستراتيجيات في أسطر قليلة من الكود. لا توجد حلقات بايثون بطيئة.
- تحسين واسع النطاق: قم بتحسين استراتيجية التداول الخاصة بك في وقت واحد عبر العديد من المعلمات والأطر الزمنية والأصول بضربة واحدة.
- التصور التفاعلي: يتيح التكامل المدمج مع Plotly و Jupyter Widgets إنشاء مخططات ولوحات معلومات معقدة للغاية (مثل Tableau) مباشرة في Jupyter Notebook دون تأخير ملحوظ في العرض.
- لا فقدان للسيطرة: على عكس المنصات السحابية مثل TradingView، تظل بياناتك وخوارزمياتك معك فقط. في الوقت نفسه، يكون أداء الحساب قابلاً للمقارنة بالمنصات الجاهزة، بل وغالباً ما يتجاوزها.
- تحضير البيانات: مجموعة أدوات ممتازة لتحليل السلاسل الزمنية وهندسة الميزات (Feature Engineering) لنماذج تعلم الآلة.
كيف يعمل؟ (مثال)

لنقل إننا نريد اختبار استراتيجية تقاطع المتوسط المتحرك المزدوج (DMAC) الكلاسيكية على البيتكوين (BTC).
في إطار عمل OOP الكلاسيكي، سيتعين عليك إنشاء فئة استراتيجية، ووصف منطق next() الذي يتم تفعيله عند كل شمعة، والتكرار عبر جميع الشموع. في VectorBT، كل شيء أكثر أناقة وأسرع بكثير:
import vectorbt as vbt
btc_price = vbt.YFData.download('BTC-USD', start='2019-01-01 UTC', end='2020-01-01 UTC').get('Close')
fast_ma = vbt.MA.run(btc_price, [10, 20], short_name='fast')
slow_ma = vbt.MA.run(btc_price, [30, 30], short_name='slow')
entries = fast_ma.ma_crossed_above(slow_ma)
exits = fast_ma.ma_crossed_below(slow_ma)
pf = vbt.Portfolio.from_signals(btc_price, entries, exits)
print(pf.total_return())
في هذا المثال، قمنا في لحظة واحدة باختبار عدة بدائل لاستراتيجية DMAC: المجموعات (10، 30) و(20، 30). ستكون النتيجة (في شكل عمود) هي العائد لكل خيار من المعلمات:
fast_window slow_window
10 30 0.848840
20 30 0.543411
Name: total_return, dtype: float64
هل تريد إضافة Ethereum و Solana وعشر عملات أخرى؟ فقط ادمج أسعارها في DataFrame واحد. هل تريد اختبار نطاقات زمنية مختلفة؟ استخدم وظيفة range_split. يسمح التمثيل الموجه بمضاعفة الأبعاد بشكل لا محدود تقريباً (طالما توفرت ذاكرة وصول عشوائي كافية).
VectorBT PRO

هناك أيضاً إصدار تجاري من المكتبة — VectorBT PRO ، والذي يضيف أدوات أكثر قوة. يتميز بالمعالجة المتوازية، وتحسين المحفظة المتقدم، والتعرف على أنماط الأسعار، وإسقاط الأحداث، وحساب التداول بالهامش وأوامر الحد، وأكثر من مائة مقياس آخر مهم للتداول الحقيقي.
لماذا تستخدم VectorBT؟
إذا كنت تحتاج فقط إلى "تشغيل" استراتيجية واحدة على أداة واحدة، فقد تكون الأطر القياسية كافية. ولكن إذا كان هدفك هو التحليل الاستكشافي، وإيجاد الأنماط الإحصائية (alpha)، واختبار الفرضيات على آلاف الأدوات في وقت واحد، فإن VectorBT سيكون اكتشافاً حقيقياً لك.
إنها أداة لعلماء البيانات تم نقلها إلى التداول. إنها تمنح ميزة تنافسية في المعلومات من خلال القدرة على التحقق من الأفكار بشكل أسرع بعشرات ومئات المرات مما يفعله المشاركون الآخرون في السوق باستخدام بايثون.
MarketMaker.cc Team
البحوث والاستراتيجيات الكمية