Stratégies
Rotation Contrarian Cross-Sectionnelle RETAIL-CROWDING, Long-Only (BINANCE USD-M, Majors 8, WEEKLY Détenir les 3 LEAST Noms les Plus Crowded-Retail par GLOBAL Long/Short Account-Ratio — un FACTOR Pur de Sous-Détention, Pas Momentum ; Porte de Trésorerie Euphorie Systémique, 2-Paramètre)
Résultat: Abandonné
RetailCrowdingContrarianRotationLong
Rotation Contrarian Cross-Sectionnelle RETAIL-CROWDING, Long-Only (BINANCE USD-M, Majors 8, WEEKLY Détenir les 3 LEAST Noms les Plus Crowded-Retail par GLOBAL Long/Short Account-Ratio — un FACTOR Pur de Sous-Détention,…
Hypothèse
Une LONG-ONLY, cross-sectionnelle rééquilibrée chaque semaine ROTATION sur l'univers 8-majors USD-M (BTC, ETH, SOL, BNB, AVAX, LINK, ADA, XRP), sélectionnant les noms par un véritable signal NON-PRICE CROWDING : le ratio GLOBAL long/short ACCOUNT (count_long_short_ratio, un proxy de positionnement retail) issu des fichiers Binance VISION « metrics » (MULTI-YEAR à ~2020, NOT la 30-day API). Le mécanisme est un facteur UNDER-OWNERSHIP pur — détenir les majors sur lesquels le retail est LEAST crowded-long, parce que……Afficher plusAfficher moins
Une LONG-ONLY, cross-sectionnelle rééquilibrée chaque semaine ROTATION sur l'univers 8-majors USD-M (BTC, ETH, SOL, BNB, AVAX, LINK, ADA, XRP), sélectionnant les noms par un véritable signal NON-PRICE CROWDING : le ratio GLOBAL long/short ACCOUNT (count_long_short_ratio, un proxy de positionnement retail) issu des fichiers Binance VISION « metrics » (MULTI-YEAR à ~2020, NOT la 30-day API). Le mécanisme est un facteur UNDER-OWNERSHIP pur — détenir les majors sur lesquels le retail est LEAST crowded-long, parce que les noms crowded-long portent un risque latent de liquidation-long/squeeze-down tandis que les noms sous-détenus ont de la marge pour être poussés à la hausse. C'est délibérément dans la famille structurelle ONLY qui survit reproductiblement ici — long-only, majors, détention hebdomadaire top-K, faible nombre de paramètres (le Sharpe rotation momentum déployé 2.6 et le Sharpe panier carry funding négatif 1.97) — et cela contribue une clé de sélection ORTHOGONAL aux deux : pas de force relative de prix (momentum) et pas de funding (carry), mais positionnement de foule. Selon les preuves de la session, cela évite chaque mode de mort : NOT un timer directionnel mono-nom (ceux-là sont morts -100% / -43% / risk-reject), NOT un spread dollar-neutre (pas de jambe short → pas de 90% DD blowup), NOT funding/options/liquidations/pur-OHLCV. C'est distinct du SmartMoneyGatedMomentumRotation en attente (qui utilise la cohorte TOP-TRADER pour GATE un livre momentum) et du EthRetail (long-short fade mono-nom) : ceci utilise la cohorte RETAIL/globale comme clé de classement cross-sectionnelle PRIMARY dans un panier contrarian LONG-ONLY, sans aucune composante momentum. Paramètres 2, K et cadence gelés sur le template éprouvé.
Corrige le défaut exact que QA a soulevé. QA a rejeté la clé de classement parce que l'open interest est (a) pas un proxy retail — c'est le notionnel ouvert total à travers tous les participants — et (b) agnostique de la direction, puisque les longs perp agrégés égalent les shorts, donc il ne peut pas exprimer « le moins crowded-LONG ». La nouvelle clé de classement est `taker_long_short_vol_ratio` lue par jambe depuis `taker_flow_by_instrument` : c'est le volume agressif BUY divisé par le volume agressif SELL,……Afficher plusAfficher moins
Corrige le défaut exact que QA a soulevé. QA a rejeté la clé de classement parce que l'open interest est (a) pas un proxy retail — c'est le notionnel ouvert total à travers tous les participants — et (b) agnostique de la direction, puisque les longs perp agrégés égalent les shorts, donc il ne peut pas exprimer « le moins crowded-LONG ». La nouvelle clé de classement est `taker_long_short_vol_ratio` lue par jambe depuis `taker_flow_by_instrument` : c'est le volume agressif BUY divisé par le volume agressif SELL, donc elle est DIRECTIONAL par construction (une valeur élevée signifie littéralement que la foule est positionnée long sur ce nom) et c'est une mesure côté agresseur/preneur (face au retail) plutôt que le notionnel ouvert total. Elle provient aussi des mêmes fichiers VISION `metrics` Binance que l'hypothèse nomme comme source de données, avec le même historique multi-années à -2020 — seule la colonne diffère. Le classement utilise le propre z-score de chaque nom (moyenne 7j vs moyenne/SF écart-type 90j) pour que des niveaux taker structurellement différents se comparent à travers BTC et ADA, selon la leçon que des seuils absolus fixes sur des données supplémentaires ne sont pas invariants d'échelle. DISCLOSED, NOT HIDDEN : la clé littérale de l'hypothèse est le ratio GLOBAL long/short ACCOUNT par nom (`long_short_ratio`, dans le même parquet), mais le pipeline charge `metrics` pour le symbole PRIMARY uniquement, et les seuls câblages cross-sectionnels par jambe qui existent sont `funding_rates_by_instrument`, `open_interest_by_instrument` et `taker_flow_by_instrument` (subprocess_entry.py) — donc un classement 8-nom sur le ratio de comptes n'est pas exprimable dans le code de stratégie aujourd'hui ; il faut un câblage `global_ratio_by_instrument` miroir de ces trois-là, ce qui est un changement de pipeline. Des trois qui existent, le taker flow est le seul qui soit à la fois directionnel et côté retail, donc c'est le substitut fidèle, et le ratio de comptes est toujours utilisé là où il IS disponible (la porte de trésorerie euphorie BTC). Vérifié contre les vraies données avant soumission : les 8 jambes portent toutes des séries stridées de 8k points couvrant 1737-2193 jours, 208/208 rééquilibrages hebdomadaires simulés sur les 4 dernières années produisent une coupe transversale classée, et les positions tournent à travers chaque nom (67-86 choix chacun) plutôt que de rester collées à un seul — donc cela trade et n'est pas un classement dégénéré. Deux autres petites corrections reportées : la cadence hebdomadaire est maintenant ancrée au calendrier d'après le timestamp de la barre au lieu du compteur `_bar_i` relatif au processus (safe au redémarrage, identique au replay), et `exit_level` est forcé strictement en dessous de `euphoria_level` pour que l'optimiseur ne puisse pas invertir l'hystérésis en oscillation par barre. La sécurité timeout Layer-3 est inchangée et préservée : les sommes préfixées + searchsorted gardent chaque lookup par barre en O(log n), et le stride au moment du parse plafonne __init__ à ~10s mesuré pour les 8 jambes.
verification_loop : Échec de la vérification (Couche 4 — revue QA) [classe=hypothesis_mismatch]: - [edge_concern] Le sandbox est un panier de cryptos majeures long-only cohérent qui s'exécute et trade (337 trades, avg_trade_return_pct 0.69% dépasse le seuil de frais), mais total_return -20.85%, information_ratio -0.901 vs le benchmark panier équipondéré, et max_drawdown 71% (CI à 96%) suggèrent que la clé de classement taker-flow substituée ajoute de la valeur ajustée au risque négative par rapport à une……Afficher plusAfficher moins
verification_loop : Échec de la vérification (Couche 4 — revue QA) [classe=hypothesis_mismatch]: - [edge_concern] Le sandbox est un panier de cryptos majeures long-only cohérent qui s'exécute et trade (337 trades, avg_trade_return_pct 0.69% dépasse le seuil de frais), mais total_return -20.85%, information_ratio -0.901 vs le benchmark panier équipondéré, et max_drawdown 71% (CI à 96%) suggèrent que la clé de classement taker-flow substituée ajoute de la valeur ajustée au risque négative par rapport à une détention équipondérée naïve. Ceci est indicatif uniquement ; c'est en aval du défaut de la clé de classement et doit être ré-évalué par l'analyste sur une implémentation corrigée, et non bloqué ici. - [critique] La caractéristique unique définissant l'hypothèse -- réitérée tout au long du titre/description (« par GLOBAL Long/Short Account-Ratio », « count_long_short_ratio », « a Pure Under-Ownership FACTOR, Not Momentum ») -- est que le CROSS-SECTIONAL RANKING KEY est le ratio long/short ACCOUNT global par nom, un proxy de positionnement/détention retail qui est délibérément orthogonal au momentum et au funding. Le code ne NOT classe pas selon cela. _crowd_z() / _rebalance() classent les 8 majeures par `taker_long_short_vol_ratio` (volume BUY agressif / volume SELL agressif) lu depuis `taker_flow_by_instrument`. Le ratio de volume long/short taker est une mesure FLOW/AGGRESSOR, pas une mesure de détention/positionnement -- il est matériellement différent du ratio de comptes et est sans doute plus proche du flow/momentum à horizon court auquel l'hypothèse prétend explicitement être orthogonale. Le ratio de comptes nommé n'est utilisé que pour la gate secondaire d'euphoria en cash BTC (_parse_global / calculate_signal), jamais pour la sélection primaire. Selon la checklist QA, lorsque l'edge central spécifiquement nommé par l'hypothèse est absent du code, c'est critique : le facteur de sous-détention énoncé n'est pas le facteur tradé. (ligne 259) — correction : Soit (a) câbler le ratio de comptes global par instrument dans le pipeline en tant que `global_ratio_by_instrument` (en miroir de funding_rates_by_instrument / open_interest_by_instrument / taker_flow_by_instrument dans subprocess_entry.py) et classer selon cela -- c'est l'implémentation fidèle nommée par l'hypothèse ; soit (b) si cette série par jambe ne peut vraiment pas être fournie, le run est un bloc DATA-coverage (not_measurable) plutôt qu'une stratégie à livrer sur une clé substituée -- le rapporter comme tel afin que l'hypothèse soit mise en attente jusqu'à ce que la série soit câblée, au lieu de silently trader un facteur (flow) différent. Do - [avertissement] Le contrôle de cohérence signale l'hypothèse « WEEKLY » vs la config bar_type 1-DAY. Ceci n'NOT pas une véritable incompatibilité : « weekly » dans l'hypothèse se réfère à la cadence REBALANCE/HOLD, qui est correctement implémentée comme des barres quotidiennes gatées par un rééquilibrage de 7 jours ancré sur le calendrier (day % rebalance_days == 0). Utiliser des barres hebdomadaires littérales rendrait le percentile et la cadence d'euphoria plus grossiers ; la construction daily-bar + rééquilibrage de 7 jours est la bonne façon d'exprimer une rotation hebdomadaire. Noté pour transparence ; ne détermine pas le verdict. (ligne 380) — correction : Optionnellement reformuler le texte de l'hypothèse pour dire « weekly rebalance on daily bars » afin de silencer l'avertissement de cohérence de la Couche-1.5.
Implémentation
Rotation transversale acheteur uniquement, rééquilibrée chaque semaine, sur les 8 grandes capitalisations USD-M (BTC, ETH, SOL, BNB, AVAX, LINK, ADA, XRP). Le positionnement encombré de chaque nom est mesuré à partir du ratio long/short TAKER VOLUME propre à chaque nom, dans le miroir Binance Vision `metrics` (volume d’achats agressifs / volume de ventes agressives, intervalle de 5 min, historique pluriannuel), sous forme de score z de sa moyenne sur 7 jours par rapport à sa propre moyenne et son propre……Afficher plusAfficher moins
Rotation transversale acheteur uniquement, rééquilibrée chaque semaine, sur les 8 grandes capitalisations USD-M (BTC, ETH, SOL, BNB, AVAX, LINK, ADA, XRP). Le positionnement encombré de chaque nom est mesuré à partir du ratio long/short TAKER VOLUME propre à chaque nom, dans le miroir Binance Vision `metrics` (volume d’achats agressifs / volume de ventes agressives, intervalle de 5 min, historique pluriannuel), sous forme de score z de sa moyenne sur 7 jours par rapport à sa propre moyenne et son propre écart-type sur 90 jours ; les noms les plus encombrés à l’achat, au nombre de 3 LEAST, sont détenus à pondération égale, à hauteur de 30% des fonds propres chacun. Une barrière de trésorerie liée à l’euphorie systémique, fondée sur le ratio long/short ACCOUNT global PRIMARY (BTC), bascule l’ensemble du portefeuille en trésorerie lorsque ce ratio se situe dans les 15% supérieurs de sa propre distribution sur 90 jours ; l’investissement reprend au 65e percentile (hystérésis). Les rééquilibrages sont ancrés au temps calendaire (days_since_epoch % 7), et non à un compteur de barres. Acheteur uniquement, levier 1.0, aucune jambe courte.
Résultats de vérification
Échec de la vérification (Couche 4 — revue QA) [classe=hypothesis_mismatch]: - [edge_concern] Le sandbox est un panier de cryptos majeures long-only cohérent qui s'exécute et trade (337 trades, avg_trade_return_pct 0.69% dépasse le seuil de frais), mais total_return -20.85%, information_ratio -0.901 vs le benchmark panier équipondéré, et max_drawdown 71% (CI à 96%) suggèrent que la clé de classement taker-flow substituée ajoute de la valeur ajustée au risque négative par rapport à une détention équipondérée……Afficher plusAfficher moins
Échec de la vérification (Couche 4 — revue QA) [classe=hypothesis_mismatch]: - [edge_concern] Le sandbox est un panier de cryptos majeures long-only cohérent qui s'exécute et trade (337 trades, avg_trade_return_pct 0.69% dépasse le seuil de frais), mais total_return -20.85%, information_ratio -0.901 vs le benchmark panier équipondéré, et max_drawdown 71% (CI à 96%) suggèrent que la clé de classement taker-flow substituée ajoute de la valeur ajustée au risque négative par rapport à une détention équipondérée naïve. Ceci est indicatif uniquement ; c'est en aval du défaut de la clé de classement et doit être ré-évalué par l'analyste sur une implémentation corrigée, et non bloqué ici. - [critique] La caractéristique unique définissant l'hypothèse -- réitérée tout au long du titre/description (« par GLOBAL Long/Short Account-Ratio », « count_long_short_ratio », « a Pure Under-Ownership FACTOR, Not Momentum ») -- est que le CROSS-SECTIONAL RANKING KEY est le ratio long/short ACCOUNT global par nom, un proxy de positionnement/détention retail qui est délibérément orthogonal au momentum et au funding. Le code ne NOT classe pas selon cela. _crowd_z() / _rebalance() classent les 8 majeures par `taker_long_short_vol_ratio` (volume BUY agressif / volume SELL agressif) lu depuis `taker_flow_by_instrument`. Le ratio de volume long/short taker est une mesure FLOW/AGGRESSOR, pas une mesure de détention/positionnement -- il est matériellement différent du ratio de comptes et est sans doute plus proche du flow/momentum à horizon court auquel l'hypothèse prétend explicitement être orthogonale. Le ratio de comptes nommé n'est utilisé que pour la gate secondaire d'euphoria en cash BTC (_parse_global / calculate_signal), jamais pour la sélection primaire. Selon la checklist QA, lorsque l'edge central spécifiquement nommé par l'hypothèse est absent du code, c'est critique : le facteur de sous-détention énoncé n'est pas le facteur tradé. (ligne 259) — correction : Soit (a) câbler le ratio de comptes global par instrument dans le pipeline en tant que `global_ratio_by_instrument` (en miroir de funding_rates_by_instrument / open_interest_by_instrument / taker_flow_by_instrument dans subprocess_entry.py) et classer selon cela -- c'est l'implémentation fidèle nommée par l'hypothèse ; soit (b) si cette série par jambe ne peut vraiment pas être fournie, le run est un bloc DATA-coverage (not_measurable) plutôt qu'une stratégie à livrer sur une clé substituée -- le rapporter comme tel afin que l'hypothèse soit mise en attente jusqu'à ce que la série soit câblée, au lieu de silently trader un facteur (flow) différent. Do - [avertissement] Le contrôle de cohérence signale l'hypothèse « WEEKLY » vs la config bar_type 1-DAY. Ceci n'NOT pas une véritable incompatibilité : « weekly » dans l'hypothèse se réfère à la cadence REBALANCE/HOLD, qui est correctement implémentée comme des barres quotidiennes gatées par un rééquilibrage de 7 jours ancré sur le calendrier (day % rebalance_days == 0). Utiliser des barres hebdomadaires littérales rendrait le percentile et la cadence d'euphoria plus grossiers ; la construction daily-bar + rééquilibrage de 7 jours est la bonne façon d'exprimer une rotation hebdomadaire. Noté pour transparence ; ne détermine pas le verdict. (ligne 380) — correction : Optionnellement reformuler le texte de l'hypothèse pour dire « weekly rebalance on daily bars » afin de silencer l'avertissement de cohérence de la Couche-1.5.
Historique des itérations
Échec de la vérification (couche 2 — scénarios synthétiques) : Paramètres utilisés : ['top_k', 'exit_level', 'min_notional', 'per_name_frac', 'euphoria_level', 'rebalance_days', 'euphoria_window'] Vérifiez que __init__ définit tous les attributs à partir de self.parameters.get(). - steady_uptrend : TypeError : RetailCrowdingContrarianRotationLong._asof() accepte 3 arguments positionnels, mais 4 ont été fournis (horodatage de la barre : 1735691940000) - steady_downtrend : TypeError :……Afficher plusAfficher moins
Échec de la vérification (couche 2 — scénarios synthétiques) : Paramètres utilisés : ['top_k', 'exit_level', 'min_notional', 'per_name_frac', 'euphoria_level', 'rebalance_days', 'euphoria_window'] Vérifiez que __init__ définit tous les attributs à partir de self.parameters.get(). - steady_uptrend : TypeError : RetailCrowdingContrarianRotationLong._asof() accepte 3 arguments positionnels, mais 4 ont été fournis (horodatage de la barre : 1735691940000) - steady_downtrend : TypeError : RetailCrowdingContrarianRotationLong._asof() accepte 3 arguments positionnels, mais 4 ont été fournis (horodatage de la barre : 1735691940000) - flat_ranging : TypeError : RetailCrowdingContrarianRotationLong._asof() accepte 3 arguments positionnels, mais 4 ont été fournis (horodatage de la barre : 1735691940000) - volatility_spike : TypeError : RetailCrowdingContrarianRotationLong._asof() accepte 3 arguments positionnels, mais 4 ont été fournis (horodatage de la barre : 1735691940000) - zero_volume : TypeError : RetailCrowdingContrarianRotationLong._asof() accepte 3 arguments positionnels, mais 4 ont été fournis (horodatage de la barre : 1735691940000) - price_gap : TypeError : RetailCrowdingContrarianRotationLong._asof() accepte 3 arguments positionnels, mais 4 ont été fournis (horodatage de la barre : 1735691940000)
Échec de la vérification (couche 3 — backtest en bac à sable) : le test rapide a dépassé la limite de temps réel de 300s. Cela signifie presque toujours qu’un traitement par barre évolue avec la longueur de l’historique — par exemple, reparcourir toute la série de financement/données supplémentaires, ou reconstruire une liste et appeler min()/sorted() dans calculate_signal()/on_bar() à chaque barre. Pré-calculer les tableaux d’horodatages triés ONCE dans __init__ et utiliser bisect, ou mettre en cache les recherches indexées par horodatage, afin que le coût par barre soit O(log n) plutôt que O(n).
Échec de la vérification (Couche 4 — revue QA) [classe=hypothesis_mismatch]: - [edge_concern] Le sandbox est un smoke test et non un motif d'échec, mais à noter : metrics_reliable=false, Sharpe (0.10) incohérent en signe avec total_return (-34.3%), MDD 70%, et le book OI-crowding perd l'essentiel dans le tercile de volatilité stressé (-37.8%). Si le mécanisme survit à la revue backtest, vérifiez d'abord si le z-rank OI présente un quelconque edge directionnel, étant donné que OI est agnostique à la direction. -……Afficher plusAfficher moins
Échec de la vérification (Couche 4 — revue QA) [classe=hypothesis_mismatch]: - [edge_concern] Le sandbox est un smoke test et non un motif d'échec, mais à noter : metrics_reliable=false, Sharpe (0.10) incohérent en signe avec total_return (-34.3%), MDD 70%, et le book OI-crowding perd l'essentiel dans le tercile de volatilité stressé (-37.8%). Si le mécanisme survit à la revue backtest, vérifiez d'abord si le z-rank OI présente un quelconque edge directionnel, étant donné que OI est agnostique à la direction. - L'edge central de l'hypothèse est un rang transversal sur le GLOBAL LONG/SHORT ACCOUNT RATIO par nom — un facteur directionnel de sous-détention retail (« détenir les noms sur lesquels le retail est LEAST crowded-LONG »). Le code classe plutôt selon le z-score de PERP OPEN INTEREST par nom et détient les 3 plus bas. C'est un mécanisme substitué qui ne préserve pas l'économie : OI n'est pas un proxy retail (c'est le notionnel ouvert total tous participants), et OI est DIRECTION-BLIND (longs agrégés == shorts en perps), donc il ne peut pas exprimer « le moins crowded-long ». L'edge spécifique nommé de l'hypothèse est absent du code → critique.
Échec de la vérification (couche 4 — revue QA) [class=hypothesis_mismatch] : - [edge_concern] Le bac à sable semble sain (+93%, Sharpe 0.77, PF 1.55, avg_trade_return_pct 6.63%), précisément parce que le code implémente une rotation de portage fondée sur le financement, dont le développeur confirme qu’elle recoupe le panier de portage à financement négatif déjà déployé. Ces bons résultats plaident donc contre la promotion d’une quasi-copie d’une stratégie active, et non en faveur du facteur de positionnement de……Afficher plusAfficher moins
Échec de la vérification (couche 4 — revue QA) [class=hypothesis_mismatch] : - [edge_concern] Le bac à sable semble sain (+93%, Sharpe 0.77, PF 1.55, avg_trade_return_pct 6.63%), précisément parce que le code implémente une rotation de portage fondée sur le financement, dont le développeur confirme qu’elle recoupe le panier de portage à financement négatif déjà déployé. Ces bons résultats plaident donc contre la promotion d’une quasi-copie d’une stratégie active, et non en faveur du facteur de positionnement de la foule orthogonal que l’hypothèse devait ajouter. Avis consultatif ; le blocage concerne la fidélité. - Le cœur de l’avantage n’est pas implémenté et le substitut est le mécanisme que l’hypothèse EXCLUDES. L’hypothèse classe les noms selon leur ratio long/short GLOBAL ACCOUNT propre à chacun (positionnement encombré des particuliers), explicitement « pas le financement (portage)... orthogonal au momentum et au financement ». Le code classe l’ensemble transversal selon FUNDING propre à chaque nom (la valeur la plus basse = nom détenu) — un classement de portage fondé sur le financement, dont le développeur reconnaît qu’il recoupe le panier de portage déployé. La clé de positionnement fondée sur le ratio des comptes est absente et impossible à implémenter (les métriques sont connectées uniquement pour le symbole principal ; aucun metrics_by_instrument). - La cadence de rééquilibrage est ancrée à un compteur de barres relatif au processus (self._bar_i % rebalance_days), et non à l’horodatage de la barre. Les redémarrages réinitialisent _bar_i et décalent la grille de rotation hebdomadaire par rapport à tout jour fixe du calendrier ; un rejeu de parité ne peut pas reproduire les dates de rotation. Point mineur -20 de forme (pas de déclenchement sentinelle/première barre). Calculer à partir du nombre de jours depuis l’époque ou d’un jour fixe de la semaine.
Raison d'abandon
verification_loop : Vérification échouée (Layer 4 — revue QA) [class=hypothesis_mismatch] : - [edge_concern] Sandbox est un panier majors long-only cohérent qui tourne et trade (337 trades, avg_trade_return_pct 0.69% dépasse le plancher de frais), mais total_return -20.85%, information_ratio -0.901 vs le benchmark panier équipondéré, et max_drawdown 71% (CI à 96%) suggèrent que la clé de classement taker-flow substituée ajoute une valeur ajustée au risque négative sur une détention équipondérée naïve. C'est……Afficher plusAfficher moins
verification_loop : Vérification échouée (Layer 4 — revue QA) [class=hypothesis_mismatch] : - [edge_concern] Sandbox est un panier majors long-only cohérent qui tourne et trade (337 trades, avg_trade_return_pct 0.69% dépasse le plancher de frais), mais total_return -20.85%, information_ratio -0.901 vs le benchmark panier équipondéré, et max_drawdown 71% (CI à 96%) suggèrent que la clé de classement taker-flow substituée ajoute une valeur ajustée au risque négative sur une détention équipondérée naïve. C'est consultatif uniquement ; c'est en aval du mismatch de clé de classement et doit être ré-évalué par l'analyste sur une implémentation corrigée, pas bloqué ici. - [critical] La caractéristique unique définissant l'hypothèse — reformulée tout au long du titre/description (« par GLOBAL Long/Short Account-Ratio », « count_long_short_ratio », « un FACTOR pur de sous-détention, pas momentum ») — est que le CROSS-SECTIONAL RANKING KEY est le ratio long/short ACCOUNT global par nom, un proxy de positionnement/détention retail qui est délibérément orthogonal au momentum et au funding. Le code NOT classe là-dessus. _crowd_z() / _rebalance() classent les 8 majors par `taker_long_short_vol_ratio` (volume agressif BUY / volume agressif SELL) lu depuis `taker_flow_by_instrument`. Le ratio volume long/short taker est une mesure de FLOW/AGGRESSOR, pas une mesure de détention/positionnement — il est matériellement différent du ratio de comptes et est sans doute plus proche du flow/momentum court-horizon auquel l'hypothèse prétend explicitement être orthogonale. Le ratio de comptes nommé n'est utilisé que pour la porte de trésorerie euphorie BTC secondaire (_parse_global / calculate_signal), jamais pour la sélection primaire. Selon la checklist QA, quand l'arête centrale nommée spécifique de l'hypothèse est absente du code, c'est critique : le facteur de sous-détention énoncé n'est pas le facteur qui est tradé. (line 259) — fix : Soit (a) câbler le ratio de comptes global par instrument dans le pipeline comme `global_ratio_by_instrument` (en miroir de funding_rates_by_instrument / open_interest_by_instrument / taker_flow_by_instrument dans subprocess_entry.py) et classer là-dessus — c'est l'implémentation fidèle que l'hypothèse nomme ; soit (b) si cette série par jambe ne peut vraiment pas être fournie, le run est un bloc DATA-coverage (not_measurable) plutôt qu'une stratégie à livrer sur une clé substituée — le signaler comme tel pour que l'hypothèse soit parquée jusqu'à ce que la série soit câblée, au lieu de silencieusement trader un facteur différent (flow). Do - [warning] Le contrôle de cohérence signale l'hypothèse « WEEKLY » vs config bar_type 1-DAY. C'est NOT un vrai mismatch : « weekly » dans l'hypothèse réfère à la cadence REBALANCE/HOLD, qui est correctement implémentée comme des barres journalières gated par un rééquilibrage 7-jour ancré au calendrier (jour % rebalance_days == 0). Utiliser des barres hebdomadaires littérales grossirait le percentile d'euphorie et la cadence ; la construction barre journalière + rééquilibrage 7-jour est la bonne façon d'exprimer une rotation hebdomadaire. Noté pour transparence ; ne pilote pas le verdict. (line 380) — fix : Optionnellement reformuler le texte de l'hypothèse pour dire « rééquilibrage hebdomadaire sur barres journalières » pour faire taire l'avertissement de cohérence Layer-1.5.
Stratmill est un outil de recherche et de paper trading, pas un conseil financier ni un courtier. Les résultats de backtest et de paper trading sont hypothétiques. Le trading comporte un risque de perte.