Mga Estratehiya
DOGE USD-M Taker-Flow Imbalance Continuation, Long-Short (Perp na BINANCE sa iisang instrumento, 15m Bars + Multi-Year na TAKER BUY/SELL Aggressor-Volume Feed, Pumapasok sa Direksiyon ng Bugso ng Aggressor Flow sa Itaas/Ibaba ng Decile na Hindi Pa NOT Ganap na Naipresyo, Continuation na Nauuna ang Flow sa Presyo, 3-Parameter)
Resulta: Inabandona
DogeTakerFlowImbalanceContinuationLS15m
Saklaw ng multi-year taker feed (sumasaklaw ang mga trade sa 2021-2022, hindi lang kamakailang datos); tunay na non-price signal; mga lookup na O(log n) at ligtas sa timeout
Hypothesis
Inaayos ng Iteration-3 ang naiulat na pagkabigo sa Layer-2 lamang sa ONLY, at wala nang iba. Naglabas ang Layer 2 ng `TypeError: _num() takes 2 positional arguments but 3 were given` sa lahat ng anim na synthetic scenario: @staticmethod ang `_num` ngunit tinatawag ito bilang `self._num(...)`, at itinatali muli ng verifier proxy ng Layer-2 ang mga callable attribute bilang bound method, kaya naipapasa ang `self` bilang dagdag na positional argument. Naayos na ng code ang kaparehong sitwasyon para sa `_to_ns` sa pamamagitan ng paggawa rito bilang ordinaryong instance method; inilapat ko ang kaparehong minimal na ayos sa `_num`. Ginawa ko ring instance method ang `_pctile` (ang nag-iisang iba pang @staticmethod, na tinatawag din sa pamamagitan ng `self._pctile(...)`) para hindi lang umulit ang strategy sa susunod na staticmethod kapag lampas na ang `_num`. Walang binagong call site (ginagamit na ng lahat ang `self.`), at hindi ginalaw ang signal logic, imports, parameter, o config — nananatiling pasado ang lahat ng naunang layer at hindi ginalaw ang gumaganang signal path.
Implementasyon
Long-short na microstructure strategy sa iisang instrumento sa DOGEUSDT.BINANCE USD-M perp (15m bars). Ang signal ay ang imbalance ng agresor-volume ng taker buy/sell sa Binance (mula sa multi-year na seryeng `metrics` na pinagsama sa siksik na feed na `taker_ratio`), NOT raw OHLCV. Sa bawat pagsasara ng 15m, pinapakinis nito ang signed imbalance na (R-1)/(R+1) sa loob ng flow_window bars at niraranggo bilang percentile sa trailing distribution. Kapag umabot sa decile extreme ang biglang bugso ng agresor at hindi pa ganap na muling naitatakda ng presyo ang halaga (NOT ang realized |return| sa parehong window), pumapasok ito sa direksiyon ng daloy para sakyan ang pagpapatuloy. Lumalabas sa take-profit, stop-loss, hard time stop, o pagkaubos ng daloy (kapag tumawid pabalik sa neutral ang daloy ng agresor laban sa posisyon). Nananatiling flat kapag walang bagong taker reading (walang fallback na presyo lang ang batayan).
Mga Resulta ng Beripikasyon
CLEAN RESTART 2026-09-04 — inalis ang kasaysayan ng hatol at mga tala ng pagkatuto sa run na ito at sinimulan itong muli mula sa verification. Nagmula sa pipeline, hindi sa merkado, ang naunang pag-abandona: mali ang pagkakatali ng Layer-2 harness sa mga @staticmethod helper (naayos); naglabas ang QA ng pinal na hatol sa performance batay sa smoke test na hindi na-optimize (inalis — QA tama lang ang sinusuri ngayon); at sanhi ng kakulangan ng backtest slot ang mga timeout sa sandbox (naayos). Hindi binago ang hypothesis at code ng strategy. Suriin ang code batay sa merito nito; ang performance ay pagpapasiyahan sa buong backtest at ng optimizer.
Hindi kayang tustusan ng mataas na turnover ang mga bayarin: 1552 trades/206 araw, 96.78% ng gross ang komisyon, avg_trade_return_pct -0.014% — pangunahing sanhi ng -93%. Ang flow_pct/price_move_pct ang mga knob ng optimizer, kaya problema ito sa dalas/edge para sa optimizer, hindi depekto sa code. Dapat limitahan ng optimizer ang bilang ng trade at netong kita bawat trade matapos ang bayarin; iwanan kung walang makitang mapagkakakitaang operating point.
Baligtad na reward/risk + posibleng maling direksiyon ang palagay: avg_win $61 < avg_loss $132 sa kabila ng TP>SL (nililimitahan ng flow-exhaustion exit ang panalo), ipinahihiwatig ng win_rate 0.37 na mas mahusay ang fading kaysa continuation sa DOGE 15m. Tama ang pagkakagawa ng code sa hypothesis ayon sa pagkakasulat, kaya tanong ito tungkol sa palagay/edge para sa analyst/research. Ihambing ang continuation at reversal polarity sa A/B test.
Pagsusuri ng Backtest
- Sharpe
- -0.77
- Kabuuang Return
- -100.00%
- Max Drawdown
- 100.00%
- Kabuuang Trade
- 12810
- Win Rate
- 39.7%
- Profit Factor
- 0.46
Saklaw ng multi-year taker feed (sumasaklaw ang mga trade sa 2021-2022, hindi lang kamakailang datos); tunay na non-price signal; mga lookup na O(log n) at ligtas sa timeout
Account LIQUIDATED 2022-10-19: total_return -100%, max_drawdown 100% (CI hanggang 100%), CAGR -100%
Pagkamatay sa bayarin: commission_pct_of_gross 50.1% ($99k komisyon + $131k impact), avg_trade_return_pct 0.0069% (malayong mas mababa sa hangganang 0.15%) sa loob ng 12,810 trades
Negatibo ang inaasahang kita: profit_factor 0.46, Sharpe -0.77 (CI [-4.76, -0.01]), PSR 0.06, inaasahang -$17.83/trade, win_rate 39.7%, avg_loss > avg_win
Pagkalugi sa pagpulot ng baryang tig-iisang sentimo: skew -4.1, kurtosis 627, 19 magkakasunod na pagkalugi; pumapasok ang continuation sa 12,810x at nauubos ang pondo sa mga gastos hanggang ma-liquidate
Backtesting: L73 single-perp order-flow L18 fee_edge sukdulan | Stratmill
Kasaysayan ng Iterasyon
Bumagsak ang verification (leverage_set_but_unused): nakatakda sa config ang leverage=2.0 ngunit hindi ginagamit ng strategy ang leverage sa sizing. Gamitin ito sa pag-size ng mga posisyon — notional = equity * fraction * leverage / price (basahin ang self.config.leverage) — o itakda sa leverage=1.0. Sa kasalukuyang anyo, walang bisa ang leverage at kapareho ng 1x ang backtest.
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.