BL-SD-005: Volume-Synchronised Toxicity Mean Reversion

BIJECTIVE LABS


BIJECTIVE LABS . SEP 7, 2026


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

FieldValue
Internal codePS-B
FamilyVPIN mean-reversion fade, Parallel Shadow Portfolio Slot 2
VenueBybit USDT perpetuals, Tier 1.5 altcoin
ProgrammeI
Pre-registered2026-05-29, Phase 1A.2 winner-promotion criteria (D-002)
Verdict issued2026-05-30
SourceEasley, 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.

MetricThresholdDecision if crossed
Mean realised movepositive, in the fade directionDirection rejected if negative
EV per trade, fee-adjustedat or above 0 bpsFALSIFIED if below
Per-symbol p_slat or above 0.30FALSIFIED 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

ParameterValue for this measurement
Round-trip cost assumed7.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 channelTaker entry, Maker take-profit exit, Taker stop-loss/timeout exit
Latency bandTokyo VPS, low single-digit milliseconds to venue
Measurement cadenceSignal-poll driven, shadow simulation via mid-price tracking
Capital scaleDemo virtual capital, $5 notional per entry
Venue and instrumentsBybit USDT perpetuals, 8 Tier 1.5 altcoin symbols
Data era24-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

ArmnEstimateThresholdResult
Shadow trades, 24h226226at least 50PASS on power
p_tp, aggregate22638.9 pctat or above 0.40marginal FAIL
p_sl, aggregate22661.1 pct--
p_timeout, aggregate2260.0 pct--
Mean realised move, mid-to-mid226-0.81 bpspositive, in fade directionFAIL, sign inverted
EV per trade, fee-adjusted226-7.81 bpsat or above 0 bpsFAIL
Per-symbol p_sl, all 8 symbolssubsetabove 30 pct on every symbolat or below 0.30FAIL universally
Per-symbol mean bps, all 8 symbolssubsetnegative on every symbolpositiveFAIL 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 bps

No 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

IDArtifactCarries
E-0058Phase 1A.2 Variant B shadow trade log and aggregation outputn, 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.