BL-SD-006: Spread-Spike Capture
BIJECTIVE LABS
BL-SD-006: Spread-Spike Capture
Status: RELEASED
Classification: PUBLIC
Revision: 1
Date: 2026-09-07
Venue: Bybit perpetuals Programme: I Verdict: NOT PROVEN Blocking axis: Power Transferability: -
1. Identification
| Field | Value |
|---|---|
| Internal code | PS-C |
| Family | Strict spread-spike direction capture, Parallel Shadow Portfolio Slot 3 |
| Venue | Bybit USDT perpetuals, Tier 1.5 altcoin |
| Programme | I |
| Pre-registered | 2026-05-29, Phase 1A.2 winner-promotion criteria (D-002) |
| Verdict issued | 2026-05-30 |
| Predecessor | BL-SD-002, whose zero-fill execution result on the same widening events motivated testing prediction quality in pure shadow mode, with no order placement |
Not a verdict on the same claim as BL-SD-002. That dossier tested whether a
passive order could fill inside a spread spike. This one tests only whether
the direction of a subsequent move is predictable once a spike and an order-
flow confluence fire together, deliberately bypassing the fill-rate question.
2. Economic thesis
A spread spike combined with order-flow confluence signals an informed sweep:
a resting book was cleared aggressively enough to widen the quoted spread by
an order of magnitude, and the side that swept it carries information about
near-term direction. The design tests only whether that direction is
predictable, independent of whether a passive order could realistically have
captured it, which BL-SD-002 had already shown was doubtful.
Who is forced to lose. The thesis does not name a distinct forced loser beyond the general order-flow-continuation mechanism shared with the rest of this family; its distinguishing claim is about signal quality on a rarer, larger event rather than about a new structural counterparty.
3. Falsifiable claim
Pre-registered as the shared winner-promotion criteria, with an acknowledged optimistic cost assumption specific to this variant:
Fading is not tested here; riding the confluence direction after a spread spike produces at least 50 shadow trades in 24 hours, an EV per trade at or above 0 basis points assuming an optimistic 2 basis point maker-to-maker round trip, an aggregate p_tp at or above 0.40, and no per-symbol p_sl above 0.30.
| Metric | Threshold | Decision if crossed |
|---|---|---|
| Shadow trade count, 24h | at least 50 | Insufficient power if below |
| EV per trade, maker-to-maker assumption | at or above 0 bps | Confirms viability under best-case execution |
| EV per trade, realistic taker-maker | at or above 0 bps | Determines viability under achievable execution |
| Per-symbol p_sl | at or above 0.30 | Flag for that symbol if crossed |
4. Mathematical specification
Notation per BL-D-011.
State, per symbol, rolling spread history of L = 600 samples
(approximately 60 s at a 100 ms poll):
median_60s(t) = median of the trailing L spread_bps observations
ending at t
Entry, fire at t when ALL hold:
is_warmed_up(t) = true
cooldown elapsed: (t - last_exit) >= 5,000 ms
spread_bps(t) >= 6.0 (absolute floor)
spread_bps(t) >= 10.0 * median_60s(t) (relative spike)
|ofi_l5_norm(t)| >= 1.5 (confluence)
direction d_t = sign(ofi_l5_norm(t))
Exit, path-dependent, first touch wins:
tp_price = entry_mid + d_t * entry_mid * 3 / 10000
sl_price = entry_mid - d_t * entry_mid * 3 / 10000
timeout: 1,000 ms
Sizing:
notional_usd = 5.0, max_concurrent = 2, symbols = all 8 Tier 1.5
Cost, three scenarios reported rather than a single assumption:
c_rt(best, maker-maker) = 2.0 bps
c_rt(realistic, taker-maker) = 7.0 bps
c_rt(worst, taker-taker) = 12.0 bps
Net return per event, shadow simulation (no order actually placed):
r_net(t) = d_t * (exit_mid - entry_mid) / entry_mid * 1e4 - c_rt(scenario)Causality holds by construction: median_60s is computed on the trailing
window ending at t, and the entry gates all read state at or before t.
The strategy ran in shadow mode only; no order was submitted, which is the
deliberate design choice that separates this measurement from BL-SD-002.
5. Operating envelope
| Parameter | Value for this measurement |
|---|---|
| Round-trip cost assumed | Three scenarios: 2.0 bps maker-to-maker (optimistic), 7.0 bps taker-to-maker (realistic), 12.0 bps taker-to-taker (worst case), per source; current declared figures are 4.0, 7.5, and 11.0 bps respectively (BL-FM-002 section 3.1) |
| Execution channel | Shadow simulation only; no order submitted |
| Latency band | Tokyo VPS, low single-digit milliseconds to venue |
| Measurement cadence | Signal-poll driven, shadow simulation via mid-price tracking |
| Capital scale | Demo virtual capital, $5 notional per entry |
| Venue and instruments | Bybit USDT perpetuals, 8 Tier 1.5 altcoin symbols |
| Data era | 24-hour continuous shadow window, 2026-05-29 to 2026-05-30 |
6. Instrument
The spread-spike capture strategy implementation, a new module built for this measurement, structurally identical to the VPIN mean-reversion module in its testable entry/exit/outcome functions but with a spread-percentile trigger in place of a VPIN trigger. Aggregation via the same shadow analysis tooling.
7. Results
| Arm | n | Estimate | Threshold | Result |
|---|---|---|---|---|
| Shadow trades, 24h | 58 | 58 | at least 50 | PASS, marginally |
| p_tp / p_sl / p_timeout | 58 | 60.3 / 24.1 / 15.5 pct | p_tp at or above 0.40 | PASS |
| Mean realised move, mid-to-mid | 58 | +5.35 bps | positive | PASS |
| Move distribution, p50 / p90 / max | 58 | +3.99 / +24.75 / +66.44 bps | - | Right-skewed, fat tail |
| Median time-to-TP-hit | 58 | 0.1 s | - | Near-instant |
| EV, maker-to-maker (2.0 bps) | 58 | +3.35 bps | at or above 0 bps | PASS |
| EV, realistic taker-maker (7.0 bps) | 58 | -1.65 bps | at or above 0 bps | FAIL |
| EV, worst case taker-taker (12.0 bps) | 58 | -6.65 bps | at or above 0 bps | FAIL |
| INJUSDT subset | 6 | 100 pct TP, mean +18.11 bps | - | Small sample, not separately powered |
| NEARUSDT subset | 24 | 58 pct TP, mean +6.29 bps | p_sl at or below 0.30 | FAIL, p_sl 33 pct |
The verdict flips sign depending entirely on which cost scenario an operator can actually reach.
8. Verdict, blocking axis, and transferability
Verdict: NOT PROVEN. Axis: power. Transferability: dash, per BL-SD-000
section 2, since an unresolved verdict carries nothing to transfer.
Fifty-eight events is above the pre-registered floor but thin for a
distribution this skewed: a p50 of +3.99 basis points against a max of
+66.44 means a handful of large outcomes carry much of the mean, and the
smallest per-symbol subset, INJUSDT at n=6, cannot be treated as evidence on
its own. The result also depends entirely on an execution channel,
maker-to-maker at the entry leg, that BL-SD-002 measured as unreachable in
practice: zero of 823 vacuum-style passive entries filled in that companion
measurement. Under the realistic taker-to-maker assumption the strategy is
already negative.
This is recorded as NOT PROVEN rather than as a falsification, per
BL-D-005 section 2: the interval this small a sample would produce spans
the relevant thresholds, and labelling it dead would misstate what was
actually learned, which is that the signal shows promise under a cost
assumption the programme has independent reason to doubt.
9. Cost and capacity analysis
Mean realised move (gross) +5.35 bps
EV, maker-to-maker (2.0 bps) +3.35 bps
EV, realistic taker-maker (7.0 bps) -1.65 bps
EV, worst case taker-taker (12.0 bps) -6.65 bpsCapacity was not assessed; at 58 events in 24 hours across 8 symbols the event rate itself is the open question this dossier leaves for a larger sample to resolve.
10. Envelope sensitivity and reopening conditions
Binding parameter: which execution channel is actually reachable on the entry leg, not a single cost figure.
Breakeven round-trip cost, at the measured +5.35 bps gross:
c_rt < 5.35 bps => net positive
Declared channels (BL-FM-002 section 3.1):
Maker to maker 4.0 bps => net +1.35 bps
Maker to taker 7.5 bps => net -2.15 bps
Taker to taker 11.0 bps => net -5.65 bpsAgainst the currently declared schedule, only the maker-to-maker channel
clears the gross edge, and only by a slim margin. Whether that channel is
achievable on the entry leg is exactly what BL-SD-002 measured and found
wanting: zero fills across 823 attempts at capturing a passive order inside
a comparable widened spread. This dossier's positive scenario and that
dossier's execution finding describe the same unresolved question from two
directions.
What would be needed to settle it: a larger sample, at minimum in the low hundreds given the observed dispersion, run with fills actually attempted rather than assumed, so the realistic fill rate on the entry leg can be measured directly instead of assumed at either the optimistic or the pessimistic bound.
What would reopen or close it: confirmation, from a live-fill measurement, of which round-trip cost this strategy actually incurs. Below 5.35 basis points, closed as envelope-bound in the favourable direction; at or above it, falsified on cost.
11. Reference implementation
Published as 05_INSTRUMENTS/strategies/rust/src/spread_spike_capture.rs,
with the 12 test cases that pinned it in the source. No defects were found; the
module ran as designed. The polling loop, the cache reads and the shadow-trade
publisher are not reproduced.
One convention is worth naming, because a reader re-implementing from section 4
alone would get it slightly differently. Section 4 writes the rolling spread
reference as median_60s(t). The instrument takes the element at index n/2 of
the sorted buffer, which on an even-length buffer is the upper of the two
central values rather than their mean. The source's own test pins that
explicitly, so it is a deliberate choice rather than a slip. On a 600-sample
spread buffer the two differ by well under a tick and the trigger compares
against ten times the value, so no result here turns on it. The published
module names the function for the convention it actually implements.
12. Evidence register
| ID | Artifact | Carries |
|---|---|---|
| E-0058 | Phase 1A.2 Variant C shadow trade log and aggregation output | n, p_tp, p_sl, mean realised bps, distribution percentiles, per-symbol breakdown |
This measurement is recorded in narrative decision documents; registration as
a standalone document-evidence artifact is scheduled per BL-SD-000 section 8.
13. Lessons extracted
This dossier and BL-SD-002 should be read together. Separating the
question of signal quality from the question of fill achievability, by
running this measurement in pure shadow mode with no order placement, is
what let the programme identify a real-looking edge without conflating it
with an execution assumption it had independent reason to distrust. The
discipline of not promoting a strategy to live status on an optimistic cost
assumption alone is the reason this entry is recorded NOT PROVEN rather
than as a false positive that later had to be walked back.
14. Cross-references
BL-SD-002 for the companion execution-feasibility measurement on the same
widening events. BL-SD-004 and BL-SD-005 for the other two Parallel
Shadow Portfolio variants tested the same day. BL-D-005 section 2 for the
power-axis and NOT PROVEN distinction. Ledger row PS-C.
Copyright (c) 2026 Bijective Labs. All rights reserved.