محاكاة مونت كارلو للاستراتيجية — المخاطرة التي يُخفيها الاختبار الخلفي الواحد

آخر مراجعة: · محتوى دائم الخضرة
تحذير المخاطر · YMYL هذا المقال لأغراض تعليمية فحسب وليس نصيحة استثمارية. ينطوي التداول في سوق الفوركس على مخاطر عالية لخسارة رأس المال — تشير بيانات ESMA إلى أن 74–89% من حسابات التجزئة تخسر أموالها.

حين أرسل إليّ أحد المتداولين نتيجة اختباره الخلفي فخوراً بها — نسبة فوز 55%، متوسط ربح 100 يورو، متوسط خسارة 80 يورو، وعلى الورق ما يقارب 3,800 يورو في السنة — كنتُ أعرف أن القصة ستسير في اتجاه معاكس. فتح حساباً حقيقياً بمخاطرة 5% من رأس المال في كل صفقة، وبعد ستة أشهر أفرغ الحساب. سألني أين الخطأ. الخطأ لم يكن في الاستراتيجية؛ كان في الاعتقاد بأن اختباراً خلفياً واحداً يعني حقيقة واحدة. لو أجرى محاكاة مونت كارلو لتلك الاستراتيجية لاكتشف أن نفس الميزة، مع ذلك الحجم من المخاطرة، تحمل احتمالاً يبلغ 25% لتصفير الحساب. كتبتُ هذا المقال بسبب تلك المحادثة.

ما هي محاكاة مونت كارلو للاستراتيجية التداولية؟

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

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

ما الأسئلة التي تُجيب عنها مونت كارلو فعلاً؟

المحاكاة تمنحك ثلاثة أشياء لن يُخبرك بها اختبار خلفي واحد. الأول هو التراجع الأقصى (drawdown) الواقعي عند مستوى ثقة 95% — أي العمق الذي لا تتجاوزه في 95 من كل 100 محاكاة. الثاني هو احتمال خسارة جزء جوهري من الحساب، كالانخفاض إلى ما دون نصف رأس المال. الثالث هو النطاق الفعلي للنتائج السنوية المحتملة حين تظل الميزة ثابتة.

في سيناريو توضيحي افتراضي: استراتيجية بنسبة فوز 55%، متوسط ربح 100 يورو، متوسط خسارة 80 يورو، و200 صفقة في السنة، تبلغ قيمتها المتوقعة في باب المفاهيم التقنية نحو 19 يورو للصفقة — أي 3,800 يورو على الورق. محاكاة بألف تشغيل أنتجت وسيطاً قريباً من 3,750 يورو. أسوأ 5% من التشغيلات انتهت بنحو 500 يورو ربحاً، وأسوأ 1% بخسارة 800 يورو، وأفضل 5% بلغت 7,500 يورو. نفس الميزة — فجوة خمسة أضعاف بين السيناريوهات.

كيف تُجري المحاكاة في Excel

النسخة بلا وحدات ماكرو تكفي لفهم استراتيجيتك بصدق. في الخلايا A1 إلى A5 تضع المعاملات: نسبة الفوز 0.55، متوسط الربح 100، متوسط الخسارة ‑80، عدد الصفقات 200، ورأس المال الابتدائي 10,000. في الخلية B1 تكتب =IF(RAND()<A1, A2, A3) — تُعيد دالة RAND في Excel رقماً بين الصفر والواحد، وإن وقع دون نسبة الفوز حصلت على ربح، وإلا على خسارة.

في الخلية C1 تضيف رأس المال الابتدائي إلى نتيجة B1 لتُشكّل النقطة الأولى في منحنى الأسهم. B2 تستخدم نفس الصيغة، وC2 تضيف قيمة C1 إلى B2. اسحب العمودين إلى الصف 200 لتبني تسلسلاً سنوياً كاملاً.

بنسخ العمودين إلى الجانب ألف مرة تحصل على ألف منحنى أسهم مستقل. من القيم النهائية تقرأ =PERCENTILE.INC(النطاق, 0.5) للوسيط، ثم 0.05 و0.01 لأسوأ 5% و1%. الضغط على F9 يُعيد حساب كل القيم العشوائية، فكل ضغطة تمنحك دراسة جديدة بألف تشغيل. هذا يكفي فعلاً.

كيف تفعل الشيء ذاته في Python بتقنية Bootstrap

