استراتژیها
ETH شکست حرکت ضمنی بر اساس واکنش بازار اختیار معامله طبقهبندی میشود: حرکت DVOL 24h نرمالشده با 2-سیگما را ادامه دهید، اگر ETH DVOL در Deribit دوباره قیمتگذاری و افزایش یابد؛ اگر DVOL ثابت بماند یا افت کند، حرکت را خلاف جهت معامله کنید (ETHUSDT.BYBIT 4H، لانگ/شورت، ساعت ثابت 48h + حد ضرر درونکندلی)
نتیجه: رهاشده
EthDvolReactionShockClassifier
خلاصه نتیجه
EthDvolReactionShockClassifier بررسی کرد آیا واکنش بازار اختیار معامله (تغییر در ETH DVOL در Deribit) میتواند شوکهای واقعی ETH را که ارزش دنبالکردن دارند، از شوکهای ناشی از جریان سفارش که ارزش معامله در خلاف جهتشان را دارند، تشخیص دهد. این ایده مطابق فرضیه توصیفشده پیادهسازی شد و طی حدود 5.5 سال، 117 بار سیگنال داد؛ نزدیک به تعداد پیشبینیشده، اما 7.52% زیان داد و شارپ آن -0.28 و میانگین بازده هر معامله -0.555% بود. زیانها در همه رژیمهای نوسان و پیش از هزینهها دیده شدند و سیگنال اجراشده اطلاعات قابلاندازهگیری نداشت (IC -0.002). بنابراین تحلیلگر پس از یک تکرار، هنگام بررسی بکتست و پیش از بهینهسازی، آن را کنار گذاشت؛ این نتیجه فقط همین نسخه از ایده را شامل میشود، نه دروازهگذاری رژیم مبتنی بر DVOL را بهطور کلی.
فرضیه
پیادهسازی
نتایج تأیید
جستوجو را مستقل از پرچم کنید: dvol_now را در ts - 1h و dvol_then را در past_ts - 1h (یک کندل DVOL زودتر) بخوانید یا برچسبگذاری لودر را بررسی کنید. راه دیگر این است که تحلیلگر بکتست کامل را با SF_SUPP_AVAILABILITY_STAMPS=1 تأیید کند.
_dvol_at() از bisect_right(ts_list, ts) - 1 استفاده میکند. این همان جستوجوی یکطرفه supp_as_of() است؛ بنابراین خود کد نگاهبهآیندهای از جنس abs() ندارد. بااینحال، load_deribit_dvol کندلهای ساعتی DVOL را در زمان START برچسبگذاری میکند، مگر آنکه SF_SUPP_AVAILABILITY_STAMPS فعال باشد؛ و مقدار پیشفرض این پرچم در lookahead_guards.py برابر OFF است. من آن را در پیکربندی یا systemd هیچجا نیافتم. در زمان بستهشدن کندل 4H در T، بنابراین dvol_now مقدار بستهشدن کندل با برچسب T است که مقدارش فقط در T+1h معلوم میشود. در نتیجه، طبقهبند (dvol_now - dvol_then) تا یک ساعت بازقیمتگذاری نوسان ضمنی پس از زمان تصمیم را به کار میبرد. توضیح پیکربندی میگوید «کندلهای DVOL با زمان دسترسپذیری برچسبگذاری میشوند»، که فقط وقتی این پرچم روشن باشد درست است. این قرارداد پیشفرض پلتفرم میان همه استراتژیهای DVOL و supp_as_of() مشترک است و نقصی در جستوجوی این کد نیست؛ بنابراین مانع محسوب نمیشود.
تغییری لازم نیست. در صورت تمایل، رویدادهایی را که هنگام بازبودن موقعیت کنار گذاشته میشوند در گزارشهای عیبیابی ثبت کنید تا شمارش رویدادها در مقایسه کنترلها یکدست باشد.
should_enter() فقط وقتی استراتژی بدون موقعیت است بررسی میشود. رویدادی که در کندل فعالشدن خروج زمانمحور 48h (یا هنگام بازبودن موقعیت) تشخیص داده شود حذف میشود، اما همچنان last_event_ts را بازنشانی میکند و در نتیجه دوره توقف تازهای آغاز میشود. با برابر بودن cooldown_bars=12 و مقدار پیشفرض hold_bars=12، این وضعیت نادر است. وقتی بهینهساز hold_bars > 12 را انتخاب کند، برخی رویدادهای خوشهزداییشده معامله نمیشوند. این با معنای مطالعه رویداد (یک موقعیت در هر زمان) سازگار است، اما شمار معاملات از تعداد خام رویدادها کمتر خواهد بود.
صرفاً جهت اطلاع.
وضعیت موقعیت (held_direction، entry_ts، stop_level) در حافظه نگهداری میشود. پس از راهاندازی مجدد معامله کاغذی با موقعیت باز، should_exit() مقدار True برمیگرداند و آن را میبندد. این ایمن است و بکتست هرگز راهاندازی مجدد نمیشود.
اجرای آزمایشی در محیط ایزوله (بدون بهینهسازی، 117 معاملهی بستهشده طی حدود 2033 روز): avg_trade_return_pct -0.54% در مقایسه با کفِ حدود 0.15%، PF 0.84، شارپ -0.27. در هر سه رژیم نوسان زیانده است. 82 مورد از 117 معامله، فروش استقراضیاند؛ نرخ بردِ فروشهای استقراضی 39% است، در برابرِ 57% برای موقعیتهای خرید. تخصیص سرمایه برای هر معامله حدود 18% است که با مسیر ریسکِ 1% سازگار است. طبقِ L211، اندازهگذاری مطابق انتظار است: 117 x -0.54% × حدود 0.18 تقریباً برابر -11% است و به مقدارِ گزارششدهی -7.2% نزدیک است. هنگام اجرای بکتست کامل، ابتدا کنترلهای ازپیشثبتشده (always_continue، always_fade) را با همان تنظیمات اجرا کنید و سودوزیان را بر اساس رویدادهای گروهِ ادامهدهنده و گروهِ بازگشتی تفکیک کنید. همچنین نتیجه را با SF_SUPP_AVAILABILITY_STAMPS=1 یا با خواندنِ DVOL یک کندل زودتر دوباره بررسی کنید (هشدارِ 1 را ببینید). در تنظیم پیشفرض فعلی، دستهبندِ تغییرِ DVOL میتواند تا 1 ساعت پس از بستهشدن کندل تصمیم، به DVOL دسترسی داشته باشد؛ این فقط میتواند نتیجهی شاخهی dvol_conditioned را بهتر جلوه دهد.
بررسی بکتست
- شارپ
- -0٫28
- بازده کل
- -7٫52%
- حداکثر افت سرمایه
- 14٫78%
- کل معاملات
- 117
- نرخ برد
- 45٫3%
- ضریب سود
- 0٫84
پیادهسازی با فرضیه مطابقت دارد. شوکها با DVOL نرمالسازی شدهاند، شاخهها ادامه حرکت (DVOL افزایش) و معامله در خلاف جهت (DVOL ثابت یا کاهشی) هستند، خروج زمانمحور ثابت با حد ضرر کاهندهفقط درونکندلی انجام میشود و خوشهزدایی 12-کندلی وجود دارد.
اندازه موقعیت طبق برنامه است: حدود 18% از موجودی حساب برای هر موقعیت در مسیر ریسک 1%، اهرم اوج 0.40، بدون لیکوییدشدن، و تطبیق حسابداری.
نمونه قابلاتکاست: 117 معامله بستهشده طی 2,033 روز، نزدیک به حدود 115 رویدادی که فرضیه پیشبینی کرده بود.
مقایسه با کف کارمزد: avg_trade_return_pct در برابر کف +0.15% BYBIT برابر -0.555% است. PF برابر 0.835 است، شارپ -0.28 (95% CI -1.25 تا 0.53) و بازده کل -7.52%.
استراتژی پیش از هزینهها منفی است. کمیسیون ($2.26k)، اثر بازار ($0.62k) و فاندینگ ($0.33k) در مجموع حدود $3.2k هستند؛ در برابر زیان خالص $7.5k، روی ارزش اسمی موقعیت حدود $2.05M. بنابراین سود ناخالص حدود -0.2% بهازای ارزش اسمی است و کارمزدها علت زیان نیستند.
IC سیگنال اجراشده برابر -0.002 است (t = -0.06) در 1,016 مشاهده: اطلاعاتی وجود ندارد. نتیجه، rejected_no_information است.
در هر سه رژیم نوسان زیان میدهد: آرام -0.63%، عادی -2.31%، پرتنش -4.53%. چهار سال از شش سال منفی است و افت سرمایه حدود 1,546 روز طول کشید.
معاملات فروش (82 از 117) فقط 40% برد دارند. tail_ratio برابر 0.31 است.
نگرانی نگاهبهآینده QA (DVOL تا 1h پس از بستهشدن کندل قابلخواندن است) فقط میتوانست نتیجه شاخه dvol_conditioned را بهتر جلوه دهد. اصلاح آن نمیتواند این نتیجه را مثبت کند.
خلاصه نتیجه
در این چیدمان، تغییرِ 24ساعتهی DVOL، حتی پیش از محاسبهی هزینهها، مشخص نکرد که پس از شکستهشدن حرکت ضمنیِ 2-سیگما در ETH 4ساعته، حرکت را دنبال کنید یا خلاف آن معامله کنید. پیش از ساختن یک استراتژی کامل بر پایهی دستهبندِ واکنش به اختیار معامله، مزیت ناخالصِ IC آن را همراه با کنترلهای always_continue و always_fade بیازمایید.
تحلیلگر هنگام بررسی بکتست، با استناد به نبود مزیت (امید ریاضی منفی)، تصمیم به کنارگذاشتن گرفت. سود و زیان ناخالص پیش از کمیسیون، اثر بازار و فاندینگ نیز منفی بود (حدود -0.2% بهازای ارزش اسمی)، پس کارمزدها علت نبودند؛ و با IC تقریباً صفر، اطلاعاتی برای بهینهسازی پارامترها وجود نداشت. بهینهسازی و مراحل بعدی هرگز انجام نشدند.
روی کندلهای ETHUSDT.BYBIT 4H، هر حرکت 24h ETH را بر اساس سیگمای ضمنی شاخص ETH DVOL در Deribit مقیاسبندی کرد و هنگام عبور از دستکم 2 سیگما وارد معامله شد: وقتی DVOL دستکم 3 واحد افزایش مییافت، در جهت حرکت معامله میکرد؛ و وقتی DVOL ثابت بود یا افت میکرد، در خلاف جهت آن وارد میشد. موقعیت با ساعت ثابت 48h نگه داشته میشد و حد ضرر درونکندلی، 1% از موجودی حساب را در معرض ریسک قرار میداد.
بکتست اولیه 2,033 روز و 117 معامله بستهشده را پوشش داد. بازده کل -7.52%، شارپ -0.28 (95% CI -1.25 تا 0.53)، ضریب سود 0.835 و avg_trade_return_pct -0.555% بود؛ در برابر کف +0.15% در Bybit. IC سیگنال برابر -0.002 بود (t = -0.06) و استراتژی در رژیمهای نوسان آرام، عادی و پرتنش زیان داد.
Stratmill ابزاری برای پژوهش و معامله آزمایشی است، نه مشاوره مالی یا کارگزار. نتایج بکتست و معامله آزمایشی فرضی هستند. معاملهگری با ریسک زیان همراه است.