بررسی سیستم مدیریت پول لبوشر از لحاظ آماری

بررسی سیستم مدیریت پول لبوشر از لحاظ آماری

الکساندر دوبوویک

سه نوع دورغ داریم: دروغ معمولی، دروغ بزرگ، و آمار!

مقدمه

در این چند هفته وقتی در حال جستجو در اعماق اینترنت بودم، به یک نوع سیستم مدیریت پول برخورد کردم که قبلاً هرگز آن را جایی ندیده بودم. که به آن لبوشر (Labouchere)، یا سیستم ابطال (Cancellation system) می‌گویند. توضیحات انگلیسی مربوط به این سیستم را می‌توانید از این لینک دریافت کنید. این سیستم تلفیقی از مارتینگل است چراکه شما باید سرمایه (=شرط‌بندی) خود را بعد از باخت افزایش دهید، و پس از بُرد، آن را کم کنید. هرچند، این نسخه، ریسک و سختی کمتری دارد زیرا سرمایه‌ی شما دو برابر نمی‌شود، اما در عوض به یک مقدار معین باید افزایش داشته باشد.

در ادامه چند مطلب در این مورد را مشاهده می‌کنید که در مورد خصوصیات این سیستم می‌گویند و مرا بسیار به‌وجد آوردند:

  • “دقت داشته باشید که حجم تریدهای سوددِه باید از ۳۳ – ۴۰ درصد فراتر رود تا این سیستم به‌خوبی کار کند و شما برنده باشد.” – این نقل‌قول، بسیار قوی و معتبر است اما واضح نیست که چرا درصد اولیه اینقدر زیاد است، ۳۳ – ۴۰ درصد!
  • “در ذهن داشته باشید که این روش را می‌توان یک برنامه‌ی کلاه‌برداری از سوی یک قمارخانه دانست.” – واقعاً؟ اما شاید این روش واقعاً جواب دهد؟!
  • “اما اصول در این روش همیشه یکسان‌اند – ۳۳ درصد احتمال برنده شدن در برابر ۶۶ درصد احتمال باخت. بنابراین اگر می‌خواهید این سیستم مدیریت پول را در ترید واقعی در فارکس به‌کار گیرید، به سیستمی[۱] نیاز دارید که حداقل ۵۰ درصد به شما شانس برنده شدن بدهد و فاکتور سود آن بزرگتر یا مساوی با ۱ باشد”.

در واقع این مقاله اذعان دارد که شما به یک سیستم (استراتژی) ترید احتیاج دارید که در آن احتمال برد برابر با احتمال باخت باشد یعنی ۵۰ درصد (یا حداقل بیشتر از ۳۳ درصد). اگر چنین سیستمی دارید روش لبوشر به‌راحتی شما را به سود می‌رساند. بنابراین، آیا باید واقعاً دنبال یک سیستمی بگردیم که [حداقل از جنبه‌ی] ریاضیات انتظارات مثبت ایجاد کند؟ چراکه روش‌هایی هم وجود دارند که توقعات را به مثبت تبدیل کنیم. بعد از همه‌ی اینها اینکه، توسعه‌ی یک سیستم ترید با ۴۷ درصد احتمال برد (سود)، کار سختی نیست…

بیایید ببینیم چگونه سیستم لبوشر شرط‌بندی را تغییر می‌دهد.

به‌صورت قراردادی، حداقل شرط را برابر با ۱ فرض می‌کنیم. اگر برنده شویم، حجم شرط‌بندی ثابت می‌ماند، درحالیکه سرمایه‌ی ما کم‌کم افزایش پیدا می‌کند.

اگر ببازیم، حجم شرط‌بندی ما ۱ واحد افزایش پیدا می‌کند و می‌شود ۲ و حجم باخته را به این خط اضافه می‌کنیم:

مدیریت پول لبوشر

در این نقطه، اگر برنده شویم، باید ۲ را به خط اضافه کنیم:

سپس این دو عدد را خط می‌زنیم، زیرا مدیریت ما برای برگرداندن سرمایه‌ی از دست رفته است (به بیان دیگر، سرمایه‌ی خود را ۱ واحد در یک سری دارای دو شرط‌بندی، افزایش دادیم).

اکنون بیایید یک سری طولانی‌تر از باخت را درنظر بگیریم.

شرط می‌بندیم ۲. باخت:

شرط می‌بندیم ۳. باخت:

شرط می‌بندیم ۴. باخت:

شرط می‌بندیم ۵. باخت:

شرط می‌بندیم ۶. و باز هم باخت:

شرط می‌بندیم ۷. و بالاخره برنده می‌شویم:

بنابراین، “۱-“، “۶-” و “۷+” را خط می‌زنیم زیرا شرط برنده‌ی ما (۷+)، دو شرط باخت دیگر را جبران می‌کند. شرط بعدی مجموع اولین و آخرین اعداد باقی‌مانده در خط است [=یعنی ۲- و ۵-]. که باز می‌شود ۷+. اگر برنده شویم:

“۲-“، “۵-” و “۷+” را خط می‌زنیم. حجم شرط بعدی ما مجدد مجموع اولین و آخرین رقم باقی‌مانده در خط است. درست است، مجدد ۷ را داریم (برخی از طرفداران این روش پیشنهاد می‌کنند که ۱ را به هر شرط اضافه کنیم، تا در صورت خوش‌شانسی به‌جای صفر، حداقل سود را داشته باشیم). اگر برنده شویم:

تمام اعداد موجود را خط می‌زنیم چراکه تمامی باخت‌های خود را جبران کرده‌ایم.

اگر در یکی از مراحل میانی متحمل باخت شویم، حجم آن باخت را هم باید وارد خط کنیم، و شرط بعدی برابر با جمع اولین و آخرین عدد در خط خواهد بود.