Python يمنحك شيئين لا يوفرهما Excel. الأول هو السرعة — آلاف التشغيلات تأخذ ثوانٍ. الثاني، والأهم، هو إمكانية Bootstrap: السحب من قائمة صفقاتك التاريخية الحقيقية لا من معاملات مفترضة.

تستورد NumPy، تحمّل 100 صفقة أو أكثر من يوميتك، وتكتب new_sequence = np.random.choice(history, size=200, replace=True). الدالة np.cumsum تحوّل قائمة أرقام P/L الفردية إلى منحنى أسهم، وحلقة تكرار حولها تُعطيك ألف تشغيل مستقل. تقرأ النسب المئوية بـnp.percentile، وتستخدم Matplotlib لرسم مخطط السباغيتي — ألف منحنى متراكب مع إبراز الوسيط ونطاق النسبتين 5 و95.

Bootstrap يحتفظ بأذناب التوزيع الحقيقية — الخسائر الكبيرة، التحركات المتمركزة، الأسبوع الذي قفز فيه السعر 200 نقطة. الافتراضات المعيارية لا تستطيع ذلك لأنها لا تفترض أن صفقاتك تتوزع التوزيع الذي تتوزعه فعلاً.

«نسب المخاطرة إلى العائد تكاد لا تعني شيئاً بدون تضمين حجم المركز في المعادلة. من خلال حجم المركز، يمكنك تحقيق أي هدف تريده تقريباً.» — Van K. Tharp، Trade Your Way to Financial Freedom، 2007

الحدود الصادقة — ما لن تفعله مونت كارلو

المحاكاة المعيارية تقوم على افتراضين: استقلالية الصفقات وثبات توزيع النتائج. في الأسواق الحقيقية ينكسر الاثنان في آنٍ واحد. الخسائر تتمركز — حين يتبدل نظام السوق، تسير صفقات متعاقبة في الاتجاه ذاته، وهذا لا يستطيع نموذجٌ يسحب عينات مستقلة استنساخه. لذلك كثيراً ما يبدو التراجع الأقصى (drawdown) الأشد في التداول الحقيقي أسوأ من النسبة 1% في مونت كارلو، لا أفضل.

المشكلة الثانية أن المحاكاة تستخدم نفس البيانات التي أعطيتها إياها. إن كانت صفقاتك المئة تغطي صعوداً فقط في EUR/USD، فلن تُخبرك مونت كارلو شيئاً عن تصرف الاستراتيجية في تعزيز طويل أو بعد حركة 200 نقطة مفاجئة. لذا يُفيد الجمع بين المحاكاة وتحليل walk-forward الذي يختبر الاستراتيجية عبر نوافذ متداحرة ويكتشف تآكل الميزة.

أعمق التراجعات في التداول الحقيقي تحفر أعمق من النسبة 1% في مونت كارلو النظيفة. عامل المحاكاة كأرضية احتمالية لا كسقف، وادرسها إلى جانب مواد إدارة المخاطر في قسم إدارة المخاطر للسياق الكامل. تحتفظ ESMA وتشريعات الاتحاد الأوروبي بإلزام الوسطاء المرخصين بالإفصاح عن نسبة العملاء الخاسرين، التي تتراوح غالباً بين 74 و89%، وهي حقيقة السوق لا مجرد تحذير. للمتداولين في منطقة الخليج والشرق الأوسط، تُتيح جهات تنظيمية كـSCA (الإمارات) وهيئة السوق المالية CMA (السعودية) وQFMA (قطر) وCBB (البحرين) أطر حماية تستحق المراجعة عند اختيار الوسيط. هذا المقال تعليمي بحت وليس نصيحة استثمارية.

