High-Performance Backtest Engines
How to build a backtest engine that runs hundreds of times faster without changing a single PnL number — data layout, caching, adaptive resolution, and architecture, from first speedups to production internals.
- 01
Jul 1, 2026 #algotradingسلم سرعة محرك الاختبار الرجعي: 298 ضعفاً على وحدة معالجة كمبيوتر محمول، بنفس PnL حتى آخر صفقة
خمسة تطبيقات لنفس مسح 80 توليفة من المعلمات، جميعها مُتحقق من أنها تُنتج نفس PnL تماماً: pandas rolling.apply يستغرق 69.9 ثانية، numpy 3.1، numba 2.0، numba المتوازي 0.23 — تسريع مقيس بمقدار 298 ضعفاً على Apple M2 Max بدون أي تغيير في العتاد، وما زال ~13 ضعفاً أسرع من خط أساس مُتّجه (vectorized) كفؤ. ماذا تشتري كل درجة، ولماذا ليست وحدة معالجة الرسوميات (GPU) هي القطعة المفقودة، وأين يكمن الاختناق الحقيقي في البحث الجماعي عن المعلمات.
- 02
Mar 16, 2026 #algotradingذاكرة التخزين المؤقت المجمعة لـ Parquet: كيف تُسرّع الاختبارات الرجعية متعددة الأُطُر الزمنية بمئات المرات
كيفية حساب الأُطُر الزمنية والمؤشرات مسبقاً من شموع الدقيقة، وحفظها في parquet، واستخدامها لاختبار الاستراتيجيات بشكل مكثف دون حسابات متكررة.
- 03
Mar 17, 2026 #algotradingالحفر التكيفي: اختبار رجعي بدقة متغيرة من الدقائق إلى الصفقات الخام
كيف تُسرّع دقة البيانات التكيفية الاختبارات الرجعية وتوفر مساحة التخزين: الحفر من 1m إلى 1s و100ms والصفقات الخام فقط حيث تحرك السعر بشكل كبير أو ارتفع الحجم، وليس عبر السلسلة التاريخية بأكملها.
- 04
Jul 2, 2026 #algotradingضريبة IPC: ضع محرك الاختبار الرجعي خلف مقبس وتخسر 13% — لا يكاد أي منها بسبب المقبس
نقلنا نواة اختبار رجعي بلغة numba سطراً بسطر إلى Rust واستدعيناها عبر حدود العملية بأربع طرق مختلفة، مع بوابة تكافؤ تُؤكد تطابق PnL حتى آخر صفقة. شحن سلسلة الأسعار الكاملة (1.2 ميجابايت) عبر مقبس Unix يكلف ~2 مللي ثانية — حوالي 0.1% من المهمة. ترميز نفس الحمولة بصيغة JSON يكلف 1348x أكثر من البايتات الخام، والاستدعاءات الثرثارة لكل توليفة تُعيد شحن البيانات 80 مرة، ونمط استدعاء لكل شمعة سيدفع 2.1 ثانية من IPC خالص على مهمة مدتها 2.0 ثانية. الحد رخيص؛ الضريبة في كيفية عبوره.