خب، نتایج اولیه چیست؟

  1. یک سری شامل ۶ باخت، واقعاً با یک سری فقط ۳‌تایی برد، جبران شد (هرچند، باید واقعاً سری داشته باشیم که بعداً در این مورد صحبت خواهد شد). در نگاه اول، این سیستم واقعاً کار را برای ما آسان کرده تا بدون باخت بازار را ترک کنیم.
  2. در قیاس با مارتینگل، حجم، بسیار بسیار آهسته‌تر افزایش پیدا می‌کند. اگر ما چنین سری‌ایی را با سیستم مارتینگل حقیقی امتحان می‌کردیم، شرط آخر ما بیش از ۶۴ برابر شرط اول می‌شد!
  3. حجم کلی سرمایه‌های از دست رفته (مجموع شرط‌های باخت) در مثال بالا فقط ۲۱ است، درحالیکه در مارتینگل حقیقی ۶۳ می‌بود!
  4. محاسبات ساده نشان می‌دهند که ما باید ۱۳ باخت را در یک ردیف تحمل کنیم تا تمام سرمایه‌ی خود را از دست بدهیم درصورتی‌که شرط اولیۀ ما ۱ درصد از سرمایه باشد؛ و اگر این مقدار ۰.۱ درصد باشد، ۴۴ باخت را باید متحمل شویم. اکنون اینگونه فکر می‌کنید که: “۴۴ باخت در یک ردیف با نسبت ۵۰/۵۰؟ احتمال چنین رویدادی واقعاً صفر است! مگر آنکه شهاب‌سنگ به زمین بخورد! ابداً مشکلی با چنین احتمالی ندارم!” و غیره… .
  5. به‌راحتی می‌توانید مقاله‌های زیادی در مورد ریسک‌ها و ضررهای روش مارتینگل پیدا کنید. در واقع حتی می‌توانید خودتان با یک قلم و کاغذ ساده این محاسبات را انجام دهید تا ببینید مارتینگل چگونه است. اما راستش را بخواهید در مورد سیستم لبوشر چنین مقالاتی را پیدا نکردم!
  6. این سیستم شرط‌بندی بسیار پیچیده به‌نظر می‌رسد. بنابراین، محاسبات ریاضی را به‌تعویق می‌اندازیم.

حال اجازه دهید به سری شرط‌های باخت خود برگردیم. بیایید اینگونه فرض کنیم که ۶ باخت ما در یک ردیف فقط با ۲ برد (به‌جای ۳ برد) همراه است. بنابراین خط اعداد ما اینگونه خواهد شد:

شرط می‌بندیم ۷ و می‌بازیم:

۱۰ را شرط می‌بندیم (دقت کنید که هنگام باخت، حجم شرط‌بندی خود را به‌جای ۱، ۳ واحد ۳ واحد زیاد می‌کنیم که البته سری‌های ما را ریسکی‌تر می‌کند). مجدد می‌بازیم:

اکنون باید ۱۳ را شرط ببندیم.

بنابراین، سیستم ما را وادار می‌سازد که شرط‌بندی‌های خود را، در صورت باخت‌های پیاپی، بیشتر از ۱ واحد افزایش دهیم. به‌نظر می‌رسد این تنها راهی است که می‌شود بر ضرر فائق آمد. اینجا جایی است که شاید در بحث سرمایه‌تان واقعاً به دردسر بیفتید؛ چراکه به یک سری از بُردها نیاز دارید تا بتوان جبران ضرر کرد. محاسبه‌ی انتظارات روی کاغذ هنوز هم پیچیده یا حداقل خیلی کسل‌کننده به‌نظر می‌آید…

آیا به کارکرد این سیستم علاقه‌مند شده‌اید؟ اگر بله، بیایید جزئیات بیشتری را مورد بررسی قرار دهیم.

انجام کار: موضوع و روش

مهم‌ترین سوال این است که آیا واقعاً سیستم مدیریت پول لبوشر قادر به تغییر انتظارات از لحاظ ریاضی (به‌خصوص در جاهای مثبت) است یا خیر. البته، آن عبارتی که در مورد ۳۳ درصد بُرد جایی که برد = باخت، بود، به‌نظر غیرواقعی می‌آید. اما آیا ۴۹ درصد یا ۵۰ درصد برد، کافی است؟ اگر نه، آیا سیستم لبوشر مزایای دیگری دارد؟

ما از آمار استفاده می‌کنیم، و این بدان معنا است که نیاز داریم یک برنامه‌ی MQL4 را توسعه دهیم (در این مورد از MQL4 استفاده می‌کنم زیرا هنوز بر ‌‌MQL5 تسلط ندارم). می‌خواهیم برنامه‌ی ما میلیون‌ها معامله انجام دهد و هزاران سرمایه‌گذاری را “از بین ببرد” – نتایج را رصد کرده و تحلیل می‌کنیم، بدون آنکه سرمایه‌ی ما آسیب ببیند. اگر این برنامه سودده بود، احتمالش وجود دارد که الگوریتم را در ترید واقعی به‌کار گیریم.

سیستم لبوشر برمبنای فرض برد = باخت توسعه یافته است. می‌توان آن را برای دیگر نسبت‌ها نیز وفق داد، اما این کار به‌نظر منطقی نیست. اگر این سیستم بتواند بر انتظارت ما از جنبه‌ی ریاضی با برد = باخت تاثیر بگذارد، آنگاه همین سیستم می‌تواند بر دیگر نسبت‌ها هم تاثیرگذار باشد. و اگر نتواند، خیلی ساده وقت خود را تلف کرده‌ایم.

علاوه بر اینها، این سیستم را با برد = باخت و تعادل ۵۰ درصد برای شرط‌های برنده، بسیار ساده‌تر می‌شود فرض کرد، چراکه همه‌ی ما با سکه ‌انداختن و احتمالات آن آشنا هستیم. بنابراین، بگذارید این برنامه را تست سکه ([شیر یا خط]) بنامیم.

