اختيار مكتبة backtesting هو في جوهره رهان على الصيانة. فالكود الذي يُسعّر استراتيجيتك يجب أن يبقى حيًّا عندما تغيّر إحدى المنصّات واجهة برمجة تطبيقاتها، أو عندما يكسر إصدار جديد من pandas أحد عمليات الاستيراد، أو عندما تكتشف خللًا في الساعة الثانية صباحًا. لذلك تبدأ هذه المراجعة بأقل الإشارات بريقًا وأكثرها حسمًا — هل المشروع تتم صيانته فعلًا؟ — ثم تنتقل بعد ذلك فقط إلى المعمارية والسرعة والمزايا.

كل رقم من أرقام GitHub أدناه جُلب حيًّا من واجهة GitHub API بتاريخ 2026-06-22، وجرى التحقّق من الادعاءات الأصعب عبر مقارنتها بالمصادر الأولية (مستودعات المشاريع، الوثائق الرسمية) والتحقّق منها بأسلوب تنازعي. وحيثما كان الرقم أفضل حالة يبلّغ عنها المُورّد بنفسه، فقد جرى التنويه إلى ذلك.

فحص واقع الصيانة

إليك المنظومة بأكملها مرتّبة بحسب نجوم GitHub، ومُلوّنة بحسب ما إذا كان العمل عليها جاريًا فعلًا:

أدوات الـ backtesting في بايثون مرتّبة بحسب نجوم GitHub ومُلوّنة بحسب حالة الصيانة (2026-06-22): freqtrade و NautilusTrader و LEAN تتصدّر المجموعة النشطة الصيانة، بينما Backtrader خاملة، و Zipline و PyAlgoTrade و QSTrader مهجورة.

الخلاصة المزعجة: اثنان من أكثر الأسماء حصدًا للنجوم وحضورًا في المدوّنات هما عمليًّا من تراث الماضي.

في المقابل، المشاريع التي تطرح إصدارات حقيقية في 2026 هي Freqtrade (51.7k ⭐) و NautilusTrader (24.1k ⭐) و LEAN (20k ⭐) و backtesting.py (8.5k ⭐) و Jesse (8.1k ⭐) و vectorbt (8.0k ⭐) و PyBroker (3.4k ⭐) و bt (2.9k ⭐) و Lumibot (1.7k ⭐). النجوم تقيس التاريخ؛ أما تواريخ الـ commit فتقيس ما إذا كان أحدٌ ما سيصلح خللك.

معماريتان: المُوجّهة بالأحداث مقابل المُتّجهة

التفرّع الآخر الذي يحسم كل شيء هو كيف يُشغّل المحرّك استراتيجيتك.

لا واحدة منهما تفوز تمامًا. أنت تبحث بالسريعة وتتحقّق بالواقعية. والمزيد عن هذه المقايضة أدناه.

القادة النشطة الصيانة

NautilusTrader — بجودة الإنتاج، مُوجّه بالأحداث، نواة Rust

NautilusTrader (24.1k ⭐، LGPL-3.0) يصف نفسه بأنه "محرّك تداول أصيل بلغة Rust بجودة الإنتاج، ذو معمارية حتمية مُوجّهة بالأحداث" — والكود مكتوب بنسبة ~70% بلغة Rust مع ربط لبايثون. يُجري الـ backtesting عبر عدة منصّات وأدوات مالية بدقّة النانوثانية باستخدام بيانات التيك ودفتر الأوامر، ويأتي بنحو ~20 تكاملًا مباشرًا (Binance و Coinbase و Kraken و OKX و Bybit و Interactive Brokers و Betfair وغيرها). ووعده الأبرز: كود استراتيجية مطابق من البحث إلى النشر المباشر. هذا هو الخيار الأقوى لجمهور يجمع بين العملات المشفّرة والأسهم ويحتاج إلى واقعية على مستوى التيك ومسار حقيقي إلى الإنتاج. والثمن: منحنى تعلّم أكثر انحدارًا ومعمارية أثقل من المكتبات البسيطة.

vectorbt — بحث مُتّجه على نطاق واسع

vectorbt (8.0k ⭐، Apache-2.0 + Commons Clause) هو المحرّك المُتّجه. وجاء في ملف README الخاص به: "بدلًا من الدوران عبر الشموع استراتيجيةً تلو الأخرى، يحزم آلاف الإعدادات في مصفوفات NumPy، ويسرّع المسار الساخن بواسطة Numba و Rust، ويشغّلها كلها دفعة واحدة، محوّلًا ساعات من البحث الشبكي إلى ثوانٍ." واختبار 10,000 توليفة من نوافذ SMA المزدوجة في ثوانٍ هو المثال النموذجي؛ وتفيد جهات خارجية بتسريعات تبلغ ~1000× مقارنةً بـ Backtrader في بعض أحمال العمل (أرقام من المُورّد/جهات خارجية، لا قياس مرجعي مستقل). والمسح المعلَمي أدناه — 25 عملية backtest عبر نوافذ SMA — هو بالضبط ما يجعله vectorbt عملية صناعية:

