Vai al contenuto

Visualizza l’originale

BtcTakerFlowExhaustionReversalLS1H

Ipotesi

BTC Taker-Flow Exhaustion Reversal, Long-Short (Single-Instrument BINANCE USD-M Perp, Barre 1h, Fade Squilibrio Aggressore Estremo — Short su Acquisti FOMO in Fase Avanzata / Vendite da Panico su Buy Panic Selling — Gated per Regime di Range, Segnale Taker-Ratio Inedito, 3 Parametri)

Ipotesi

Una mean-reversion LONG-SHORT su singolo strumento su BTCUSDT.BINANCE (perp USD-M, barre 1h) guidata da ORDER FLOW, non dal prezzo — un input di segnale che nessuna strategia già distribuita utilizza. Per ogni barra calcola lo squilibrio dell'aggressore taker buy/sell (frazione di volume taker-buy) dai dati supplementari taker-ratio dei futures Binance (fallback: trade_ticks classificati per aggressore), smussato su una finestra breve. Tesi: quando l'acquisto dell'aggressore diventa estremo e sostenuto (es. frazione taker-buy ≥ 0.68 sulla finestra di smoothing), il compratore marginale sul mercato è FOMO in fase avanzata / copertura forzata senza nuova domanda limit dietro di esso — esaurimento dell'aggressore che precede in modo affidabile un pullback di breve termine, quindi FADE lo SHORT. In modo simmetrico, un'aggressione taker-SELL estrema e sostenuta (frazione ≤ 0.32) è vendita di mercato da panico/capitolazione su offerte in assottigliamento — vai LONG. Questa è deliberatamente una famiglia DIFFERENT rispetto a tutto ciò che sta morendo in questa factory: non è NOT trend-following (il cimitero a regime singolo di morte-209 — è contrarian e distribuita per regime, che paga in ogni direzione in cui il flusso si estende oltre misura), non è NOT carry da funding (la famiglia basket satura che muore di commissioni — il suo edge è un movimento di reversal 0.4–0.6%, non un flusso di cassa sub-basis-point), non è NOT un basket a N gambe (è a singolo strumento, 2 fill per round-trip, quindi aggira il muro di commissioni L12N×2bps di 10), e non è NOT opzioni (nessun muro sul numero di trade — eventi di flusso estremo scattano decine di volte all'anno, producendo centinaia di trade per una misurazione affidabile dell'edge). È gated ai regimi NON-TRENDING (fade solo quando un filtro di trend lento è piatto/in range) per evitare l'unica vera modalità di fallimento — flusso estremo che è INFORMED continuazione piuttosto che esaurimento. Pochi parametri 3 (finestra di smoothing del flusso, soglia di squilibrio, uscita) lo mantengono resistente all'overfitting.

Ipotesi

L'iterazione 3 affronta l'unico fallimento Layer-4 QA: carenza di trade (6 trade/363gg) da un gate composto troppo stretto. Nessuna modifica a meccanismi, import o logica del segnale (questi hanno superato i Layer 1-3); vengono allentati solo i tre throttle di ingresso/uscita affinché la strategia superi la soglia di misurabilità di ~100 trade. entry_z 1.2->0.8 scatta su più estremi di flusso pur restando oltre il rumore e sopra il costo taker di round-trip di 0.10% (il reversal della tesi è 0.4-0.6%). regime_threshold 0.55->0.65 ammette più barre in range così che la congiunzione ranging-AND-z-estremo smette di comporre la rarità, pur escludendo ancora i trend forti (la modalità di fallimento da continuazione informata). exit_z 0.3->0.25 e max_hold_bars 24->10 accelerano il turnover, riportando la strategia a flat prima e moltiplicando il numero di finestre di ingresso all'anno. Il segnale rolling-z scale-invariant (L5) e il design contrarian, distribuito per regime e a singolo strumento che differenziano questa strategia dal cimitero trend/carry/basket/opzioni non sono cambiati.

Ipotesi

Fade di esaurimento del taker-flow su singolo perp con aspettativa negativa, nessun edge e un muro di dati supplementari (L73/L55). profit_factor 0.62, total_return -5.29%, Sharpe -0.71 (CI [-1.35, 0.02]), aspettativa -$62.6/trade, avg_trade_return_pct 0.0146% (~zero, in perdita netta); avg_loss > avg_win con win_rate 0.447, quindi il fade è dal lato sbagliato del flusso. È fondamentale notare che, nonostante 58,512 barre su 2019-2026, ALL 85 trade e 100% dei rendimenti ricadono in una singola finestra 2026 di ~6 mesi perché il feed supplementare taker_ratio copre solo una porzione recente — annual_returns={2026:-5.32}, mensile 2026-03..08 — quindi non si può costruire un walk-forward su finestra 3 più holdout 20%. Questa è la stessa firma gated per order-flow su singolo perp già abbandonata tre volte in questo batch (BtcTakerAggressionPersistence, AvaxTakerAggressorDominance, EthTakerFlowBreakout). Nessuna regolazione dei parametri trasforma in positivo un edge per trade negativo, e l'ottimizzatore non può comprare la copertura di calendario che manca al feed. Non vale 2 ore di ottimizzazione. Pattern di fallimento: fade gated per order-flow su singolo perp fee_edge/no_edge con finestra supplementare recente-soltanto.

