Lumaktaw papunta sa nilalaman
Lahat ng estratehiya

Mga Estratehiya

BTC USD-M Pagpapatuloy ng Trade-Flow Imbalance, Long-Short (BINANCE Perp, hudyat ng agresibong order-flow na pinapagana ng TRADE-TICK at pinagsama sa rolling window, sundan ang tuloy-tuloy na imbalance ng taker nang ~15-60min, target/stop na ATR, 3 parameter)

Resulta: Inabandona

BtcTradeFlowImbalanceContinuation

Tapat at mahusay ang instrumentasyon ng implementasyon: nag-trigger ang 883 entry sa loob ng 702k bar (saklaw na 6.6yr), kaya naayos na ang problema ng 'walang trade' mula sa mga naunang pag-ulit at sapat sa…

Hypothesis

Isang LONG-SHORT, single-instrument na microstructure strategy sa BTCUSDT.BINANCE (USD-M perpetual) na pinapatakbo ng TRADE-TICK aggressor feed (data_requirements: trade_ticks), sa halip na mga OHLCV bar — isang primitive ng data na ginagamit ng <2% sa 1554-experiment na portfolio, kaya bago ito sa estruktura kumpara sa mga bar-based na reversion/momentum/rotation strategy na nangingibabaw sa portfolio. Mekanismo: pagsama-samahin ang raw trade feed sa rolling Order-Flow Imbalance (OFI = (buy-aggressor volume -……Magpakita ng higit paMagpakita ng mas kaunti

Isang LONG-SHORT, single-instrument na microstructure strategy sa BTCUSDT.BINANCE (USD-M perpetual) na pinapatakbo ng TRADE-TICK aggressor feed (data_requirements: trade_ticks), sa halip na mga OHLCV bar — isang primitive ng data na ginagamit ng <2% sa 1554-experiment na portfolio, kaya bago ito sa estruktura kumpara sa mga bar-based na reversion/momentum/rotation strategy na nangingibabaw sa portfolio. Mekanismo: pagsama-samahin ang raw trade feed sa rolling Order-Flow Imbalance (OFI = (buy-aggressor volume - sell-aggressor volume) / total volume) sa isang trailing window; kapag malakas at tuloy-tuloy na nasa iisang panig ang OFI, at kinumpirma ito ng presyo gamit ang bagong micro-extreme na AND, kumuha ng posisyon sa direksiyon ng daloy at sakyan ang maikling pagpapatuloy nito; lumabas sa target/stop na nakabatay sa ATR o kapag humina ang daloy. Sadyang CONTINUATION ito, hindi reversion (naiiba sa mga kapatid nitong SOL VWAP-reversion at ETH pivot-reversion), at NOT itong bar-momentum (aggressor imbalance ang signal, na hindi nakikita sa OHLCV). Iniiwasan nito ang lahat ng kamakailang nabigong uri: walang funding-level signal (L13), liquidation feed (L3), options (L23), cross-sectional/dollar-neutral basket (L12), cross-venue carry (L1), Hyperliquid (L11), majors rotation (L24), o 200-SMA regime timing. Pinupunan nito ang dalawang pinakakaunting kinakatawang survivable bucket — LONG-SHORT (14.9% kumpara sa 85% long-only na portfolio) at SHORT-horizon na 1m-15m (5.6% kumpara sa target na >=10%) — habang nagdaragdag ng bagong data source. Iniruta ito sa BINANCE dahil malalim at kumpleto ang BTCUSDT aggregated-trade history nito (maraming taon) — ang tanging venue na may tick feed para sa wastong short-horizon validation (masyadong mababaw ang tick history ng Hyperliquid, L11).

Negatibo ang inaasahang kita sa maaasahang sample na 883 trade / 6.6 taon: profit_factor 0.27, avg_trade_return_pct -0.011% (mas mababa sa zero), Sharpe na -1.64 na may pawang negatibong CI, at tuluy-tuloy na pagkalugi sa bawat regime at buwan. Negatibo ang signal ng pagpapatuloy batay sa imbalance ng taker bago pa ang mga bayarin (komisyon na 170% ng gross na kita), kaya hindi makalilikha ng edge ang optimization/pag-aayos ng threshold kung wala ito. Hindi sulit ang 2 oras ng optimization.

Implementasyon

Long-short na BTCUSDT.BINANCE USD-M perp continuation strategy batay sa imbalance ng agresor na taker. Pinagsasama ang mga trade tick sa nakaraang window na 15 minuto ng may-sign na volume; OFI = (buy_vol - sell_vol) / total_vol sa [-1,1]. Sa bawat 5-minutong decision bar, nagbubukas ng posisyon WITH sa daloy kapag kinumpirma ng bagong 2-bar na price extreme sa parehong direksiyon ang one-sided na pagbasa ng daloy na |OFI| >= 0.12. Mga exit: stop na naka-scale sa ATR (1.5xATR) at target (2.5R) na natutukoy sa loob ng bar batay sa low/high nito, exit kapag humina ang daloy kung nabawi na ng trade ang round-trip na bayarin, at time stop na 60 minuto. Deterministiko ang sizing: 10% ng notional ng equity. Kung walang saklaw ang tick feed, binabasa ng strategy ang kaparehong primitive ng agresor mula sa inilathalang taker buy/sell volume ng Binance (taker_ratio); kung wala ang dalawang pinagmulan, mananatili itong flat.

Inaayos nito ang iniulat na Layer-3 na 'should_enter returned a side 0 times over 19,470 bars' sa pamamagitan ng dalawang pagbabagong maaaring magdulot nito, at wala nang iba. (1) Saklaw ng daloy: hinihingi ng entry gate ang len(self._flow) >= min_ticks, kaya kapag walang saklaw ng trade-tick ang sandbox window, nananatili sa 0.0 ang OFI at nagiging imposibleng pumasok. Gumagamit na ngayon ang strategy ng fallback na inilalathalang taker BUY/SELL volume ng Binance (taker_ratio) -> OFI_supp = (buyVol -……Magpakita ng higit paMagpakita ng mas kaunti

Inaayos nito ang iniulat na Layer-3 na 'should_enter returned a side 0 times over 19,470 bars' sa pamamagitan ng dalawang pagbabagong maaaring magdulot nito, at wala nang iba. (1) Saklaw ng daloy: hinihingi ng entry gate ang len(self._flow) >= min_ticks, kaya kapag walang saklaw ng trade-tick ang sandbox window, nananatili sa 0.0 ang OFI at nagiging imposibleng pumasok. Gumagamit na ngayon ang strategy ng fallback na inilalathalang taker BUY/SELL volume ng Binance (taker_ratio) -> OFI_supp = (buyVol - sellVol)/(buyVol + sellVol) sa loob ng SAME 15-minutong window. Ito ang mismong batayang tinutukoy ng hypothesis (taker aggressor imbalance), na pinagsama-sama ng exchange sa halip na buuing muli mula sa ticks — hindi proxy na presyo lang at hindi ibang edge; kung walang laman ang mga source na BOTH, mananatiling flat ang strategy sa halip na magpalit ng anumang datos. Ang lookup ay point-in-time (mga obserbasyon sa oras ng bar o mas maaga), O(log n) gamit ang hanay ng timestamp na minsan lang inaayos ayon sa pagkakasunod-sunod at mga prefix sum, kasama ang pananggalang sa lumang datos; kaya wala itong idinaragdag na muling pag-scan sa kasaysayan kada bar at hindi nito muling mapupukaw ang naunang uri ng timeout. (2) Lapad ng gate: |OFI| >= 0.18 AND ang bagong 3-bar extreme ay kundisyong halos hindi natutupad sa 5m BTC; niluluwagan ang mga default sa 0.12 at bagong 2-bar extreme, habang pinananatili ang dalawang kondisyon sa antas na nagbubunga ng mga trade. Hindi binago ang lahat ng nakapasa na: tick handler, pagpapanatili ng O(1) window, ATR stop/target na may intrabar detection, decay gate na walang sub-fee scratch, fee-viable target gate, deterministic na sizing na fixed-fraction, mga import at estruktura ng class. Ipinapahayag na rin ngayon ng config ang _param_bounds na tumutugma sa mahihigpit na clamp sa __init__, kaya hindi makapaghahanap ang optimizer ng mga halagang palihim na binabago ng code.

Mga Resulta ng Beripikasyon

Bumagsak ang beripikasyon (Layer 3 — sandbox backtest): Walang nalikhang trade Uri ng bar na ginamit: BTCUSDT.BINANCE-5-MINUTE-LAST-EXTERNAL, mga naprosesong bar: 19484 Mga diagnostic: nagbalik ng side ang should_enter() nang 0 beses sa 19470 sinuring bar -> hindi kailanman na-trigger ang iyong ENTRY CONDITION. Luwagan ang lohika/mga threshold sa pagpasok. Tiyaking nakakagawa ng trade ang iyong strategy gamit ang ibinigay na datos at mga parameter.

Sa optimization, bawasan ang dalas ng trade at dagdagan ang nakukuha sa bawat trade: itaas ang ofi_threshold, pahabain ang hawak/itaas ang tp_rr, at higpitan ang gate sa paglabas dahil sa paghina ng daloy. Itigil kung hindi malalampasan ng avg_trade_return_pct ang 0.15%.

Mataas ang turnover (934 trade/67d, 141.8% ng gross ang komisyon), kaya kinakain ng bayarin ang kita — paulit-ulit ang pattern ng pagpapatuloy (L6/L16), hindi ito bug sa code. Tugma sa tesis ang average na tagal ng paghawak na 34m, pero 0.033% ang nakukuha sa bawat trade kumpara sa 0.10% na round-trip na gastos.

Tiyaking pinapagana ng tick feed ang hudyat sa buong window para masukat ang microstructure edge.

Ang fallback na taker_ratio (ginagamit lang kapag walang laman ang tick window) ay kaparehong primitive ng imbalance ng agresor, pinagsama-sama ng exchange at binabasa ayon sa point-in-time na may pananggalang sa lumang datos — tapat na pamalit ito, hindi ibang edge. Ginamit ng sandbox ang tick path (934 trade ang nag-trigger).

Pagsusuri ng Backtest

Sharpe
-1.64
Kabuuang Return
-13.17%
Max Drawdown
13.17%
Kabuuang Trade
883
Win Rate
37.9%
Profit Factor
0.27

Tapat at mahusay ang instrumentasyon ng implementasyon: nag-trigger ang 883 entry sa loob ng 702k bar (saklaw na 6.6yr), kaya naayos na ang problema ng 'walang trade' mula sa mga naunang pag-ulit at sapat sa estadistika ang sample.

Malinis ang pagkakagawa ng deterministikong fixed-fraction sizing, stop/target na ATR, at point-in-time na karagdagang fallback.

Negatibo ang inaasahang kita sa malaki at maaasahang sample: profit_factor 0.27, avg_trade_return_pct -0.011% (mas mababa sa zero, hindi lang sa 0.15% na floor ng bayarin), win_rate 37.9%, inaasahang kita na -$14.90/trade.

Sharpe -1.64 (CI [-2.51, -1.40], pawang negatibo), Sortino -0.29, total_return -13.2%, information_ratio -0.93, alpha -2.1%.

Tuloy-tuloy ang pagkalugi sa iba’t ibang regime (kalmado -8.0%, normal -9.8%) at negatibo ang bawat ipinakitang buwan — hindi ito window na curve-fit; wala lang talagang continuation edge ang pagkakakodigo rito.

170% ng gross na kita ang komisyon — negatibo ang kabuuang kita ng strategy, kaya hindi ito maililigtas ng pagbaba ng bayarin o muling pag-aayos ng threshold.

Kasaysayan ng Iterasyon

Nabigo ang verification (Layer 2 — mga sintetikong senaryo): Mga parameter na ginamit: ['tp_rr', 'risk_pct', 'min_ticks', 'atr_period', 'decay_frac', 'max_hold_sec', 'min_notional', 'atr_stop_mult', 'ofi_threshold', 'max_gross_frac', 'ofi_window_sec', 'size_precision', 'confirm_lookback'] Tiyaking itinatakda ng __init__ ang lahat ng attribute mula sa self.parameters.get(). - steady_uptrend: TypeError: BtcTradeFlowImbalanceContinuation._bar_ts() takes 1 positional argument but 2 were given (timestamp ng bar:……Magpakita ng higit paMagpakita ng mas kaunti

Nabigo ang verification (Layer 2 — mga sintetikong senaryo): Mga parameter na ginamit: ['tp_rr', 'risk_pct', 'min_ticks', 'atr_period', 'decay_frac', 'max_hold_sec', 'min_notional', 'atr_stop_mult', 'ofi_threshold', 'max_gross_frac', 'ofi_window_sec', 'size_precision', 'confirm_lookback'] Tiyaking itinatakda ng __init__ ang lahat ng attribute mula sa self.parameters.get(). - steady_uptrend: TypeError: BtcTradeFlowImbalanceContinuation._bar_ts() takes 1 positional argument but 2 were given (timestamp ng bar: 1735690440000) - steady_downtrend: TypeError: BtcTradeFlowImbalanceContinuation._bar_ts() takes 1 positional argument but 2 were given (timestamp ng bar: 1735690440000) - flat_ranging: TypeError: BtcTradeFlowImbalanceContinuation._bar_ts() takes 1 positional argument but 2 were given (timestamp ng bar: 1735690440000) - volatility_spike: TypeError: BtcTradeFlowImbalanceContinuation._bar_ts() takes 1 positional argument but 2 were given (timestamp ng bar: 1735690440000) - zero_volume: TypeError: BtcTradeFlowImbalanceContinuation._bar_ts() takes 1 positional argument but 2 were given (timestamp ng bar: 1735690440000) - price_gap: TypeError: BtcTradeFlowImbalanceContinuation._bar_ts() takes 1 positional argument but 2 were given (timestamp ng bar: 1735690440000)

Nabigo ang beripikasyon (Layer 4 — pagsusuri ng QA): - STRUCTURAL FEE-DEATH. commission_pct_of_gross 677.34% — mga bayarin na ~6.8x ng P&L bago ibawas ang mga gastos (1192 komisyon kumpara sa ~176 bago ibawas ang mga gastos). Hindi ito artepakto ng sample: mas mababa ang avg_win $29.34 kaysa sa komisyong ~$49.7/kalakalan (1192/24), kaya hindi natatakpan ng isang WINNING kalakalan ang sarili nitong bayarin sa pagpasok at paglabas. Sa notional na ~$50k, nakakakuha ang mga panalo ng ~0.06% at ang mga talo ng ~0.28%……Magpakita ng higit paMagpakita ng mas kaunti

Nabigo ang beripikasyon (Layer 4 — pagsusuri ng QA): - STRUCTURAL FEE-DEATH. commission_pct_of_gross 677.34% — mga bayarin na ~6.8x ng P&L bago ibawas ang mga gastos (1192 komisyon kumpara sa ~176 bago ibawas ang mga gastos). Hindi ito artepakto ng sample: mas mababa ang avg_win $29.34 kaysa sa komisyong ~$49.7/kalakalan (1192/24), kaya hindi natatakpan ng isang WINNING kalakalan ang sarili nitong bayarin sa pagpasok at paglabas. Sa notional na ~$50k, nakakakuha ang mga panalo ng ~0.06% at ang mga talo ng ~0.28% — mas mababa ang mga galaw na 5m at ATR-target kaysa sa ~0.10% na round-trip na gastos sa taker. PF 0.07, win_rate 0.25, avg_trade_return_pct -0.0157%. Hindi kayang tumbasan ng churn na tick-continuation-gated-on-5m (turnover na 6006% sa isang araw) ang mga bayarin (L6/). - NON-DIAGNOSTIC / UNMEASURABLE BACKTEST. Tumakbo ang sandbox nang lampas sa data_days=1, 24 kalakalan, metrics_reliable=false ('1 lang na pang-araw-araw na return'); null ang Sharpe/PSR/vol. Hindi kayang pag-ibahin ng 24 kalakalan ang edge at ingay. Pinahihina rin nito ang batayan ng haypotesis — pinili nito ang BINANCE dahil sa 'malalim, maraming-taong' kasaysayan ng BTC tick, ngunit isang araw lang ang kinalabasan ng tick backtest. Kung ~1 araw lang ng magagamit na kasaysayan ng tick ang maaaring patakbuhin, hindi mapapatunayan ang pamilyang ito (gayundin, may babala sa mababaw na kasaysayan ng tick para sa Hyperliquid). - LATENCY-DEPENDENCE (aytem #15 sa checklist). Malayong mas mababa ang avg_trade_return_pct -0.0157% sa hangganang 0.05%, na kapag mas mababa rito ay nakadepende sa latency ang mga estratehiya sa tick. Ipinapalagay ng backtest na sero ang latency at sa pagsasara ng 5m ito napupunan, ngunit hinahabol ng mga entry ang daloy ng agresor (bagong micro-extreme sa direksiyong tinutulak na ng mga kalakalan), kaya mas masama ang presyong makukuha sa aktuwal na pagpuno. Malabong makaligtas sa pagdulas sa pagpapatupad ang edge na mas mababa sa -0.05% tick. - SIZING REGRESSION RISK. Muling ginagamit ng position_size ang pormulang nakabatay sa panganib at nakaangkla sa equity, na nililimitahan sa equity*max_gross_frac — kapareho ng padron kung saan lumampas ang aktuwal na exposure sa cap nang 1.5-5x, at nalikida ang mga kapatid na SOL/ETH. Ang avg_position_pct 50.2% ~= ang hangganang 0.5 rito (nililimitahan sa sample na 1 araw), ngunit NOT pinagtibay ng developer ang napatunayang pag-aayos na nakapirming notional na hindi nakadepende sa landas, kaya maaari itong lumaki nang sobra sa mas mahaba o mas pabagu-bagong yugto. - Tapat naman ang iba pang mekanika at wastong pinangasiwaan ang bagong primitibo ng datos: iniipon ng on_trade_tick ang may-tandang bolyum ng agresor sa isang rolling deque na O(1), ang OFI = (buy-sell)/total sa [-1,1], at kailangan ng entry ang |OFI|>=threshold WITH isang bagong micro-extreme (pagpapatuloy); lumalabas ito sa ATR stop/target/paghina/pinakamatagal na holding. Tumutugma ang subscribe_trade_ticks=true sa override ng on_trade_tick (aytem #11 sa checklist ✓), at naayos ng pagbabago sa pamamaraang-instance na iter-2 _bar_ts ang Layer 2. Magkatugma ang direksiyon/instrumento/panahon. Ang hadlang ay kakayahang kumita matapos ang bayarin at kakayahang masukat.

Ang Stratmill ay isang tool para sa pananaliksik at paper trading, hindi payo sa pananalapi o isang broker. Ang mga resulta ng backtest at paper trading ay hypothetical. May panganib ng pagkalugi ang pangangalakal.