ابتدا باید ویژگی‌های اصلی برنامه‌مان را توصیف کنیم.

  1. باید قادر باشیم احتمال برد را تغییر دهیم.‌ نسبت ۵۰/۵۰ یک مورد ویژه در شرایط تعادل است.
  2. باید قادر باشیم سطح ریسک تعریف کنیم. سیستم لبوشر حجم شرط ثابت دارد. اگر ما شرط اولیه‌ی خود را برمبنای حجم سرمایه‌مان مقیاس‌بندی کنیم، ماهیت این سیستم از بین می‌رود زیرا بعد از آنکه تمام اعداد خط زده شدند، سرمایه‌ی ما هیچ‌گاه به وضعیت اولیه‌ی خود بازنمی‌گردد. می‌توانیم حجم شرط را بعد از خارج شدن از ضرر دوباره محاسبه کنیم، هرچند، به اعدادی کسری می‌رسیم که کار کردن با آنها دشوار است. بنابراین از دو متغییر برای تبیین ریسک استفاده می‌کنیم – سرمایه‌ی اولیه و شرط اولیه.
  3. ضروری است که حداکثر تعداد معامله را برای سرمایه‌ی خود مشخص کنیم. این مقدار باید به‌اندازه‌ی کافی بزرگ باشد تا بتوانیم بفهمیم آیا داریم، حتی در ریسک اولیه‌ی بسیار کم، سرمایه خود را از دست می‌دهیم یا خیر. بعد از آن، اگر سرمایه رشد داشت، فرآیند می‌تواند بی‌نهایت باشد و نتیجه را هیچ‌گاه نخواهیم دانست.
  4. باید قادر باشیم نتایج ترید سری‌ها را در یک بار سرمایه‌گذاری، هم برای گزارش‌گیری از برنامه و هم برای تغییر منطق کاری خود، بررسی و تحلیل کنیم. خروجی به‌صورت یک فایل، هدف ما را برآورده می‌سازد.
  5. بعد از اینکه کار کدنویسی برای یک گام سرمایه‌گذاری انجام شد، باید به‌سمت جمع‌آوری آمار از یک سری از گام‌ها در سرمایه‌گذاری‌های مجزا و (ترجیحاً) با پارامترهای متغییر، برویم. همانطور که متوجه شده‌اید، یک بار تجربه یعنی تقریباً هیچ. نتایج آماری را درون یک فایل می‌فرستیم. و دیگر نیازی نیست تاریخچه‌ی هر سرمایه‌گذاری را مجزا بررسی کنیم.

سیستم انتخاب حجم شرط‌بندی را می‌توان بالقوه در ترید واقعی استفاده کرد، بنابراین باید برای آن کلاسی جداگانه درنظر گرفت.

در این مرحله قیمت واقعی بازشدن معاملات در متاتریدر برای ما بی‌فایده است، و در بحث منابع محاسباتی [این موضوع] بسیار هزینه‌بر [است]. ما فقط نیاز داریم نتایج معاملات تصادفی را ثابت نگه داریم؛ این معاملات لاتیج و احتمال برنده شدنِ مدنظرِ ما را دارند و انجام می‌شوند. با داشتن این موضوع در ذهن، شروع به توسعه‌ی یک اِسکریپت (Script) می‌کنیم، چراکه این نوع از برنامه‌های MQL برای یک بار اجرا، در مقایسه با اکسپرت‌ها یا اندیکاتورها، عالی هستند.

بررسی کیفیتِ [سیستم] تولیدکننده‌ی اعداد شبه‌تصادفی از لحاظ آماری

کیفیت [سیستم] تولیدکننده‌ی اعداد شبه‌تصادفی (PRNG) برای ما مهم‌ترین اولویت را دارد، زیرا از آن برای تبیین خروجی هر معامله استفاده می‌کنیم (سود/ضرر). دقت توزیع سری‌های طولانی برد/باخت (سود/ضرر) بسیار حیاتی است. سعی ما این است که این مورد را بدون رجوع به نظریه‌های آماری-ریاضی پیچیده، اَرزیابی کنیم.

این مقاله سعی ندارد تحقیقی جدی بر کیفیت PRNG انجام دهد (در غیر این‌ صورت، می‌بایستی ۱۵ تست دیگر انجام می‌شد). بیشتر بحث ما بر خصوصیات PRNG است که می‌تواند بر نتایج سیستم تست لبوشر تاثیرگذار باشد و از طرفی به فرآیندهای تایید پیچیده نیز نیاز ندارد.

متاتریدر تابع استاندارد MathRand() PRNG را دارد. دنباله‌ی PRNG با تابع MathSran() شروع می‌شود.

بیایید یک اِسکریپت کوچک (RandFile) بنویسیم تا کیفیت PRNG استاندارد را بررسی کنیم. این اِسکریپت ۲ پارامتر خواهد داشت:

  • تعداد میلیون‌ها لغت ۳۲-بیتی تصادفی که [این اِسکریپت] باید تولید کند (یک لغت ۳۲-بیتی بر ۳ خوانش تابع MathRand()، ۱۵ بیت مجزا و مهم را تولید می‌کند). واحد اندازه‌گیری، به‌جای آنکه ۲ به توان ۲۰ باشد، همان دسیمال میلیون رایج (Decimal million) است، چراکه می‌خواهیم نتایج را به‌شکل بصری هم اَرزیابی کنیم.
  • پارامتر منطقی CalcSeries (اگر بخواهیم توزیعِ طولِ سری‌های بیت مشابه را محاسبه کنیم).

محاسبه‌ی توزیع طول سری‌های بیت، کاری بسیار سخت و برمبنای منابع است (که زمان اجرای اِسکریپت را هم ده برابر می‌کند). بنابراین، این کار را به‌عنوان یک گزینه‌ی مجزا درنظر گرفته‌ایم.

اِسکریپت نتایج زیر را تولید خواهد کرد:

  • زمان محاسبه (که در قسمت وقایع (Journal) نمایش داده می‌شود).
  • مقدار ۱ بیت که از میان تمام بیت‌های تولیدشده شناسایی شده‌است (در قسمت Journal نمایش داده می‌شود).
  • فایل bin – فایل باینری که نتیجه‌ی عملیات PRNG را در خود دارد.
  • فایل csv – فایل گزارش که شامل سرعت وقوع بایت‌های مشخص می‌باشد.
  • فایل csv – فایل گزارش شامل طول سری “۱” بیت.
  • فایل csv – فایل گزارش شامل طول سری “۰” بیت.

