رفتن به محتوا
همه راهبردها

استراتژی‌ها

جریان بازتنظیم پوشش FX در پایان ماه: معامله یورو ETF (FXE) در برابر حرکت ماهانه سهام US تا زمان تثبیت پایان ماه (USEQ 1-DAY، خرید/فروش، پایه سیگنال SPY، حدود 85% مواقع بدون موقعیت)

نتیجه: رهاشده

MonthEndFxHedgeRebalanceFxe

خلاصه نتیجه

استراتژی می‌کوشید جریان بازتنظیم پوشش پایان ماه را در EUR/USD شکار کند؛ با معامله FXE در برابر حرکت ماهانه SPY و نگهداری موقعیت برای 1-5 جلسه در گذر از پایان ماه. پس از 2 تکرار، بک‌تست کامل 20 ساله 183 معامله، بازده -5.0%، شارپ -0.08 و بازده هر معامله -0.024% داشت. هزینه‌های اثر بازار از مزیت ناخالص اندک بیشتر بود و استراتژی از 2020 به بعد در هر سال زیان داد. تحلیلگر در بررسی بک‌تست، به‌دلیل امید ریاضی منفی و سیگنالی فاقد اطلاعات قابل اندازه‌گیری، آن را کنار گذاشت. تحلیلگر اشاره کرد که این نتیجه فقط نسخه روزانه ETF از ایده را رد می‌کند، نه یافته مقاله درباره قیمت نقدی درون‌روزی EUR/USD در زمان تثبیت لندن.

فرضیه

مشتق‌شده توسط سرپرست پژوهش از Melvin & Prins (2015، «پوشش ریسک سهام و نرخ‌های ارز در تثبیت ساعت 4 بعدازظهر لندن»). نهادهای خارجی که سهام US را نگه می‌دارند، مواجههٔ دلاری خود را با قراردادهای فوروارد FX پوشش می‌دهند و این پوشش‌ها را در پایان ماه، حوالی تثبیت 11:00 ET لندن، دوباره متناسب می‌کنند. اگر سهام US در بازهٔ ماه تا امروز افزایش یافته باشد، باید مقدار بیشتری USD بفروشند؛ بنابراین EUR/USD معمولاً تا زمان تثبیت افزایش می‌یابد؛ اگر سهام افت کرده باشد، دوباره USD می‌خرند. جریان سفارش مکانیکی و مبتنی بر تقویم……نمایش بیشترنمایش کمتر

مشتق‌شده توسط سرپرست پژوهش از Melvin & Prins (2015، «پوشش ریسک سهام و نرخ‌های ارز در تثبیت ساعت 4 بعدازظهر لندن»). نهادهای خارجی که سهام US را نگه می‌دارند، مواجههٔ دلاری خود را با قراردادهای فوروارد FX پوشش می‌دهند و این پوشش‌ها را در پایان ماه، حوالی تثبیت 11:00 ET لندن، دوباره متناسب می‌کنند. اگر سهام US در بازهٔ ماه تا امروز افزایش یافته باشد، باید مقدار بیشتری USD بفروشند؛ بنابراین EUR/USD معمولاً تا زمان تثبیت افزایش می‌یابد؛ اگر سهام افت کرده باشد، دوباره USD می‌خرند. جریان سفارش مکانیکی و مبتنی بر تقویم است؛ بنابراین مزیت، صرفِ تأمین نقدشوندگی است، نه پیش‌بینی. FXE.USEQ (یک ETF یورویی، عملاً EUR/USD، با سابقه از دسامبر 2005) به‌صورت خرید یا فروش معامله می‌شود و SPY.USEQ پایهٔ سیگنال است. در نمودارهای روزانهٔ USEQ، تصمیم در قیمت پایانی یک جلسه در قیمت بازگشایی جلسهٔ بعد اجرا می‌شود؛ این قابلیت به‌صورت بومی پشتیبانی می‌شود، پس نیازی به جایگزینی نیست. هیچ اجرای قبلی با ارز معامله نمی‌کند یا از این کانال استفاده نمی‌کند. انتظار می‌رود طی حدود 20 سال، حدود 145 معامله انجام شود. محاسبهٔ کارمزد: حدود 0.12% سود ناخالص در هر معامله در برابر حدود 0.04% هزینهٔ رفت‌وبرگشت برای USEQ، در نتیجه حدود 0.08% سود خالص، تقریباً 2x هزینه و بالاتر از کف +0.05% USEQ. کنترل ریسک، مسیر (b) است: خروج بر اساس تقویم با ارزش اسمیِ محدود به 100% از حقوق صاحبان سهام و بدون اهرم.

