Strategier
Tverrsnitts-RETAIL-CROWDING Kontrarisk Rotasjon, Kun Long (BINANCE USD-M, 8 Majors, WEEKLY Hold de 3 LEAST Retail-Crowdede Navnene etter GLOBAL Long/Short Account-Ratio — en Ren Under-Eierskaps-FACTOR, Ikke Momentum; Systemisk-Eufori Kontantport, 2-Parameter)
Utfall: Forlatt
RetailCrowdingContrarianRotationLong
Tverrsnitts-RETAIL-CROWDING Kontrarisk Rotasjon, Kun Long (BINANCE USD-M, 8 Majors, WEEKLY Hold de 3 LEAST Retail-Crowdede Navnene etter GLOBAL Long/Short Account-Ratio — en Ren Under-Eierskaps-FACTOR, Ikke Momentum;…
Hypotese
En LONG-ONLY, ukentlig rebalansert tverrsnitts-ROTATION over 8-major USD-M-universet (BTC, ETH, SOL, BNB, AVAX, LINK, ADA, XRP), som velger navn basert på et genuint NON-PRICE CROWDING-signal: GLOBAL long/short ACCOUNT-forholdet (count_long_short_ratio, en retail-posisjonerings-proxy) fra Binance VISION 'metrics'-filene (MULTI-YEAR til ~2020, NOT 30-dagers API). Mekanismen er en ren UNDER-OWNERSHIP-faktor — hold de majors som retail er LEAST crowded-long på, fordi crowded-long-navn bærer latent……Vis merVis mindre
En LONG-ONLY, ukentlig rebalansert tverrsnitts-ROTATION over 8-major USD-M-universet (BTC, ETH, SOL, BNB, AVAX, LINK, ADA, XRP), som velger navn basert på et genuint NON-PRICE CROWDING-signal: GLOBAL long/short ACCOUNT-forholdet (count_long_short_ratio, en retail-posisjonerings-proxy) fra Binance VISION 'metrics'-filene (MULTI-YEAR til ~2020, NOT 30-dagers API). Mekanismen er en ren UNDER-OWNERSHIP-faktor — hold de majors som retail er LEAST crowded-long på, fordi crowded-long-navn bærer latent long-likvidasjons-/squeeze-ned-risiko, mens underåpne navn har rom til å bli budt opp. Dette er bevisst i den ONLY strukturelle familien som reproduserbart overlever her — long-only, majors, ukentlig hold av top-K, lavt antall parametre (den utrullede momentum-rotasjonen Sharpe 2.6 og negativ-funding carry-kurven Sharpe 1.97) — og den bidrar med en seleksjonsnøkkel ORTHOGONAL til begge: ikke pris relativ styrke (momentum) og ikke funding (carry), men crowd-posisjonering. I henhold til sesjonens bevis unngår den enhver dødsmodus: NOT en enkeltnavns retningsbestemt timer (disse døde -100% / -43% / risiko-avslag), NOT en dollar-neutral spread (ingen short-ben → ingen 90% DD-eksplosjon), NOT funding/opsjoner/likvidasjoner/rene-OHLCV. Den er forskjellig fra den ventende SmartMoneyGatedMomentumRotation (som bruker TOP-TRADER-kohorten til å GATE en momentum-portefølje) og fra EthRetail (enkeltnavns long-short-fade): denne bruker RETAIL/globale kohorten som den PRIMARY tverrsnitts-rangeringsnøkkelen i en kontrarisk LONG-ONLY-kurv, uten noen momentum-komponent overhodet. 2 parametre, K og kadens frosset til den beviste malen.
Fikser det eksakte problemet QA påpekte. QA avviste rangeringsnøkkelen fordi open interest er (a) ikke en retail-proxy — det er total åpen notional over alle deltakere — og (b) retningsblind, siden aggregert perp long er lik short, så den kan ikke uttrykke 'minst crowded-LONG'. Den nye rangeringsnøkkelen er `taker_long_short_vol_ratio` lest per ben fra `taker_flow_by_instrument`: det er aggressivt BUY-volum delt på aggressivt SELL-volum, så den er DIRECTIONAL i sin konstruksjon (en høy verdi betyr bokstavelig……Vis merVis mindre
Fikser det eksakte problemet QA påpekte. QA avviste rangeringsnøkkelen fordi open interest er (a) ikke en retail-proxy — det er total åpen notional over alle deltakere — og (b) retningsblind, siden aggregert perp long er lik short, så den kan ikke uttrykke 'minst crowded-LONG'. Den nye rangeringsnøkkelen er `taker_long_short_vol_ratio` lest per ben fra `taker_flow_by_instrument`: det er aggressivt BUY-volum delt på aggressivt SELL-volum, så den er DIRECTIONAL i sin konstruksjon (en høy verdi betyr bokstavelig talt at crowden lener long i det navnet) og det er et aggressor/taker-side (retail-vendt) mål snarere enn total åpen notional. Den kommer også fra nøyaktig de samme Binance VISION `metrics`-filene som hypotesen nevner som sin datakilde, med den samme flerårige historikken til-2020 — bare kolonnen er forskjellig. Rangeringen bruker hvert navns egen z-score (7d gjennomsnitt vs 90d gjennomsnitt/sd) slik at strukturelt forskjellige taker-nivåer kan sammenlignes over BTC og ADA, i tråd med lærdommen om at faste absolutte grenser på supplerende data ikke er skalainvariante. DISCLOSED, NOT HIDDEN: hypotesens ordrette nøkkel er den per-navn GLOBAL long/short ACCOUNT-forholdet (`long_short_ratio`, i den samme parquet-filen), men pipelinen laster `metrics` bare for PRIMARY-symbolet, og de eneste per-ben tverrsnitts-koblingene som finnes er `funding_rates_by_instrument`, `open_interest_by_instrument` og `taker_flow_by_instrument` (subprocess_entry.py) — så en 8-navns rangering på kontoforholdet kan ikke uttrykkes i strategikoden i dag; det krever en `global_ratio_by_instrument`-kobling som speiler de tre, noe som er en pipeline-endring. Av de tre som finnes, er taker-flow den eneste som er både retningsbestemt og retail-side, så den er den trofaste erstatningen, og kontoforholdet brukes fortsatt der det IS tilgjengelig (den BTC eufori-kontantporten). Verifisert mot de reelle dataene før innsending: alle 8 ben har 8k-punkts strided serier som spenner over 1737-2193 dager, 208/208 simulerte ukentlige rebalanseringer over de siste 4 årene produserer et rangert tverrsnitt, og posisjonene roterer over alle navn (67-86 valg hver) i stedet for å holde seg til ett — så dette handler og er ikke en degenerert rangering. To ytterligere mindre fikser videreført: den ukentlige kadensen er nå kalenderforankret til barens tidsstempel i stedet for den prosessrelative `_bar_i`-telleren (restart-sikker, replay-identisk), og `exit_level` tvinges strengt under `euphoria_level` slik at optimaliseren ikke kan invertere hysteresen til en per-bar-oscillering. Layer-3 timeout-sikkerhet er uendret og bevart: prefikssummer + searchsorted holder hvert per-bar-oppslag på O(log n), og parse-tidsstriding begrenser __init__ til ~10s målt for alle 8 ben.
verification_loop: Verifisering mislyktes (Lag 4 — QA-gjennomgang) [klasse=hypothesis_mismatch]: - [edge_concern] Sandkasse er en koherent long-only kurv av majors som kjører og handler (337 handler, avg_trade_return_pct 0.69% klarer gebyrgulvet), men total_return -20.85%, information_ratio -0.901 vs. equal-weight-kurv-benchmarken, og max_drawdown 71% (CI til 96%) tyder på at den substituerte taker-flow-rangeringsnøkkelen gir negativ risikojustert verdi sammenlignet med et naivt equal-weight hold. Dette er kun……Vis merVis mindre
verification_loop: Verifisering mislyktes (Lag 4 — QA-gjennomgang) [klasse=hypothesis_mismatch]: - [edge_concern] Sandkasse er en koherent long-only kurv av majors som kjører og handler (337 handler, avg_trade_return_pct 0.69% klarer gebyrgulvet), men total_return -20.85%, information_ratio -0.901 vs. equal-weight-kurv-benchmarken, og max_drawdown 71% (CI til 96%) tyder på at den substituerte taker-flow-rangeringsnøkkelen gir negativ risikojustert verdi sammenlignet med et naivt equal-weight hold. Dette er kun rådgivende; det er nedstrøms for rangeringsnøkkel-mismatchen og bør revurderes av analytikeren på en korrigert implementasjon, ikke blokkeres her. - [critical] Hypotesens eneste definerende egenskap -- gjentatt gjennom tittel/beskrivelse ('by GLOBAL Long/Short Account-Ratio', 'count_long_short_ratio', 'a Pure Under-Ownership FACTOR, Not Momentum') -- er at CROSS-SECTIONAL RANKING KEY er det per-navn globale long/short ACCOUNT-forholdet, en retail-posisjonerings-/eierskapsproxy som bevisst er ortogonal til momentum og funding. Koden gjør NOT rangere på det. _crowd_z() / _rebalance() rangerer 8-majors etter `taker_long_short_vol_ratio` (aggressivt BUY-volum / aggressivt SELL-volum) lest fra `taker_flow_by_instrument`. Taker long/short-volumforhold er et FLOW/AGGRESSOR-mål, ikke et eierskaps-/posisjoneringsmål -- det er vesentlig forskjellig fra account-ratioen og er trolig nærmere det korthorisonts flow-/momentumet hypotesen eksplisitt hevder å være ortogonal til. Den navngitte account-ratioen brukes bare for den sekundære BTC-eufori-kontantsperren (_parse_global / calculate_signal), aldri for primærutvelgelsen. I henhold til QA-sjekklisten er det kritisk når hypotesens spesifikt navngitte kjernefordel mangler i koden: den oppgitte undereierskapsfaktoren er ikke faktoren som handles. (linje 259) — fiks: Enten (a) koble den per-instrument globale account-ratioen inn i pipelinen som `global_ratio_by_instrument` (i tråd med funding_rates_by_instrument / open_interest_by_instrument / taker_flow_by_instrument i subprocess_entry.py) og rangere på den -- dette er den tro implementasjonen hypotesen navngir; eller (b) hvis den per-leg-serien virkelig ikke kan skaffes, er kjøringen en DATA-dekningsblokkering (not_measurable) fremfor en strategi å levere på en substituert nøkkel -- rapporter det som det, slik at hypotesen parkeres til serien er koblet inn, i stedet for stille å handle en annen (flow-)faktor. Do - [warning] Konsistenssjekken flagger hypotesen 'WEEKLY' vs. konfig bar_type 1-DAY. Dette er NOT en reell mismatch: 'weekly' i hypotesen refererer til REBALANCE/HOLD-kadensen, som er korrekt implementert som daglige barer styrt av en kalenderforankret 7-dagers rebalansering (day % rebalance_days == 0). Å bruke bokstavelig ukentlige barer ville grovere euforipersentilen og kadensen; konstruksjonen med daglig bar + 7-dagers rebalansering er den korrekte måten å uttrykke en ukentlig rotasjon på. Notert for åpenhet; påvirker ikke konklusjonen. (linje 380) — fiks: Eventuelt omformuler hypoteseteksten til å si 'weekly rebalance on daily bars' for å dempe Layer-1.5-konsistensvarselet.
Implementasjon
Kun long, ukentlig rebalansert tverrsnittsrotasjon over 8 USD-M-majors (BTC, ETH, SOL, BNB, AVAX, LINK, ADA, XRP). Hvert navns crowding måles fra per-navn TAKER long/short VOLUME-forholdet i Binance Vision `metrics`-speilet (aggressivt kjøpsvolum / aggressivt salgsvolum, 5-min, flerårig) som en z-score av dets 7-dagers gjennomsnitt mot dets eget 90-dagers gjennomsnitt og sd; de 3 LEAST mest crowded-long-navnene holdes med lik vekt på 30% av kapitalen hver. En systemisk-eufori-kontantport bygget fra PRIMARY (BTC) globale long/short ACCOUNT-forhold roterer hele porteføljen til kontanter når det forholdet ligger i topp 15% av sin egen 90-dagers distribusjon, og reinvesterer ved 65. persentil (hysterese). Rebalanseringer er forankret til kalendertid (days_since_epoch % 7), ikke til en bar-teller. Kun long, giring 1.0, ingen short-ben.
Verifiseringsresultater
Verifisering mislyktes (Lag 4 — QA-gjennomgang) [klasse=hypothesis_mismatch]: - [edge_concern] Sandkasse er en koherent long-only kurv av majors som kjører og handler (337 handler, avg_trade_return_pct 0.69% klarer gebyrgulvet), men total_return -20.85%, information_ratio -0.901 vs. equal-weight-kurv-benchmarken, og max_drawdown 71% (CI til 96%) tyder på at den substituerte taker-flow-rangeringsnøkkelen gir negativ risikojustert verdi sammenlignet med et naivt equal-weight hold. Dette er kun rådgivende; det er……Vis merVis mindre
Verifisering mislyktes (Lag 4 — QA-gjennomgang) [klasse=hypothesis_mismatch]: - [edge_concern] Sandkasse er en koherent long-only kurv av majors som kjører og handler (337 handler, avg_trade_return_pct 0.69% klarer gebyrgulvet), men total_return -20.85%, information_ratio -0.901 vs. equal-weight-kurv-benchmarken, og max_drawdown 71% (CI til 96%) tyder på at den substituerte taker-flow-rangeringsnøkkelen gir negativ risikojustert verdi sammenlignet med et naivt equal-weight hold. Dette er kun rådgivende; det er nedstrøms for rangeringsnøkkel-mismatchen og bør revurderes av analytikeren på en korrigert implementasjon, ikke blokkeres her. - [critical] Hypotesens eneste definerende egenskap -- gjentatt gjennom tittel/beskrivelse ('by GLOBAL Long/Short Account-Ratio', 'count_long_short_ratio', 'a Pure Under-Ownership FACTOR, Not Momentum') -- er at CROSS-SECTIONAL RANKING KEY er det per-navn globale long/short ACCOUNT-forholdet, en retail-posisjonerings-/eierskapsproxy som bevisst er ortogonal til momentum og funding. Koden gjør NOT rangere på det. _crowd_z() / _rebalance() rangerer 8-majors etter `taker_long_short_vol_ratio` (aggressivt BUY-volum / aggressivt SELL-volum) lest fra `taker_flow_by_instrument`. Taker long/short-volumforhold er et FLOW/AGGRESSOR-mål, ikke et eierskaps-/posisjoneringsmål -- det er vesentlig forskjellig fra account-ratioen og er trolig nærmere det korthorisonts flow-/momentumet hypotesen eksplisitt hevder å være ortogonal til. Den navngitte account-ratioen brukes bare for den sekundære BTC-eufori-kontantsperren (_parse_global / calculate_signal), aldri for primærutvelgelsen. I henhold til QA-sjekklisten er det kritisk når hypotesens spesifikt navngitte kjernefordel mangler i koden: den oppgitte undereierskapsfaktoren er ikke faktoren som handles. (linje 259) — fiks: Enten (a) koble den per-instrument globale account-ratioen inn i pipelinen som `global_ratio_by_instrument` (i tråd med funding_rates_by_instrument / open_interest_by_instrument / taker_flow_by_instrument i subprocess_entry.py) og rangere på den -- dette er den tro implementasjonen hypotesen navngir; eller (b) hvis den per-leg-serien virkelig ikke kan skaffes, er kjøringen en DATA-dekningsblokkering (not_measurable) fremfor en strategi å levere på en substituert nøkkel -- rapporter det som det, slik at hypotesen parkeres til serien er koblet inn, i stedet for stille å handle en annen (flow-)faktor. Do - [warning] Konsistenssjekken flagger hypotesen 'WEEKLY' vs. konfig bar_type 1-DAY. Dette er NOT en reell mismatch: 'weekly' i hypotesen refererer til REBALANCE/HOLD-kadensen, som er korrekt implementert som daglige barer styrt av en kalenderforankret 7-dagers rebalansering (day % rebalance_days == 0). Å bruke bokstavelig ukentlige barer ville grovere euforipersentilen og kadensen; konstruksjonen med daglig bar + 7-dagers rebalansering er den korrekte måten å uttrykke en ukentlig rotasjon på. Notert for åpenhet; påvirker ikke konklusjonen. (linje 380) — fiks: Eventuelt omformuler hypoteseteksten til å si 'weekly rebalance on daily bars' for å dempe Layer-1.5-konsistensvarselet.
Iterasjonshistorikk
Verifisering mislyktes (Layer 2 — syntetiske scenarioer): Brukte parametre: ['top_k', 'exit_level', 'min_notional', 'per_name_frac', 'euphoria_level', 'rebalance_days', 'euphoria_window'] Kontroller at __init__ setter alle attributter fra self.parameters.get(). - steady_uptrend: TypeError: RetailCrowdingContrarianRotationLong._asof() takes 3 positional arguments but 4 were given (bar timestamp: 1735691940000) - steady_downtrend: TypeError: RetailCrowdingContrarianRotationLong._asof() takes 3 positional arguments……Vis merVis mindre
Verifisering mislyktes (Layer 2 — syntetiske scenarioer): Brukte parametre: ['top_k', 'exit_level', 'min_notional', 'per_name_frac', 'euphoria_level', 'rebalance_days', 'euphoria_window'] Kontroller at __init__ setter alle attributter fra self.parameters.get(). - steady_uptrend: TypeError: RetailCrowdingContrarianRotationLong._asof() takes 3 positional arguments but 4 were given (bar timestamp: 1735691940000) - steady_downtrend: TypeError: RetailCrowdingContrarianRotationLong._asof() takes 3 positional arguments but 4 were given (bar timestamp: 1735691940000) - flat_ranging: TypeError: RetailCrowdingContrarianRotationLong._asof() takes 3 positional arguments but 4 were given (bar timestamp: 1735691940000) - volatility_spike: TypeError: RetailCrowdingContrarianRotationLong._asof() takes 3 positional arguments but 4 were given (bar timestamp: 1735691940000) - zero_volume: TypeError: RetailCrowdingContrarianRotationLong._asof() takes 3 positional arguments but 4 were given (bar timestamp: 1735691940000) - price_gap: TypeError: RetailCrowdingContrarianRotationLong._asof() takes 3 positional arguments but 4 were given (bar timestamp: 1735691940000)
Verifisering mislyktes (Layer 3 — sandkasse-backtest): røyktesten overskred 300s wall-clock-grensen. Dette betyr nesten alltid per-bar-arbeid som skalerer med historikken — f.eks. å skanne hele funding-/supplerende-serien på nytt, eller å bygge opp en liste på nytt og kalle min()/sorted() inne i calculate_signal()/on_bar() på hver bar. Forhåndsberegn sorterte tidsstempel-arrays ONCE i __init__ og bruk bisect, eller mellomlagre oppslag nøkkelsatt på tidsstempel, slik at per-bar-kostnaden er O(log n) og ikke O(n).
Verifisering mislyktes (Lag 4 — QA-gjennomgang) [klasse=hypothesis_mismatch]: - [edge_concern] Sandkasse er en røyktest og ikke en avvisningsgrunn, men merk: metrics_reliable=false, Sharpe (0.10) fortegnsinkoherent med total_return (-34.3%), MDD 70%, og OI-crowding-porteføljen taper mest i den stressede vol-tertilen (-37.8%). Hvis mekanismen overlever til backtest-gjennomgang, sjekk først om OI z-rangeringen i det hele tatt har noen retningsbestemt fordel gitt at OI er retningsblind. - Hypotesens kjernefordel er en tverrsnittsrangering på GLOBAL LONG/SHORT ACCOUNT RATIO per navn — en retningsbestemt faktor for retail-undereierskap ('hold navnene retail er LEAST crowded-LONG på'). Koden rangerer i stedet på per-navn PERP OPEN INTEREST z-score og holder de 3 laveste. Dette er en substituert mekanisme som ikke bevarer økonomien: OI er ikke en retail-proxy (det er total åpen notional på tvers av alle deltakere), og OI er DIRECTION-BLIND (aggregerte longs == shorts i perps), så det kan ikke uttrykke 'minst crowded-long.' Hypotesens spesifikt navngitte fordel mangler i koden → kritisk.
Verifisering mislyktes (Layer 4 — QA-gjennomgang) [class=hypothesis_mismatch]: - [edge_concern] Sandkassen ser sunn ut (+93%, Sharpe 0.77, PF 1.55, avg_trade_return_pct 6.63%) nettopp fordi koden er en funding-carry-rotasjon utvikleren bekrefter overlapper med den allerede utrullede negativ-funding carry-kurven — så de gode tallene argumenterer mot å forfremme et nær-duplikat av en live strategi, ikke den ortogonale crowding-faktoren hypotesen var ment å tilføre. Rådgivende; blokkeringen er troskap. -……Vis merVis mindre
Verifisering mislyktes (Layer 4 — QA-gjennomgang) [class=hypothesis_mismatch]: - [edge_concern] Sandkassen ser sunn ut (+93%, Sharpe 0.77, PF 1.55, avg_trade_return_pct 6.63%) nettopp fordi koden er en funding-carry-rotasjon utvikleren bekrefter overlapper med den allerede utrullede negativ-funding carry-kurven — så de gode tallene argumenterer mot å forfremme et nær-duplikat av en live strategi, ikke den ortogonale crowding-faktoren hypotesen var ment å tilføre. Rådgivende; blokkeringen er troskap. - Kjernefortrinnet er ikke implementert, og substitutten er nøyaktig den mekanismen hypotesen EXCLUDES. Hypotesen rangerer etter per-navn GLOBAL long/short ACCOUNT-forhold (retail crowding), uttrykkelig 'not funding (carry)... orthogonal to momentum and funding'. Koden rangerer tverrsnittet etter per-navn FUNDING (lavest = holdt) — en funding-carry-rangering utvikleren innrømmer overlapper med den utrullede carry-kurven. Kontoforhold-crowding-nøkkelen er fraværende og ikke gjennomførbar (metrics koblet bare for primærsymbolet; ingen metrics_by_instrument). - Rebalanseringskadensen er forankret til en prosessrelativ bar-teller (self._bar_i % rebalance_days), ikke bar-tidsstempelet. Restarter nullstiller _bar_i og driver det ukentlige rotasjonsrutenettet bort fra en fast kalenderdag; paritetsreplay kan ikke reprodusere rotasjonsdatoer. Mildere punkt-20-form (ingen sentinel-/first-bar-utløsning). Avled fra dager-siden-epoke eller en fast ukedag.
Årsak til forkastelse
verification_loop: Verifisering mislyktes (Layer 4 — QA-gjennomgang) [class=hypothesis_mismatch]: - [edge_concern] Sandkassen er en koherent long-only majors-kurv som kjører og handler (337 handler, avg_trade_return_pct 0.69% klarer avgiftsgulvet), men total_return -20.85%, information_ratio -0.901 mot benchmarken for likevekts-kurven, og max_drawdown 71% (CI til 96%) antyder at den substituerte taker-flow-rangeringsnøkkelen tilfører negativ risikojustert verdi over en naiv likevektsholding. Dette er kun……Vis merVis mindre
verification_loop: Verifisering mislyktes (Layer 4 — QA-gjennomgang) [class=hypothesis_mismatch]: - [edge_concern] Sandkassen er en koherent long-only majors-kurv som kjører og handler (337 handler, avg_trade_return_pct 0.69% klarer avgiftsgulvet), men total_return -20.85%, information_ratio -0.901 mot benchmarken for likevekts-kurven, og max_drawdown 71% (CI til 96%) antyder at den substituerte taker-flow-rangeringsnøkkelen tilfører negativ risikojustert verdi over en naiv likevektsholding. Dette er kun rådgivende; det er nedstrøms for rangeringsnøkkel-avviket og bør vurderes på nytt av analytikeren på en korrigert implementasjon, ikke blokkeres her. - [critical] Hypotesens ene definerende egenskap -- gjentatt gjennom tittel/beskrivelse ('by GLOBAL Long/Short Account-Ratio', 'count_long_short_ratio', 'a Pure Under-Ownership FACTOR, Not Momentum') -- er at CROSS-SECTIONAL RANKING KEY er det per-navn globale long/short ACCOUNT-forholdet, en retail-posisjonerings-/eierskaps-proxy som med hensikt er ortogonal til momentum og funding. Koden gjør NOT rangering på det. _crowd_z() / _rebalance() rangerer 8-majorsene etter `taker_long_short_vol_ratio` (aggressivt BUY-volum / aggressivt SELL-volum) lest fra `taker_flow_by_instrument`. Taker long/short-volumforhold er et FLOW/AGGRESSOR-mål, ikke et eierskaps-/posisjoneringsmål -- det er vesentlig forskjellig fra kontoforholdet og er trolig nærmere den korthorisont-flyten/momentumet hypotesen uttrykkelig hevder å være ortogonal til. Det navngitte kontoforholdet brukes bare for den sekundære BTC eufori-kontantporten (_parse_global / calculate_signal), aldri for den primære seleksjonen. I henhold til QA-sjekklisten, når hypotesens spesifikt navngitte kjernefortrinn er fraværende i koden, er dette kritisk: den angitte under-eierskapsfaktoren er ikke faktoren som handles. (linje 259) — fiks: Enten (a) koble det per-instrument globale kontoforholdet inn i pipelinen som `global_ratio_by_instrument` (speiler funding_rates_by_instrument / open_interest_by_instrument / taker_flow_by_instrument i subprocess_entry.py) og rangere på det -- dette er den trofaste implementasjonen hypotesen navngir; eller (b) hvis den per-ben-serien genuint ikke kan leveres, er kjøringen en DATA-dekningsblokkering (not_measurable) snarere enn en strategi å levere på en substituert nøkkel -- rapporter det som det, slik at hypotesen parkeres til serien er koblet inn, i stedet for stille å handle en annen (flow-)faktor. Do - [warning] Konsistenskontrollen flagger hypotesen 'WEEKLY' mot konfigurasjonen bar_type 1-DAY. Dette er NOT et genuint avvik: 'weekly' i hypotesen refererer til REBALANCE/HOLD-kadensen, som er korrekt implementert som daglige barer gatet av en kalenderforankret 7-dagers rebalansering (day % rebalance_days == 0). Å bruke faktiske ukentlige barer ville gjøre eufori-persentilen og kadensen grovere; konstruksjonen med daglig bar + 7-dagers rebalansering er den riktige måten å uttrykke en ukentlig rotasjon på. Notert for åpenhet; påvirker ikke dommen. (linje 380) — fiks: Eventuelt omformuler hypotesens tekst til å si 'weekly rebalance on daily bars' for å dempe Layer-1.5-konsistensvarselet.
Stratmill er et forsknings- og papirhandelsverktøy, ikke finansiell rådgivning eller en megler. Backtest- og papirresultater er hypotetiske. Handel innebærer risiko for tap.