BL-SD-005: Volume-Synchronised Toxicity Mean Reversion
BIJECTIVE LABS
BL-SD-005: Volume-Synchronised Toxicity Mean Reversion
Status: RELEASED
Classification: PUBLIC
Revision: 1
Date: 2026-09-07
Venue: Bybit perpetuals Programme: I Verdict: FALSIFIED Axis of death: Idea Transferability: UNIVERSAL
1. Identification
| Field | Value |
|---|---|
| Internal code | PS-B |
| Family | VPIN mean-reversion fade, Parallel Shadow Portfolio Slot 2 |
| 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 |
| Source | Easley, Lopez de Prado, O'Hara (2012), the VPIN toxicity measure, cited explicitly in the source design as the academic basis |
2. Economic thesis
The volume-synchronised probability of informed trading, VPIN, measures the share of recent volume attributable to informed rather than noise participants. The thesis holds that when VPIN reaches an extreme reading and then begins to fall while order-flow imbalance goes quiet, the informed flow that drove the toxicity has exhausted itself, and price should mean-revert against the trade-pressure direction that dominated during the toxic episode. The design fades the dominant side: short when buy pressure has dominated, long when sell pressure has dominated.
Who is forced to lose. The thesis names the informed participants whose flow drove the toxicity spike as the counterparty who has finished acting; the fade is a bet that no further forced or informed flow remains once VPIN begins to drop. No separate structurally-forced loser on the other side of the fade trade itself is named.
3. Falsifiable claim
Pre-registered as the shared winner-promotion criteria for the Parallel Shadow Portfolio:
Fading the dominant trade-pressure direction on a VPIN extreme-then-drop signal, with OFI quiet as a confirming filter, produces at least 50 shadow trades in 24 hours, an EV per trade at or above 0 basis points after fee, an aggregate p_tp at or above 0.40, no per-symbol p_sl above 0.30, and a positive mean realised move.
| Metric | Threshold | Decision if crossed |
|---|---|---|
| Mean realised move | positive, in the fade direction | Direction rejected if negative |
| EV per trade, fee-adjusted | at or above 0 bps | FALSIFIED if below |
| Per-symbol p_sl | at or above 0.30 | FALSIFIED for that symbol if crossed |
4. Mathematical specification
Notation per BL-D-011.
State, per symbol, rolling VPIN history of length L = 30 samples
(approximately 3 s at a 100 ms poll):
vpin_old(t) = oldest VPIN value in the trailing L-sample window
ending at t (requires the window to be full)
Entry, fire at t when ALL hold:
is_warmed_up(t) = true
cooldown elapsed: (t - last_exit) >= 15,000 ms
vpin(t) >= 0.90 (extreme, top decile)
|ofi_l5_norm(t)| <= 1.5 (quiet, not in momentum)
vpin_old(t) - vpin(t) >= 0.10 (dropping, informed
flow exhausting)
trade_pressure(t) > 0.6 => d_t = -1 (fade buy dominance, go short)
trade_pressure(t) < 0.4 => d_t = +1 (fade sell dominance, go long)
otherwise: no entry
Exit, path-dependent, first touch wins:
tp_price = entry_mid + d_t * entry_mid * 5 / 10000 (PostOnly, maker)
sl_price = entry_mid - d_t * entry_mid * 4 / 10000 (Market IOC, taker)
timeout: 60,000 ms, Market IOC reduce-only
Sizing:
notional_usd = 5.0, max_concurrent = 2, symbols = all 8 Tier 1.5
Cost, branch by outcome, per source assumption:
c_rt(tp_hit) = 6.0 (taker entry) + 1.0 (maker exit) = 7.0 bps
c_rt(sl_hit) = 6.0 (taker) + 6.0 (taker) = 12.0 bps
c_rt(timeout) = 6.0 (taker) + 6.0 (taker) = 12.0 bps
Net return per event:
r_net(t) = d_t * (exit_mid - entry_mid) / entry_mid * 1e4 - c_rt(outcome)Causality holds by construction: vpin_old reads the oldest element of a
history buffer populated only with observations at or before t, the
cooldown check reads only the prior exit timestamp, and the fade direction is
computed from trade_pressure(t) observed at or before t.
5. Operating envelope
| Parameter | Value for this measurement |
|---|---|
| Round-trip cost assumed | 7.0 bps on the take-profit path, 12.0 bps on stop-loss or timeout, per source; current declared figures are 11.0 and 7.5 bps respectively (BL-FM-002 section 3.1) |
| Execution channel | Taker entry, Maker take-profit exit, Taker stop-loss/timeout exit |
| 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 VPIN mean-reversion strategy implementation, a new module built for this
measurement with an independently testable entry function and a shared
outcome-check and realised-return implementation matching the pattern in
BL-SD-003 and BL-SD-004. Aggregation via the same shadow analysis
tooling used across the Parallel Shadow Portfolio.
7. Results
| Arm | n | Estimate | Threshold | Result |
|---|---|---|---|---|
| Shadow trades, 24h | 226 | 226 | at least 50 | PASS on power |
| p_tp, aggregate | 226 | 38.9 pct | at or above 0.40 | marginal FAIL |
| p_sl, aggregate | 226 | 61.1 pct | - | - |
| p_timeout, aggregate | 226 | 0.0 pct | - | - |
| Mean realised move, mid-to-mid | 226 | -0.81 bps | positive, in fade direction | FAIL, sign inverted |
| EV per trade, fee-adjusted | 226 | -7.81 bps | at or above 0 bps | FAIL |
| Per-symbol p_sl, all 8 symbols | subset | above 30 pct on every symbol | at or below 0.30 | FAIL universally |
| Per-symbol mean bps, all 8 symbols | subset | negative on every symbol | positive | FAIL universally |
Every symbol in the universe failed in the same direction. This is not a mixed result concentrated in one or two names.
8. Verdict, axis of death, and transferability
Verdict: FALSIFIED. Axis: idea. Transferability: UNIVERSAL.
The mean realised move is negative, meaning the fade lost money on direction alone, before any fee is applied. A stop-loss rate above 30 percent on every one of the eight symbols tested confirms this is not sampling noise concentrated in a thin name; it is a directional failure across the entire universe. Market continues in the direction the dominant trade pressure was already moving rather than reverting once VPIN begins to fall.
This is a mechanism failure rather than a cost failure. At zero round-trip
cost the mean realised move stays negative, since the defect is in the sign
of the price move rather than in the margin available to capture it. No
envelope substitution rescues a fade whose direction is wrong. The
classification is universal by the test in BL-D-002 section 4.
9. Cost and capacity analysis
Mean realised move (gross) -0.81 bps
EV per trade (fee-adjusted) -7.81 bpsNo gross-versus-fee decomposition changes the verdict here, since the gross figure is itself negative. Capacity was not assessed; the mechanism failed on direction before frequency became a relevant question.
10. Envelope sensitivity and reopening conditions
No binding parameter exists to name, because the finding is a sign failure, not a magnitude shortfall.
Reversal condition: none computable.Setting c_rt to zero and adding back the assumed 7.0 to 12.0 basis point
cost still leaves a mean realised move of -0.81 basis points. No fee tier,
execution channel, or capital scale changes the sign of a directional bet
that was wrong on average across every symbol tested.
What would reopen it: a demonstration, on data this measurement has not seen, that the VPIN-extreme-then-drop condition genuinely precedes reversion in some other regime or venue, tested with the same fade-direction logic and the same per-symbol reporting discipline used here. That has not been attempted.
What would not reopen it: relaxing the entry thresholds on this same data. The direction was wrong at the aggregate level and on every individual symbol; a looser or tighter trigger changes the sample, not the sign of the underlying move.
11. Reference implementation
Published as 05_INSTRUMENTS/strategies/rust/src/vpin_reversal.rs, with the
13 test cases that pinned it in the source. No defects were found in the entry,
position-construction, or outcome-check functions; the negative result reflects
the mechanism as designed and run. The polling loop, the cache reads and the
shadow-trade publisher are not reproduced.
The published module keeps the recalibrated thresholds this run used in its own test fixture, including the 0.80 extreme threshold rather than the 0.9 the source paper suggests. Empirical toxicity on this substrate topped out near 0.92, so the literature value was unreachable, and a reader comparing this implementation against the paper should start there.
12. Evidence register
| ID | Artifact | Carries |
|---|---|---|
| E-0058 | Phase 1A.2 Variant B shadow trade log and aggregation output | n, p_tp, p_sl, mean realised bps, EV per trade, 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
The source decision record states the finding plainly: the VPIN
mean-reversion hypothesis, as specified from the cited academic source, is
empirically rejected in this retail-dominated Tier 1.5 regime. Market
continues in the direction informed flow was already pushing rather than
reverting once toxicity subsides. This is a useful negative result for any
future hypothesis in this record that proposes fading a toxicity extreme on
this venue: the direction to test first, based on this evidence, is
continuation, not reversion. BL-SD-006 and later dossiers in this family
inherit that orientation.
14. Cross-references
BL-SD-004 and BL-SD-006 for the other two Parallel Shadow Portfolio
variants tested the same day. BL-D-005 for the axis taxonomy applied in
section 8. Ledger row PS-B.
Copyright (c) 2026 Bijective Labs. All rights reserved.