
شبیهسازیهای فرضی (What If simulations)
آوریل 6, 2025
بهینهسازی گامبهگام (Walk-Forward Optimization)
آوریل 6, 2025این مقاله درباره دو ویژگی مهم جدید است که به نسخه Build 114 نرمافزار StrategyQuant X اضافه شدهاند.
این دو ویژگی به یکدیگر مرتبطاند و هر دو سعی دارند به مهمترین پرسشها هنگام ساخت یک استراتژی معاملاتی جدید پاسخ دهند:
- آیا استراتژی جدید من واقعاً دارای مزیت رقابتی (edge) هست؟
- آیا میتوان انتظار داشت این استراتژی روی دادههای ناشناخته یا در آینده نیز کارایی داشته باشد؟
هر دوی این روشها بر پایه بهینهسازی استراتژی و ارزیابی نتایج آن هستند — به این معنی که ابتدا باید پارامترهای استراتژی را بهینهسازی کرده، سپس یکی یا هر دو روش را برای ارزیابی نتایج همه اجرایهای بهینهسازی اعمال کرد.
پروفایل بهینهسازی (Optimization Profile)
در ویدیویی از Robert Pardo در لینک زیر بهصورت کامل توضیح داده شده است: https://www.buildingrobuststrategiesmasterclass.com/overcome-curve-fitting
لطفاً این ویدیو را برای درک کامل این تکنیک مشاهده نمایید.
ایدهی اصلی «پروفایل بهینهسازی» ساده است — پس از بهینهسازی پارامترهای استراتژی، یک «پروفایل» از تمام اجرایهای بهینهسازی ساخته و ارزیابی میشود.
پنج فاکتور اصلی که باید در پروفایل بهینهسازی بررسی شوند:
- چه نسبتی از تمام اجرایهای بهینهسازی سودآور هستند — منطق این است که استراتژی باید تحت دامنه وسیعی از پارامترها عملکرد داشته باشد.
- میانگین سود تمام اجرایهای بهینهسازی باید بالاتر از صفر باشد — مشابه نکته قبلی.
- توزیع سودها باید تا جای ممکن یکنواخت باشد — به این معنا که سودها نباید در هر اجرای بهینهسازی بین مثبت و منفی نوسان شدید داشته باشند.
- نتیجه بهترین اجرای بهینهسازی نباید بیشازحد بزرگتر از میانگین باشد (در محدوده یک انحراف معیار) — تا نتایج فقط تحت تأثیر یک اجرای استثنایی قرار نگیرند.
- شکل گراف سهبعدی (۳D) از نتایج بهینهسازی باید «پایدار» باشد — این مورد فقط بهصورت بصری قابل بررسی است.
چگونه پروفایل بهینهسازی در StrategyQuant X پیادهسازی شده است؟
بهترین نکته این است که شما نیازی به انجام هیچ کاری ندارید – پروفایل بهینهسازی بهطور خودکار برای هر بهینهسازیای که انجام میدهید ساخته و ذخیره میشود.
بنابراین، اگر یک بهینهسازی ساده یا Walk-Forward Optimization اجرا کنید، StrategyQuant پروفایل بهینهسازی مربوط به آن را تولید کرده و میتوانید آن را ارزیابی نمایید.
بررسی پروفایل بهینهسازی در بخش نتایج (Results)
اگر استراتژی شامل پروفایل بهینهسازی باشد، تب جدیدی به نام Optimization profile در بخش نتایج ظاهر خواهد شد.
در این تب، پنلهایی برای تمام ویژگیهایی که باید طبق قوانین پروفایل بهینهسازی ارزیابی شوند نمایش داده میشود:
پنل اول تعداد و درصد اجرایهای سودده و زیانده را نمایش میدهد، و معیار شماره ۱ از فهرست قبل را بررسی میکند.
پنل دوم هیستوگرام سود خالص (Net Profit) برای تمام اجرایهای بهینهسازی را نمایش میدهد. هر میله نشاندهنده سود خالص در یک اجرای بهینهسازی است و خط قرمز، میانگین سود خالص تمام اجراها را نشان میدهد. در پایین نمودار، سه بررسی انجام میشود که معیارهای ۲ تا ۴ را پوشش میدهند.
پنل سوم (سمت راست) گراف سهبعدی (۳D) از نتایج بهینهسازی را نمایش میدهد که میتواند در یکی از چهار استایل مختلف ارائه شود. شما میتوانید تعیین کنید کدام پارامترها روی محور X و Y قرار گیرند و چه مقدار آماری (مانند Net Profit یا Drawdown) روی محور Z نمایش داده شود.
استفاده از پروفایل بهینهسازی در Cross Check
بررسی متقاطع جدیدی با نام Opt. Profile / Sys. Param. Permutation به سیستم افزوده شده است که میتوانید آن را از بخش Cross Checks در تنظیمات فعال کنید.
پیکربندی آن ساده است – تنها باید نوع پارامترهایی را که باید بهینهسازی شوند و حداکثر تعداد بهینهسازیهای مختلفی که باید اجرا شود را مشخص کنید:
سپس در بخش فیلتر کردن (Filtering)، میتوانید شرایط پذیرش یا رد شدن (PASS/FAIL) استراتژی را مشخص کنید – به این معنی که برای عبور از این چک، پروفایل بهینهسازی استراتژی باید چه ویژگیهایی داشته باشد.
شما میتوانید هرکدام از بررسیها را به دلخواه فعال یا غیرفعال کنید و برای هر مورد، مقدار حد مرزی (Threshold) تعیین نمایید.
جایگشت پارامترهای سیستم (System Parameter Permutation – SPP)
این روش در ابتدا توسط Dave Walton از مجموعه StatisTrade معرفی شده و در مقالهای علمی در این آدرس منتشر شده است: http://papers.ssrn.com/sol3/papers.cfm?abstract_id=2423187
لطفاً برای درک کامل، مقاله اصلی را مطالعه فرمایید.
ایده اصلی این است (در سادهترین بیان ممکن) که: با مشاهده استراتژی در حالت فعلی و مقدار پارامترهای کنونی، نمیتوان فهمید آیا استراتژی دارای مزیت واقعی هست یا خیر. اگر استراتژی از طریق دادهکاوی (Data Mining) ساخته شده باشد (همانطور که در StrategyQuant X چنین است)، ممکن است مقادیر پارامترها بهطور تصادفی انتخاب شده باشند بهگونهای که فقط روی دادههای گذشته خوب کار کنند.
بر همین اساس، **System Parameter Permutation (SPP)** پیشنهاد میکند که باید **تمام ترکیبهای ممکن از پارامترهای استراتژی** مورد آزمایش قرار گیرند (یعنی اجرای کامل بهینهسازی با همه ترکیبها)، و تنها از دادههای حاصل از تمام این اجراها میتوان تخمین واقعبینانهای از عملکرد استراتژی به دست آورد.
اطلاعات مهمی که SPP فراهم میکند شامل **مقادیر میانه (Median)** برای تمام شاخصهای عملکرد استراتژی است، مانند:
- سود خالص (Net Profit)
- دراداون (Drawdown)
- دراداون درصدی (% Drawdown)
- نسبت شارپ (Sharpe Ratio)
- و غیره…
بنابراین میتوانید مقدار میانه سود خالص، مقدار میانه دراداون، و … را مشاهده کنید.
این مقادیر میانه همان چیزی هستند که (براساس مقاله) میتوان آنها را بهعنوان **تخمین واقعبینانه عملکرد واقعی استراتژی روی دادههای تستشده** در نظر گرفت.
روش استفاده نیز ساده است – بهجای اینکه فقط سود خالص حاصل از بکتست روی داده اصلی را ملاک قرار دهید، باید مقدار میانه سود خالص (Median Net Profit) محاسبهشده توسط SPP را در نظر بگیرید.
بررسی نتایج SPP در بخش نتایج (Results)
اگر استراتژی دارای دادههای SPP باشد، تب جدیدی با عنوان Sys. Param. Permutation در بخش نتایج قابل مشاهده خواهد بود.
در سمت چپ این تب، جدولی وجود دارد که **مقادیر میانه تمام شاخصها** (محاسبهشده از نتایج بهینهسازی با روش SPP) را نمایش میدهد.
در سمت راست، نمودارهایی قرار دارند که فراوانی را نشان میدهند و شامل هیستوگرامهایی از تعداد اجراها (count histogram) برای مقادیر مورد نظر هستند که میانه هر یک نیز نمایش داده شده است.
استفاده از SPP در بررسی متقاطع (Cross Check)
System Parameter Permutation (SPP) در بررسی متقاطع جدیدی به نام Opt. Profile / Sys. Param. Permutation استفاده میشود.
پیکربندی این Cross Check در بخش «Optimization Profile» پیشتر توضیح داده شد.
بخش فیلتر کردن (Filtering) به شما اجازه میدهد تا مقادیر میانه برای تمام ستونهای استاندارد را بررسی کنید – برای مثال: میانه سود خالص (Median Net Profit) و میانه دراداون (Median Drawdown).
برای استفاده از مقادیر میانه در فیلترها، ابتدا باید ستونهایی را که میخواهید ببینید انتخاب کنید، سپس روی هر ستون دوبار کلیک کرده و مقدار “Opt. Profile / Sys. Param. Permutation” را در فیلد From backtest انتخاب نمایید.
با این کار، آن ستون از دادههای بررسی SPP خوانده شده و مقدار میانهی مربوط به ستون اصلی را نمایش میدهد.
نمایش مقادیر میانه در دیتابانک (Databank)
مقادیر میانهای که توسط SPP محاسبه شدهاند، میتوانند در دیتابانک نیز نمایش داده شوند – دقیقاً به همان روشی که در فیلتر کردن توضیح داده شد.
فقط کافی است روی Manage View کلیک کرده، یک ستون جدید اضافه کنید، سپس در قسمت From backtest مقدار “Opt. Profile / Sys. Param. Permutation” را انتخاب کنید تا مقدار میانه مربوط به آن ستون را در دیتابانک ببینید.
توجه داشته باشید که این مقادیر **تنها در صورتی نمایش داده میشوند** که بررسی متقاطع مربوطه فعال بوده و پروفایل بهینهسازی برای آن استراتژی محاسبه شده باشد.
نکته مهم درباره حداکثر تعداد تستها و ترکیبهای پارامتری ممکن
هر دو روش (Optimization Profile و SPP) بر پایه این فرض عمل میکنند که **تمام ترکیبهای ممکن پارامترهای استراتژی تست شدهاند**.
این کار **تنها زمانی ممکن است** که استراتژی شما تنها ۲ یا ۳ پارامتر قابل تنظیم داشته باشد.
در واقع، بسیار توصیه میشود که استراتژیهای شما تا حد امکان دارای تعداد کمی پارامتر قابل تنظیم باشند (یعنی درجه آزادی پایینتر داشته باشند).
اما در عمل، بسیاری از استراتژیها دارای تعداد بیشتری پارامتر هستند و تعداد تمام ترکیبهای ممکن آنها میتواند از هزاران تا میلیاردها یا حتی تریلیونها حالت برسد.
تست کردن تمام این ترکیبها **امکانپذیر یا واقعبینانه نیست**.
در StrategyQuant X این موضوع با استفاده از محدودسازی تعداد تستها مدیریت شده است – این همان گزینه Maximum tests است که در تنظیمات بهینهسازی قابل تعیین میباشد.
زمانی که این حد مشخصشده پر شود، فرآیند بهینهسازی متوقف خواهد شد.
محدود کردن تعداد تستها تنها رویکرد عملی است، اما باید از این محدودیت و اثر آن آگاه باشید.
اگر تعداد ترکیبهای پارامتری بسیار بیشتر از این حد باشد، در واقع شما تنها یک زیرمجموعه تصادفی از تمام حالات ممکن را ارزیابی میکنید، که این خود باعث میشود اطلاعات بهدستآمده از پروفایل بهینهسازی یا روش SPP محدود شود.
روشهای پیشرفتهتری برای حل این مشکل وجود دارد که در آینده به StrategyQuant افزوده خواهند شد، پس منتظر بهروزرسانیهای بیشتر باشید.