بیایید ۳ مجموعه تست با طول‌های مختلف تولید کنیم:

  • ۱۰ میلیون لغت تستی هرکدام ۴ بایتی (۴۰ میلیون بایت در مجموع)؛
  • ۱۰۰ میلیون لغت تستی هرکدام ۴ بایتی (۴۰۰ میلیون بایت در مجموع)؛
  • ۱۰۰۰ میلیون لغت تستی هرکدام ۴ بایتی (۴۰۰۰ میلیون بایت در مجموع)؛

اکنون بیایید پارامترهای زیر را بررسی کنیم:

  1. قابلیت فشردگی فایل‌های شامل داده‌های تصادفی با WinRAR با حداکثر تنظیمات برای فشرده‌سازی. داده‌های تصادفی دارای کیفیت بالا فشرده نمی‌شوند. البته، فشرده نشدن فایل دلیل بر کیفیت بالای داده‌های تصادفی آن نیست. اما اگر فایلی فشرده شد، این بدان معناست که داده‌ها نظم و ترتیب آماری دارند.

  1. مقدار “۱” بیت:

  1. مقادیر (Values) سرعتِ وقوعِ بایت‌های مشخص در فایل‌های تصادفی:

  1. طول سری‌های بیت یکسان. ما برای هر حجم نمونه، دو نمودار می‌سازیم:
  • اولین نمودار مقدار واقعی سری‌های بیت یکسان شناسایی‌شده از یک طول مشخص را نشان می‌دهد؛ و همینطور اَرزش تعادلی مقدار سری‌های آن طول را (در مقیاس الگوریتم)؛
  • نمودار دوم درصد انحراف از سری‌های بیت یکسان شناسایی‌شده از تعادل را (در مقیاس الگوریتم) نشان می‌دهد.

نمودار خطی برای ما مناسب نیست زیرا مقادیری که ما داریم پراکندگی بسیار زیادی دارند (مقادیری که نشان داده شده‌اند، دامنه‌ای از ۱ تا ۴۰۰۰۰۰۰۰۰۰ یا از ۰.۰۰۰۰۱ تا ۶۰۰۰ دارند). علاوه بر این، نموداری که اَرزش تعادل مقدار سری‌های طولانی را در مقیاس الگوریتم نشان می‌دهد، به‌شکل یک خط مستقیم نشان داده شده‌است، درحالیکه طول سری‌ها ۱ واحد افزایش می‌یابد، و احتمال رخ‌دادن آنها هم نصف می‌شود.

خب، اکنون نتیجه چیست؟

  • کارایی PRNG استاندارد برای کار ما قابل‌قبول است.
  • آرشیو کردن فایل‌هایی که شامل نتایج عملیات ‌PRNG هستند، منجر به فشرده‌سازی آنها نمی‌شود.
  • حجم بیت‌های صفرویک برابر با اَرزش متعادل (مقادیری با فاصله یکسان) است. انحراف از تعادل (به درصد) در صورت افزایش حجم نمونه، کم خواهد شد.
  • توزیع سرعت وقوع بایت‌های مشخص در نتایج عملیات PRNG، با بُردی کوتاه، اطراف تعادل، نوسان می‌کند. پراکندگی سرعت وقوع، با افزایش حجم نمونه، کاهش خواهد داشت.
  • سرعت وقوع سری‌های بیت یکسان از تعادل منحرف می‌شود، اگر فقط سری‌ها بسیار طولانی باشند (که این امر به‌ندرت اتفاق می‌اُفتد). با افزایش طول نمونه، سرعت واقعی وقوع “نقطه‌ی انحراف” از تعادل دور شده و به‌سمت افزایش طول سری‌ها می‌رَوَد و همیشه حول مقدار گنجایش ۱۰۰ در کل دنباله قرار می‌گیرد.

بنابراین، هیچ‌گونه رخنه یا عیب اساسی در PRNG استاندارد شناسایی نکردیم که قابلیت برهم‌زدن نتایج تست ما را حتی با دنباله‌هایی متشکل از تقریباً ۳ میلیارد تولید (۳ تولید، برای کلمه‌ی ۳۲-بیتی استفاده شده‌است)، داشته باشد.

نوشتن کلاس CLabouchere برای مدیریت حجم پوزیشن

کلاس CLabouchere به‌اندازه‌ی کافی کوچک است. محیط آن فقط شامل دو تابع بسته‌بندی (wrapper) برای تنظیم/دریافت میزان لاتیج اولیه، و دو تابع کاری بالفعل – برای تنظیم نتایج معامله و دریافت حجم پوزیشن کنونی، و نیز ریست کردن به وضعیت اولیه، است:

‌‌نوشتن اِسکریپت. اَرزیابی اولیه.

اکنون زمان آن رسیده که یک اِسکریپت ساده با صد رشته یا بیشتر بنویسیم. پارامترهای ورودی مانند زیر هستند:

اِسکریپت یک سری معامله انجام می‌دهد تاجاییکه سرمایه یا از بین برود یا حدتکرار زده شود.

نسبت سود/ضرر = ۵۰/۵۰ یک پارامتر جدا می‌سازد. در این خصوص، یک بیت از اعداد شبه‌تصادفی به‌مثابه نتیجه‌ی سکه انداختن لحاظ می‌شود. در غیر این‌ صورت، مقدار سرحدیِ سود/ضرر محاسبه شده و یک عدد تصادفی با آن مقایسه می‌شود. این پارامتر جدا برای مورد ۵۰/۵۰ به‌کار گرفته شد زیرا چرخه‌ی یک‌بیتی‌های PRNG کاملاً نیازهای ما را برآورده ساخت، هرچند ما چرخه‌ی وقوع مقادیری که فراتر از مقدار سرحدی هستند را اَرزیابی نکرده‌ایم.

