BL-SD-015: Open-Interest Accumulation Footprint
BIJECTIVE LABS
BL-SD-015: Open-Interest Accumulation Footprint
Status: RELEASED
Classification: PUBLIC
Revision: 1
Date: 2026-09-07
Venue: Bybit Programme: I Verdict: FALSIFIED Axis of death: Data, then idea Transferability: UNIVERSAL
1. Identification
| Field | Value |
|---|---|
| Internal code | M#4, oi_accumulation_shadow |
| Family | Smart-money open-interest accumulation, long only |
| Venue | Bybit perpetuals |
| Programme | I |
| Pre-registered | 2026-06-17 |
| Verdict issued | 2026-06-27 |
| Pre-registration document | D-007 |
| Predecessor | None; the fourth of the platform's original data-substrate machines |
2. Economic thesis
When open interest builds sharply while price remains flat or basing, and aggressor flow over the same window is buy-dominant, and funding has not yet reached a crowded level, the design read that combination as the measurable footprint of committed capital accumulating a long position ahead of a markup, distinguished from noise because open interest measures committed contracts rather than a price-derived oscillator.
Who is forced to lose. The original design record does not name a
structural forced loser. It resolves direction through aggregated taker flow
and treats open interest as a structural signal rather than a
counterparty-mechanism claim. This is a retrospective weakness shared with
BL-SD-013, and it is one of the reasons this hypothesis sits closest, by its
own design record's admission, to the programme's dead directional bucket:
only the multi-hour horizon and the structural-flow basis distinguish it from
tick-level prediction.
3. Falsifiable claim
Pre-registered in the design record before any shadow trade was accumulated:
Sized-NET block-bootstrap confidence interval is positive, the entries beat a random-entry long control on the same universe and horizon, the result is positive in at least two of three subperiods, and no single symbol accounts for more than approximately 40 percent of total realised profit, with funding accrued for real over the holding period.
| Metric | Threshold | Decision if crossed |
|---|---|---|
| Sized-NET block-bootstrap CI95 | spans or is below 0 | REJECTED |
| Random-entry long null | not beaten | REJECTED |
| Subperiod positivity | fewer than 2 of 3 | REJECTED |
| Concentration | one symbol above approximately 40 pct of PnL | REJECTED |
4. Mathematical specification
Notation per BL-D-011. Long-only; evaluated per symbol on each scan tick.
OI-build z-score, over a build window W and a rolling baseline of prior W-bar changes:
rel_t(W) = ( OI_t - OI_{t-W} ) / OI_{t-W}
z_OI,t = ( rel_t(W) - mean(rel_baseline) ) / std(rel_baseline)
rel_baseline excludes rel_t(W) itself, drawn from the trailing
baseline window ending at t-1
Price basing, over the same build window:
ret_t(W) = log(p_t) - log(p_{t-W})
vol_t = std( diff(log p) ) over a trailing realised-vol window
basing_t = ( |ret_t(W)| <= theta_flat * vol_t * sqrt(W) ) AND ( ret_t(W) <= theta_early )
Aggressor flow, over a trailing CVD window W_cvd:
cvd_imb_t = ( buy_vol_t - sell_vol_t ) / ( buy_vol_t + sell_vol_t )
Funding gate:
funding_lo <= funding_t <= funding_hi
entry (long only): fire at t when
z_OI,t >= theta_oi AND basing_t AND cvd_imb_t >= theta_cvd AND funding_lo <= funding_t <= funding_hi
exit, first of:
price_t < basing_low structural invalidation
OI_t < OI_peak_since_entry * (1 - theta_unwind) position unwind
cvd_imb_t <= -theta_flip aggressor flip
price_t < high_since_entry - k_trail * ATR trailing stop, ratchets up only
t - entry_t >= T_max timeout, 60 hours
sizing: fixed reference notional per shadow trade
cost: c_rt = 11.0 bps fee + entry_spread + exit_spread + funding_bps realised over the holdCausality holds by construction for the entry terms: z_OI,t, basing_t,
cvd_imb_t, and funding_t are each computed from observations at or before
t, and the OI baseline explicitly excludes the current observation. The
exit terms OI_peak_since_entry and high_since_entry are running maxima
accumulated forward from the entry timestamp and never reference a future
observation.
5. Operating envelope
| Parameter | Value for this measurement |
|---|---|
| Round-trip cost assumed | 11.0 bps fee, taker entry, plus entry and exit spread, plus realised funding over the hold |
| Execution channel | Taker entry, guaranteed fill on a forming move; exit channel not separately specified in the source |
| Latency band | Cold path; the sidecar polls at 900-second intervals against an hourly open-interest history |
| Measurement cadence | Open-interest history at approximately one-hour resolution, roughly 200 points, approximately 8 days of coverage per fetch |
| Capital scale | Programme default, BL-FM-002 section 6 |
| Venue and instruments | Bybit USDT perpetuals, liquid alt universe excluding BTC, ETH, commodities, and tokenized stocks, liquidity floor 8,000,000 USD |
| Data era | Forward shadow accumulation from 2026-06-17, spanning a 9-day altcoin decline referenced in the successor design record |
6. Instrument
The pure open-interest accumulation signal engine, numpy only, unit-tested against synthetic data, with the Redis adapter and orchestrating shadow class added separately. A dedicated runner drove it in production. A separate evaluation harness, built specifically to isolate the entry signal's forward edge from the exit logic, tested it against a matched random-entry null across six horizons from 30 minutes to 24 hours.
A data-integrity correction was made before evaluation: the sidecar initially read CVD and mid price from the websocket hot-path feed while itself running as a cold-path, minutes-to-hours strategy, a shadow-versus-live substrate mismatch. The correction moved the sidecar to an all-ccxt substrate, open interest history, OHLCV, tickers, and trades all drawn from the same source the live execution path would use, so that the shadow measurement and any eventual live execution would read identical data.
7. Results
| Arm | n | Finding | Threshold | Result |
|---|---|---|---|---|
| All shadow trades | 107 | 89 long entries against 1 short entry, accumulated through a 9-day altcoin decline | Diffuse across at least 3 regime contexts, beats a random-entry null | FAIL, directionally one-sided into a market downtrend |
| Funding term | 107 | Returned zero throughout the sample | Real funding accrual per the section 4 cost model | FAIL, NET overstated by an unmeasured amount |
The kill ledger records 89 long entries against 1 short entry within a 107-trade sample. The strategy was specified long only, with the short side explicitly out of scope for this version, so the remaining 17 trades in that accounting are not reconciled by any source reviewed for this dossier. That gap is reported rather than resolved by assumption.
8. Verdict, axis of death, and transferability
Verdict: FALSIFIED. Axis: data, then idea. Transferability: UNIVERSAL.
The data-axis component is the funding accrual defect: the cost model required realised funding to be subtracted from every trade whose hold crossed a settlement, and the recorded field returned zero throughout, meaning the reported net figures are an upper bound rather than a measurement.
The idea-axis component is independent of that defect and is the one that settles the verdict. A design that requires price to be basing at entry, as a condition for calling the open-interest build genuine accumulation rather than late chasing, produced 89 long entries against 1 short during a sustained multi-day decline. That is not the behaviour of a mechanism that distinguishes accumulation from a market simply falling with rising short-side open interest; it is a directional long bias with no regime gate, confirmed structurally rather than by a single bad sample. No fee substitution repairs a signal that fires long into a market that is falling.
9. Cost and capacity analysis
The funding accrual defect means the true, funding-inclusive net return was never measured; the recorded figures are known to be an upper bound rather than a lower bound or a point estimate. Capacity was not measured, and the question did not become live, since the mechanism failed on the idea axis before the funding correction alone could have settled the verdict.
10. Envelope sensitivity and reopening conditions
No binding parameter exists to name, because the finding is a sign and regime-selectivity failure, not a magnitude shortfall against cost.
Reversal condition: none computable.Correcting the funding accrual defect alone does not rescue this hypothesis,
because the directional bias into a declining market is a defect of the
entry logic, not of the cost accounting. BL-D-002 section 4 asks whether
the result would be positive under arbitrarily favourable envelope
parameters; here the answer is bounded by a mechanism that does not
distinguish the condition it claims to detect.
What would reopen it: an explicit market and symbol regime gate that
prevents a long entry during an active systematic markdown, together with a
verified, non-zero funding accrual path. Both were built directly as the
successor design and are recorded as BL-SD-017.
What would not reopen it: fixing only the funding accrual bug while leaving the entry logic unchanged. The directional bias would remain.
11. Reference implementation
Published as 05_INSTRUMENTS/strategies/python/src/oi_accumulation.py, with
35 tests. It is superseded, in the same volume, by
05_INSTRUMENTS/strategies/python/src/accumulation_distribution.py, the
successor described in BL-SD-017, which carries the regime gate and the
corrected funding accrual this hypothesis lacked. Both are published, because
the pair is what shows what the successor added.
Two things in the published module are worth a reader's time beyond the signal itself.
The funding cost function is where this row's data defect landed, and the
function was not the defect. It sums the settlement rates spanned by a hold,
with the long's sign already correct, and during this measurement it was handed
an empty sequence on every trade because the feed above it was not delivering
rates. An empty sequence still returns zero in the published version,
deliberately: a hold spanning no settlement really does pay no funding. What
R-17 requires is that the caller distinguish no settlements from no data,
because this function cannot see the difference. The test suite pins both cases
side by side.
The entry gate skips on any missing input rather than proceeding on the ones it has, and that asymmetry is this family's own lesson written into a signature. A missing funding reading could mean funding is fine or that the feed is down, and treating absence as permission is precisely how 107 trades were taken against a cost term that was not being measured.
The exit carries no fixed basis-point stop anywhere. It is structural
invalidation, then an open-interest unwind, then a flow flip, then a
volatility-scaled trail, then timeout. That follows directly from BL-SD-009,
where a tight stop on a multi-day thesis produced 438 trades a day against a
design target of 5 to 50.
12. Evidence register
| Related artifact | Carries |
|---|---|
| None assigned | This measurement rests on the narrative decision record rather than an emitted machine-readable artifact, and is registered as D-007 in BL-A-006 |
13. Lessons extracted
This hypothesis produced the design brief for its own successor. The successor's opening section names three specific defects inherited directly from this measurement: no regime gate, causing the strategy to long into a 9-day decline; a regime field that was an empty stub rather than a populated classification; and a funding accrual that was never live, with every recorded hold under 2.8 hours. Each defect was addressed by name in the successor's design rather than left to be rediscovered.
14. Cross-references
BL-SD-017 for the successor that addresses each defect named here.
BL-D-006 on data integrity, for the substrate-mismatch correction in
section 6. BL-SD-000 ledger row OI-ACC.
Copyright (c) 2026 Bijective Labs. All rights reserved.