Strategies
Absorbed-Flush Rule, Fourth Breadth Replication on a Name-Disjoint Bybit Panel with a Same-Date Concurrency Cap: buy a Bybit USDT perp at the close of a down day whose range blew out (>=2x its 60-day return std) but closed at >=0.55 of its range, fixed 3-day clock, 10% per leg, max 2 new entries per date and max 4 open (28 names sharing none with the Bybit/HL/spot panels, 1-DAY, long-only, unlevered)
Outcome: Backtesting
BybitDisjointAbsorbedFlushCappedPanel
Absorbed-Flush Rule, Fourth Breadth Replication on a Name-Disjoint Bybit Panel with a Same-Date Concurrency Cap: buy a Bybit USDT perp at the close of a down day whose range blew out (>=2x its 60-day return std) but…
Hypothesis
Bybit is under its quota (3.4% vs >=5%). The rule is the one frozen template L262 marks as worth testing for breadth, and the universe is disjoint from all three earlier panels, as L262 requires. The same-date entry cap and the open-leg cap are L267's fix for the spot panel's drawdown. Pre-registered: 152 distinct qualifying dates (529 name-events) under the frozen rule. About 230 traded legs are expected after the caps. Average trade about 1.0-1.5% after costs, Sharpe 0.6, and DD at most 15% at 40% maximum gross. The plan proposes tuning ranges around the frozen values only as an advisory proposal; the baseline run uses range_mult 2.0, close_loc_min 0.55 and hold_days 3.
Implementation
A long-only, 1-DAY event panel on 28 Bybit USDT perps that share no names with the earlier Bybit, HL or spot panels. AAVE is the primary and the other 27 are traded extra legs. The trigger is a down day whose range is at least range_mult times the prior 60-day log-return std and whose close sits at or above close_loc_min of the day's range. On a trigger the strategy buys at the signal bar's close with a market order. On a 24/7 venue that price is the equivalent of the next bar's open (next_bar_open_fill, use_equivalent). Each date's events are ranked by range/sigma. At most max_new_per_date (2) new legs open per date and at most max_concurrent (4) legs are open at once; the other events are skipped. Each leg is 10% of account equity, unlevered, and is closed by a market SELL at the close of the 3rd daily bar after entry, timed from position.ts_opened. The universe is point in time via universe_at(), and a name needs at least 90 daily bars of its own history. The base template closes a leg at its last price if the name delists.
This implements the frozen absorbed-flush rule with L267's exposure caps: at most 40% gross (4 x 10%) and at most 20% added on one date. Risk route (b) applies: a fixed time exit plus capped sizing at 10% per leg and leverage 1, so one leg can lose at most 10% of equity. An extra leg only counts when its newest bar is stamped exactly at the primary's decision instant, so there is no look-ahead. A leg that exits at today's close frees its slot for today's entries. Listing check: all 28 symbols have Bybit 1-DAY bars. FET delisted on 2024-06-08 and ICX on 2026-09-18; CAKE starts 2023-11 and CFX 2023-02. All are included and point_in_time_universe is set. Every parameter name matches the optimization plan: hold_days, range_mult and close_loc_min are tunable and the rest are fixed. The code clamps no parameter, so there is no _param_bounds.
Verification Results
Optional: return vol_lookback + 2 from min_bars_required and leave the per-leg 90-bar rule in _features, so other legs are not held back by AAVE's listing date.
min_bars_required() returns 90, and the base applies it to the PRIMARY buffer (AAVE). No leg on the panel can trade until AAVE itself has 90 daily bars. Each extra leg's own 90-bar eligibility is enforced separately and correctly in _features (len(hist) >= 90; buffers hold 500 bars). The override is deliberate and only delays the panel start by AAVE's warm-up, so it is not a correctness defect.
If optimization runs slowly, cache each leg's rolling sum and sum of squares incrementally instead of recomputing the 60-return window on every bar.
The sandbox took 287 s for 1,909 bars and was flagged runtime_review_required. The per-bar work is 28 legs x 60-return loops plus 28 x 3 cache queries, which is cheap. Most of the cost is probably the 28-leg engine itself. This is a resource concern, not a correctness one.
The pre-study's 2026 events average -1.44% over 70 events, and 2024 supplies 220 of the 529 events. The effective sample is about 152 distinct dates, not the leg count. Ranking by the largest range multiple may select the most toxic flushes. In the full backtest, the analyst should check the per-year split and the per-date (not per-leg) significance. Fees are not the risk: the ~0.11% Bybit round trip is small against the claimed ~2% gross. Long funding over a 3-day hold is small but not zero.
Backtest and paper results are hypothetical. Trading involves risk of loss.