تنظیمات پیش‌فرض:

  • حجم سرمایه‌گذاری –۰۰۰
  • شرط شروع – ۵۰ (۰.۵ درصد از سرمایه اولیه).

تقریباً، در دَهمین شروع اِسکریپت، نتیجه‌ای تماشایی کسب شد – سرمایه به ۴۶۳۰۰ در گام ۲۳۳۵اُم رسید. هرچند، هم‌اکنون در گام ۲۳۷۲اُم ضرر رخ داده است:

این موضوع روی نمودار اینگونه دیده می‌شود:

همانطور که می‌بینید، سرمایه‌ی ما ۲ بار قبل از اینکه بالاخره کاملاً از بین برود، به مقادیر بحرانی نزدیک شده‌است.

در برخی موارد، سرمایه در همان ۴۰-۵۰ ترید اولیه کاملاً از بین رفته و حتی یک مورد را هم نمی‌توان یافت که حداکثر طول عمر ۱۰۰۰۰۰ ترید بوده باشد.

وقتی داشتم پارامترهای مختلف را امتحان می‌کردم، این اصلاًحات به ذهنم رسیدند:

  • منطقی است که پارامتری برای تعیین حجم سرمایه‌ی برداشت‌شده از حساب ترید اضافه کنیم. اگر ما بخواهیم سرمایه‌ی بیشتری نسبت به سرمایه‌ی اولیه قبل از تمام شدن کامل [سرمایه]، برداشت کنیم، آنگاه خیلی ساده سرمایه‌ی اولیه‌ی ما تبدیل به ضرری ازپیش‌دانسته می‌شود. بنابراین پارامتر جدید که آن را درصد جیب می‌نامیم، به‌کار گرفته شد. این پارامتر درصد تریدهای موفق را که ما از حساب ترید برداشت می‌کنیم و در “جیب” خود می‌گذاریم را به ما نشان می‌دهد. استفاده از این پول “جیبی” [برای ریسک] ممنوع است، و فقط با پول‌های داخل حساب ترید ریسک صورت می‌پذیرد. علاوه بر اینها، این سبک در زندگی واقعی هم کاربردی است.
  • البته، سرمایه باید چندین بار، در یک دور، تزریق شود (البته این یک رفتار انسانی است و صدها بار این کار را دستی انجام می‌دهیم). همچنین باید در چند پارامتر تغییراتی ایجاد کنیم – درصد جیب و Take (حجم شرط اولیه)؛ و همینطور محاسبه‌ی نتایج میانگین (سرمایه “جیب” و سرمایه‌ی واریزی، چراکه سرمایه‌ی ما هیچ‌وقت تماماً صفر نمی‌شود و تا آن لحظه‌ای پایین می‌آید که دیگر انجام ترید بعدی غیرممکن باشد).
  • باید دو نسخه از اِسکریپت را داشته باشیم: اولی دورهای بازگشتی (Recurrent runs) را بدون ثبت جزئیات ترید در یک فایل انجام می‌دهد و دومی دقیقاً برعکس عمل می‌کند. دورهای بازگشتی یعنی اینکه ما باید از کد آن شی (Object) استفاده کنیم. بنابراین، ما “کد عملیاتی” را تحت عنوان کلاس CCoinTest توسعه می‌دهیم، درحالیکه اِسکریپت‌ها تا حد امکان ساده نوشته می‌شوند.

کد اِسکریپت یک‌مرحله‌ای، آنقدر کوتاه است که می‌توانم آن را کامل به شما نشان دهم (تمامی کارها، مانند ثبت جزئیات ترید درون یک فایل، همگی با کلاس CCoinTest انجام شده‌است):

بعد از اضافه کردن پارامتر “جیب”، نمودار عملیات سیستم کمی متفاوت به‌نظر خواهد رسید (۴۰ درصد از سود در مثال زیر برداشت شده‌است):

خط بنفش (سرمایه “جیب”) خیلی شبیه به نمودار یک حساب ترید عالی است که تمام تریدرها آرزوی آن را دارند. اما در واقع، باید بیشتر توجه‌مان به خط زرد باشد (مجموع سرمایه‌ی حساب و سرمایه‌ی “جیب”)، که به‌نظر خیلی خوب نمی‌رسد. علاوه بر این، نمودارهای زیر، بیشتر رایج‌اند:

نتایج تا این مرحله:

  • این سیستم در واقع همان رفتاری را نشان می‌دهد که مد نظر نویسنده بوده است. اغلب ضررها جبران می‌شوند و سرمایه میل به رشد دارد.
  • بعضی‌وقت‌ها، چنین تلاش‌هایی ختم به شکست کامل می‌شوند. در واقع سیستم بعد از ورود به ضرر، دو راه پیش روی خود دارد – یا ضرر را جبران می‌کند یا کل سرمایه را از بین می‌برد.
  • هرچقدر سرمایه مدت بیشتری بماند، به سطوح بالاتری می‌رسد.
  • شرط اولیه در این مثال‌ها ۰.۵ درصد از سرمایه‌ی اولیه است (۵۰ از ۱۰۰۰۰). در مثال اول، سطح پایه‌ی ریسک، تقریباً تا ۰.۱ درصد کاهش یافته است (سرمایه ۴ و نیم برابر افزایش داشته درحالیکه شرط اولیه همانطور باقی ‌مانده است). هرچند، این اندازه‌گیری‌ها باعث نشدند سرمایه‌ی اولیه حفظ شود.

اَرزیابی نهایی برای مقادیر احتمالی متفاوت. مقایسه‌ی نتایج سیستم‌های لبوشر و شرط-ثابت.