ماذا تفعل الآن

  1. اجمع قائمة بما لا يقل عن 100 صفقة مغلقة من يوميتك أو من تصدير منصتك. ما دون المئة يُبقي الإحصاءات مضطربة جداً حتى تستطيع مونت كارلو أن تقول شيئاً مفيداً عن أذناب التوزيع. إن كانت صفقاتك أقل، تابع التداول ستة إلى اثني عشر أسبوعاً إضافية وعُد إلى هذا التمرين بعينة أوسع — النتيجة تستحق الانتظار.
  2. افتح ورقة Excel فارغة وابنِ النسخة المعيارية الموضحة أعلاه. أدخل نسبة فوزك الفعلية، ومتوسط ربحك، ومتوسط خسارتك، ورأس مالك، ثم انسخ العمودين ألف مرة، واضغط F9، وادرس انتشار القيم النهائية. تلك الساعة من العمل تكشف كم يتسع النطاق الفعلي وراء "عامك المتوسط".
  3. اقرأ النسبة 5% لأقصى تراجع (drawdown) من تلك الألف محاكاة. إن أشارت إلى تراجع 30%، بينما تقف قدرتك النفسية على التحمل عند 15%، فالمشكلة ليست في الاستراتيجية بل في حجم المركز — قلّص المخاطرة في كل صفقة إلى النصف وأعد الحساب حتى تقع الأرضية الاحتمالية ضمن حدود ألمك المقبول.
  4. بعد عام كامل من التداول الحقيقي، أجرِ المحاكاة مرة ثانية بالتاريخ الجديد وقارنها بنتيجة العام الماضي. إن انزلق الوسيط واتسعت الأذناب، فميزتك تتآكل — هذه هي اللحظة المناسبة للتساؤل عن صلاحية الاستراتيجية، لا مجرد كيفية المضيّ فيها.
Jarosław Wasiński
نبذة عن المؤلف

Jarosław Wasiński

رئيس تحرير MyBank.pl · محلل مالي وأسواق

محلل مستقل وممارس متمرس يمتلك أكثر من 20 عاماً من الخبرة في القطاع المالي. مؤسس ورئيس تحرير بوابة MyBank.pl العاملة منذ عام 2004. يُجري التحليل الأساسي لأسواق العملات الأجنبية والأسواق الكلية منذ عام 2007.

المصادر والمراجع

  1. Bank for International Settlements Minimum capital requirements for market risk (d457) · Bazylejski standard pokazujący, jak instytucje liczą ryzyko rynkowe za pomocą expected shortfall i historycznej symulacji — analog Monte Carlo dla portfela. www.bis.org ↗
  2. Van Tharp Institute About Van K. Tharp · Strona biograficzna potwierdzająca autorstwo książki „Trade Your Way to Financial Freedom" (McGraw-Hill) i jego pracę nad position sizingiem oraz symulacją Monte Carlo dla traderów detalicznych. www.vantharp.com ↗
  3. NumPy Developers numpy.random.choice — Random sampling · Oficjalna dokumentacja funkcji losowania z powtórzeniami; podstawowe narzędzie do bootstrap resampling listy transakcji w Pythonie. numpy.org ↗
  4. Python Software Foundation random — Generate pseudo-random numbers · Oficjalna dokumentacja biblioteki standardowej Pythona z funkcjami random.choices i random.sample, używanymi do prostych symulacji Monte Carlo bez NumPy. docs.python.org ↗

الأسئلة الشائعة

ما هي محاكاة مونت كارلو للاستراتيجية التداولية؟

مونت كارلو أسلوب احتمالي سُمّي على اسم كازينو موناكو. في التداول تأخذ قائمة صفقاتك التاريخية أو معاملات استراتيجيتك — نسبة الفوز، متوسط الربح، متوسط الخسارة — وبدلاً من النظر في منحنى الأسهم الوحيد الذي أنتجته البيانات التاريخية، تولّد ألف تسلسل جديد بترتيب عشوائي. كل تسلسل يحمل نفس الإحصاءات لكن بترتيب مختلف للأرباح والخسائر، فيرسم صورة مختلفة للحساب. لماذا يستحق ذلك؟: الاختبار الخلفي الواحد هو تحقّق واحد فقط. التباين من حوله قد يكون هائلاً. الاستراتيجية ذاتها بقيمة متوقعة نحو 19 يورو للصفقة و200 صفقة في السنة قد تُعطي وسيطاً قريباً من 3,750 يورو، لكن أسوأ 5% ينزل إلى 500 يورو وأفضل 5% يرتفع إلى 7,500 يورو. النطاق واسع حتى حين تبقى الميزة ثابتة. المفهوم الخاطئ الأكثر شيوعاً: «الاستراتيجية أعطت 5,000 يورو العام الماضي، فينبغي أن تعطي قريباً منها هذا العام». مونت كارلو يُظهر أن النطاق الواقعي مع ميزة ثابتة قد يمتد من 1,000 إلى 10,000 يورو — وليس في ذلك شيء شاذ؛ هذا مجرد تباين إحصائي.