negative_expectancy. مقایسه با کف: avg_trade_return_pct برابر -0.024% است، در برابر کف بررسی +0.05% USEQ، بر مبنای نمونه قابل اتکای 183 معامله پایان ماه طی 20 سال (2006-2026). PF برابر 0.926 است؛ شارپ -0.08، بازده کل -5.0% و حداکثر افت سرمایه 18.8% در برابر 15% ثبت‌شده از پیش قرار دارد. پیش‌بینی IC امتیاز z ماهانه SPY برابر 0.025 است (t=0.72)؛ پس بهینه‌ساز هیچ سیگنالی برای تنظیم z_entry یا entry_sessions ندارد. سود ناخالص پیش از اثر بازار حدود +0.10% در هر معامله است، اما اثر بازار مدل‌شده FXE (122% از سود……نمایش بیشترنمایش کمتر

negative_expectancy. مقایسه با کف: avg_trade_return_pct برابر -0.024% است، در برابر کف بررسی +0.05% USEQ، بر مبنای نمونه قابل اتکای 183 معامله پایان ماه طی 20 سال (2006-2026). PF برابر 0.926 است؛ شارپ -0.08، بازده کل -5.0% و حداکثر افت سرمایه 18.8% در برابر 15% ثبت‌شده از پیش قرار دارد. پیش‌بینی IC امتیاز z ماهانه SPY برابر 0.025 است (t=0.72)؛ پس بهینه‌ساز هیچ سیگنالی برای تنظیم z_entry یا entry_sessions ندارد. سود ناخالص پیش از اثر بازار حدود +0.10% در هر معامله است، اما اثر بازار مدل‌شده FXE (122% از سود ناخالص؛ ظرفیت حدود $67k) از آن بیشتر است. همه سال‌های 2020 تا 2026 منفی‌اند. نگرانی QA در تاریخچه کامل تأیید می‌شود. بررسی پیشنهادی entry_sessions=1 از سوی QA در محدوده قابل تنظیم قرار دارد، اما سیگنال IC فاقد اطلاعات است و مزیت ناخالص از اثر بازار کمتر است؛ بنابراین ناحیه قابل‌دوامی برای بهینه‌سازی وجود ندارد. دامنه: این نتیجه فقط پیاده‌سازی عملیاتی رهبر پژوهش را رد می‌کند: FXE ETF روی کندل‌های روزانه، اجرا در بازگشایی روز بعد و نگهداری برای 1-5 جلسه در گذر از تثبیت پایان ماه. یافته Melvin & Prins را رد نمی‌کند؛ آن یافته به قیمت نقدی درون‌روزی EUR/USD در تثبیت ساعت 4 لندن مربوط است و با کندل‌های روزانه ETF نمی‌توان آن را جداگانه سنجید. وجود نقص حسابداری یا داده‌ای ادعا نمی‌شود.

پیاده‌سازی

جریان بازتنظیم پوشش FX در پایان ماه روی FXE.USEQ (1-DAY)، با SPY.USEQ به‌عنوان پایه سیگنال. حرکت لگاریتمی ماهانه SPY با نوسان روزانه 60 جلسه‌ای ضرب‌در جذر جلسه‌های سپری‌شده، به امتیاز z تبدیل می‌شود. در entry_sessions جلسه پایانی پیش از آخرین روز معاملاتی ماه، اگر |z| >= z_entry باشد، وقتی SPY از ابتدای ماه رشد کرده، FXE را می‌خرید (پوشش‌دهندگان خارجی USD را می‌فروشند)؛ و اگر SPY افت کرده، FXE را می‌فروشید. یک معامله در هر ماه. موقعیت هنگام تصمیم‌گیری در بسته‌شدن آخرین روز معاملاتی ماه بسته می‌شود. همه تصمیم‌های USEQ در بازگشایی جلسه بعد اجرا می‌شوند.

تکرار 2 یافتهٔ بحرانی QA را برطرف می‌کند. اندازهٔ position_size() دقیقاً برابر با 100% از حقوق صاحبان سهام بر اساس قیمت پایانی کندل تصمیم‌گیری تعیین شده بود، اما سفارش در بازگشایی جلسهٔ بعد اجرا می‌شود. شکاف رو به بالا به‌علاوهٔ کارمزد، مارجین اولیهٔ 1x را به بیش از MTM حقوق صاحبان سهام رساند؛ بنابراین بررسی پایهٔ مارجین سفارش را رد کرد. سپس سفارش ردشده در _inflight_entries باقی ماند و مانع همهٔ ورودهای بعدی شد؛ به همین دلیل محیط آزمایشی 0-2 معامله نشان داد. اکنون اندازه‌گذاری، حاشیهٔ اطمینان size_buffer از 0.97……نمایش بیشترنمایش کمتر

تکرار 2 یافتهٔ بحرانی QA را برطرف می‌کند. اندازهٔ position_size() دقیقاً برابر با 100% از حقوق صاحبان سهام بر اساس قیمت پایانی کندل تصمیم‌گیری تعیین شده بود، اما سفارش در بازگشایی جلسهٔ بعد اجرا می‌شود. شکاف رو به بالا به‌علاوهٔ کارمزد، مارجین اولیهٔ 1x را به بیش از MTM حقوق صاحبان سهام رساند؛ بنابراین بررسی پایهٔ مارجین سفارش را رد کرد. سپس سفارش ردشده در _inflight_entries باقی ماند و مانع همهٔ ورودهای بعدی شد؛ به همین دلیل محیط آزمایشی 0-2 معامله نشان داد. اکنون اندازه‌گذاری، حاشیهٔ اطمینان size_buffer از 0.97 (3% حاشیهٔ کافی، به‌اندازهٔ پوشش شکاف‌های شبانهٔ بزرگ‌ترِ FXE) را هم برای ارزش اسمی و هم برای سقف 100% از حقوق صاحبان سهام اعمال می‌کند. طبق قرارداد، notional_fraction در 1.0 و اهرم در 1.0 باقی می‌ماند. کنترل ریسک همچنان مسیر (b) است: خروج بر اساس تقویم، با هر موقعیت در سطح 100% از حقوق صاحبان سهام یا کمتر. منطق سیگنال، ورود و خروج تغییری نکرده است. دربارهٔ هشدار QA: entry_month همچنان در should_enter مصرف می‌شود. این کار قاعدهٔ یک معامله در هر بازهٔ پایان ماه را حفظ می‌کند و دیگر نباید رد مارجین باعث حذف سفارش شود. یادداشت مشورتی: سود ناخالصِ مورد انتظارِ ~0.12% برای هر معامله در مقایسه با نوسان روزانهٔ FXE اندک است؛ بنابراین ممکن است نتیجه نامشخص باشد.

نتایج تأیید

در صورت تمایل، entry_month را در on_position_opened (یا هنگام رسیدن اجرای سفارش) تنظیم کنید، به‌جای تنظیم آن در should_enter.

should_enter() پیش از اندازه‌گذاری و اجرای سفارش، entry_month را تنظیم می‌کند. اگر ورود حذف شود (اندازه 0، کمتر از حداقل ارزش اسمی، یا ردشده در بررسی مارجین)، باقی‌مانده بازه همان ماه نادیده گرفته می‌شود. 0.97 size_buffer احتمال ردشدن به‌دلیل مارجین را کم می‌کند، بنابراین اثر جزئی است.

برای پژوهش نیازی نیست. برای معامله کاغذی، استخراج entry_month از ts_opened موقعیت باز را در نظر بگیرید.

وضعیت اسکالر (entry_month، mtd_anchor، deque مربوط به _spy_rets) در حافظه نگهداری می‌شود. پس از راه‌اندازی دوباره گره معامله کاغذی، گرم‌سازی وضعیت سیگنال را تا calculate_signal بازسازی می‌کند، اما entry_month از 0 دوباره شروع می‌شود. اگر سامانه هنگام بازبودن موقعیت درون یک بازه راه‌اندازی مجدد شود، خروج همچنان درست انجام می‌شود، چون cur_month != entry_month باعث اجرای should_exit می‌شود. این موضوع فقط برای راه‌اندازی مجدد اهمیت دارد؛ بک‌تست راه‌اندازی مجدد نمی‌شود.

در پنجره 1561 روزه با پارامترهای پیش‌فرض (z_entry 0.5، entry_sessions 3)، محیط آزمایشی 60 معامله انجام داد؛ میانگین -0.29% از ارزش اسمی، PF 0.37 و شارپ -1.14. در همه سهک‌های نوسان و در 2022 زیان داد. فرضیه انتظار حدود +0.12% سود ناخالص در هر معامله دارد که در برابر نویز روزانه FXE (حدود 0.4-0.5%) طی نگهداری 1-5 جلسه ناچیز است. اثر بازار مدل‌شده ($10.6k روی $10.9M معامله‌شده، حدود 0.1% در هر رفت‌وبرگشت) به سود ناخالص ادعاشده نزدیک است. ابتدا در تاریخچه کامل بررسی کنید: پیش‌بینی IC امتیاز z ماهانه SPY را در برابر بازده FXE از ورود تا تثبیت پایان ماه، و اینکه آیا پنجره 1 جلسه‌ای (entry_sessions=1، با نگهداری فقط تا تثبیت روز آخر) بهتر از نگهداری 3-5 جلسه‌ای است که بیشترش نویز است. این نمونه آزمون اولیه است؛ صرفاً مشورتی است و مانع ادامه کار نمی‌شود.

بررسی بک‌تست

شارپ
-0٫08
بازده کل
-5٫00%
حداکثر افت سرمایه
18٫83%
کل معاملات
183
نرخ برد
48٫1%
ضریب سود
0٫93

معاملات، سازوکار بیان‌شده را اجرا می‌کنند: ورودهای پایان ماه 183 طی 20 سال، نزدیک به مقدار پیش‌بینی‌شدهٔ ~145. تعداد موقعیت‌های خرید 119 و فروش 64 بود که با این امر سازگار است که SPY در مقایسه با افت، بیشتر اوقات در بازهٔ ماه تا امروز افزایش داشته است. خروج‌ها بر اساس تقویم انجام می‌شوند، میزان مواجهه 11% است و در پایان هیچ موقعیت بازی وجود ندارد.

تطبیق حسابداری تأیید می‌شود: ممیزی‌های ورودی پاک‌اند، end_unrealized_pct برابر 0 است و دفتر هزینه مانده‌ای ندارد.

امید ریاضی خالص در نمونه‌ای قابل اتکا منفی است. avg_trade_return_pct برابر -0.024% است، در برابر کف +0.05% USEQ (+0.10% ترجیح داده می‌شود). PF برابر 0.926 است، شارپ -0.08 (CI -0.53 تا 0.32) و بازده کل -5.0%. حداکثر افت سرمایه 18.8% است، در برابر 15% که از پیش ثبت شده بود، و استراتژی 2,992 روز است که در وضعیت زیان قرار دارد.

پیش‌بینی هیچ اطلاعاتی در بر ندارد: IC سیگنال اجراشده 0.025 است (t=0.72، n=858). تشخیص‌گر آن را rejected_no_information ارزیابی می‌کند.

هزینه‌ها غالب‌اند. اثر بازار مدل‌شده $25.2k است، معادل 122% از سود ناخالص؛ ظرفیت FXE حدود $67k است، در برابر موقعیت‌هایی به ارزش حدود $100k. سود ناخالص پیش از اثر بازار، حدود +$20k از حدود $19M ارزش اسمی رفت‌وبرگشت است؛ حدود +0.10% در هر معامله. این رقم نزدیک به 0.12% فرضیه است، اما اثر بازار حدود 0.13% در هر رفت‌وبرگشت آن را از بین می‌برد.

بازده‌ها افت می‌کنند: استراتژی در بیشتر سال‌های 2008 تا 2019 مثبت بود و در همه سال‌های 2020 تا 2026 منفی شد (2022 -3.9%، 2023 -3.4%، 2024 -3.75%، 2025 -2.8%، 2026 -3.2% YTD). جریانی که اینجا ثبت شده، در داده‌های اخیر از بین رفته است.

تاریخچه تکرار

راستی‌آزمایی ناموفق بود (لایه 4 — بررسی QA) [class=code_defect]: - [edge_concern] فرضیه انتظار دارد در هر معامله حدود 0.12% سود ناخالص محقق شود. موقعیت برای 2-6 FXE جلسه نگه داشته می‌شود؛ هر جلسه انحراف معیار روزانه‌ای حدود 0.4-0.6% دارد و کندل‌های روزانه، برگشت قیمت پس از تثبیت تا بسته‌شدن روز آخر و شکاف شبانه تا بازگشایی روز بعد را نیز در بر می‌گیرند؛ توسعه‌دهنده هم این موضوع را تأیید می‌کند. بنابراین نسبت سیگنال به نویز در هر معامله بسیار پایین است. با حدود 145-180 معامله طی 20 سال، انتظار می‌رود سنجش نتیجه‌ای……نمایش بیشترنمایش کمتر

راستی‌آزمایی ناموفق بود (لایه 4 — بررسی QA) [class=code_defect]: - [edge_concern] فرضیه انتظار دارد در هر معامله حدود 0.12% سود ناخالص محقق شود. موقعیت برای 2-6 FXE جلسه نگه داشته می‌شود؛ هر جلسه انحراف معیار روزانه‌ای حدود 0.4-0.6% دارد و کندل‌های روزانه، برگشت قیمت پس از تثبیت تا بسته‌شدن روز آخر و شکاف شبانه تا بازگشایی روز بعد را نیز در بر می‌گیرند؛ توسعه‌دهنده هم این موضوع را تأیید می‌کند. بنابراین نسبت سیگنال به نویز در هر معامله بسیار پایین است. با حدود 145-180 معامله طی 20 سال، انتظار می‌رود سنجش نتیجه‌ای نامشخص یا نزدیک به صفر بدهد، نه نتیجه‌ای روشن. فروش استقراضی FXE نیز هزینه استقراض مدل‌شده‌ای دارد (حدود $6.8 برای فروش استقراضی $99k به‌مدت 5 روز در بازاجرای من) که در برابر هدف 0.12% اهمیت دارد. صرفاً جنبه مشورتی دارد. - [بحرانی] اندازه‌گذاری position_size() دقیقاً 100% از سرمایه را به کار می‌گیرد؛ int(equity / decision-bar close)، بدون هیچ حاشیه‌ای. در محل معامله‌ای با جلسه USEQ، سفارش در بازگشایی جلسه NEXT اجرا می‌شود و بررسی مارجین پایه submit_order() (refuse_over_margin، قیمت‌گذاری‌شده از حافظه نهان به‌جای قیمت بسته‌شدن کندل تصمیم) سفارشی را رد می‌کند که مارجین اولیه 1x به‌علاوه کارمزد، حتی چند دلار از سرمایه MTM بیشتر شود. این را با BacktestRunner واقعی بازتولید کردم (USEQ، از 2020-03-17 تا 2026-10-09، با پیش‌فرض‌های قرارداد). معامله 1 (SHORT 956 FXE، از 2020-03-27 تا 2020-04-01) اجرا شد. در 2020-04-27 این پیام ثبت شد: «سفارش رد شد: BUY 979 FXE.USEQ در اهرم 1x به مارجین اولیه‌ای بیش از موجودی حساب نیاز دارد». قالب پایه پیش از آنکه submit_order() برگردد، سفارش ردشده را در _inflight_entries ثبت کرده بود. سفارش هرگز ارسال نمی‌شود، پس هرگز بسته نمی‌شود و _entry_order_inflight() تا پایان اجرا True برمی‌گرداند. هر ورود بعدی (60 از 62) با پیام «ورود انباشته مسدود شد ... هنوز در جریان است» حذف می‌شود. entry_diag: entries_submitted 62، denied_margin 1، dropped_entry_inflight 60. نتیجه، یک یا دو معامله در 6.5 سال است، در حالی که سیگنال 64 بار فعال می‌شود؛ بازاجرای آفلاین من از همان منطق روی کندل‌های کاتالوگ، 183 ورود طی 2006-2026 را نشان می‌دهد. به همین دلیل، محیط آزمایشی لایه-3، 0 معامله نشان داد و بک‌تست کل تاریخچه، استراتژی گیرکرده را می‌سنجد، نه فرضیه را. (خط 131) — اصلاح: برای شکاف تا بازگشایی روز بعد، کارمزد و تغییرات MTM حاشیه بگذارید و در عین حال notional_fraction=1.0 قرارداد و سقف 100% از سرمایه را حفظ کنید. برای نمونه: notional = equity * min(notional_fraction, 1.0) * leverage * 0.97، سپس min(notional, 0.97 * equity). حاشیه 3% بزرگ‌ترین شکاف‌های شبانه FXE را پوشش می‌دهد. فقط اگر ایمنی بیشتری می‌خواهید، اندازه محاسبه‌شده را پیش از بازگرداندن با ظرفیت باقی‌مانده مارجین نیز مقایسه کنید. سپس محیط آزمایشی را دوباره اجرا کنید: باید حدود یک معامله در هر پایان ماه واجد شرایط نشان دهد، نه 0-2. - [هشدار] should_enter() پیش از اندازه‌گذاری یا پذیرفته‌شدن سفارش، entry_month را تنظیم می‌کند. اگر سامانه پایه سفارش را حذف کند (مارجین، حداقل ارزش اسمی، اندازه 0)، آن ماه مصرف‌شده تلقی می‌شود و جلسه‌های بعدی در همان بازه امکان تلاش مجدد ندارند. این رفتار برای «یک معامله در هر بازه پایان ماه» پذیرفتنی است، اما اگر سفارش حذف شود، یک ماه بی‌سروصدا از دست می‌رود. (خط 114) — اصلاح: اختیاری: به‌جای آن، entry_month را در on_position_opened (یا هنگام اجراشدن سفارش) تنظیم کنید، یا این رفتار را بپذیرید و مستند کنید. - [هشدار] min_bars_required() بازنویسی شده تا برابر vol_lookback + 2 = 62 باشد. این کار عمدی است و اشکالی ندارد. توجه کنید که امتیاز z از پیش به max(5, vol_lookback // 2) بازده به‌علاوه یک لنگر معتبر ماه نیاز دارد؛ بنابراین نخستین ورود نمی‌تواند پیش از حدود کندل 62 رخ دهد. (خط 49) — اصلاح: نیازی به تغییر نیست.

برای شکاف قیمت در بازگشایی بعدی، کارمزد و لغزش MTM حاشیهٔ کافی در نظر بگیرید، در حالی که notional_fraction=1.0 قرارداد و سقف 100% از حقوق صاحبان سهام را حفظ می‌کنید. برای مثال: ارزش اسمی = حقوق صاحبان سهام * min(notional_fraction, 1.0) * اهرم * 0.97، سپس min(ارزش اسمی، 0.97 * حقوق صاحبان سهام). حاشیهٔ اطمینان 3% شکاف‌های شبانهٔ بزرگ‌ترِ FXE را پوشش می‌دهد. فقط اگر ایمنی بیشتری می‌خواهید، پیش از بازگرداندن اندازهٔ محاسبه‌شده، آن را با ظرفیت باقی‌ماندهٔ مارجین نیز مقایسه کنید. سپس محیط آزمایشی را دوباره اجرا کنید: باید حدود یک معامله در هر پایان ماهِ واجد شرایط نشان دهد، نه 0-2.

position_size() دقیقاً 100% از سرمایه را به کار می‌گیرد؛ int(equity / decision-bar close)، بدون هیچ حاشیه‌ای. در محل معامله‌ای با جلسه USEQ، سفارش در بازگشایی جلسه NEXT اجرا می‌شود و بررسی مارجین پایه submit_order() (refuse_over_margin، قیمت‌گذاری‌شده از حافظه نهان به‌جای قیمت بسته‌شدن کندل تصمیم) سفارشی را رد می‌کند که مارجین اولیه 1x به‌علاوه کارمزد، حتی چند دلار از سرمایه MTM بیشتر شود. این را با BacktestRunner واقعی بازتولید کردم (USEQ، از 2020-03-17 تا 2026-10-09، با پیش‌فرض‌های قرارداد). معامله 1 (SHORT 956……نمایش بیشترنمایش کمتر

position_size() دقیقاً 100% از سرمایه را به کار می‌گیرد؛ int(equity / decision-bar close)، بدون هیچ حاشیه‌ای. در محل معامله‌ای با جلسه USEQ، سفارش در بازگشایی جلسه NEXT اجرا می‌شود و بررسی مارجین پایه submit_order() (refuse_over_margin، قیمت‌گذاری‌شده از حافظه نهان به‌جای قیمت بسته‌شدن کندل تصمیم) سفارشی را رد می‌کند که مارجین اولیه 1x به‌علاوه کارمزد، حتی چند دلار از سرمایه MTM بیشتر شود. این را با BacktestRunner واقعی بازتولید کردم (USEQ، از 2020-03-17 تا 2026-10-09، با پیش‌فرض‌های قرارداد). معامله 1 (SHORT 956 FXE، از 2020-03-27 تا 2020-04-01) اجرا شد. در 2020-04-27 این پیام ثبت شد: «سفارش رد شد: BUY 979 FXE.USEQ در اهرم 1x به مارجین اولیه‌ای بیش از موجودی حساب نیاز دارد». قالب پایه پیش از آنکه submit_order() برگردد، سفارش ردشده را در _inflight_entries ثبت کرده بود. سفارش هرگز ارسال نمی‌شود، پس هرگز بسته نمی‌شود و _entry_order_inflight() تا پایان اجرا True برمی‌گرداند. هر ورود بعدی (60 از 62) با پیام «ورود انباشته مسدود شد ... هنوز در جریان است» حذف می‌شود. entry_diag: entries_submitted 62، denied_margin 1، dropped_entry_inflight 60. نتیجه، یک یا دو معامله در 6.5 سال است، در حالی که سیگنال 64 بار فعال می‌شود؛ بازاجرای آفلاین من از همان منطق روی کندل‌های کاتالوگ، 183 ورود طی 2006-2026 را نشان می‌دهد. به همین دلیل، محیط آزمایشی لایه-3، 0 معامله نشان داد و بک‌تست کل تاریخچه، استراتژی گیرکرده را می‌سنجد، نه فرضیه.

اختیاری: به‌جای آن، entry_month را در on_position_opened (یا هنگام اجراشدن سفارش) تنظیم کنید، یا این رفتار را بپذیرید و مستند کنید.

should_enter() پیش از اندازه‌گذاری یا پذیرفته‌شدن سفارش، entry_month را تنظیم می‌کند. اگر سامانه پایه سفارش را حذف کند (مارجین، حداقل ارزش اسمی، اندازه 0)، آن ماه مصرف‌شده تلقی می‌شود و جلسه‌های بعدی در همان بازه امکان تلاش مجدد ندارند. این رفتار برای «یک معامله در هر بازه پایان ماه» پذیرفتنی است، اما اگر سفارش حذف شود، یک ماه بی‌سروصدا از دست می‌رود.

تغییری لازم نیست.

min_bars_required() بازنویسی شده تا برابر vol_lookback + 2 = 62 باشد. این کار عمدی است و اشکالی ندارد. توجه کنید که امتیاز z از پیش به max(5, vol_lookback // 2) بازده به‌علاوه یک لنگر معتبر ماه نیاز دارد؛ بنابراین نخستین ورود نمی‌تواند پیش از حدود کندل 62 رخ دهد.

خلاصه نتیجه

آزمون جریان معاملات حوالی زمان تثبیت FX با کندل‌های روزانه ETF و اجرای سفارش در بازگشایی روز بعد نشان می‌دهد اثر بازار بر ETF کم‌ظرفیت (حدود $67k) از مزیت ناخالص تقریباً 0.10% بیشتر است؛ برای آزمون درست این اثر، دادهٔ نقدی درون‌روزی نزدیک زمان تثبیت لازم است.

پیش از بهینه‌سازی و در بررسی بک‌تست، به‌دلیل امید ریاضی منفی کنار گذاشته شد: avg_trade_return_pct از -0.024% در برابر کف +0.05% USEQ، سیگنال IC از 0.025 (t=0.72، ارزیابی‌شده به‌عنوان فاقد اطلاعات) و افت سرمایه بیش از 15% ثبت‌شده از پیش. همه سال‌های 2020 تا 2026 منفی بودند.

بر پایه Melvin & Prins (2015)، این استراتژی در چند جلسه پایانی هر ماه، یورو را ETF FXE.USEQ در جهت حرکت امتیاز zشده ماهانه SPY خرید یا فروش می‌کرد. فرض این بود که سرمایه‌گذاران خارجی سهام با بازتنظیم پوشش‌های USD خود در زمان تثبیت پایان ماه، EUR/USD را در همان جهت به حرکت درمی‌آورند.

در 183 معامله پایان ماه از 2006 تا 2026، بازده کل -5.0%، شارپ -0.08 (CI -0.53 تا 0.32)، ضریب سود 0.926، avg_trade_return_pct -0.024% و حداکثر افت سرمایه 18.8% بود. سود ناخالص پیش از اثر بازار حدود +0.10% در هر معامله بود، اما اثر بازار FXE مدل‌شده ($25.2k، 122% از سود ناخالص) نتیجه را منفی کرد.

Stratmill ابزاری برای پژوهش و معامله آزمایشی است، نه مشاوره مالی یا کارگزار. نتایج بک‌تست و معامله آزمایشی فرضی هستند. معامله‌گری با ریسک زیان همراه است.