اکنون بیایید وارد جذاب‌ترین بخش شویم – یعنی بخش جمع‌آوری نتایج از چندین تست. می‌خواهیم بفهمیم آیا سودهای ما در سرمایه‌گذاری‌های موفق می‌توانند ضررها را در سرمایه‌گذاری‌های ناموفق جبران کنند یا خیر. شاید این الگوریتم کافی به‌نظر برسد چنانچه حجم سرمایه‌ی اولیه کم شود (بنابراین، محافظت از سرمایه بیشتر می‌شود) یا زیاد؟ چند درصد از سود را باید از حساب ترید خود برداشت کنیم؟ آیا اصلاً سیستم لبوشر با سیستم نرخ-ثابت تفاوتی هم دارد؟‌ و چه اتفاقی می‌اُفتد اگر سیستم اولیه توقعات مثبت از لحاظ ریاضایت را برآورده سازد ([در شیر یا خط]، “شیر” اغلب برنده باشد)؟ همانطور که می‌بینید سوالات زیادی وجود دارند که باید به آنها پاسخ مناسب داد.

اِسکریپت تزریق سرمایه در یک دوره با پارامترهای مختلف شامل حدوداً ۱۰۰ رشته خواهد بود. در اینجا من فقط برخی از بخش‌ها را نشان می‌دهم.

پارامترهای ورودی:

این ترتیب‌ها شامل مقادیر شرط اولیه و درصد برد هستند که در “جیب” جای‌گرفته‌اند:

همانطور که می‌توان دید، حجم شرط اولیه از ۵ (۰.۰۵ درصد از سرمایه اولیه) تا ۳۰۰۰ (۳۰ درصد از سرمایه اولیه) متغییر است. سرمایه‌هایی که در “جیب” قرار دارند از ۱ تا ۹۹ درصد متغییر هستند. پارامترها با یک حاشیه‌ی امنیت تنظیم شده‌اند و روی محدودیت‌های منطقی در هر دو جهت اُفتاده‌اند (هم‌پوشانی دارند).

بنابراین، فضای جستجو دوبُعدی است. ۳۶۰ نقطه‌ی مجزا (۲۴ * ۱۵) درون این فضا انتخاب شده. میانگین سرمایه‌ی کل (“جیب” + حساب ترید) و میانگین مقدار معاملات قبل از، از دست رفتن سرمایه (طول مدت سرمایه‌گذاری) برای هر نقطه بر اساس نتایج سری‌ها محاسبه شده‌است. میزان سرما‌یه‌گذاری‌ها بر سری‌ها با پارامتر Deposits تعیین شده‌است.

نتایج محاسبه‌ی فضای دوبُعدی، به‌صورت سه‌بُعدی است. که این یعنی نشان دادن آنها در دوبُعد سخت است. برای غلبه بر این مشکل، خیلی ساده نمودارهای دوبعدی رسم می‌کنیم که محور ‌X نشان‌دهنده‌ی اعداد سریالی نقاط از فضای جستجو (از ۰ تا ۳۵۹) است. اگر نیاز باشد، برخی از Takeها و مقادیر درصد جیب خاص، جداگانه ارائه می‌شوند.

بعد از انجام ۱۰۰ واریز، بالانس میانگین اینگونه است:

در پایین، نمودار طول مدت سرمایه‌گذاری را (با مقیاس الگوریتمی) مشاهده می‌کنید:

طول مدت سرمایه‌گذاری از ۱۰۰۰۰ ترید عبور می‌کند که با ریسک اولیه‌ی ۰.۰۵ درصد به‌صورت ثابت به کمتر از ۱۰ معامله با ریسک اولیه‌ی ۳۰ درصد کاهش می‌یابد. همچنین بیشترین مقدار درصد جیب، مقدار میانگین معاملات را، قبل از اتمام سرمایه، کاهش می‌دهد. این نتیجه را انتظار داشتیم.

می‌توانیم روی نمودار چند نقطه‌ی امیدبخش پیدا کنیم که میانگین محتوای “جیب” و سرمایه را نشان می‌دهند. چهار عدد از این نقاط نزدیک به یکدیگر قرار دارند، بنابراین، امیدوارنه می‌توانیم منطقه‌ی بهینه را پیدا کنیم. اکنون بیایید نتایج را برای Deposits = 1000 محاسبه کنیم و آنها را روی همان نمودار اضافه کنیم:

همانطور که می‌بینیم، ناحیه‌ی علی‌الظاهر بهینه، خیلی ساده، تحت فشار داده‌های آماری کافی و حجم بالا، محو شده‌است. بدون درنظر گرفتن هیچ پارامتری، نمودار به‌صورت تصادفی نزدیک سرمایه‌ی اولیه ۱۰۰۰۰ نوسان می‌کند.

بنابراین Deposits = 100 کافی نیست. تمام دیگر تجربه‌ها با Deposits = 1000 انجام خواهند شد.

بیایید نتایج سیستم‌های لبوشر و شرط-ثابت را روی یک نمودار نشان دهیم:

نمودار طول مدت سرمایه‌گذاری برای سیستم‌های لبوشر و شرط-ثابت:

نتایج:

  • نتیجه‌ی مالی سیستم لبوشر صفر است که با سیستم شرط-ثابت تلاقی دارد (منطبق است).
  • برخلاف سیستم لبوشر، سیستم دیگر، پراکندگی داده‌ی رو به‌ رشدی را پیرامون مقدار میانگین نشان می‌دهد. به‌نظر می‌رسد که مقادیر Deposits ثابت با رفتار آماری سیستم شرط-ثابت آنچنان تطبیق ندارد.
  • طول مدت سرمایه‌گذاری، هنگام استفاده از سیستم لبوشر بسیار کمتر است (۱۰ برابر یا بیشتر همراه با اکثر پارامترها و حتی بیش از ۱۰۰ برابر هنگام استفاده از پارامترهای معین). در مورد سطح ریسک پایین، می‌توانیم ببینیم که نمودار به محدودیت تنظیم شده توسط پارامتر RepeatsCount می‌رسد (مقدار پیش‌فرض ۱۰۰۰۰۰ است). این نتایج تا اندازه‌ای نظر عموم در مورد اینکه سیستم‌هایی با قابلیت افزایش سطح ریسک برای سرمایه‌گذاری خطرناک هستند را تایید می‌کند. چنین سیستم‌هایی عمر سرمایه‌گذاری را کم می‌کنند، هرچند که ما تا الان هیچ‌گونه خطری در نتایج مالی ندیده‌ایم (حداقل به‌طور میانگین، به‌شرط آنکه یک درصد معین از سود برداشت شود).