كيف تُجري محاكاة مونت كارلو في Excel؟

النسخة الأبسط لا تحتاج وحدات ماكرو ولا VBA. في الخلايا A1 إلى A5 تضع المعاملات: نسبة الفوز (مثلاً 0.55)، متوسط الربح (مثلاً 100)، متوسط الخسارة (مثلاً ‑80)، عدد الصفقات في التسلسل (مثلاً 200)، ورأس المال الابتدائي (مثلاً 10,000). في B1 تكتب =IF(RAND()<A1, A2, A3) — تُعيد RAND رقماً بين الصفر والواحد، وإن وقع دون نسبة الفوز نلت ربحاً، وإلا خسارة. في C1 تُضيف رأس المال الابتدائي إلى نتيجة B1. B2 وC2 يتبعان النمط ذاته، مع إشارة C2 إلى C1. اسحب العمودين إلى الصف 200 لتبني تسلسلاً سنوياً كاملاً. انسخ العمودين ألف مرة جانبياً تحصل على ألف منحنى أسهم مستقل. من القيم النهائية تحسب =PERCENTILE.INC(النطاق, 0.5) للوسيط، و0.05 و0.01 لأسوأ 5% و1%. كل ضغطة على F9 تُعيد حساب القيم العشوائية وتمنحك دراسة جديدة بألف تشغيل. Excel يتعامل مع هذا بيُسر، ويكفي تماماً لفهم استراتيجيتك بصدق.

كيف تُنفّذ مونت كارلو في Python؟

Python يؤدي العمل ذاته بشكل أسرع ويتيح Bootstrap: السحب من تاريخ صفقاتك الحقيقية لا من معاملات مفترضة. تستورد NumPy، وتُعلن معاملات الاستراتيجية، وتكتب دالة تبني تسلسل نتائج واحداً — مصفوفة عشوائية من القيم بين الصفر والواحد تُقارن بنسبة الفوز تُعطي متجهاً من الأصفار والآحاد، وnp.where تحوّله إلى أرباح وخسائر متوسطة. np.cumsum تحوّل قائمة أرقام P/L الفردية إلى منحنى أسهم. تُشغّل الدالة ألف مرة في حلقة تكرار، تجمع القيم النهائية، وتحسب النسب المئوية بـnp.percentile. إن كانت لديك قائمة 100 صفقة أو أكثر، استخدم np.random.choice(history, size=200, replace=True) للـBootstrap — سحب تسلسل 200 صفقة جديد مع الإحلال من تاريخك الخاص، مما يحتفظ بأذناب التوزيع الحقيقية التي لا تستطيع الافتراضات المعيارية استنساخها. مكتبة Matplotlib تُتيح رسم مخطط السباغيتي — ألف منحنى متراكب مع إبراز الوسيط ونطاق النسبتين 5 إلى 95 — صورة واحدة تقول عن مخاطر الاستراتيجية أكثر مما تقوله عشر جداول.

ما حدود محاكاة مونت كارلو في التداول؟

مونت كارلو ليست عرّافة وينبغي قول ذلك صراحة. الافتراض الأساسي للمحاكاة المعيارية هو استقلالية الصفقات وثبات توزيع النتائج. في الأسواق الحقيقية ينكسر الاثنان في آنٍ واحد. الخسائر تتمركز — حين يتبدل نظام السوق، تتحرك صفقات متعاقبة في الاتجاه ذاته، وهذا ما لا يستطيع نموذج يسحب عينات مستقلة استنساخه. لذلك كثيراً ما يبدو التراجع الأقصى في التداول الحقيقي أسوأ من النسبة 1% في مونت كارلو. المشكلة الثانية: المحاكاة تستخدم الإحصاءات ذاتها التي استخلصتها من البيانات التاريخية. إن كانت بياناتك تغطي صعوداً فقط في EUR/USD، فلن تُخبرك مونت كارلو شيئاً عن تصرف الاستراتيجية في تعزيز طويل. النتيجة العملية: عامل مخرج مونت كارلو كأرضية احتمالية لا كسقف. إن أشارت أسوأ 5% إلى تراجع 30%، افترض أن التداول الحقيقي قد يحفر أعمق. حدّد حجم مراكزك وفق تلك الأرضية لا وفق الوسيط — هكذا لن يُطيح بك انتكاس حقيقي.

تعمق أكثر · الدليل الشامل