रणनीतियाँ
Cross-Sectional RETAIL-CROWDING Contrarian Rotation, Long-Only (BINANCE USD-M, 8 Majors, WEEKLY 3 LEAST Retail-Crowded Names को GLOBAL Long/Short Account-Ratio द्वारा Hold करें — एक Pure Under-Ownership FACTOR, Not Momentum; Systemic-Euphoria Cash Gate, 2-Parameter
परिणाम: परित्यक्त
RetailCrowdingContrarianRotationLong
Cross-Sectional RETAIL-CROWDING Contrarian Rotation, Long-Only (BINANCE USD-M, 8 Majors, WEEKLY 3 LEAST Retail-Crowded Names को GLOBAL Long/Short Account-Ratio द्वारा Hold करें — एक Pure Under-Ownership FACTOR, Not…
परिकल्पना
एक LONG-ONLY, weekly-rebalanced cross-sectional ROTATION, 8-major USD-M universe (BTC, ETH, SOL, BNB, AVAX, LINK, ADA, XRP) पर, एक वास्तविक NON-PRICE CROWDING signal के आधार पर नाम चुनता है: Binance VISION 'metrics' फ़ाइलों (MULTI-YEAR से ~2020, NOT the 30-day API) से प्राप्त GLOBAL long/short ACCOUNT ratio (count_long_short_ratio, एक retail-positioning proxy)। Mechanism एक शुद्ध UNDER-OWNERSHIP factor है — उन majors को hold करें जिन पर retail LEAST crowded-long है, क्योंकि crowded-long नामों में latent……और दिखाएँकम दिखाएँ
एक LONG-ONLY, weekly-rebalanced cross-sectional ROTATION, 8-major USD-M universe (BTC, ETH, SOL, BNB, AVAX, LINK, ADA, XRP) पर, एक वास्तविक NON-PRICE CROWDING signal के आधार पर नाम चुनता है: Binance VISION 'metrics' फ़ाइलों (MULTI-YEAR से ~2020, NOT the 30-day API) से प्राप्त GLOBAL long/short ACCOUNT ratio (count_long_short_ratio, एक retail-positioning proxy)। Mechanism एक शुद्ध UNDER-OWNERSHIP factor है — उन majors को hold करें जिन पर retail LEAST crowded-long है, क्योंकि crowded-long नामों में latent long-liquidation/squeeze-down risk होता है, जबकि under-owned नामों में bid up होने की गुंजाइश होती है। यह जानबूझकर उस ONLY structural family में है जो यहाँ reproducibly survive करती है — long-only, majors, weekly hold top-K, कम parameter count (deployed momentum rotation Sharpe 2.6 और negative-funding carry basket Sharpe 1.97) — और दोनों में एक selection key ORTHOGONAL जोड़ती है: price relative-strength (momentum) नहीं और funding (carry) नहीं, बल्कि crowd positioning। Session के evidence के अनुसार यह हर death mode से बचती है: NOT single-name directional timer नहीं (वे -100% / -43% / risk-reject में विफल हुए), NOT dollar-neutral spread नहीं (कोई short leg नहीं → कोई 90% DD blowup नहीं), NOT funding/options/liquidations/pure-OHLCV नहीं। यह pending SmartMoneyGatedMomentumRotation से अलग है (जो TOP-TRADER cohort का उपयोग momentum book को GATE करने के लिए करता है) और EthRetail से भी अलग है (single-name long-short fade): यह RETAIL/global cohort को contrarian LONG-ONLY basket में PRIMARY cross-sectional ranking key के रूप में उपयोग करती है, जिसमें कोई momentum component नहीं है। 2 parameters, K और cadence proven template पर frozen हैं।
उठाई गई सटीक त्रुटि QA को ठीक करता है। QA ने रैंकिंग कुंजी को अस्वीकार कर दिया क्योंकि ओपन इंटरेस्ट (a) रिटेल प्रॉक्सी नहीं है — यह सभी प्रतिभागियों का कुल ओपन नॉशनल है — और (b) दिशा-अंधा है, क्योंकि कुल perp longs, shorts के बराबर होते हैं, इसलिए यह 'least crowded-LONG' को व्यक्त नहीं कर सकता। नई रैंकिंग कुंजी `taker_long_short_vol_ratio` है, जिसे `taker_flow_by_instrument` से प्रति-लेग पढ़ा जाता है: यह आक्रामक BUY वॉल्यूम को आक्रामक SELL वॉल्यूम से विभाजित करती है, इसलिए यह निर्माणतः DIRECTIONAL है (उच्च मान का……और दिखाएँकम दिखाएँ
उठाई गई सटीक त्रुटि QA को ठीक करता है। QA ने रैंकिंग कुंजी को अस्वीकार कर दिया क्योंकि ओपन इंटरेस्ट (a) रिटेल प्रॉक्सी नहीं है — यह सभी प्रतिभागियों का कुल ओपन नॉशनल है — और (b) दिशा-अंधा है, क्योंकि कुल perp longs, shorts के बराबर होते हैं, इसलिए यह 'least crowded-LONG' को व्यक्त नहीं कर सकता। नई रैंकिंग कुंजी `taker_long_short_vol_ratio` है, जिसे `taker_flow_by_instrument` से प्रति-लेग पढ़ा जाता है: यह आक्रामक BUY वॉल्यूम को आक्रामक SELL वॉल्यूम से विभाजित करती है, इसलिए यह निर्माणतः DIRECTIONAL है (उच्च मान का शाब्दिक अर्थ है कि उस नाम में भीड़ long की ओर झुकी हुई है) और यह कुल ओपन नॉशनल के बजाय aggressor/taker-side (रिटेल-फेसिंग) माप है। यह उन्हीं Binance VISION `metrics` फ़ाइलों से भी आती है जिन्हें परिकल्पना अपना डेटा स्रोत बताती है, उसी multi-year-to-2020 इतिहास के साथ — केवल कॉलम अलग है। रैंकिंग में प्रत्येक नाम का अपना z-score (7d mean बनाम 90d mean/sd) उपयोग होता है, ताकि संरचनात्मक रूप से अलग taker levels की तुलना BTC और ADA में की जा सके, इस सीख के अनुसार कि supplementary data पर तय absolute thresholds scale-invariant नहीं होते। DISCLOSED, NOT HIDDEN: परिकल्पना की शाब्दिक कुंजी प्रति-नाम GLOBAL long/short ACCOUNT ratio (`long_short_ratio`, उसी parquet में) है, लेकिन pipeline केवल PRIMARY symbol के लिए `metrics` लोड करती है, और मौजूद एकमात्र per-leg cross-sectional wirings `funding_rates_by_instrument`, `open_interest_by_instrument` और `taker_flow_by_instrument` (subprocess_entry.py) हैं — इसलिए account ratio पर 8-name rank आज strategy code में व्यक्त नहीं किया जा सकता; इसके लिए इन तीनों की नकल करने वाली `global_ratio_by_instrument` wiring चाहिए, जो pipeline परिवर्तन है। मौजूद तीनों में taker flow ही एकमात्र ऐसा है जो directional और retail-side दोनों है, इसलिए यह faithful stand-in है, और account ratio का उपयोग वहाँ अब भी किया जाता है जहाँ यह IS उपलब्ध है (BTC euphoria cash gate)। सबमिट करने से पहले वास्तविक डेटा के विरुद्ध सत्यापित किया गया: सभी 8 legs में 8k-point strided series हैं जो 1737-2193 दिनों तक फैली हैं, पिछले 4 वर्षों में 208/208 simulated weekly rebalances एक ranked cross-section उत्पन्न करते हैं, और holdings हर नाम में rotate होती हैं (67-86 picks प्रत्येक), न कि एक ही नाम पर अटकी रहती हैं — इसलिए यह trade करती है और degenerate ranking नहीं है। दो और छोटे fixes भी बनाए रखे गए: weekly cadence अब process-relative `_bar_i` counter के बजाय bar के timestamp से calendar-anchored है (restart-safe, replay-identical), और optimizer को hysteresis को per-bar oscillation में उलटने से रोकने के लिए `exit_level` को सख्ती से `euphoria_level` से नीचे रखा गया है। Layer-3 timeout safety अपरिवर्तित और संरक्षित है: prefix sums + searchsorted हर per-bar lookup को O(log n) रखते हैं, और parse-time striding सभी 8 legs के लिए मापे गए ~10s पर __init__ को सीमित करती है।
verification_loop: सत्यापन विफल (4 — QA समीक्षा) [class=hypothesis_mismatch]: - [edge_concern] Sandbox एक coherent long-only majors basket है जो चलता और trade करता है (337 trades, avg_trade_return_pct 0.69% fee floor को clear करता है), लेकिन total_return -20.85%, equal-weight-basket benchmark के मुकाबले information_ratio -0.901, और max_drawdown 71% (CI से 96%) संकेत देते हैं कि substituted taker-flow ranking key एक naive equal-weight hold की तुलना में negative risk-adjusted value जोड़ती है। यह केवल advisory है;……और दिखाएँकम दिखाएँ
verification_loop: सत्यापन विफल (4 — QA समीक्षा) [class=hypothesis_mismatch]: - [edge_concern] Sandbox एक coherent long-only majors basket है जो चलता और trade करता है (337 trades, avg_trade_return_pct 0.69% fee floor को clear करता है), लेकिन total_return -20.85%, equal-weight-basket benchmark के मुकाबले information_ratio -0.901, और max_drawdown 71% (CI से 96%) संकेत देते हैं कि substituted taker-flow ranking key एक naive equal-weight hold की तुलना में negative risk-adjusted value जोड़ती है। यह केवल advisory है; यह ranking-key mismatch का downstream परिणाम है और corrected implementation पर analyst द्वारा फिर से आँका जाना चाहिए, यहाँ block नहीं किया जाना चाहिए। - [critical] परिकल्पना की एकमात्र defining feature — title/description में बार-बार दोहराई गई ('by GLOBAL Long/Short Account-Ratio', 'count_long_short_ratio', 'a Pure Under-Ownership FACTOR, Not Momentum') — यह है कि CROSS-SECTIONAL RANKING KEY प्रति-नाम global long/short ACCOUNT ratio है, जो retail positioning/ownership proxy है और जानबूझकर momentum तथा funding से orthogonal है। Code इस पर NOT rank नहीं करता। _crowd_z() / _rebalance() 8 majors को `taker_long_short_vol_ratio` (aggressive BUY volume / aggressive SELL volume) के आधार पर rank करते हैं, जो `taker_flow_by_instrument` से पढ़ा जाता है। Taker long/short volume ratio एक FLOW/AGGRESSOR measure है, ownership/positioning measure नहीं — यह account ratio से materially अलग है और संभवतः उस short-horizon flow/momentum के अधिक निकट है जिससे orthogonal होने का दावा परिकल्पना स्पष्ट रूप से करती है। Named account ratio का उपयोग केवल secondary BTC euphoria cash gate (_parse_global / calculate_signal) के लिए होता है, primary selection के लिए कभी नहीं। QA checklist के अनुसार, जब परिकल्पना का specific named core edge code में अनुपस्थित हो, तो यह critical है: stated under-ownership factor trade किया जा रहा factor नहीं है। (line 259) — fix: या तो (a) per-instrument global account ratio को pipeline में `global_ratio_by_instrument` के रूप में wire करें (funding_rates_by_instrument / open_interest_by_instrument / taker_flow_by_instrument को subprocess_entry.py में mirror करते हुए) और उसी पर rank करें — यही परिकल्पना द्वारा नामित faithful implementation है; या (b) यदि वह per-leg series वास्तव में उपलब्ध नहीं कराई जा सकती, तो run एक DATA-coverage block (not_measurable) है, substituted key पर ship की जाने वाली strategy नहीं — इसे इस रूप में report करें ताकि series wire होने तक hypothesis parked रहे, बजाय इसके कि चुपचाप एक अलग (flow) factor trade किया जाए। Do - [warning] Consistency check hypothesis 'WEEKLY' बनाम config bar_type 1-DAY को flag करता है। यह NOT genuine mismatch है: hypothesis में 'weekly' REBALANCE/HOLD cadence को संदर्भित करता है, जिसे calendar-anchored 7-day rebalance (day % rebalance_days == 0) द्वारा gated daily bars के रूप में सही ढंग से implement किया गया है। Literal weekly bars का उपयोग euphoria percentile और cadence को coarsen कर देगा; daily-bar + 7-day-rebalance construction weekly rotation व्यक्त करने का सही तरीका है। पारदर्शिता के लिए noted; verdict को drive नहीं करता। (line 380) — fix: Layer-1.5 consistency warning को silence करने के लिए hypothesis text को वैकल्पिक रूप से 'weekly rebalance on daily bars' कहने हेतु reword करें।
कार्यान्वयन
Long-only, weekly-rebalanced cross-sectional rotation 8 USD-M majors (BTC, ETH, SOL, BNB, AVAX, LINK, ADA, XRP) पर। प्रत्येक नाम की crowding को Binance Vision `metrics` mirror में प्रति-नाम TAKER long/short VOLUME ratio से मापा जाता है (aggressive buy volume / aggressive sell volume, 5-min, multi-year), अपने 7-day mean के z-score के रूप में, जिसकी तुलना उसके अपने 90-day mean और sd से की जाती है; 3 LEAST crowded-long नामों को equity के 30% प्रत्येक पर equal-weight में रखा जाता है। PRIMARY (BTC) global long/short ACCOUNT ratio से बना systemic-euphoria cash gate पूरी book को cash में rotate करता है जब वह अपने 90-day distribution के शीर्ष 15% में होता है, और 65th percentile पर पुनः निवेश करता है (hysteresis)। Rebalances calendar time (days_since_epoch % 7) से anchored हैं, bar counter से नहीं। Long-only, leverage 1.0, कोई short leg नहीं।
सत्यापन परिणाम
सत्यापन विफल (4 — QA समीक्षा) [class=hypothesis_mismatch]: - [edge_concern] Sandbox एक coherent long-only majors basket है जो चलता और trade करता है (337 trades, avg_trade_return_pct 0.69% fee floor को clear करता है), लेकिन total_return -20.85%, equal-weight-basket benchmark के मुकाबले information_ratio -0.901, और max_drawdown 71% (CI से 96%) संकेत देते हैं कि substituted taker-flow ranking key एक naive equal-weight hold की तुलना में negative risk-adjusted value जोड़ती है। यह केवल advisory है; यह ranking-key……और दिखाएँकम दिखाएँ
सत्यापन विफल (4 — QA समीक्षा) [class=hypothesis_mismatch]: - [edge_concern] Sandbox एक coherent long-only majors basket है जो चलता और trade करता है (337 trades, avg_trade_return_pct 0.69% fee floor को clear करता है), लेकिन total_return -20.85%, equal-weight-basket benchmark के मुकाबले information_ratio -0.901, और max_drawdown 71% (CI से 96%) संकेत देते हैं कि substituted taker-flow ranking key एक naive equal-weight hold की तुलना में negative risk-adjusted value जोड़ती है। यह केवल advisory है; यह ranking-key mismatch का downstream परिणाम है और corrected implementation पर analyst द्वारा फिर से आँका जाना चाहिए, यहाँ block नहीं किया जाना चाहिए। - [critical] परिकल्पना की एकमात्र defining feature — title/description में बार-बार दोहराई गई ('by GLOBAL Long/Short Account-Ratio', 'count_long_short_ratio', 'a Pure Under-Ownership FACTOR, Not Momentum') — यह है कि CROSS-SECTIONAL RANKING KEY प्रति-नाम global long/short ACCOUNT ratio है, जो retail positioning/ownership proxy है और जानबूझकर momentum तथा funding से orthogonal है। Code इस पर NOT rank नहीं करता। _crowd_z() / _rebalance() 8 majors को `taker_long_short_vol_ratio` (aggressive BUY volume / aggressive SELL volume) के आधार पर rank करते हैं, जो `taker_flow_by_instrument` से पढ़ा जाता है। Taker long/short volume ratio एक FLOW/AGGRESSOR measure है, ownership/positioning measure नहीं — यह account ratio से materially अलग है और संभवतः उस short-horizon flow/momentum के अधिक निकट है जिससे orthogonal होने का दावा परिकल्पना स्पष्ट रूप से करती है। Named account ratio का उपयोग केवल secondary BTC euphoria cash gate (_parse_global / calculate_signal) के लिए होता है, primary selection के लिए कभी नहीं। QA checklist के अनुसार, जब परिकल्पना का specific named core edge code में अनुपस्थित हो, तो यह critical है: stated under-ownership factor trade किया जा रहा factor नहीं है। (line 259) — fix: या तो (a) per-instrument global account ratio को pipeline में `global_ratio_by_instrument` के रूप में wire करें (funding_rates_by_instrument / open_interest_by_instrument / taker_flow_by_instrument को subprocess_entry.py में mirror करते हुए) और उसी पर rank करें — यही परिकल्पना द्वारा नामित faithful implementation है; या (b) यदि वह per-leg series वास्तव में उपलब्ध नहीं कराई जा सकती, तो run एक DATA-coverage block (not_measurable) है, substituted key पर ship की जाने वाली strategy नहीं — इसे इस रूप में report करें ताकि series wire होने तक hypothesis parked रहे, बजाय इसके कि चुपचाप एक अलग (flow) factor trade किया जाए। Do - [warning] Consistency check hypothesis 'WEEKLY' बनाम config bar_type 1-DAY को flag करता है। यह NOT genuine mismatch है: hypothesis में 'weekly' REBALANCE/HOLD cadence को संदर्भित करता है, जिसे calendar-anchored 7-day rebalance (day % rebalance_days == 0) द्वारा gated daily bars के रूप में सही ढंग से implement किया गया है। Literal weekly bars का उपयोग euphoria percentile और cadence को coarsen कर देगा; daily-bar + 7-day-rebalance construction weekly rotation व्यक्त करने का सही तरीका है। पारदर्शिता के लिए noted; verdict को drive नहीं करता। (line 380) — fix: Layer-1.5 consistency warning को silence करने के लिए hypothesis text को वैकल्पिक रूप से 'weekly rebalance on daily bars' कहने हेतु reword करें।
पुनरावृत्ति इतिहास
सत्यापन विफल (Layer 2 — synthetic scenarios): उपयोग किए गए parameters: ['top_k', 'exit_level', 'min_notional', 'per_name_frac', 'euphoria_level', 'rebalance_days', 'euphoria_window'] जाँचें कि __init__ self.parameters.get() से सभी attributes सेट करता है। - steady_uptrend: TypeError: RetailCrowdingContrarianRotationLong._asof() को 3 positional arguments चाहिए, लेकिन 4 दिए गए (bar timestamp: 1735691940000) - steady_downtrend: TypeError: RetailCrowdingContrarianRotationLong._asof() को 3 positional arguments चाहिए,……और दिखाएँकम दिखाएँ
सत्यापन विफल (Layer 2 — synthetic scenarios): उपयोग किए गए parameters: ['top_k', 'exit_level', 'min_notional', 'per_name_frac', 'euphoria_level', 'rebalance_days', 'euphoria_window'] जाँचें कि __init__ self.parameters.get() से सभी attributes सेट करता है। - steady_uptrend: TypeError: RetailCrowdingContrarianRotationLong._asof() को 3 positional arguments चाहिए, लेकिन 4 दिए गए (bar timestamp: 1735691940000) - steady_downtrend: TypeError: RetailCrowdingContrarianRotationLong._asof() को 3 positional arguments चाहिए, लेकिन 4 दिए गए (bar timestamp: 1735691940000) - flat_ranging: TypeError: RetailCrowdingContrarianRotationLong._asof() को 3 positional arguments चाहिए, लेकिन 4 दिए गए (bar timestamp: 1735691940000) - volatility_spike: TypeError: RetailCrowdingContrarianRotationLong._asof() को 3 positional arguments चाहिए, लेकिन 4 दिए गए (bar timestamp: 1735691940000) - zero_volume: TypeError: RetailCrowdingContrarianRotationLong._asof() को 3 positional arguments चाहिए, लेकिन 4 दिए गए (bar timestamp: 1735691940000) - price_gap: TypeError: RetailCrowdingContrarianRotationLong._asof() को 3 positional arguments चाहिए, लेकिन 4 दिए गए (bar timestamp: 1735691940000)
सत्यापन विफल (Layer 3 — sandbox backtest): smoke test ने 300s की wall-clock सीमा पार कर दी। इसका लगभग हमेशा अर्थ होता है कि per-bar कार्य history के साथ बढ़ रहा है — जैसे पूरी funding/supplementary series को फिर से स्कैन करना, या हर bar पर calculate_signal()/on_bar() के भीतर list फिर से बनाकर min()/sorted() कॉल करना। __init__ में sorted timestamp arrays ONCE को पहले से compute करें और bisect का उपयोग करें, या timestamp द्वारा keyed lookups cache करें, ताकि per-bar लागत O(n) के बजाय O(log n) हो।
सत्यापन विफल (4 — QA समीक्षा) [class=hypothesis_mismatch]: - [edge_concern] Sandbox एक smoke test है और विफलता का कारण नहीं है, लेकिन ध्यान दें: metrics_reliable=false, Sharpe (0.10) का संकेत total_return (-34.3%) के साथ असंगत है, MDD 70%, और OI-crowding book तनावग्रस्त vol tercile में सबसे अधिक नुकसान उठाती है (-37.8%)। यदि तंत्र backtest समीक्षा तक टिकता है, तो पहले जाँचें कि OI z-rank में कोई directional edge है भी या नहीं, क्योंकि OI direction-blind है। - परिकल्पना का मुख्य edge प्रति नाम GLOBAL LONG/SHORT……और दिखाएँकम दिखाएँ
सत्यापन विफल (4 — QA समीक्षा) [class=hypothesis_mismatch]: - [edge_concern] Sandbox एक smoke test है और विफलता का कारण नहीं है, लेकिन ध्यान दें: metrics_reliable=false, Sharpe (0.10) का संकेत total_return (-34.3%) के साथ असंगत है, MDD 70%, और OI-crowding book तनावग्रस्त vol tercile में सबसे अधिक नुकसान उठाती है (-37.8%)। यदि तंत्र backtest समीक्षा तक टिकता है, तो पहले जाँचें कि OI z-rank में कोई directional edge है भी या नहीं, क्योंकि OI direction-blind है। - परिकल्पना का मुख्य edge प्रति नाम GLOBAL LONG/SHORT ACCOUNT RATIO पर एक cross-sectional rank है — एक directional retail under-ownership factor ('जिन नामों पर retail LEAST crowded-LONG है, उन्हें hold करें')। इसके बजाय code प्रति-नाम PERP OPEN INTEREST z-score पर rank करता है और 3 सबसे कम वाले hold करता है। यह एक substituted mechanism है जो economics को संरक्षित नहीं करता: OI retail proxy नहीं है (यह सभी participants के कुल open notional को दर्शाता है), और OI DIRECTION-BLIND है (perps में aggregate longs == shorts), इसलिए यह 'least crowded-long' व्यक्त नहीं कर सकता। परिकल्पना का विशिष्ट named edge code में अनुपस्थित है → critical.
सत्यापन विफल (Layer 4 — QA review) [class=hypothesis_mismatch]: - [edge_concern] Sandbox स्वस्थ दिखता है (+93%, Sharpe 0.77, PF 1.55, avg_trade_return_pct 6.63%) ठीक इसलिए क्योंकि code एक funding-carry rotation है, जिसके developer द्वारा पहले से deployed negative-funding carry basket के साथ overlap की पुष्टि की गई है — इसलिए अच्छे numbers live strategy के near-duplicate को promote करने के विरुद्ध तर्क देते हैं, न कि उस orthogonal crowding factor के पक्ष में जिसे hypothesis जोड़ने के लिए बनाया गया था। Advisory;……और दिखाएँकम दिखाएँ
सत्यापन विफल (Layer 4 — QA review) [class=hypothesis_mismatch]: - [edge_concern] Sandbox स्वस्थ दिखता है (+93%, Sharpe 0.77, PF 1.55, avg_trade_return_pct 6.63%) ठीक इसलिए क्योंकि code एक funding-carry rotation है, जिसके developer द्वारा पहले से deployed negative-funding carry basket के साथ overlap की पुष्टि की गई है — इसलिए अच्छे numbers live strategy के near-duplicate को promote करने के विरुद्ध तर्क देते हैं, न कि उस orthogonal crowding factor के पक्ष में जिसे hypothesis जोड़ने के लिए बनाया गया था। Advisory; block fidelity का है। - Core edge implemented नहीं है और substitute वही exact mechanism है जिसे hypothesis EXCLUDES करती है। Hypothesis per-name GLOBAL long/short ACCOUNT ratio (retail crowding) के आधार पर rank करती है, स्पष्ट रूप से 'not funding (carry)... orthogonal to momentum and funding'। Code cross-section को per-name FUNDING (lowest = held) के आधार पर rank करता है — एक funding-carry rank, जिसका developer मानता है कि यह deployed carry basket के साथ overlap करता है। Account-ratio crowding key अनुपस्थित और infeasible है (metrics केवल primary symbol के लिए wired हैं; कोई metrics_by_instrument नहीं)। - Rebalance cadence bar counter (self._bar_i % rebalance_days) से anchored है, bar timestamp से नहीं। Restarts _bar_i को reset करते हैं और weekly rotation grid को किसी fixed calendar day से drift कराते हैं; parity replay rotation dates को reproduce नहीं कर सकता। Milder item-20 form (no sentinel/first-bar fire)। days-since-epoch या fixed weekday से derive करें।
छोड़ने का कारण
verification_loop: सत्यापन विफल (Layer 4 — QA review) [class=hypothesis_mismatch]: - [edge_concern] Sandbox एक coherent long-only majors basket है जो चलती और trade करती है (337 trades, avg_trade_return_pct 0.69% fee floor clear करता है), लेकिन total_return -20.85%, equal-weight-basket benchmark की तुलना में information_ratio -0.901, और max_drawdown 71% (CI से 96%) संकेत देते हैं कि substituted taker-flow ranking key naive equal-weight hold की तुलना में negative risk-adjusted value जोड़ती है। यह केवल advisory है;……और दिखाएँकम दिखाएँ
verification_loop: सत्यापन विफल (Layer 4 — QA review) [class=hypothesis_mismatch]: - [edge_concern] Sandbox एक coherent long-only majors basket है जो चलती और trade करती है (337 trades, avg_trade_return_pct 0.69% fee floor clear करता है), लेकिन total_return -20.85%, equal-weight-basket benchmark की तुलना में information_ratio -0.901, और max_drawdown 71% (CI से 96%) संकेत देते हैं कि substituted taker-flow ranking key naive equal-weight hold की तुलना में negative risk-adjusted value जोड़ती है। यह केवल advisory है; यह ranking-key mismatch के downstream में है और corrected implementation पर analyst द्वारा पुनः आंका जाना चाहिए, यहाँ block नहीं किया जाना चाहिए। - [critical] परिकल्पना की एकमात्र defining feature — title/description में बार-बार restate की गई ('by GLOBAL Long/Short Account-Ratio', 'count_long_short_ratio', 'a Pure Under-Ownership FACTOR, Not Momentum') — यह है कि CROSS-SECTIONAL RANKING KEY प्रति-नाम global long/short ACCOUNT ratio है, एक retail positioning/ownership proxy जो momentum और funding से जानबूझकर orthogonal है। Code इस पर rank NOT करता है। _crowd_z() / _rebalance() 8 majors को `taker_long_short_vol_ratio` (aggressive BUY volume / aggressive SELL volume) के आधार पर rank करते हैं, जिसे `taker_flow_by_instrument` से पढ़ा जाता है। Taker long/short volume ratio एक FLOW/AGGRESSOR measure है, ownership/positioning measure नहीं — यह account ratio से materially अलग है और संभवतः उस short-horizon flow/momentum के अधिक निकट है जिससे orthogonal होने का hypothesis स्पष्ट दावा करता है। Named account ratio का उपयोग केवल secondary BTC euphoria cash gate (_parse_global / calculate_signal) के लिए होता है, primary selection के लिए कभी नहीं। QA checklist के अनुसार, जब hypothesis की specific named core edge code में अनुपस्थित हो, तो यह critical है: stated under-ownership factor trade नहीं किया जा रहा। (line 259) — fix: या तो (a) per-instrument global account ratio को pipeline में `global_ratio_by_instrument` के रूप में wire करें (funding_rates_by_instrument / open_interest_by_instrument / taker_flow_by_instrument in subprocess_entry.py की नकल करते हुए) और उसी पर rank करें — यही hypothesis द्वारा नामित faithful implementation है; या (b) यदि वह per-leg series वास्तव में उपलब्ध नहीं कराई जा सकती, तो run एक DATA-coverage block (not_measurable) है, न कि substituted key पर ship की जाने वाली strategy — इसे इस रूप में report करें ताकि series wire होने तक hypothesis parked रहे, अलग flow factor को चुपचाप trade न किया जाए। Do - [warning] Consistency check hypothesis 'WEEKLY' बनाम config bar_type 1-DAY को flag करता है। यह NOT वास्तविक mismatch है: hypothesis में 'weekly' का अर्थ REBALANCE/HOLD cadence है, जिसे calendar-anchored 7-day rebalance (day % rebalance_days == 0) द्वारा daily bars पर सही ढंग से implement किया गया है। Literal weekly bars का उपयोग euphoria percentile और cadence को coarsen करेगा; daily-bar + 7-day-rebalance construction weekly rotation को व्यक्त करने का सही तरीका है। पारदर्शिता के लिए नोट किया गया; verdict को प्रभावित नहीं करता। (line 380) — fix: Layer-1.5 consistency warning को शांत करने के लिए hypothesis text को वैकल्पिक रूप से 'weekly rebalance on daily bars' कहने के लिए reword करें।
Stratmill एक रिसर्च और पेपर-ट्रेडिंग टूल है, वित्तीय सलाह या ब्रोकर नहीं। बैकटेस्ट और पेपर परिणाम काल्पनिक हैं। ट्रेडिंग में नुकसान का जोखिम होता है।