بگذارید یک پارامتر اِسکریپت جدید را معرفی کنیم که به ما اجازه می‌دهد داده‌های آماری کافی برای اَرزیابی رفتار محدوده‌هایی با ریسک بالا را جمع‌آوری کنیم:

اگر کمتر از ۱۰ میلیون ترید به‌ازای ۱۰۰۰ سرمایه‌گذاری باخت داشته باشیم، می‌بایستی ادامه دهیم.

نتیجه اینکه داده‌های نمودار پراکندگی کمتری خواهند داشت:

و اکنون بیایید عملکرد این سیستم با استفاده از احتمالات سیستم اولیه که برابر با ۵۰/۵۰ نیست، را بررسی کنیم:

طول مدت سرمایه‌گذاری:

در این نمودارها چه می‌توان دید؟

  • در مورد ۴۹ درصد از معاملات برد، هر دو سیستم کاملاً غیرسودده عمل می‌کنند.
  • نتایج مالی سیستم شرط-ثابت بسیار پایین هستند که نشان می‌دهند برداشت سود [و واریز] به “جیب”، درصورتیکه نسبت برد کمتر از ۵۰ درصد باشد، برای سیستم لبوشر بسیار مناسب‌تر است. سودها فقط بعد از خروج از ضرر به “جیب” منتقل می‌شوند.

برخلاف سیستم شرط-ثابت، لبوشر بارها و بارها قادر به ثبت رکوردهای جدید است (تا زمانیکه پول کافی برای شرط‌بندی بعدی موجود باشد) حتی وقتی که نسبت برد ۴۹ درصد باشد. از آنجاییکه سرمایه‌ی آنها به‌سرعت کاهش می‌یابد، تریدرها اغلب ۱۰۰۰۰۰ یا ۱۰۰۰۰ معامله را تا زمان از بین رفتن کامل سرمایه انجام نمی‌دهند. مطمئناً خیلی زودتر دست از ترید می‌کشند.‌ الگوریتم سیستم شرط-ثابت نمی‌تواند چنین کاری انجام دهد. در این مورد، الگوریتم سیستم لبوشر بسیار شبیه به انسان‌ها رفتار می‌کند زیرا مانند یک تریدری رفتار می‌کند که تحت تاثیر رکورد‌های جدید قرار گرفته است.

آیا آن مقاله‌ی پیش‌گویی را به‌یاد دارید که در مقدمه به آن اشاره کردم؟ می‌گفت که این سیستم حتی با “۳۳ الی ۴۰ درصد” برد هم کار می‌کند. حال بیایید حد بالا یعنی ۴۰ درصد را صرفاً جهت سرگرمی بررسی کنیم.

حال بیایید انتظارات مثبت از ریاضیات را برای سیستم اولیه درنظر بگیریم (بیش از ۵۰ درصد برد).

نمودار سرمایه را در مقیاس الگوریتمی حتی با نسبت برد ۵۱ درصد نشان می‌دهیم.

نتیجه:

  • هر دو سیستم به‌سمت انتظارات مثبت حرکت کردند.
  • در مورد سطح ریسک پایین، سیستم شرط-ثابت “قدرت” نامحدودی از خود نشان می‌دهد. به‌عبارت دیگر، تقریباً غیرممکن است که سرمایه از دست برود.
  • هرچند، سیستم لبوشر هنوز قابلیت تخریب سرمایه را دارد (اما بخش “جیب” را فراموش نکنید).
  • سیستم شرط-ثابت با اکثر پارامترها ۱۰ برابر سود بیشتر نسبت به سیستم لبوشر به‌دست می‌دهد (و در برخی موارد با پارامترهای مشخص حتی تا ۱۷ برابر هم می‌رود).

اغلب خوانندگان فکر می‌کنند که سیستم شرط-ثابت از جمیع جهات برتر از سیستم لبوشر است. و نه تنها از سرمایه محافظت می‌کند بلکه ۱۰ برابر سود بیشتر هم به ما می‌دهد! متاسفانه باید بگویم فریب آمار را خورده‌اند!

سیستم شرط-ثابت محدود به ۱۰۰۰۰۰ ترید بر یک [بار] سرمایه‌گذاری است. اگر پارامتر RepeatsCount، ۲۰۰۰۰۰ باشد، آنگاه این سیستم ۲ برابر بیشتر سود می‌دهد. “این که بسیار عالیست!” – البته این حرف را خواننده‌ای می‌زند که فریب آمار را خورده است. و باز هم این افراد در اشتباه هستند.

به این نمودار میانگین سود در مقیاس الگوریتمی که برای هر دو سیستم است، نگاهی بیندازید:

نمودار سود بر ترید به‌صورت درصدی برای شرط اولیه را در زیر مشاهده می‌کنید که به‌مراتب تصویر واضح‌تری به ما می‌دهد:

نتایج:

  • سیستم شرط-ثابت ۲ درصد از شرط اولیه بر هر ترید را تشکیل می‌دهد. این موضوع کاملاً با تئوری مطابقت دارد، چراکه نسبت برد/باخت در اینجا ۵۱/۴۹ است. به بیان دیگر، بردها ۲ واحد از باخت‌ها جلو زده‌‌اند.
  • سیستم لبوشر حتی با نامناسب‌ترین پارامترها هم سود بیشتری می‌دهد. و اگر پارامترها را درست تنظیم کنید، ۶-۷ برابر بیشتر سود می‌کنید.

بنابراین، اینگونه به‌نظر می‌رسد که اگر شما زمان نامحدود داشته باشید، بدون سیستم لبوشر به‌خوبی می‌توانید همه‌ی کارها را انجام دهید.

شاید این بحث را مطرح کنید که می‌توان سیستم درصد ریسک ثابت را جایگزین سیستم شرط-ثابت نمود، تا سود بر هر ترید افزایش یابد (در واقع سود به‌طور مداوم افزایش خواهد داشت، اما باید از فواصل مشابه برای مقایسه استفاده کنیم). هرچند، در این مورد، حجم یک پوزیشن باید برای سیستم لبوشر نیز تغییر کند.

