BL-SD-002: Vacuum Capture, Trigger-Based Passive Quoting
BIJECTIVE LABS
BL-SD-002: Vacuum Capture, Trigger-Based Passive Quoting
Status: RELEASED
Classification: PUBLIC
Revision: 1
Date: 2026-09-07
Venue: Bybit perpetuals Programme: I Verdict: CLOSED Axis of death: Cost Transferability: ENVELOPE-BOUND
1. Identification
| Field | Value |
|---|---|
| Internal code | VAC |
| Family | Opportunistic passive quoting on spread dislocation |
| Venue | Bybit USDT perpetuals, Tier 1.5 altcoin |
| Programme | I |
| Pre-registered | 2026-05-26, as acceptance and failure criteria for a 24-hour observation window (the dated implementation-completion report, 2026-05-26), predating the formal pre-registration protocol in BL-D-003 |
| Verdict issued | 2026-05-28 |
| Predecessor | Generic persistent Level 1 maker quoting, halted the same day this strategy replaced it |
Vacuum Capture replaced persistent Level 1 quoting after that approach was found to carry structurally negative expectancy against Bybit's institutional Bulk Amend Orders queue priority. The design hibernates: it places no quotes while the market is calm and wakes only when a composite trigger fires.
2. Economic thesis
A resting quote at Level 1 in a calm market queues behind institutional priority orders and is filled only by toxic sweeps. But a spread spike, a liquidation cascade, or an extreme order-flow or toxicity reading briefly clears the book of those competing quotes: the institutional walls that would otherwise squeeze a retail-sized order have themselves just been swept. The thesis is that a passive order placed inside that widened spread, in the 5 to 30 millisecond window after the trigger fires, captures the spread before the walls return, without contesting queue priority in the calm regime where retail cannot win it.
Who is forced to lose. No specific structural loser is named in the source design beyond the general claim that a taker crossing the widened spread during the vacuum window pays the resting side. The thesis rests on a market-structure timing gap rather than on a named counterparty forced to transact.
3. Falsifiable claim
Pre-registered as acceptance and failure criteria before the 24-hour observation window began:
Vacuum trigger fires at an expected rate of 10 to 25 per day across 8 symbols; fills convert at a non-trivial rate; net P&L over the window is gross-positive before fees.
| Metric | Threshold | Decision if crossed |
|---|---|---|
| Trigger fires over the window | zero in 24h | FALSIFIED, threshold miscalibrated |
| Fill conversion, high fire count | fires high but fills near zero | FALSIFIED, vacuum window closes faster than the entry can react |
| Realised P&L on fills | immediate adverse move exceeding 5 bps | FALSIFIED, adverse selection on the fills obtained |
| Frequency of profitable-width events | sufficient to matter economically | Determines whether the mechanism is executable at scale |
The observation ran 18 hours rather than the full 24 before the finding was conclusive enough to close the line.
4. Mathematical specification
Notation per BL-D-011.
Composite trigger, evaluated at t on rolling state through t:
Layer 1 (confluence): |ofi_l5_norm(t)| >= 2.0
Layer 2 (any fires):
cascade_detected(t) = true OR
spread_bps(t) > 20.0 * median_60s(spread_bps) OR
spread_bps(t) >= 6.0 (absolute floor) OR
liq_intensity_10s(t) > p95_60s(liq_intensity_10s) OR
vpin(t) > p99_60s(vpin)
Vacuum viability gate:
min_vacuum_spread_bps = 8.0 required post-trigger width for entry
Entry, at trigger time t0:
wait 5 ms (institutional-sweep settle)
re-read bid(t0+5ms), ask(t0+5ms)
require (ask - bid) / tick_size >= 5 (vacuum still open)
place PostOnly buy at bid + 0.25 * (ask - bid)
place PostOnly sell at ask - 0.25 * (ask - bid)
Exit:
cancel unfilled side after 200 ms
on single-side fill, post the opposite side at fill_price +/- 1 tick
if the opposite side remains unfilled after 500 ms, force-flat via
Market IOC (taker)
Sizing:
notional_usd = 5.0 base order unit
Cost, per side as assumed in the source design:
Maker: 1.0 bps (0.01 pct); the current declared programme envelope
states 2.0 bps per side for the same channel (BL-FM-002 section 3.1)
Taker fallback on force-flat: 6.0 bps (source) vs 5.5 bps declaredCausality holds by construction: the composite trigger and the vacuum
viability gate are evaluated on rolling state through t0, and the entry
price re-reads the book after the wait rather than quoting against the
pre-trigger snapshot.
5. Operating envelope
| Parameter | Value for this measurement |
|---|---|
| Round-trip cost assumed | 2.0 bps maker-maker best case, per source design; 7.5 bps maker-to-taker on the force-flat fallback, per BL-FM-002 section 3.1 |
| Execution channel | PostOnly entry both legs, Market IOC force-flat fallback |
| Latency band | Tokyo VPS, low single-digit milliseconds to venue |
| Measurement cadence | Trigger-event driven, composite state evaluated continuously |
| Capital scale | Demo virtual capital, $5 base order unit |
| Venue and instruments | Bybit USDT perpetuals, 8 Tier 1.5 altcoin symbols |
| Data era | 18-hour live observation window, 2026-05-26 to 2026-05-27 |
6. Instrument
Measured from the live vacuum-capture state machine and its composite
trigger evaluator, both instrumented with Prometheus counters for trigger
fires and fill outcomes. This is closer to an in-repository instrument than
BL-SD-001, but the verdict below is read from operational logs and Redis
counters rather than from a dedicated offline analysis tool with its own
test suite.
A prior calibration pass is relevant context. Nine hours of observation under looser thresholds (5x median multiplier, no absolute floor) produced 1,321 trigger fires and zero fills, and the multiplier was tightened to 20x with a 6.0 bps absolute floor and an 8.0 bps minimum vacuum width before the 18-hour window reported here. The zero-fill result therefore reflects the recalibrated, stricter configuration, not the original loose one.
7. Results
| Arm | n | Estimate | Threshold | Result |
|---|---|---|---|---|
| Trigger fires, 18h | 823 | 823 triggers | 10-25/day expected (approximately 8-19 over 18h) | Exceeds expectation |
| Fills | 823 triggers | 0 | Non-zero conversion | FAIL |
| Spread distribution, p99 | continuous | 4.34 bps | Above 8.0 bps vacuum-viability floor | FAIL |
| Time at or above 8.0 bps | continuous | 0.2 pct of observed time | Economically meaningful frequency | FAIL |
| Mathematical max potential, extrapolated | - | 1.08 pct annualised on $100 | 0.5-1.0 pct/day target | FAIL by roughly two orders of magnitude |
Zero of 823 triggered vacuum attempts converted to a fill in this window.
8. Verdict, axis of death, and transferability
Verdict: CLOSED. Axis: cost. Transferability: ENVELOPE-BOUND.
The mechanism the thesis names, a brief widening that a passive order can capture before institutional walls return, does occur: 823 composite triggers fired in 18 hours, well above the expected rate. What the measurement shows is that the widths reached rarely clear the level a round-trip cost requires to make capture worthwhile. The 8.0 basis point vacuum-viability floor was itself derived from the fee schedule, chosen so that a quote at one quarter of the vacuum width would clear the round trip with margin; the p99 observed width of 4.34 basis points sits below that floor, and widths at or above it occurred in only 0.2 percent of observed time.
Applying the test in BL-D-002 section 4: at a sufficiently low round-trip
cost, a narrower vacuum-viability floor becomes acceptable, which raises the
frequency of executable events. The mechanism is therefore envelope-bound
rather than universal. It is not, however, a clean cost story: zero of 823
triggers converted to a fill even at the widths that did occur, which points
to an execution defect, plausibly the same queue-priority dynamic that
closed the predecessor persistent-quoting strategy, sitting alongside the
cost constraint rather than being fully explained by it.
9. Cost and capacity analysis
Vacuum-viability floor, cost-derived 8.0 bps
Observed p99 spread width 4.34 bps
Frequency of widths >= floor 0.2 pct of time
Fill conversion at 823 triggers 0 of 823Capacity was not assessed beyond the extrapolated annualised ceiling of 1.08 percent on $100 notional, itself computed from the frequency of qualifying events rather than from any confirmed fill rate, since no fill was observed to measure a realised capacity from.
10. Envelope sensitivity and reopening conditions
Binding parameters: the cost-derived viability floor, and separately, queue priority on the fill leg.
Cost-derived floor 8.0 bps (chosen to clear round-trip cost
with margin, at the source's 2.0 bps
maker-maker assumption)
Observed p99 width 4.34 bps
Declared maker-to-maker RT 4.0 bps (BL-FM-002 section 3.1)At the currently declared maker-to-maker round trip of 4.0 basis points, a p99 event of 4.34 basis points would leave a margin of only 0.34 basis points, inside the noise of a single spread observation and not a result to build a strategy on. Lowering the cost floor narrows the gap between the theoretical viability threshold and the observed spread distribution, but it does not close the second and larger problem: zero of 823 triggers filled at all, at any width. A cost substitution cannot be shown to reverse that component, because no fill was observed from which to infer how a cheaper channel would have changed the outcome.
What would be needed to compute a full reversal point: a re-run of the same trigger logic with fills logged even when they arrive later or worse than the 200 millisecond hold window permits, so the fill-conversion rate as a function of vacuum width can be estimated rather than reported as zero across the board. That measurement was not taken.
What would reopen it: either a fee tier or channel where the viability floor falls below roughly 4.3 basis points, or evidence from a re-instrumented run that fills occur at some non-zero rate at the observed widths, which the zero-fill result across 823 triggers does not currently support.
11. Reference implementation
Published as 05_INSTRUMENTS/strategies/rust/src/vacuum_capture.rs, with the
24 test cases that pinned it in the source. The composite trigger, the
recalibrated threshold constants, and the entry state machine are all present
in the module as run; no reconstruction was required. The async quoting loop and
its transport are not reproduced, and the module says so: a reader checking this
verdict needs the trigger and the state machine, not the socket.
Publishing it surfaced one documentation defect, not a code defect. Section 4 above lists the spread-spike trigger's two conditions as a flat list, which reads as either one firing on its own. The source takes the maximum of the two and requires the observed spread to clear it, which is both conditions together. Every test fixture in the source happens to use a rolling median at which the two coincide exactly, so no test could tell the readings apart. The published module follows the code, because the code is what produced the result recorded here.
12. Evidence register
| ID | Artifact | Carries |
|---|---|---|
| E-0059 | Trigger and fill counters from the 18-hour observation window | Trigger count, fill count, spread percentile distribution |
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
The recalibration that preceded this measurement, from a 5x spread multiplier
with no absolute floor to a 20x multiplier with a 6.0 basis point floor and
an 8.0 basis point viability gate, was itself a response to an earlier
zero-fill result under looser thresholds. Tightening the trigger did not
convert a single fill; it only reduced the trigger count. That pattern, a
stricter threshold producing fewer non-events rather than more successful
ones, is worth naming for any reader tempted to treat trigger-count
calibration as evidence of progress. BL-D-008 cites this alongside BL-SD-001
as an early instance of checking cost arithmetic before running a live
observation window.
14. Cross-references
BL-SD-001 for the predecessor persistent-quoting line closed on the same
queue-priority mechanics. BL-D-002 section 4 for the envelope
classification test. BL-D-008 for the cost-first doctrine this closure
also informs. Ledger row VAC.
Copyright (c) 2026 Bijective Labs. All rights reserved.