خريطة حرارية لمسح معلَمي: العائد الإجمالي عبر 25 توليفة من نوافذ SMA السريعة/البطيئة، من −5% إلى +54%. هذا البحث الشبكي هو التحسين المعلَمي الكتلي الذي بُني vectorbt ليشغّله في ثوانٍ.

مُلاحظتان جديرتان بالمعرفة: Commons Clause يقيّد إعادة البيع التجاري (وهو أمر مهم إن كنت تبني منتجًا)، كما أن vectorbt PRO المصقول والمدفوع منتج منفصل عن البناء مفتوح المصدر. و vectorbt مخصّص للـ backtest فقط — لا تداول مباشر.

backtesting.py — المفضّل الخفيف

backtesting.py (8.5k ⭐، AGPL-3.0) هو ما تلجأ إليه حين تريد backtest نظيفًا وسريعًا وسهل القراءة دون مراسم إطار عمل كامل. عرّف init() و next()، شغّل، واحصل على كائن إحصاءات ومخطّط Bokeh تفاعلي. ترخيص AGPL-3.0 مهم: فهو copyleft قوي مع أحكام تتعلّق بالاستخدام عبر الشبكة، ما يجعله محرجًا داخل SaaS مغلق المصدر. وهو مخصّص للـ backtest فقط. منحنى رأس المال في هذه الصفحة (الغلاف) والإحصاءات أدناه ناتجة عن تشغيل حقيقي لـ backtesting.py — تقاطع SMA(20/50) بسيط على سلسلة اصطناعية:

إحصاءات أداء backtesting.py لعيّنة تقاطع SMA(20/50): عائد +1.6% مقابل +46% للشراء والاحتفاظ، نسبة شارب 0.05، أقصى تراجع −38%، 4 صفقات. نتيجة صادقة — التقاطع الساذج كان أداؤه دون الاحتفاظ.

لاحظ النتيجة الصادقة: حقّق التقاطع الساذج +1.6% مقابل +46% للشراء والاحتفاظ، مع تراجع قاسٍ بلغ −38%. هذه هي النتيجة الأولى الطبيعية لأي backtest حقيقي، وهي بالضبط السبب الذي يدفعك إلى مسح المعاملات والتحقّق من الفرضيات قبل أن تصدّق أي شيء.

Freqtrade — الخيار الافتراضي للعملات المشفّرة

Freqtrade (51.7k ⭐، GPL-3.0) هو المشروع الأكثر حصدًا للنجوم في هذه القائمة، وروبوت تداول العملات المشفّرة مفتوح المصدر بحكم الأمر الواقع. يقوم بالـ backtesting، والتداول التجريبي (الورقي)، والتداول المباشر على المنصّات الكبرى، ويُتحكّم به عبر Telegram أو واجهة ويب مدمجة، ويطرح إصدارات شهرية. وهو مخصّص للعملات المشفّرة فقط — لا أسهم — لكنه للعملات المشفّرة هو المعيار المُصان والمدعوم من المجتمع.

Lumibot و bt و PyBroker و Jesse و LEAN و zipline-reloaded

المقبرة — تجنّبها للمشاريع الجديدة

هذه لا تزال تتصدّر نتائج البحث والمدوّنات القديمة، لكن لا تبدأ من هنا في 2026:

المعمارية تهمّ: مقايضة الواقعية

الانقسام بين المُتّجهة والمُوجّهة بالأحداث ليس انقسامًا نظريًّا. سرعة vectorbt تأتي من افتراض أن كل عملية تنفيذ تحدث بسعر الشمعة التالية دون أي انزلاق. وبالنسبة لفلتر زخم عبر 500 أصل، فهذا مقبول. أما بالنسبة لاستراتيجية تكمن ميزتها في التنفيذ داخل الشمعة — وضع أوامر الإيقاف، التنفيذ الجزئي، الموضع في الطابور — فإن backtest مُتّجهًا سيكذب عليك بهدوء، وستحتاج إلى محرّك مُوجّه بالأحداث (NautilusTrader أو Backtrader) أو تشغيل تجريبي مباشر (Freqtrade أو Lumibot) للحصول على رقم صادق. سير العمل الاحترافي يستخدم كليهما: vectorbt لاستكشاف فضاء المعاملات، ومحرّك مُوجّه بالأحداث للتحقّق من الناجين.

الترخيص — اقرأ هذا قبل أن تبني منتجًا