بنابراین، سیستم لبوشر به‌نظر سودده‌تر می‌آید… اینطور نیست؟

اگر جواب شما مثبت است، باید بگویم که آمار باز هم شما را فریب داده‌اند.

به این جدول نگاهی بیندازید:

در واقع، می‌توانیم همین مقدار از سود را با استفاده از سیستم شرط-ثابت کسب کنیم. خیلی ساده، باید شرط را ۷ بار افزایش دهیم (از ۰.۷۵ درصد تا ۵ درصد در این مورد). البته، ۵ درصد سطح ریسک بسیار بالایی است! اما سیستم شرط-ثابت کماکان ۱۰ مرتبه‌ی دیگر، در این مورد، “قدرت” دارد.

بنابراین، سیستم شرط-ثابت به‌نظر سودده‌تر است. درست است؟

فکر می‌کنم باز هم آمار به شما خیانت کرده‌‌اند.

در واقع اصلاً اهمیت ندارد که تا چند معامله سرمایه‌ی شما قادر به بقا است (البته، به‌طور میانگین)، زیرا بخشی از سودمان را در “جیب” می‌گذاریم. اگر کل سرمایه‌ی “جیب” چندین بار از سرمایه‌ی اولیه‌ حساب بیشتر شود، دیگر از دست رفتن سرمایه موضوع مهمی نخواهد بود.

شاید درست‌ترین نتیجه‌گیری را بتوان از این محاسبات برداشت کرد: “اگر نسبت برد ۵۱ درصد باشد، سودی که از سیستم‌های لبوشر و شرط-ثابت به‌دست می‌آید، تقریباً یکسان است، به‌شرط آنکه سیستم لبوشر شرط اولیه‌ی ۰.۷۵ درصد از سرمایه را داشته باشد و ۱۰ درصد از سود از حساب برداشت شود، درحالیکه سیستم دیگر شرطِ ثابت ۵ درصد از سرمایه‌ی اولیه را حفظ کند و ۴۵ درصد از سود از حساب برداشت شود. با افزایش حجم پوزیشن حین کارکرد آن، سیستم لبوشر به همان سطح از سوددهی می‌رسد”.

علاوه بر اینها در ذهن داشته باشید که هرگونه محاسبات آماری را می‌توان بعد از انجام تعداد زیادی تست، معتبر دانست. یک حساب مجازیِ واحد را می‌توان به‌شکل مجازی به چندین سپرده تقسیم کرد. از دست رفتن یکی از سپرده‌های مجازی یعنی از دست دادن بخشی از حساب ترید و بازگشت به میزان شرط اولیه در‌صورتیکه به یک سطح مشخص از ریسک رسیده‌ باشیم. هرچند، این مقاله نشان می‌دهد که [حتی با] شبیه‌سازی ۱۰۰ واریز (سرمایه‌گذاری)، هنوز هم پراکندگی در اطلاعات بدست‌آمده زیاد است. اگر ما سرمایه‌ی میانگین یک تریدر را به ۱۰۰ قسمت تقسیم کنیم، ترید عادی غیرممکن خواهد بود.

کدام سیستم بهتر است؟ واقعاً گفتنش سخت است. انتخاب به اولویت‌های تریدرها بستگی دارد، و انتظارات ریاضی از سیستم اولیه در اینجا از اهمیت بالایی برخوردار است. کدهایی که در این مقاله نشان داده شدند، به همگان این اجازه را می‌دهد که کارکرد سیستم لبوشر را روی سیستم ترید خودشان شبیه‌سازی کنند.

بیاید نمودار هر دو سیستم را با ۵۵ درصد برد بررسی کنیم:

با ۵۵ درصد برد، هر دو سیستم سودده هستند.

تفاوت سود میانگین بر ترید از ۶-۷ برابر (۵۱ درصد برد) به حدود ۳.۷ (۵۵ درصد برد) کاهش داشته است. دلیل آن این است که در سطح انتظار بالاتر از سیستم اولیه، سیستم لبوشر وقت کمتری در ضررها صرف می‌کند و بنابراین نباید خیلی با لاتیجِ افزایش‌یافته ترید کند.

نتیجه‌گیری

معجزه‌ای رخ نداد. سیستم مدیریت پول لبوشر نمی‌تواند یک سیستم (استراتژی) ضررده یا حتی یک سیستم خنثی را به سودده تبدیل کند.

علاوه بر اینها، منبع برخی از تصورات غلط در مورد سیستم لبوشر را می‌توان به‌وضوح دید:

  • پیچیدگی‌ایی که محاسبه‌ی نتایج سیستم را به تاخیر می‌اندازد.
  • کمبود داده‌های آماری در زمان انجام تست‌های دستی (Manual).
  • قابلیت سیستم برای ثبت چندباره‌ی رکوردهای جدید سود، حتی درصورتیکه سیستم اولیه انتظارات منفی داشته باشد، و باور تریدرها به کارایی این سیستم.

آیا لبوشر اَرزش این را دارد که با یک سیستم انتظارات مثبت آن را امتحان کنیم؟ پاسخ این سوال برعهده‌ی خود شماست. سیستم لبوشر سیستمی کاملاً پیچیده است و کارایی آن را به‌سختی بتوان برتر دانست. در هر حال، به شما دو توصیه می‌کنم – اگر به سرمایه‌ی خود اهمیت می‌دهید، سطح قابل‌قبول و منطقی ریسک را بالا نبرید، و سعی کنید انتظارات ریاضی سیستم ترید خود را بهتر کنید.

این مقاله دارای فایل‌ ضمیمه است.

[۱]) در اینجا منظور از سیستم، همان استراتژی است که یک فرد برای ترید خود درنظر دارد.

امینی

→ خواندن مطلب قبلی

تست بصری سودآوری اندیکاتورها و هشدارها

نوشتن نظر شما

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

2 × 1 =