Implementazione

Mean-reversion di order-flow long-short su perp BTCUSDT.BINANCE USD-M (barre 1h). Calcola uno z-score rolling della frazione dell'aggressore taker-buy smussata dai dati supplementari taker_ratio di Binance; fa il fade di acquisto sostenuto estremo dell'aggressore SHORT (esaurimento FOMO in fase avanzata) e di vendita estrema dell'aggressore LONG (capitolazione da panico), solo in un regime di range (efficiency ratio di Kaufman basso). Esce alla normalizzazione del flusso, a uno stop hard 1%, o a un cap temporale. Singolo strumento, leva 1.0, 3 parametri regolabili principali.

Risultati di verifica

CLEAN RESTART 2026-09-04 — la cronologia dei verdetti e i record di apprendimento di questa esecuzione sono stati rimossi ed è stata riavviata dalla verifica. Il suo precedente abbandono derivava dalla pipeline, non dal mercato: l'harness Layer-2 associava in modo errato gli helper @staticmethod (risolto), QA emetteva verdetti di performance definitivi su uno smoke test non ottimizzato (rimosso — QA ora giudica solo la correttezza), e i timeout del sandbox derivavano dalla saturazione degli slot di backtest (risolto). L'ipotesi e il codice della strategia non sono cambiati. Verifica il codice nel merito; la performance viene decisa in seguito dal backtest completo e dall'ottimizzatore.

Risultati di verifica

Ridurre il default di taker_lag_seconds a ~7200-14400s in modo che i feed obsoleti sopprimano gli ingressi.

Risultati di verifica

taker_lag_seconds ha default 90000 (25 ore), quindi _current_fraction accetta un'osservazione taker_ratio obsoleta fino a ~25h prima di restituire None. Non è un look-ahead (il vincolo bisect è unidirezionale alla barra ts_event <= ts_init), ma in caso di gap del feed la strategia opera su una lettura di flusso vecchia di un giorno.

Risultati di verifica

Aggiungere a _frac_buf solo quando self._tk_ts[idx] avanza.

Risultati di verifica

_current_fraction restituisce l'ultima osservazione indipendentemente dalla novità, quindi la stessa frazione viene ri-aggiunta a _frac_buf a ogni barra finché il feed non avanza, comprimendo lievemente la deviazione standard di riferimento del rolling-z. Non è una rottura di correttezza alla cadenza 1h.

Revisione Backtest

Implementazione pulita a singolo strumento (2 fill/round-trip, nessun muro di commissioni da paniere), gated per regime, solo 3 parametri regolabili principali — resistente all'overfitting per costruzione

Revisione Backtest

L'input del segnale di order-flow è realmente differenziato rispetto ai cimiteri di trend/carry/basket

Revisione Backtest

In perdita netta senza edge: profit_factor 0.62, total_return -5.29%, Sharpe -0.71 (CI [-1.35, 0.02]), aspettativa -$62.6/trade, avg_trade_return_pct 0.0146% (~zero e di segno negativo)

Revisione Backtest

avg_loss ($301) supera avg_win ($232) con win_rate 0.447 — il fade di esaurimento è sistematicamente dal lato sbagliato del movimento di flusso

Revisione Backtest

Muro di dati supplementari (L73): tutti i 85 trade e 100% dei rendimenti ricadono in una singola finestra 2026 di ~6 mesi (annual_returns={2026:-5.32}, mensile 2026-03..08) perché il feed taker_ratio copre solo una porzione recente della storia 2019-2026 OHLCV — il campione effettivo non può sostenere un walk-forward su finestra 3 + holdout 20%

Revisione Backtest

commission_pct_of_gross 47% — commissioni più impatto consumano già metà del lordo ancora prima dell'edge di segno negativo

Revisione Backtest

Corrisponde alla classe con zero sopravvissuti gated per order-flow su singolo perp (BtcTakerAggressionPersistence, AvaxTakerAggressorDominance, EthTakerFlowBreakout sono tutte abbandonate) e alla classe fade single-name sub-1.15-PF L55

