EthBybitMomentumBurstSecondWaveLong
假设数
Momentum-Burst Second-Wave Continuation on ETHUSD.BYBIT (4H): after a >=1.8-sigma 80-hour price burst, buy the next open and exit on a FIXED 36-hour clock - an event-triggered, flat-92%-of-the-time long that harvests squeezed shorts and lagged copy/trend flow, not an always-in trend filter
假设数
A SINGLE-INSTRUMENT, SINGLE-LEG, SINGLE-VENUE, EVENT-TRIGGERED long on the Bybit linear ETH perpetual (catalog id ETHUSD.BYBIT, 4-HOUR bars, verified span 2019-01-25 -> 2026-09-19, 16,767 bars). Flat ~92% of the time; holds only in the 36 hours after a rare standardised momentum burst. No volume, funding, OI, liquidation, sentiment or cross-venue input. Mechanism (stripped): 'When a perp's trailing multi-day return reaches an extreme relative to its OWN recent distribution of trailing returns, the following ~1.5 days carry a large positive drift, so buy the burst and exit on a clock.' Payers: shorts forced to cover, lagged copy/bot/CTA flow, and the original parent order still completing. Measured: 15 Hyperliquid perps 8H 2022-2026, z>2 -> +1.78% mean / +0.55% median 2-day forward vs +0.20% unconditional, t=10.6, monotone in z; non-overlapping delayed-entry sim +1.54%/trade, 14/15 positive. Chosen cell (ETHUSD.BYBIT 4H, z>=1.8, 9-bar hold, 7.6y): n=149, mean +1.14%, median +0.60%, win 54%, PF 2.02, t=3.12, positive in all 8 calendar years. The fade and the short leg were measured and rejected.
假设数
Implements the hypothesis literally and minimally. (1) '>=1.8-sigma 80-hour price burst' → burst_bars=20 four-hour bars for the trailing return, standardised against the instrument's OWN recent distribution of the same trailing return (z_lookback prior observations, running sum/sum-of-squares over a bounded deque so per-bar cost is O(1) and independent of backtest span). calculate_signal returns that raw z every bar (continuous, varies bar to bar, verified 240/240 unique values on all six synthetic scenarios); the 1.8 threshold lives in should_enter, in matching z units. (2) 'buy the next open' → a market entry at the trigger bar's close, which is that bar's next open. (3) 'exit on a FIXED 36-hour clock' → should_exit compares the current bar's timestamp against the position's ts_opened (mirrored into the scalar self._entry_ts_ns so a paper restart cannot re-anchor it) with a half-bar tolerance, giving exactly 9 bars. Nothing else can exit — no stop or target was added because adding one would test a different mechanism. (4) 'the fade and the short leg were measured and rejected' → long-only, so short entries are never generated. Venue stays BYBIT as declared (Layer-1.5 consistency and the hypothesis's own measurement cell); leverage is left at 1.0 and sizing therefore does not reference it beyond the explicit config.leverage multiplier, so nothing is inert. One honest divergence to flag for the Analyst: replaying this exact construction over the full 16,767-bar ETHUSD.BYBIT 4H history gives n=158, mean +0.82%/trade net of 0.11% round-trip taker fees, median +0.30%, win 53.8%, PF 1.58, t=2.03 — clearly above the 0.15% futures per-trade floor and positive across the 120–360 z_lookback plateau and the 10–40 burst_bars range, but weaker than the pre-registered +1.14%/PF 2.02/t=3.12, and the pre-registered 'positive in all 8 calendar years' does not reproduce (2019–2024 all positive, 2025 −0.52%/trade and 2026 −0.46%/trade). I implemented what was asked rather than tuning z_lookback until the claim reproduced; the recent two-year sag is real and should be scored against the pre-registered prediction rather than optimised away.
假设数
suspected backtest artifact: the daily MTM series repeatedly prints identical large loss/gain pairs despite a single-instrument, low-exposure book, so the Sharpe and risk metrics cannot safely be optimized.
实现
Event-triggered, long-only second-wave continuation on the Bybit ETH perpetual (ETHUSD.BYBIT, 4H bars). Every bar it computes the trailing 20-bar (80-hour) simple return and standardises it against the prior 240 observations of that same trailing return (current observation excluded) — that z-score is the continuous signal. When the burst reaches +1.8 sigma the strategy buys at the trigger bar's close (== the next bar's open) and exits on a FIXED 36-hour calendar clock (9 four-hour bars). No stop, no take-profit, no trailing exit, no signal exit — the hypothesis prices a fixed-horizon forward drift so the clock is the only exit. Position sizing is 50% of account equity in notional at 1x leverage, so gross exposure never exceeds equity. It holds roughly 9 bars per event and is flat ~92% of the time; it is not an always-in trend filter. Price-only: no volume, funding, OI, liquidation, sentiment or cross-venue input, and no short leg.
验证结果
Leave the clock exit as-is for this test. If the optimizer later raises position_fraction toward its 1.0 bound, the Risk Officer should treat the per-event tail as the binding constraint, since there is no stop to cap it.
验证结果
Fixed-clock exit with no stop-loss and 50% of equity in notional. This is a faithful implementation of the hypothesis ('exit on a FIXED 36-hour clock ... no stop, no target'), so it is NOT a defect and adding a stop would test a different mechanism -- but it means a single 36h window is uncapped: the sandbox's largest_loss (-$8,438 against ~$37.5k average notional) is a ~22% single-trade adverse excursion. Acceptable only because the book is flat 91% of the time (exposure_pct 9.0) and leverage is 1.0.
验证结果
No code change needed for the backtest. Before any paper/live promotion, confirm which contract the ETHUSD.BYBIT bars were actually collected from and either route to ETHUSDT or convert sizing to USD contracts -- equal-ETH sizing on an inverse contract would misstate notional and PnL convexity.
验证结果
Live/paper parity note on the instrument, not a backtest defect. The catalog models ETHUSD.BYBIT as a CurrencyPair (base ETH / quote USD, size_precision 8, size in ETH), so the engine prices and sizes it LINEARLY and position_size()'s qty = notional/price is correct for the backtest. On the real venue, however, Bybit's 'ETHUSD' ticker is the INVERSE (coin-margined) perpetual whose quantity is denominated in USD contracts; the linear USDT perp is ETHUSDT. The hypothesis calls ETHUSD.BYBIT 'the Bybit linear ETH perpetual'.
验证结果
No change required; flag only so the analyst reads clustered events correctly in the trade ledger.
验证结果
should_exit() and should_enter() are mutually exclusive within a bar in the base template (position present -> exit path only), so the exit bar cannot also re-enter; the earliest re-entry is one bar (4h) after the clock exit. The hypothesis does not specify re-entry behaviour, so this is only noted for interpreting overlapping-burst events -- clustered z>=1.8 bars produce a 9-bar-on / 1-bar-off cadence rather than a continuous hold.
验证结果
Three things the analyst should weigh at the real backtest, none of which block here. (1) The developer's own full-history replay (n=158) gives +0.82%/trade, PF 1.58, t=2.03 vs the pre-registered +1.14%, PF 2.02, t=3.12, and the pre-registered 'positive in all 8 calendar years' does NOT reproduce (2025 -0.52%/trade, 2026 -0.46%/trade). Score that against success_criteria rather than letting the optimizer tune z_lookback until the claim reproduces. (2) The event sample is far less independent than n=149/158 suggests: the signal is an OVERLAPPING 20-bar trailing return standardised against 240 overlapping observations of itself, so one macro burst can emit several consecutive z>=1.8 bars and the effective number of independent events is materially below the trade count -- the t-stats in the hypothesis are optimistic. (3) The clock-only exit with 50% of equity in notional and no stop produced a largest_loss of -$8,438 on ~$37.5k average notional (~-22% adverse excursion inside one 36h window) in the sandbox; drawdown is benign at 8.9% only because exposure is 9%. Sandbox ledger is internally coherent (0.926%/trade x 140 x ~0.375 deployed-equity ratio ~= the +55.6% total return; PF 1.63 > 1 with positive return), so the per-trade economics are usable.
回测评审
152 trades over 7.2 years with positive total return and 0.859% average trade return.
回测评审
Trades match the intended long-only burst-continuation mechanism.
回测评审
The daily return series contains repeated identical large negative/positive pairs inconsistent with the reported single-leg exposure, indicating a suspected MTM/accounting artifact.
回测评审
Sharpe is only 0.297, its CI spans zero, and 2025–2026 are negative; optimization would fit contaminated metrics.
结局总结
EthBybitMomentumBurstSecondWaveLong-7f8827d4f6
结局总结
The strategy tested a long-only, event-triggered continuation trade on ETHUSD.BYBIT, entering after a high z-score 80-hour momentum burst and exiting after 36 hours. It produced positive total return and trade-level profitability, but the daily MTM series contained repeated identical large loss/gain pairs inconsistent with the intended exposure. It was abandoned at backtest review because the suspected artifact made the risk metrics unsafe to optimize.
结局总结
Validate backtest accounting and daily mark-to-market data before relying on trade-level results or proceeding to optimization.
结局总结
The backtest-review verdict was abandon because the daily MTM series repeatedly showed identical large loss/gain pairs inconsistent with the reported single-leg exposure, suggesting an accounting artifact. Later stages were not reached.
结局总结
It tried to buy ETHUSD.BYBIT after an extreme standardized 80-hour upward price burst and exit after a fixed 36-hour holding period.
结局总结
The backtest produced a 47.07% total return over 152 long trades, with a 0.297 Sharpe ratio, 1.420 profit factor, 51.97% win rate, and 0.859% average trade return. Maximum drawdown was 12.55%.
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。