BL-SD-017: Accumulation and Distribution Footprint, Regime-Gated
BIJECTIVE LABS
BL-SD-017: Accumulation and Distribution Footprint, Regime-Gated
Status: RELEASED
Classification: PUBLIC
Revision: 1
Date: 2026-09-07
Venue: Bybit Programme: I Verdict: FALSIFIED Axis of death: Idea Transferability: UNIVERSAL
1. Identification
| Field | Value |
|---|---|
| Internal code | M#5, accdist_shadow, later referred to as B3 |
| Family | Symmetric smart-money accumulation and distribution footprint, regime-gated |
| Venue | Bybit perpetuals |
| Programme | I |
| Pre-registered | 2026-06-26 |
| Verdict issued | 2026-07-14 |
| Pre-registration document | The pre-registration, dated 2026-06-26 |
| Verdict document | D-017 section 4, updated 2026-07-14; the verdict report dated 2026-07-14 |
| Predecessor | BL-SD-015, whose three named defects this design set out to correct |
2. Economic thesis
Large participants reveal themselves not only in trends but inside ranging phases, where they accumulate before a markup or distribute before a markdown. The design detects that footprint from order-flow microstructure, CVD-price divergence, open-interest build, funding crowding, and book absorption, combined into a confluence score, and takes a symmetric position: long on a confirmed accumulation footprint, short on a confirmed distribution footprint, gated by a market regime classifier so the strategy never longs into an active market-wide markdown and never shorts into an active market-wide markup.
Who is forced to lose. The design record does not name a structural forced loser directly, in the same way its predecessor and the cointegration family do not. The closest candidate the design itself identifies is implicit rather than stated as a thesis: on a distribution setup, the short side receives positive funding from a crowded, funding-paying long side, which is a genuine structural income component of that specific setup, but the record does not elevate it to a forced-loser argument for the strategy as a whole.
3. Falsifiable claim
Pre-registered in the design specification, locked before any live trade was evaluated:
Validated, per direction, iff sized-NET block-bootstrap confidence interval is positive on a taker, funding-inclusive basis, beta-adjusted alpha is positive, the result beats a matched random-entry-in-regime null, no single symbol or episode carries more than approximately 40 percent of total profit, the result holds across at least 3 distinct episodes, and the sample reaches at least 50 trades per direction. Rejected iff the interval is at or below zero under realistic cost, sizing kills it, the result is concentrated, or it fails the null. Below the sample or episode floor, the direction is inconclusive rather than settled in either direction.
| Metric | Threshold | Decision if crossed |
|---|---|---|
| Sized-NET block-bootstrap CI95, per direction | at or below 0, or spans 0 at adequate power | REJECTED |
| Beta-adjusted alpha | not above 0 | REJECTED |
| Random-in-regime null | not beaten | REJECTED |
| Diffusion | one symbol above approximately 40 pct of PnL | REJECTED |
| Sample and episodes | below 50 trades or below 3 episodes | INCONCLUSIVE, not settled |
The verdict record applied a tightened reading of the first row for the long arm: at adequate power, a confidence interval whose upper bound is barely positive was treated as a rejection rather than as inconclusive, since the sample already clears the power gate the design specification set for a settled verdict. This record states that tightening explicitly rather than silently inheriting the more permissive literal wording.
4. Mathematical specification
Notation per BL-D-011. Symmetric, direction in {+1 long, -1 short}.
Regime classification, trailing only, from OHLCV, CVD, OI, funding, and book state at or before t:
layer1_t in {UPTREND, DOWNTREND, RANGE} from higher-high/higher-low structure
layer2_t = confluence over { CVD-price divergence, OI-build, funding crowding,
book absorption, liquidation side }
regime_t in {markdown, markup, accumulation, distribution, neutral}
market gate:
LONG permitted only if regime_market,t != markdown
SHORT permitted only if regime_market,t != markup
entry_confirmation(regime_t, price_t, range_low, range_high, reclaimed_t, turned_t):
LONG: regime_t == accumulation AND ( (reclaimed_t AND price_t >= range_low) OR turned_t ) -> +1
SHORT: regime_t == distribution AND ( (reclaimed_t AND price_t <= range_high) OR turned_t ) -> -1
else 0
exit, first of, evaluated causally at each tick:
adverse_bps = direction * (entry_price - price_t) / entry_price * 1e4
breached = (price_t <= struct_stop) if direction == +1 else (price_t >= struct_stop)
breached OR adverse_bps >= hard_cap_bps (250.0) -> invalidation
direction * footprint_now <= -0.4 -> target, footprint flipped against the position
hold_sec >= timeout_sec (172,800 s, 48 hours) -> timeout
sizing: 5 USD reference notional per shadow trade, driven through KellySizer and
PortfolioRiskManager for the sized-portfolio verdict
cost:
net_bps = gross_bps - fees - funding_pnl
gross_bps = direction * (exit_price - entry_price) / entry_price * 1e4 [walk-the-book fills; slippage inside price]
fees = 5.5 bps per fill * 2 = 11.0 bps round trip, taker
funding_pnl = direction * sum( realised 8-hour rates crossed during the hold ) * 1e4Causality holds by construction. Both regime layers use only trailing OHLCV, CVD, OI, funding, and book observations. The entry trigger is confirmatory rather than anticipatory: it requires a price turn already visible in the tape, not a prediction of one. The exit terms reference only the current price, the current footprint reading, and elapsed hold time.
5. Operating envelope
| Parameter | Value for this measurement |
|---|---|
| Round-trip cost assumed | 11.0 bps taker round trip, plus realised funding over the hold; maker fills modelled separately and not the verdict basis |
| Execution channel | Taker entry and exit, walk-the-book fills with slippage carried inside the price |
| Latency band | Cold path; structural poll cadence of approximately 5 minutes |
| Measurement cadence | 5-minute, 15-minute, and 4-hour OHLCV, continuous CVD, open-interest, funding, and 50-level book reads |
| Capital scale | Programme default, BL-FM-002 section 6 |
| Venue and instruments | Bybit USDT perpetuals, liquidity floor 20,000,000 USD, hardcoded denylist against tokenized stocks and commodities |
| Data era | NET-valid era begins at the funding-accrual live fix, 2026-07-07 16:57 UTC, through the verdict on 2026-07-14 |
6. Instrument
The regime classifier and orchestrator, the entry and exit pure functions, and the supporting regime and cost modules implement the footprint logic. The official verdict instrument carries 7 of 7 unit tests and produced the verdict report dated 2026-07-14.
| Property | Value |
|---|---|
| Episode rule | Per-symbol run, gap below 24 hours |
| Inference | Day-block bootstrap, CI95 |
| Total trades recorded | 290 |
| Trades in the NET-valid era | 157 |
The verdict is computed only on the NET-valid era, after a funding-accrual defect in the earlier live feed was corrected; trades before the fix carried a funding field that read zero on every settlement crossed, and are excluded from the verdict rather than corrected retroactively.
7. Results
| Arm | n | Episodes | Mean (bps) | Median (bps) | Win rate | CI95 | Result |
|---|---|---|---|---|---|---|---|
| LONG | 152 | 37, across 16 symbols, 8 days | -27.11 | -15.84 | 34.2 pct | [-59.11, +2.33] | REJECTED |
| SHORT | 5 | 5, across 4 symbols, 3 days | -51.57 | -57.90 | 40.0 pct | [-263.32, +4.43] | INCONCLUSIVE, below the power floor |
Universe hygiene was checked directly rather than assumed to be the cause: excluding the symbols already flagged by the denylist audit still leaves a long-arm mean of approximately -19.6 basis points, so contamination does not explain the result.
The worst five long-arm symbols by total contribution were MAGMAUSDT at -1,066 basis points, NEARUSDT at -746, HYPEUSDT at -697, WLDUSDT at -625, and FARTCOINUSDT at -423, distributed across five different names rather than concentrated in one.
A contrast against the pre-fix era is reported because it is instructive rather than because it carries a verdict: the era-bug sample of 106 trades, in which funding read zero throughout, showed a mean of +4.8 basis points. Once funding was accrued correctly, the sign inverted. The earlier positive reading was an accounting artifact, not a signal.
8. Verdict, axis of death, and transferability
Verdict: FALSIFIED. Axis: idea. Transferability: UNIVERSAL.
The long arm is well powered: 152 trades across 37 distinct episodes, 16 symbols, and 8 days, comfortably clearing the pre-registered floor of 50 trades and 3 episodes. Its mean and median are both decisively negative, its win rate sits well below breakeven at 34.2 percent, and excluding the already-known universe contamination barely moves the result. This is not a hygiene problem and not a power problem; it is the footprint failing to add predictive value once honestly regime-gated, entry-confirmed, and funding-accounted.
The predecessor hypothesis, BL-SD-015, failed on three named, correctable
defects: no regime gate, an empty regime field, and a funding accrual that
never ran. This design corrected all three, and still failed, on a different
mechanism: the confluence of CVD divergence, open-interest build, funding
crowding, and book absorption does not, on the observed sample, predict a
profitable directional move. That is a stronger finding than the
predecessor's, because it rules out the specific defects rather than leaving
them as an open explanation for the loss.
The short arm remains genuinely unresolved rather than falsified: 5 trades across 5 episodes is far below the power floor, and no verdict is drawn from it in either direction.
9. Cost and capacity analysis
The NET-valid era carries zero trades with a funding-crossing accounting defect, confirming the live fix held for the full sample used in the verdict. No separate gross figure is reported alongside the net figures in section 7; the round-trip cost of 11.0 basis points is small relative to the negative point estimates, which is itself part of the section 8 argument that this is not a cost-bound result. Capacity was not measured, and per-symbol concentration, while present, does not exceed the pre-registered diffusion threshold once the worst five names are inspected individually.
10. Envelope sensitivity and reopening conditions
No binding parameter exists to name on the long arm, because the finding survives the removal of both the obvious candidates, universe contamination and cost.
Reversal condition: none computable on the long arm.Zeroing the 11.0 basis point round trip does not move the median of -15.84
basis points into positive territory, and excluding the denylist symbols
still leaves a mean of approximately -19.6. BL-D-002 section 4's test, would
this be positive under arbitrarily favourable envelope parameters, resolves
to no on the evidence available.
What would reopen it: the design record itself names a distinct, untested path rather than a parameter substitution. Version one is a moment-by-moment order-flow footprint classifier; it does not detect true multi-timeframe swing structure, real support and resistance, or Wyckoff phase, and its spring and upthrust entry path was disabled in this version, with only the confirmed price-turn path live. A structurally-aware successor, built only because the flow-only footprint has now been shown insufficient rather than pre-emptively, is the reopening path the design record itself anticipates.
What would not reopen it: further universe cleanup or a cheaper fee tier. Both were checked directly and neither moves the result.
The short arm has a separate, narrower reopening condition: continued accumulation at the observed rate of approximately 5 trades per week would require roughly 10 weeks to reach the 50-trade power floor, which exceeds any runway available to this measurement and was not pursued further.
11. Reference implementation
Published as
05_INSTRUMENTS/strategies/python/src/accumulation_distribution.py, with 45
tests, carrying the regime classifier, the footprint score, the market gate, and
the entry and exit signal functions. The predecessor it supersedes is published
beside it as 05_INSTRUMENTS/strategies/python/src/oi_accumulation.py.
The spring and upthrust entry path was never live in this version, and that was
verified against the source during publication rather than carried over from a
note: the engine's only call site passed reclaimed=False unconditionally, so
in every trade this hypothesis measured, only the confirmed-turn route could
fire.
A future reader must therefore not read this verdict as having falsified the
spring and upthrust entry. It falsified the confirmed-turn entry, on this
substrate, at this cost. The published module keeps the reclaimed argument in
its signature rather than removing it, precisely so the untested path stays
visible instead of disappearing into the history of a deleted parameter, and the
test suite pins both routes so a reader can see that the untested one works.
Two properties of the footprint are pinned rather than asserted, because inverting either would flip the whole score without failing anything else. A negative funding rate reads bullish, since shorts are the crowded side and paying. Longs being flushed in a liquidation reads bullish, since that is the capitulation tell rather than a warning. Both are contrarian channels and both have a test of their own.
One piece of structure in the score is worth naming. The open-interest term is multiplied by the sign of the flow divergence rather than carrying a sign of its own. Open interest building says commitment is arriving; it does not say whose. The divergence is what identifies the side, so the commitment term takes its direction from it. Every component is also squashed into a bounded range before its weight is applied, so the five declared weights are the weights that actually apply rather than being overridden by whichever channel happens to carry the largest raw magnitude.
12. Evidence register
| Related artifact | Carries |
|---|---|
| The verdict report dated 2026-07-14 | The official verdict report, per-direction sample, episode, mean, median, win rate, and confidence interval figures reported in section 7. Not yet assigned an evidence identifier in BL-A-001 |
13. Lessons extracted
Fixing every named measurement defect from a predecessor hypothesis is
necessary and is not sufficient. BL-SD-015 failed with an unpopulated
regime field, a long-only bias into a decline, and a funding accrual that
never ran; this design corrected all three, and the mechanism still failed,
on a footprint that does not predict direction once measured honestly. The
general rule this echoes, that a cost or accounting term missing from the
measurement path can manufacture a false positive, is the same class of
error BL-D-009 rule R-01 addresses, here surfacing as the era-bug
contrast in section 7 rather than as a newly produced rule.
14. Cross-references
BL-SD-015 for the predecessor and the defects this design corrected.
BL-D-009 rule R-01 on cost terms absent from the measurement path.
BL-D-004 for the evaluation standard this hypothesis was measured against.
BL-SD-000 ledger row ACCDIST.
Copyright (c) 2026 Bijective Labs. All rights reserved.