مكتبات الـ backtesting ثقيلة بالتراخيص على نحو غير معتاد، وعدد منها copyleft:

الترخيص المكتبات ما يجب معرفته
AGPL-3.0 backtesting.py أقوى copyleft؛ الاستخدام عبر الشبكة/SaaS قد يستوجب الإفصاح عن المصدر
Apache-2.0 + Commons Clause vectorbt (بناء OSS) متساهل إلا أنه لا يمكنك بيعه كمنتج
GPL-3.0 Backtrader، Freqtrade، Lumibot copyleft؛ توزيع مشتقّ يعني فتح مصدره
LGPL-3.0 NautilusTrader copyleft أضعف؛ الربط مقبول عمومًا
MIT bt، Jesse، QSTrader، fastquant متساهل — افعل تقريبًا أي شيء
Apache-2.0 LEAN، zipline-reloaded، finmarketpy متساهل، مع منح براءات اختراع

إن كنت تبني شيئًا تجاريًّا ومغلق المصدر، فإن أدوات MIT/Apache هي الخيارات الخالية من الاحتكاك؛ أما AGPL و Commons Clause فيحتاجان إلى قراءة محامٍ.

المقارنة في لمحة

الأداة ⭐ النجوم المعمارية الترخيص الصيانة التداول المباشر الأنسب لـ
NautilusTrader 24.1k مُوجّه بالأحداث (Rust) LGPL-3.0 🟢 نشط نعم الإنتاج، واقعية التيك/دفتر الأوامر
vectorbt 8.0k مُتّجه Apache+CC 🟢 نشط لا البحث المعلَمي الكتلي
backtesting.py 8.5k مُوجّه بالأحداث AGPL-3.0 🟢 نشط لا عمليات backtest منفردة سريعة ونظيفة
Freqtrade 51.7k مُوجّه بالأحداث GPL-3.0 🟢 نشط نعم (عملات مشفّرة) روبوت عملات مشفّرة مُصان
Backtrader 22.1k مُوجّه بالأحداث GPL-3.0 🟡 خامل نعم المشاريع القديمة (انتبه للركود)
Lumibot 1.7k مُوجّه بالأحداث GPL-3.0 🟢 نشط نعم متعدّد الأصول، backtest/مباشر موحّد
LEAN 20k مُوجّه بالأحداث Apache-2.0 🟢 نشط نعم منصّة ثقيلة متعدّدة الأصول
bt 2.9k مُتّجه/أوزان MIT 🟢 نشط لا استراتيجيات توزيع المحفظة
PyBroker 3.4k مُوجّه بالأحداث OSS 🟢 نشط لا استراتيجيات تعلّم الآلة + المسير الأمامي
zipline-reloaded 1.8k مُوجّه بالأحداث Apache-2.0 🟢 نشط لا الأوساط الأكاديمية، كتاب ML4T
Zipline (الأصلي) 19.9k مُوجّه بالأحداث Apache-2.0 🔴 مهجور لا شيء — استخدم reloaded
PyAlgoTrade 4.7k مُوجّه بالأحداث 🔴 مؤرشف لا شيء جديد

النجوم والحالات لقطات بتاريخ 2026-06-22 وستتغيّر؛ الصيانة هي البُعد الأكثر تقلّبًا، لذا أعد فحص نشاط الـ commit قبل أن تلتزم.

كيف تختار، في نفَس واحد

القاعدة الوحيدة التي تنجو في كل نظام سوقي: افحص تاريخ آخر commit قبل أن تفحص عدد النجوم. فمكتبة بـ 22k نجمة لم تطرح إصدارًا منذ 2023 هي طريق إلى الإنتاج أبطأ من أخرى بـ 8k نجمة أصدرت الأسبوع الماضي.


المنهجية: جُلبت مقاييس GitHub حيًّا من واجهة GitHub API بتاريخ 2026-06-22؛ وجرى التحقّق من ادعاءات المعمارية والصيانة والترخيص والتداول المباشر عبر مقارنتها بمستودعات المشاريع والوثائق الرسمية والتحقّق منها بأسلوب تنازعي، بالاستناد إلى كتالوجات منسّقة (PyTrade.org و awesome-systematic-trading) وقائمة بدائل kernc. منحنى رأس المال والإحصاءات والخريطة الحرارية المعلَمية هي ناتج حقيقي من تشغيل backtesting.py على سلسلة أسعار اصطناعية قابلة لإعادة الإنتاج — لغرض التوضيح، لا توصية باستراتيجية. أرقام الأداء المنسوبة إلى المُورّدين (تسريعات vectorbt، ودقّة النانوثانية لـ NautilusTrader) مُبلَّغ عنها ذاتيًّا، لا قياسات مرجعية مستقلة.