Revisione Backtest

6mo (solo 2026)

Revisione Backtest

pluriennale

Iteration History

Verifica fallita (Layer 3 — backtest sandbox): Nessun trade prodotto Tipo di barra usato: BTCUSDT.BINANCE-1-HOUR-LAST-EXTERNAL, Barre elaborate: 8729 Diagnostica: should_enter() ha restituito un lato 0 volte su 8679 barre valutate -> la tua ENTRY CONDITION non è mai scattata. Allenta la logica di ingresso / le soglie. Assicurati che la tua strategia produca trade con i dati e i parametri dati.

Iteration History

Verifica fallita (Layer 4 — revisione QA): - Il gate di ingresso scatta troppo di rado per produrre un risultato misurabile. Il sandbox ha generato solo 6 trade in 363 giorni (~6 trade/anno). Il gate composto richiede, simultaneamente, (a) un regime RANGING (efficiency ratio di Kaufman < regime_threshold), (b) uno z-score rolling estremo della frazione taker-buy (|z| >= entry_z=1.2), e (c) che la strategia sia FLAT, poi mantiene la posizione fino a 24 barre -- quindi gli ingressi genuini sono rari anche se lo z attraversa spesso la banda. Questa è esattamente la modalità di fallimento L16 ('BTC squilibrio aggressore 4H 16 trade', 'BTC taker-ratio 16 trade'), ed è WORSE qui (6 trade). Anche un backtest pluriennale a questo tasso resta ben al di sotto della soglia di misurabilità di ~100 trade. La giustificazione stessa dell'ipotesi ('decine di volte all'anno, centinaia di trade per una misurazione affidabile dell'edge') è direttamente contraddetta dal risultato di 6 trade. - Poiché il risultato si basa su 6 trade, ogni metrica principale è non diagnostica: Sharpe 0.84 ma sharpe_ci_low -1.08 (CI a cavallo dello zero), profit_factor 10.26 e win_rate 0.667 su 6 campioni, return_skew 7.23 / kurtosis 94.8, e avg_win $300 vs avg_loss $58 -- un singolo largest_win $662 porta l'intero rendimento positivo (+1.08%). Nessuna di queste può essere considerata prova di edge. Questa è una conseguenza diretta del problema del numero di trade sopra, non un difetto indipendente.

Iteration History

Verifica fallita (Layer 4 — revisione QA): - L'edge principale è negativo e al di sotto delle commissioni, falsificando l'affermazione centrale dell'ipotesi. L'ipotesi afferma che il fade cattura un movimento di '0.4-0.6% reversal'; il sandbox misura avg_trade_return_pct -0.025% -- negativo, e di un ordine di grandezza inferiore sia all'affermazione sia al floor delle commissioni futures di 0.15%. A corroborare un vero e proprio no-edge (non solo rumore): profit_factor 0.518, Sharpe -1.53 (CI [-2.73, +0.07]), win_rate 0.50 con un reward/risk INVERTED (avg_loss $338 ~= 2x avg_win $175), omega_ratio 0.35. È fondamentale notare che ciò è emerso BECAUSE l'allentamento dell'iter-3 (entry_z 1.2->0.8, regime_threshold 0.55->0.65) ha aggiunto trade: gli ingressi aggiuntivi sono scattati su estremi di flusso più deboli che non NOT sono tornati alla media, trascinando l'edge medio in territorio negativo. Questa è prova diretta che il segnale di esaurimento del taker-flow non ha alpha di reversal in grado di coprire i costi -- le barre con squilibrio estremo dell'aggressore non tornano sistematicamente alla media a queste soglie. - Il numero di trade è ancora al di sotto della soglia di misurabilità. iter-3 ha portato i trade da 6 a 26 in 363 giorni (~26/anno), ma resta ben al di sotto della soglia di ~100 trade necessaria per distinguere l'edge dal rumore (L16; i tentativi gemelli BTC su squilibrio dell'aggressore/taker-ratio si sono arenati a 16 trade). Con 26 trade e skew -4.83 / kurtosis 43 (una singola perdita di -$945 domina), le metriche sono ancora dominate dal rumore -- lo Sharpe CI spazia da -2.73 a +0.07. Lo sviluppatore è bloccato tra due regimi entrambi fallimentari: gate più stretto -> non misurabile (6 trade), gate più largo -> misurabile ma con edge negativo (26 trade, -0.025%/trade). Entrambi falliscono.
Report della strategia

Stratmill è uno strumento di ricerca e paper trading, non una consulenza finanziaria né un broker. I risultati di backtest e paper trading sono ipotetici. Il trading comporta un rischio di perdita.