BTC Perp Taker-Flow-Confirmed Momentum (Single-Instrument USD-M, Long-Short, 1H, taker imbalance ang nagkukumpirma sa trend, flat kapag salungat ang flow)
Resulta: Inabandona
BtcTakerFlowConfirmedMomentumLS
Buod ng Resulta
Tumakbo ang BtcTakerFlowConfirmedMomentumLS ayon sa disenyo — 2064 trade sa buong 2019-2026 BTC history, aktibo ang long at short na panig, makatwiran ang exposure na 41.6% at walang liquidation — pero walang edge ang tesis ng pagpapatuloy ng momentum na kinumpirma ng taker flow. Nagbalik ang backtest ng -21.1% na may Sharpe na -1.39 (lubusang negatibo ang confidence interval), profit factor na 0.797, at lugi sa bawat taon pagkaraan ng 2020, habang kinain ng komisyon ang 22.4% ng gross sa muling pagbalanse kada 1H. Dahil negatibo ang signal sa lahat ng dako at walang positibong rehiyong mapaglalaanan ng optimization, itinigil ito ng analyst sa yugto ng pagsusuri ng backtest sa halip na gumugol ng oras sa walk-forward optimization; hindi umabot sa yugto ng optimization o pagsusuri pagkatapos nito. Binabanggit sa tala na bahagyang nagpapahiwatig ng baligtad na mean-reversion na pagbabago ng pananaw ang magkapantay na lugi sa magkabilang panig, pero iniiwan iyon bilang hypothesis sa hinaharap, hindi bilang pag-aayos sa strategy na ito.
Long-SHORT, SINGLE-INSTRUMENT, iisang venue na direksiyonal na strategy sa BTCUSDT.BINANCE USD-M perpetual futures gamit ang 1-HOUR bar. Kumukuha lang ito ng direksiyonal na posisyon ONLY kapag kinumpirma ng tuloy-tuloy na TAKER AGGRESSOR FLOW sa parehong direksiyon ang trend ng presyo na CONFIRMED. Ikatlong miyembro ito ng klase ng mekanismong ONLY na may na-promote nang survivor sa factory na ito (isang price-creditable na leg na may gate na crypto-native na signal ng kumpirmasyon — ihambing sa na-promote na……Magpakita ng higit paMagpakita ng mas kaunti
Long-SHORT, SINGLE-INSTRUMENT, iisang venue na direksiyonal na strategy sa BTCUSDT.BINANCE USD-M perpetual futures gamit ang 1-HOUR bar. Kumukuha lang ito ng direksiyonal na posisyon ONLY kapag kinumpirma ng tuloy-tuloy na TAKER AGGRESSOR FLOW sa parehong direksiyon ang trend ng presyo na CONFIRMED. Ikatlong miyembro ito ng klase ng mekanismong ONLY na may na-promote nang survivor sa factory na ito (isang price-creditable na leg na may gate na crypto-native na signal ng kumpirmasyon — ihambing sa na-promote na trend na kinumpirma ng funding na ETH), pero sadyang gumagamit ito ng signal na ORTHOGONAL at wala sa mga kapareha nito: ang imbalance ng taker buy/sell volume (kung aling panig ang agresor na nagtataas ng alok o tumatama sa bid), na naiiba sa funding (kaparehang ETH) at pagbabago sa open interest (kaparehang SOL). Pangunahing tesis: ang galaw ng presyo kasabay ng tuloy-tuloy na pangingibabaw ng taker-BUY ay nagpapakita ng totoong demand na handang magbayad nang mas mataas sa order book (tunay na pagpapatuloy ng galaw); samantalang ang galaw na may tuloy-tuloy na pangingibabaw ng taker-SELL ay nagpapakita ng totoong suplay na tumatama sa bid (tunay na pagpapatuloy ng pagbaba). Kapag DISAGREE ang direksiyon ng presyo at daloy ng agresor (halimbawa, tumataas ang presyo habang nangingibabaw ang mga nagbebenta), walang suporta ang galaw at malamang maubos ito, kaya nananatiling flat ang strategy. CRITICAL DESIGN NOTES na naghihiwalay rito sa mga saradong pamilya: (1) SINGLE na price leg na maaaring bigyan ng kredito — walang delta-neutral na pares o CARRY ng funding/basis (hindi kailanman itinatala rito ang funding bilang cash flow), kaya naiiwasan ang mga bitag ng carry na hindi mabibigyan ng kredito at basis na mas mababa sa bayarin; (2) signal lang na SIGNAL ang taker flow, ang napatunayang papel nito sa crypto-native na datos; (3) NOT cross-venue / HYPERLIQUID, NOT COIN-M, NOT spot-perp basis, NOT cross-sectional, NOT tick-dispatched (pinagsama-samang taker volume kada bar ang binabasa nito, at ganap itong kinakatawan ng bar engine); (4) BTC ang may pinakamalalim at pinakamahabang kasaysayan ng taker flow at presyo sa mga crypto asset, kaya hitik sa datos ang mga window ng walk-forward — walang limitasyon dahil sa kakulangan ng datos; (5) gumagana ang gate CONTINUOUSLY sa bawat yugto ng trend (hindi lang sa bihirang pangyayari), kaya siksik sa datos ang mga window na OOS — kabaligtaran ng lagda ng iilang pangyayaring OOS-all-zero na pumatay sa klase ng pag-iipon ng drawdown. Sadyang simple: 3 na maaaring itakda (trend_lookback, taker_window, taker_threshold) upang labanan ang overfitting.
Pag-aayos sa iteration na 4 para sa timeout ng Layer-3 sandbox (>300s wall-clock). Sa dating code, bawat bar ay muling binubuo ng `_flow_over_window` ang slice na `self._taker_ratio_vals[lo:hi]` at tinatawag ang `sum()` sa bawat isa sa humigit-kumulang 70k 1H bar — gawaing O(window) na lumaki nang idagdag ang masinsing 5-min `metrics` stream (~525k row mula 2021). Paunang kinakalkula na ngayon ng pag-aayos ang cumulative PREFIX-SUM array na ONCE sa `_build_taker` (kasabay ng nakaayos nang timestamp list), kaya……Magpakita ng higit paMagpakita ng mas kaunti
Pag-aayos sa iteration na 4 para sa timeout ng Layer-3 sandbox (>300s wall-clock). Sa dating code, bawat bar ay muling binubuo ng `_flow_over_window` ang slice na `self._taker_ratio_vals[lo:hi]` at tinatawag ang `sum()` sa bawat isa sa humigit-kumulang 70k 1H bar — gawaing O(window) na lumaki nang idagdag ang masinsing 5-min `metrics` stream (~525k row mula 2021). Paunang kinakalkula na ngayon ng pag-aayos ang cumulative PREFIX-SUM array na ONCE sa `_build_taker` (kasabay ng nakaayos nang timestamp list), kaya nagiging `(prefix[hi]-prefix[lo])/(hi-lo)` ang mean ng window — O(1), walang alokasyon o pagsusuma sa bawat bar. Ginagamit na muli ng fallback branch ang dati nang `hi` bisect index (`j = hi - 1`) sa halip na muling kalkulahin ang pangalawang `bisect_right`, kaya nababawasan pa ang isang tawag na O(log n) sa bawat bar. Walang binago sa signal logic, imports, entry/exit gate o sizing, kaya hindi naapektuhan ang Layer 1 at 2 (na pumasa na); gastos sa pagkalkula lang kada bar ang nabawasan. Nananatili ang venue na BINANCE futures (ginagamit ang short) at leverage=1.0 ( position_pct lang ang ginagamit sa sizing, kaya walang panganib ng gate dahil sa leverage na hindi ginagamit).
Walang edge, at hindi ito bug sa code na kayang ayusin ng developer — tumatakbo ang strategy ayon sa disenyo (2064 malilinis na trade, buong history, tamang gate ng taker flow), pero negatibo ang inaasahang halaga ng momentum-continuation signal na kinumpirma ng taker flow sa sample na ENTIRE 6.5-taon: Sharpe -1.39 (CI lubusang negatibo), profit_factor 0.797, at lugi sa bawat taon pagkaraan ng -2020 (2022 -5.9%, 2023 -10.5%, 2024 -3.8%, 2025 -7.1%), kasama ang information_ratio -0.78 kumpara sa benchmark nitong BTC. Hindi maililigtas ng optimization ang signal na palaging negatibo — walang positibong rehiyon ng parameter na maaaring tutukan, kaya masasayang ang 2 oras ng walk-forward optimization. Bahagyang naaayon sa edge ng baligtad na signal ang tuloy-tuloy at magkapantay na lugi sa long at short na panig, pero hypothesis-level na pagbabago ito ng pananaw para sa Research Lead (mean-reversion sa mga galaw na walang suporta sa halip na pagpapatuloy), hindi pagbabago ng parameter — at hindi ito napatunayan dito. Huwag mag-optimize.
Implementasyon
BTC USD-M perpetual na momentum strategy na 1H, long-short, at nagbubukas ng direksiyonal na posisyon ONLY kapag kinumpirma ng tuloy-tuloy na taker aggressor flow sa parehong direksiyon ang nagdaang trend_lookback-oras na trend ng presyo (mean ng taker buy/sell ratio sa nagdaang taker_window oras na tumatawid sa magkapantay na banda sa paligid ng 1.0). Long kapag pataas ang trend at nangingibabaw ang buy flow; short kapag pababa ang trend at nangingibabaw ang sell flow. Lumalabas at nagiging flat kapag magkaiba ang direksiyon ng flow (pagbaligtad ng trend o pagtawid ng flow sa banda ng salungat na pangingibabaw), natamaan ang proteksiyon na stop, o naabot ang takdang maximum na tagal ng paghawak. Signal lang ang taker flow; pinagsama ito mula sa hiwalay na stream na taker_ratio at metrics stream (history ng taker_long_short_vol_ratio hanggang ~2021) upang masaklaw ng backtest ang buong history.
Mga Resulta ng Beripikasyon
Nabigo ang beripikasyon (Layer 3 — sandbox backtest): lumampas ang smoke test sa limit na 300s wall-clock. Halos palaging nangangahulugan ito ng gawaing kada bar na lumalaki kasabay ng haba ng history — halimbawa, muling pag-scan sa buong serye ng funding/supplementary, o muling pagbuo ng listahan at pagtawag sa min()/sorted() sa loob ng calculate_signal()/on_bar() sa bawat bar. Paunang ayusin ang mga timestamp array na ONCE sa __init__ at gumamit ng bisect, o i-cache ang mga lookup batay sa timestamp, para O(log n) sa halip na O(n) ang gastos kada bar.
Pagsusuri ng Backtest
Sharpe
-1.39
Kabuuang Return
-21.15%
Max Drawdown
27.53%
Kabuuang Trade
2064
Win Rate
23.8%
Profit Factor
0.80
Maayos ang implementasyon: malinis na naisagawa ang 2064 trade (walang inalis dahil zero ang laki, kulang sa minimum na notional o cash), nasaklaw ang buong 2020-2026 history sa pinagsamang taker_ratio+metrics stream, makatwiran ang exposure na 41.6%, walang liquidation
Tunay na long-short ang signal na aktibo sa magkabilang direksiyon (1356 long / 708 short)
NO EDGE: Sharpe -1.39 (lubusang negatibo ang CI mula -2.27 hanggang -0.59), Sortino -2.75, profit_factor 0.797, total_return -21.1%
Nalugi sa EVERY taon pagkaraan ng -2020 (2022 -5.9%, 2023 -10.5%, 2024 -3.8%, 2025 -7.1%) — hindi dahil sa rehimen ng merkado, kundi dahil sa tuloy-tuloy na negatibong inaasahang halaga
win_rate 23.8% at mahina ang magkabilang panig (long 24.6% / short 22.3%); information_ratio -0.78 kumpara sa makabuluhang benchmark na BTC — mas masahol kaysa sa buy-and-hold
commission_pct_of_gross 22.4% — nadaragdagan ng bayarin ang lugi mula sa gross signal dahil sa dalas ng muling pagbabalanse na 1H
Pagsusuri
Huwag i-optimize ang NOT — 62 trade lang, lahat nitong huling ~2 buwan (2026); walang trade ang 2020-2025, kaya walang laman ang mga window ng walk-forward na OOS at ang holdout. Pangunahing sanhi ang saklaw ng taker data; hindi pa matitiyak na signal ang sanhi. Siyasatin sa ganitong pagkakasunod: (1) PRINT THE TAKER COVERAGE SPAN: sa _build_taker, itala ang len(self._taker_ts) at min/max(self._taker_ts) matapos i-parse ang supplementary_data['taker_ratio'] para sa BTCUSDT. Alamin kung may mga taker row bago ang……Magpakita ng higit paMagpakita ng mas kaunti
Huwag i-optimize ang NOT — 62 trade lang, lahat nitong huling ~2 buwan (2026); walang trade ang 2020-2025, kaya walang laman ang mga window ng walk-forward na OOS at ang holdout. Pangunahing sanhi ang saklaw ng taker data; hindi pa matitiyak na signal ang sanhi. Siyasatin sa ganitong pagkakasunod: (1) PRINT THE TAKER COVERAGE SPAN: sa _build_taker, itala ang len(self._taker_ts) at min/max(self._taker_ts) matapos i-parse ang supplementary_data['taker_ratio'] para sa BTCUSDT. Alamin kung may mga taker row bago ang 2026. (2) IF ROWS EXIST pero hindi nagtutugma: nasa pag-parse/format ang bug. Nanghuhula ang _parse_taker_ratio batay sa mga pangalan ng key (buySellRatio/buy_sell_ratio/ratio/...) at iskala ng timestamp (ms vs ns gamit ang heuristic na <10^15), pati fallback na buyVol/sellVol — tiyaking tumutugma ang ACTUAL Binance Vision 'metrics' taker schema na natanggap sa strategy sa isa sa mga ito, at tama ang conversion ng timestamp; maaaring dahil sa hindi pagtutugma ng yunit ay naiwan ang lahat maliban sa mga pinakabagong row. (3) IF TAKER HISTORY GENUINELY STARTS ~2026: humigit-kumulang 30 araw lang ang datos ng live takerlongshortRatio endpoint ng Binance, pero umaabot hanggang ~2021 ang archive ng taker buy/sell volume sa data.binance.vision 'metrics' — tiyaking ibinalik ng collector ang BTCUSDT taker metrics hanggang sa buong simula ng backtest; kung walang sapat na lumang datos, hindi maisasagawa ang palagay na maraming taon at dapat ABANDONED ang hypothesis (hadlang sa datos), o limitahan ito sa panahong sapat para sa walk-forward na 3-window at holdout (>= ~18 buwan). (4) SECONDARY (subaybayan matapos ayusin ang datos, huwag balewalain): kahit sa window na 2026, malaki ang lugi ng strategy (PF 0.50, panalo 25.8%, 13 sunod-sunod na talo) at may 37.6% hatak ng komisyon sa 1H. Ang 26% win rate para sa momentum-CONFIRMATION signal ay nagpapahiwatig na maaaring pinuputol ng flow-divergence exit ang mga panalo at pinatatagal ang mga talo — muling suriin ang lohika ng should_exit (maaaring masyadong pabagu-bago ang paglabas sa sandaling tumawid ang flow sa 1.0). Kung negatibo pa rin ang edge matapos makuha ang buong taker data, o nangingibabaw ang bayarin sa 1H, itigil na sa halip na umulit. Panatilihin ang disenyong walang price fallback at agad nag-uulat ng error — ito mismo ang dahilan kung bakit lumitaw ang zero trade sa halip na palihim na subukan ang momentum edge na presyo lang ang batayan.
Kasaysayan ng Iterasyon
Nabigo ang beripikasyon (Layer 2 — mga sintetikong sitwasyon): Mga ginamit na parameter: ['min_notional', 'position_pct', 'taker_window', 'stop_loss_pct', 'trend_lookback', 'taker_threshold', 'max_holding_bars'] Tiyaking itinatakda ng __init__ ang lahat ng attribute mula sa self.parameters.get(). - steady_uptrend: TypeError: BtcTakerFlowConfirmedMomentumLS._ts_to_ns() ay tumatanggap ng 1 positional argument pero 2 ang ibinigay (timestamp ng bar: 1735691100000) - steady_downtrend: TypeError:……Magpakita ng higit paMagpakita ng mas kaunti
Nabigo ang beripikasyon (Layer 2 — mga sintetikong sitwasyon):
Mga ginamit na parameter: ['min_notional', 'position_pct', 'taker_window', 'stop_loss_pct', 'trend_lookback', 'taker_threshold', 'max_holding_bars']
Tiyaking itinatakda ng __init__ ang lahat ng attribute mula sa self.parameters.get().
- steady_uptrend: TypeError: BtcTakerFlowConfirmedMomentumLS._ts_to_ns() ay tumatanggap ng 1 positional argument pero 2 ang ibinigay (timestamp ng bar: 1735691100000)
- steady_downtrend: TypeError: BtcTakerFlowConfirmedMomentumLS._ts_to_ns() ay tumatanggap ng 1 positional argument pero 2 ang ibinigay (timestamp ng bar: 1735691100000)
- flat_ranging: TypeError: BtcTakerFlowConfirmedMomentumLS._ts_to_ns() ay tumatanggap ng 1 positional argument pero 2 ang ibinigay (timestamp ng bar: 1735691100000)
- volatility_spike: TypeError: BtcTakerFlowConfirmedMomentumLS._ts_to_ns() ay tumatanggap ng 1 positional argument pero 2 ang ibinigay (timestamp ng bar: 1735691100000)
- zero_volume: TypeError: BtcTakerFlowConfirmedMomentumLS._ts_to_ns() ay tumatanggap ng 1 positional argument pero 2 ang ibinigay (timestamp ng bar: 1735691100000)
- price_gap: TypeError: BtcTakerFlowConfirmedMomentumLS._ts_to_ns() ay tumatanggap ng 1 positional argument pero 2 ang ibinigay (timestamp ng bar: 1735691100000)
Buod ng Resulta
Maaari pa ring magdala ng tuloy-tuloy na negatibong inaasahang halaga ang malinis at naipatupad nang tama na crypto-native na signal ng kumpirmasyon. Kaya hindi dapat ulitin nang gayon din ang momentum-continuation na kinumpirma ng taker flow sa BTC 1H — nagpapahiwatig ang magkapantay na lugi sa magkabilang panig na maaaring hypothesis ng Research Lead ang muling pagbalangkas bilang mean-reversion, hindi pagbabago ng parameter.
Iniwan ito sa yugto ng pagsusuri ng backtest bago ang optimization, kung saan nagpasya ang analyst na 'itigil': palaging negatibo ang signal sa buong sample na 6.5 taon at nalugi ito bawat taon pagkaraan ng -2020 (2022 -5.9%, 2023 -10.5%, 2024 -3.8%, 2025 -7.1%), kaya walang positibong rehiyon ng parameter na maaaring tutukan ng optimization.
Pumasok ito sa long o short na posisyon sa BTCUSDT USD-M perpetual (mga 1H bar) lamang kapag kinumpirma ng tuloy-tuloy na taker aggressor-flow sa parehong direksiyon ang trend ng presyo; nanatili itong flat kapag hindi nagtugma ang presyo at imbalance ng taker buy/sell.
Sa loob ng humigit-kumulang 1600 araw (2019-2026), nakabuo ito ng 2064 malilinis na trade (1356 long / 708 short) pero walang edge: Sharpe -1.39 (CI lubusang negatibo, -2.27 hanggang -0.59), kabuuang kita -21.1%, profit factor 0.797, win rate 23.8%, at information ratio -0.78 kumpara sa benchmark nitong BTC, habang kinain ng komisyon ang 22.4% ng gross.
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.