اختبار قواعد الاستثمار بنزاهة، دون أموال حقيقية
أداة صغيرة لاختبار قواعد استثمار بسيطة على بيانات سوق سابقة، بُنيت بحيث لا تستطيع الغش ولا إرسال أمر حقيقي.
الحاجة
تبدو اختبارات استراتيجيات الاستثمار على بيانات سابقة لامعة في الغالب، لأنها تستخدم، دون أن تقول ذلك، معلومات لم يكن أحد يملكها آنذاك.
الفكرة
بناء المختبر حول الفخ، لا حول الاستراتيجيات.
ما الذي بنيته
- القاعدة المحسوبة على سعر إغلاق يوم ما لا تُطبّق إلا على عائد اليوم التالي، وليس على اليوم نفسه أبدًا.
- كل تغيير في المركز يكلّف 0.05 % رسومًا.
- تُقارن كل قاعدة مع «الشراء في البداية وعدم فعل شيء»: الاستراتيجية التي تحقق 8 % بينما يحقق السوق 20 % قد خسرت قيمة.
- قفلا أمان: عنوان التداول مثبّت على بيئة التجربة، والشيفرة لا تستطيع إلا القراءة، فلا وسيلة لديها لإرسال أمر.
النتيجة
- 3وحدات Python
- 453سطرًا برمجيًا
- 11مؤشرًا يُحسب لكل اختبار
- 0أمر يمكنه إرساله، عن قصد
لا توجد اختبارات آلية بعد، ولا تشغيل بمفاتيح تداول تجريبي حقيقية يمكنني عرضه. إنها أداة لفهم آلية، لا لاتخاذ قرار استثماري.
بالصور
ما الذي تعلّمته
إذا جرّبت عددًا كافيًا من التركيبات على الماضي، فستبدو إحداها دائمًا كأنها نجحت. ومعرفة حدود الاختبار جزء من النتيجة.
التفاصيل التقنية التقنيات والبنية والقرارات، للقرّاء التقنيين
التقنيات المستخدمة
- Python
- Streamlit
- pandas
- NumPy
- requests
- Alpaca API (تداول تجريبي)
كيف يعمل
- الإشارات المحسوبة عند إغلاق اليوم D تُطبّق على عوائد اليوم D+1؛ وتكلفة 0.05 % لكل تغيير في المركز؛ ومقارنة منهجية مع استراتيجية الشراء والاحتفاظ.
- قاعدتان قابلتان للاختبار — تقاطع المتوسطات المتحركة، والاختراق فوق قمة سابقة — على أسعار يومية للأسهم الأمريكية تمتد من سنة إلى خمس سنوات.
- عنوان URL الأساسي لواجهة التداول مثبّت في الشيفرة على بيئة paper-api التجريبية من Alpaca (غير قابل للتعديل)؛ وعميل للقراءة فقط بلا وظيفة أوامر؛ والمفاتيح تُقرأ من متغيرات البيئة فقط.
- عند غياب البيانات (لا مفاتيح، أو 401/403، أو تجاوز حد الطلبات)، تعرض واجهة Streamlit السبب بدل رقم افتراضي.
- انحياز معروف: تُسعَّر نقاط الدخول عند الإغلاق الذي أنتج الإشارة لا عند الافتتاح التالي، فتشمل فجوة ما بين الجلستين.
ما لا يزال ناقصًا
- لا اختبارات آلية بعد
- ليست أداة استثمار