BtcTakerFlowExhaustionReversalLS1H
परिकल्पनाएँ
BTC टेकर-फ्लो की थकावट पर रिवर्सल, लॉन्ग-शॉर्ट (एकल-इंस्ट्रूमेंट BINANCE USD-M पर्पेचुअल, 1 घंटे के बार, अत्यधिक आक्रामक ऑर्डर-प्रवाह असंतुलन के विपरीत ट्रेड — अंतिम चरण की FOMO खरीदारी पर शॉर्ट करें / घबराहट में बिकवाली पर खरीदें — रेंज-रेजीम की शर्त से नियंत्रित, नवीन टेकर-अनुपात संकेत, 3-पैरामीटर)
परिकल्पनाएँ
A LONG-SHORT, single-instrument mean-reversion on BTCUSDT.BINANCE (USD-M perp, 1h bars), जो price के बजाय ORDER FLOW से driven है — ऐसा signal input जिसे कोई deployed strategy उपयोग नहीं करती। प्रत्येक bar पर यह Binance futures taker-ratio supplementary data से taker buy/sell aggressor imbalance (taker-buy volume fraction) निकालता है (fallback: aggressor-classified trade_ticks), और उसे short window पर smooth करता है। Thesis: जब aggressor buying extreme और sustained हो जाती है (जैसे smoothing window पर taker-buy fraction ≥ 0.68), marginal market-buyer late-stage FOMO / forced covering होता है और उसके पीछे कोई fresh limit demand नहीं होती — aggressor exhaustion जो विश्वसनीय रूप से short-term pullback से पहले आती है, इसलिए FADE it SHORT। Symmetrically, extreme sustained taker-SELL aggression (fraction ≤ 0.32) thinning offers में panic/capitulation market-selling है — go LONG। यह जानबूझकर इस factory में मरने वाली हर चीज़ से DIFFERENT family है: यह NOT trend-following नहीं है (the 209-death single-regime graveyard — यह contrarian और regime-distributed है, flow के हर direction में over-extend होने पर profit करता है), NOT funding carry नहीं है (the saturated fee-dying basket family — इसका edge 0.4–0.6% reversal move है, sub-basis-point cash flow नहीं), NOT an N-leg basket नहीं है (यह single-instrument है, प्रति round-trip 2 fills, इसलिए L12's 2N×10bps fee wall से बचता है), और NOT options नहीं है (no trade-count wall — extreme-flow events वर्ष में dozens of times fire होते हैं, जिससे reliable edge measurement के लिए hundreds of trades मिलते हैं)। इसे NON-TRENDING regimes तक gated किया गया है (fade केवल तब जब slow trend filter flat/ranging हो), ताकि एक वास्तविक failure mode से बचा जा सके — extreme flow जो exhaustion के बजाय INFORMED continuation हो। 3 low parameters (flow smoothing window, imbalance threshold, exit) इसे overfit-resistant रखते हैं।
परिकल्पनाएँ
Iteration 3 sole Layer-4 QA failure को address करता है: over-tight compound gate के कारण trade starvation (6 trades/363d)। कोई mechanism, import या signal-logic change नहीं किया गया (वे Layers 1-3 पार कर चुके थे); केवल तीन entry/exit throttles loosen किए गए हैं ताकि strategy ~100-trade measurability floor पार कर सके। entry_z 1.2->0.8 अधिक flow extremes पर fire करता है, जबकि noise से परे और 0.10% round-trip taker cost से ऊपर रहता है (thesis reversal 0.4-0.6% है)। regime_threshold 0.55->0.65 अधिक ranging bars स्वीकार करता है, जिससे ranging-AND-extreme-z conjunction की rarity compound होना रुकता है, जबकि strong trends को अभी भी exclude करता है (informed-continuation failure mode)। exit_z 0.3->0.25 और max_hold_bars 24->10 turnover तेज करते हैं, strategy को sooner flat पर लौटाते हैं और प्रति वर्ष entry windows की संख्या बढ़ाते हैं। Rolling-z scale-invariant signal (L5) और trend/carry/basket/options graveyard से इसे अलग करने वाला contrarian, regime-distributed, single-instrument design अपरिवर्तित हैं।
परिकल्पनाएँ
ऋणात्मक प्रत्याशित लाभ वाली एकल-पर्पेचुअल टेकर-फ्लो की थकावट के विपरीत ट्रेड करने की रणनीति, जिसमें कोई सांख्यिकीय बढ़त नहीं है और पूरक डेटा की बाधा है (L73/L55)। profit_factor 0.62, total_return -5.29%, शार्प अनुपात -0.71 (CI [-1.35, 0.02]), प्रत्याशित लाभ -$62.6/ट्रेड, avg_trade_return_pct 0.0146% (लगभग शून्य, शुद्ध घाटे वाला); avg_loss > avg_win, साथ में win_rate 0.447, इसलिए यह विपरीत-दिशा ट्रेड प्रवाह के गलत पक्ष में है। सबसे अहम बात यह है कि 2019-2026 के दौरान 58,512 बार होने के बावजूद, ALL 85 ट्रेड और रिटर्न का 100% हिस्सा लगभग 6 महीने की एक ही 2026 अवधि में आते हैं, क्योंकि taker_ratio पूरक फ़ीड केवल हालिया समय के एक हिस्से को कवर करती है — annual_returns={2026:-5.32}, मासिक 2026-03..08 — इसलिए 3-विंडो वॉक-फ़ॉरवर्ड के साथ 20% होल्डआउट तैयार नहीं किया जा सकता। यह वही ऑर्डर-फ्लो की शर्त से नियंत्रित एकल-पर्पेचुअल पैटर्न है जिसे इस बैच में पहले ही तीन बार छोड़ दिया गया है (BtcTakerAggressionPersistence, AvaxTakerAggressorDominance, EthTakerFlowBreakout)। कोई भी पैरामीटर ट्यूनिंग प्रति ट्रेड ऋणात्मक बढ़त को धनात्मक नहीं बनाती, और ऑप्टिमाइज़र फ़ीड में अनुपस्थित कैलेंडर अवधि की कवरेज नहीं खरीद सकता। इस पर 2 घंटे का अनुकूलन करना उचित नहीं है। विफलता का पैटर्न: fee_edge/no_edge एकल-पर्पेचुअल, ऑर्डर-फ्लो की शर्त से नियंत्रित विपरीत-दिशा ट्रेड रणनीति, जिसकी पूरक डेटा विंडो केवल हालिया अवधि तक सीमित है।
कार्यान्वयन
BTCUSDT.BINANCE USD-M perp पर long-short order-flow mean-reversion (1h bars)। Binance taker_ratio supplementary data से smoothed taker-buy aggressor fraction का rolling z-score निकालता है; extreme sustained aggressor buying को SHORT (late-stage FOMO exhaustion) और extreme aggressor selling को LONG (panic capitulation) fade करता है, केवल ranging (low Kaufman efficiency ratio) regime में। Flow normalization, 1% hard stop, या time cap पर exits। Single-instrument, leverage 1.0, 3 core tunables।
सत्यापन परिणाम
CLEAN RESTART 2026-09-04 — इस रन का verdict history और learning records हटा दिए गए और इसे verification से पुनः शुरू किया गया। इसका पिछला abandonment pipeline के कारण था, market के कारण नहीं: Layer-2 harness ने @staticmethod helpers को गलत bind किया था (ठीक किया गया), QA ने unoptimized smoke test पर terminal performance verdicts जारी किए थे (हटा दिया गया — QA अब केवल correctness का निर्णय करता है), और sandbox timeouts backtest-slot starvation के कारण थे (ठीक किया गया)। Hypothesis और strategy code अपरिवर्तित हैं। Code को उसके merits पर verify करें; performance का निर्णय बाद में full backtest और optimizer द्वारा किया जाएगा।
सत्यापन परिणाम
taker_lag_seconds default को ~7200-14400s तक घटाएँ ताकि stale feeds entries को suppress करें।
सत्यापन परिणाम
taker_lag_seconds defaults to 90000 (25 hours), इसलिए _current_fraction लगभग 25h stale तक की taker_ratio observation स्वीकार करता है और फिर None लौटाता है। यह look-ahead नहीं है (bar ts_event <= ts_init पर bisect bound one-sided है), लेकिन feed gaps के दौरान strategy एक दिन पुराने flow reading पर trade करती है।
सत्यापन परिणाम
_frac_buf में केवल तभी append करें जब self._tk_ts[idx] advance हो।
सत्यापन परिणाम
_current_fraction novelty की परवाह किए बिना latest observation लौटाता है, इसलिए feed के advance होने तक हर bar पर वही fraction _frac_buf में फिर से append होता है, जिससे rolling-z baseline std mildly compress होता है। 1h cadence पर यह correctness break नहीं है।
बैकटेस्ट समीक्षा
साफ़-सुथरा एकल-इंस्ट्रूमेंट कार्यान्वयन (प्रति राउंड-ट्रिप 2 फ़िल, बास्केट शुल्क की कोई बाधा नहीं), रेजीम की शर्त से नियंत्रित, केवल 3 मुख्य समायोज्य पैरामीटर — संरचना से ही ओवरफिटिंग-प्रतिरोधी
बैकटेस्ट समीक्षा
Order-flow signal input trend/carry/basket graveyards से वास्तव में अलग है
बैकटेस्ट समीक्षा
No edge वाला net loser: profit_factor 0.62, total_return -5.29%, Sharpe -0.71 (CI [-1.35, 0.02]), expectancy -$62.6/trade, avg_trade_return_pct 0.0146% (~zero और negative sign)
बैकटेस्ट समीक्षा
avg_loss ($301) avg_win ($232) से अधिक है, win_rate 0.447 के साथ — exhaustion-fade systematically flow move की गलत दिशा में है
बैकटेस्ट समीक्षा
Supplementary data wall (L73): सभी 85 trades और returns का 100% एक single ~6-month 2026 window में आता है (annual_returns={2026:-5.32}, monthly 2026-03..08) क्योंकि taker_ratio feed केवल 2019-2026 OHLCV history का हालिया slice cover करती है — effective sample 3-window walk-forward + 20% holdout का समर्थन नहीं कर सकता
बैकटेस्ट समीक्षा
commission_pct_of_gross 47% — negative-sign edge से पहले ही fees plus impact gross का आधा consume कर लेते हैं
बैकटेस्ट समीक्षा
Zero-survivor single-perp order-flow-gated class (BtcTakerAggressionPersistence, AvaxTakerAggressorDominance, EthTakerFlowBreakout सभी abandoned) और L55 sub-1.15-PF single-name fade class से मेल खाता है
बैकटेस्ट समीक्षा
6mo (2026 only)
बैकटेस्ट समीक्षा
multi-year
Iteration History
Verification विफल (Layer 3 — sandbox backtest): कोई trades उत्पन्न नहीं हुए
Bar type used: BTCUSDT.BINANCE-1-HOUR-LAST-EXTERNAL, Bars processed: 8729
Diagnostics: should_enter() ने 8679 evaluated bars में 0 बार side लौटाया -> आपका ENTRY CONDITION कभी trigger नहीं हुआ। Entry logic / thresholds को loosen करें।
सुनिश्चित करें कि आपकी strategy दिए गए data और parameters के साथ trades उत्पन्न करती है।
Iteration History
Verification विफल (Layer 4 — QA review):
- Entry gate measurable result उत्पन्न करने के लिए बहुत कम fire करता है। Sandbox ने 363 दिनों में केवल 6 trades generate किए (~6 trades/year)। Compound gate को एक साथ (a) RANGING regime (Kaufman efficiency ratio < regime_threshold), (b) taker-buy fraction का extreme rolling z (|z| >= entry_z=1.2), और (c) strategy का FLAT होना आवश्यक है, फिर यह अधिकतम 24 bars तक hold करती है -- इसलिए z के band को अक्सर cross करने के बावजूद genuine entries rare हैं। यही L16 failure mode ('BTC 4H aggressor imbalance 16 trades', 'BTC taker-ratio 16 trades') है, और यहां यह WORSE है (6 trades)। इस rate पर multi-year backtest भी ~100-trade measurability floor से काफी नीचे रहेगा। Hypothesis का अपना justification ('dozens of times per year, hundreds of trades for reliable edge measurement') 6-trade result से सीधे contradicted है।
- क्योंकि result 6 trades पर आधारित है, हर headline metric non-diagnostic है: Sharpe 0.84 लेकिन sharpe_ci_low -1.08 (CI zero को straddle करता है), profit_factor 10.26 और win_rate 0.667 on 6 samples, return_skew 7.23 / kurtosis 94.8, और avg_win $300 vs avg_loss $58 -- एक single largest_win $662 पूरे positive return को carry करता है (+1.08%)। इनमें से किसी पर भी edge के evidence के रूप में भरोसा नहीं किया जा सकता। यह ऊपर की trade-count समस्या का प्रत्यक्ष परिणाम है, कोई स्वतंत्र defect नहीं।
Iteration History
Verification विफल (Layer 4 — QA review):
- Core edge negative है और fees से भी नीचे है, जिससे hypothesis का केंद्रीय दावा गलत सिद्ध होता है। Hypothesis कहती है कि fade एक '0.4-0.6% reversal move' को पकड़ता है; sandbox avg_trade_return_pct -0.025% -- negative, और claim तथा 0.15% futures fee floor दोनों से एक order of magnitude नीचे मापता है। वास्तविक no-edge की पुष्टि, न कि केवल noise: profit_factor 0.518, Sharpe -1.53 (CI [-2.73, +0.07]), win_rate 0.50 with an INVERTED reward/risk (avg_loss $338 ~= 2x avg_win $175), omega_ratio 0.35। महत्वपूर्ण रूप से, यह BECAUSE iter-3 loosening (entry_z 1.2->0.8, regime_threshold 0.55->0.65) द्वारा trades जोड़े जाने के बाद सामने आया: अतिरिक्त entries कमजोर flow extremes पर fire हुईं जो NOT revert नहीं हुईं, जिससे average edge negative हो गया। यह प्रत्यक्ष प्रमाण है कि taker-flow-exhaustion signal में costs पार करने वाला कोई reversal alpha नहीं है -- इन thresholds पर extreme aggressor-imbalance bars का systematically mean-revert होना नहीं होता।
- Trade count अभी भी measurability floor से नीचे है। iter-3 ने 363 दिनों में trades को 6 से बढ़ाकर 26 किया (~26/yr), लेकिन यह अभी भी उस ~100-trade floor से काफी नीचे है जो edge को noise से अलग करने के लिए आवश्यक है (L16; sibling BTC aggressor-imbalance/taker-ratio attempts 16 trades पर समाप्त हो गए)। 26 trades और skew -4.83 / kurtosis 43 के साथ (एक single -$945 loss हावी है), metrics अभी भी noise-dominated हैं -- Sharpe CI -2.73 से +0.07 तक फैला है। Developer दो असफल regimes के बीच फंसा है: tighter gate -> unmeasurable (6 trades), looser gate -> measurable-ish लेकिन negative edge (26 trades, -0.025%/trade)। दोनों असफल हैं।
Stratmill एक रिसर्च और पेपर-ट्रेडिंग टूल है, वित्तीय सलाह या ब्रोकर नहीं। बैकटेस्ट और पेपर परिणाम काल्पनिक हैं। ट्रेडिंग में नुकसान का जोखिम होता है।