BL-SD-040: Conditioned Reversion With a Causal Stop
BIJECTIVE LABS
BL-SD-040: Conditioned Reversion With a Causal Stop
Status: RELEASED
Classification: PUBLIC
Revision: 1
Date: 2026-09-08
Venue: Bybit perpetuals Programme: II Verdict: FALSIFIED Axis of death: Idea Transferability: UNIVERSAL
1. Identification
| Field | Value |
|---|---|
| Internal code | H-R2 |
| Family | Conditioned reversion, causal stop-loss overlay |
| Venue | Bybit perpetuals |
| Programme | II |
| Pre-registered | 2026-07-30 |
| Verdict issued | 2026-07-30, same day |
| Pre-registration document | 2026-07-30_RnDv2_HR2_preregistration.md |
| Verdict document | rndv2_hr2_verdict_2026-07-30.md, confirmed from a fourth angle in rndv2_exit_geometry.py and its report |
| Predecessor | BL-SD-039 (H-R1), whose retracted first closure produced this hypothesis directly under Rule R-10 |
H-R2 exists because H-R1's own written economic premise named an explicit stop loss as the reason that hypothesis was worth testing at small capital, while the specification actually tested omitted one. Closing the conditioned-reversion branch without testing the variant its own premise required would have violated the rule the programme wrote for exactly this situation. H-R2 is that untested variant, pre-registered and settled inside a single day.
The author's prior, written into the pre-registration before any stopped PnL was computed, stated plainly that the hypothesis was likely to die: a contrarian entry against an ongoing move is, by construction, entered while price is still moving the wrong way, and a stop cannot distinguish a move about to continue from one about to reverse at the moment it is touched. That prior is confirmed rather than merely not contradicted.
2. Economic thesis
The mechanism is unchanged from H-R1: forced liquidation and liquidity withdrawal drive sharp moves under fragile conditions, and price reverts once the forced flow exhausts. H-R2 adds a narrower, separately falsifiable claim: that the tail losses this family of trades incurs can be bounded with a causal stop without giving up the recovery trades that make the mechanism profitable in aggregate.
Who is forced to lose. Unchanged from H-R1: liquidated leverage holders and anyone executing into thin book depth. What is new here is the question of whether the strategy itself can be protected from its own worst outcomes without destroying the outcomes that pay for them.
3. Falsifiable claim
Pre-registered before one stopped trade was priced:
Adding a causal stop loss to H-R1 produces a mean net return whose CI95 excludes zero on the positive side, at the same 22 basis point baseline cost, for at least one value on a pre-locked stop grid, surviving Benjamini-Hochberg correction across the grid.
| Metric | Threshold | Decision if crossed |
|---|---|---|
| No k value with CI95 above 0 after FDR | true | FALSIFIED, axis cost/execution |
| Every k value gives a worse mean than no stop | true | FALSIFIED, axis idea, stop cuts the reversion itself |
| n, collapsed events at chosen k | below 200 | NOT PROVEN, axis sample |
| Subperiod consistency | fewer than 2 of 3 agree | FALSIFIED, axis condition |
| Low-fragility control also positive significant | true | Mechanism not confirmed, STOP |
| At least one k with CI95 above 0 after FDR, n at or above 200, at least 2 of 3 subperiods, control not significant | all | PASS, proceeds to G5 |
Verdict is enforced on the mean, not the median, stated explicitly because H-R1's diagnostic found a median of +40.21 basis points sitting beside a mean of +0.86: a median cannot be withdrawn from an account, and what is paid out is a sum, which the mean determines.
4. Mathematical specification
Notation per BL-D-011. Base specification unchanged from BL-SD-039 (H-R1):
z4 signal, fragility condition at the 80th trailing percentile, entry at
open[t+1], horizon H = 24h, dedup 24h, base cost 22 bps.
Stop level, set at entry:
LONG: stop_px = entry_price - k * sigma_local
SHORT: stop_px = entry_price + k * sigma_local
sigma_local = realized_sigma(close, 1h) at the signal bar, scaled sqrt(H)
k in {1.0, 1.5, 2.0, 3.0}, grid locked before any stopped PnL was computed
Stop execution, causal, deliberately conservative under path ambiguity
(OHLC bars do not reveal intrabar sequencing):
for each bar tau from entry to scheduled exit:
LONG: stop touched if low[tau] <= stop_px
SHORT: stop touched if high[tau] >= stop_px
exit price at touch:
LONG: exit = min(stop_px, open[tau]) (gap through stop exits worse)
SHORT: exit = max(stop_px, open[tau])
then SLIP_BPS = 5.0 bps charged adversely, on top of the 22 bps base cost
ambiguity rule: if a bar touches the stop level at any point, the trade
is treated as stopped, even if that same bar closes favourably. The
sequence within the bar is unknowable, so the assumption chosen is the
one that disadvantages the strategy, not the one that flatters it.
sizing: equal_weight, equal_notional, and capped_notional (cap 20), all
three carried per BL-SD-039 section 4's finding that the choice
is not neutral
cost: 22 bps base + 5 bps stop slippage when stopped; 22 bps alone when
the position runs to the scheduled horizon
multiple testing: 4 stop values, Benjamini-Hochberg FDR correction
mandatory before any k value may be reported as significantCausality holds by construction for the signal, condition, and stop
trigger: every input to the stop decision at bar tau is observable at or
before tau, and the exit price rule is fixed to the less favourable of the
stop level and the bar's open specifically to avoid assuming a fill that
could not have occurred.
5. Operating envelope
| Parameter | Value for this measurement |
|---|---|
| Round-trip cost assumed | 22.0 bps base, plus 5.0 bps adverse slippage on stopped trades (27.0 bps effective when stopped) |
| Execution channel | Crossing on entry and on any stop trigger; passive rest is not available against a fragile-regime move |
| Latency band | Not binding at a 24-hour scheduled horizon |
| Measurement cadence | 1-hour bars for stop-touch detection, matching H-R1's base cadence |
| Capital scale | Programme default, BL-FM-002 section 6; unchanged from H-R1 |
| Venue and instruments | Bybit perpetuals, 154 symbols |
| Data era | Research era 2022-01-01 to 2025-06-30; held-out A and B untouched |
n = 43,209 raw trades at every stop level; the grid is applied to the identical event set H-R1 used, so no cross-hypothesis sample drift is possible.
6. Instrument
The H-R2 causal-stop test, running against the causal stop primitive's
simulate_with_bracket function, 17 pinned tests.
One test failed on first write, and the failure is recorded here as a
worked example of the audit discipline this programme applies to itself:
the test constructed a SHORT gap scenario in which the first bar already
breached the stop, making the intended gap condition unreachable by
construction. The test was defective, not the implementation; had the
implementation been altered to satisfy the flawed test, the fix would have
moved in the wrong direction.
A second instrument, the exit-geometry instrument, was built specifically because a prior MFE/MAE measurement and a 9-cell take-profit/stop-loss grid had been run as one-off scripts on 2026-07-30 and never persisted to the repository. The independent audit that found this stated the standard plainly: a result that cannot be reproduced must not be cited in any verdict, however strong the number looks. The rebuilt instrument reproduced the unpersisted log values to within 0.01 basis points on all nine grid cells, which confirms the original numbers were correct; what had been wrong was their standing as evidence.
| Property | Value |
|---|---|
| Inference | Moving-block bootstrap, block = 24 bars, n_boot = 10,000 |
| Multiple testing | Benjamini-Hochberg FDR across the 4-value stop grid |
| Sample | 43,209 trades at every stop level, same event set as H-R1 |
| Bracket grid | 9 take-profit/stop-loss combinations, pinned tests, deliberately adverse fill assumptions (a bar touching both TP and SL counts as SL; TP never fills better than the limit; SL fills at the worse of the limit and the bar open, plus 5 bps slippage) |
7. Results
Primary stop sweep, equal_weight basis, 22 bps base cost plus 5 bps stop
slippage, n = 43,209 at every level:
| Stop (k sigma) | Pct stopped | Mean net | CI95 | p | FDR significant | Median | Win rate |
|---|---|---|---|---|---|---|---|
| No stop | 0 pct | -8.73 | [-27.48, +10.07] | - | - | +40.2 | 53.6 pct |
| 1.0 | 38.3 pct | -13.43 | [-25.18, -1.80] | 0.023 | Yes | -46.1 | 46.7 pct |
| 1.5 | 23.6 pct | -16.65 | [-30.42, -3.17] | 0.017 | Yes | +11.5 | 51.0 pct |
| 2.0 | 15.0 pct | -13.92 | [-29.07, +1.26] | 0.071 | No | +28.0 | 52.4 pct |
| 3.0 | 7.3 pct | -12.83 | [-29.83, +3.71] | 0.128 | No | +37.1 | 53.2 pct |
Every stop value produces a worse mean than no stop at all. This holds across all three sizing bases:
| Stop | equal_weight | equal_notional | capped_notional (cap 20) |
|---|---|---|---|
| No stop | -8.73 [-27.48, +10.07] | +0.86 | -1.03 [-4.86, +2.46] |
| 1.0 | -13.43 [-25.18, -1.80] | -11.31 | -2.07 [-4.52, +0.26] |
| 1.5 | -16.65 [-30.42, -3.17] | -11.96 | -2.30 [-5.42, +0.55] |
| 2.0 | -13.92 [-29.07, +1.26] | -12.62 | -2.31 [-5.83, +0.92] |
| 3.0 | -12.83 [-29.83, +3.71] | -13.12 | -2.40 [-6.32, +1.14] |
The kill criterion (every stop value worse than no stop) holds on all three
bases; that is the one claim in this dossier that does not depend on sizing
convention. The narrower claim that two stop levels are negative
significant after FDR is basis-specific: it is true under equal_weight,
the basis used to draft the original verdict, and it does not hold under
capped_notional, where every interval spans zero. Both facts are reported
because a reader relying on the FDR claim alone would be relying on a basis
choice the pre-registration never made explicit.
Whipsaw anatomy, measured directly rather than inferred, at each stop level:
| Stop | Pct stopped | Pct that would have won | Avg lost per whipsaw (bps) | Avg saved per correct stop (bps) | Asymmetry |
|---|---|---|---|---|---|
| 1.0 sigma | 38.3 pct | 17.9 pct | 862 | 149 | 5.8x |
| 1.5 sigma | 23.6 pct | 10.9 pct | 1,123 | 76 | 14.8x |
| 2.0 sigma | 15.0 pct | 7.9 pct | 1,375 | 20 | 68.8x |
| 3.0 sigma | 7.3 pct | 4.6 pct | 1,879 | -111 | not defined |
At the tightest stop, 38.3 percent of trades are stopped out. Of those, 82.1 percent would have lost money had the position been held to horizon, so the stop is correct on the large majority of occasions it fires. The problem is not frequency; it is magnitude. A correct stop saves 149 basis points on average. A wrong stop, the 17.9 percent that would have recovered, costs 862 basis points on average, an asymmetry of 5.8 times. Widening the stop to 3.0 sigma makes the outcome worse rather than better, and not merely because fewer whipsaws are avoided: the value rescued by a correct stop at that distance is itself negative, at -111 basis points, meaning that even the stops which correctly fired ahead of a continuing loss did so only after giving back more than they protected.
A reconciliation caveat is recorded rather than smoothed over. An earlier
version of this table implied its net figures explained the difference
between the no-stop and 1.0-sigma means in the primary sweep (-8.73 versus
-13.43, a gap of 4.70 basis points). They do not, and cannot: the primary
sweep is computed on the per-timestamp collapsed series (equal_weight),
while the whipsaw anatomy is computed on raw, equal-notional legs. Both are
valid measurements of different things and are not interchangeable. What
stands unqualified is the anatomy itself, the 82.1/17.9 split and the 5.8
times asymmetry, as a diagnostic on the raw-leg basis.
Confirmation from a third angle, the take-profit/stop-loss bracket grid (9
cells, equal_weight basis, already partly reported in BL-SD-039 section
12 as E-0015): zero of nine combinations beat the no-bracket baseline, and
all nine are FDR-significant negative, ranging from -21.75 (TP 400, SL 100)
to -39.88 (TP 100, SL 200) basis points. Tight take-profits harvest many
small wins while a loose stop lets losses run, producing a 76.0 percent win
rate at TP 100/SL 400 alongside a mean of -36.51: the same "small wins,
rare-large-loss" profile the programme already identified in the unhedged
short straddle of BL-SD-038.
Confirmation from a fourth angle, the maximum-favourable-excursion ceiling: 91.5 percent of trades that ultimately lost had, at some point, moved favourably beyond the cost threshold (median favourable excursion on losing trades, +168 basis points, against a median actual exit of -324). This statistic is explicitly a look-ahead ceiling, not an achievable strategy: it requires knowing in advance which bar is the peak. The gap between that ceiling (mean MFE +483 basis points per trade) and the best causal bracket floor actually achieved (-21.75 basis points) exceeds 500 basis points per trade, a direct, measured price of not knowing the future, larger than the 27-basis-point gap between H-R1's trimmed-mean ceiling (+10.41) and the causal stop's best result (-13.43).
8. Verdict, axis of death, and transferability
Verdict: FALSIFIED. Axis: idea. Transferability: UNIVERSAL.
The stop mechanism performs exactly as designed: worst-case loss falls from -13,850 to -2,212 basis points at the tightest setting, a 6.3-fold reduction, and the tail is genuinely cut. The failure is that it cuts more value than it protects, and it does so by structural necessity rather than by a poor choice of stop distance. The strategy enters against an ongoing move; any position that will eventually profit must first move against the entrant, because that is what a contrarian entry means. A stop cannot distinguish "moving against us and about to reverse" from "moving against us and about to continue" at the moment it is touched, because the two look identical from inside the trade. Cutting the left tail and cutting the reversion payoff are the same operation, viewed at different times.
Four independent measurements confirm this from different angles: the stop sweep itself, the take-profit/stop-loss bracket grid, the maximum-favourable- excursion ceiling, and the demonstrated unreachability of H-R1's trimmed-mean upper bound. No rescue path proposed in this family, tight or loose, symmetric or asymmetric, produced an improvement. That breadth is what places the verdict in the UNIVERSAL class: no cost substitution changes which side of a reversal a stop is triggered on, so no envelope parameter rescues a mechanism that cuts its own payoff by construction.
9. Cost and capacity analysis
Tightest stop, worst-case reduction -13,850 to -2,212 bps (6.3x)
Tightest stop, median flip +40.2 to -46.1 bps
Best stop mean (least bad) -12.83 bps, at 3.0 sigma, still
worse than no stop
Causal-vs-lookahead gap, trimmed mean 27 bps per trade (H-R1 ceiling)
Causal-vs-lookahead gap, MFE ceiling over 500 bps per tradeCapacity was not separately measured; this hypothesis inherits H-R1's small minimum position size and was never capacity-constrained.
10. Envelope sensitivity and reopening conditions
No binding parameter exists to name, because every tested stop distance makes the result worse, in a pattern confirmed from four independent directions.
Reversal condition: none computable.A cost substitution cannot reverse this result. The mechanism that generates the loss is a structural property of stopping a contrarian position, not a magnitude that a cheaper fee or a better queue position narrows. Setting slippage and cost to zero would remove 5 to 27 basis points from every row in section 7 without changing which rows are worse than no-stop, and without changing the 5.8-to-1 asymmetry in the whipsaw anatomy, which carries no cost term at all.
What would reopen it: a stop construction genuinely different in kind from a fixed-sigma price stop was not tested here, for example a time-decaying stop or one conditioned on the same fragility signal that gates entry. That is a testable claim and it is untested; testing it on this data would need fresh pre-registration rather than a retroactive addition to this measurement.
What would not reopen it: any further adjustment to the stop distance within the tested family. The gradient across four values from 1.0 to 3.0 sigma shows no distance that recovers even the no-stop baseline, let alone improves on it, and the mechanism argument in section 8 explains why no distance should be expected to.
11. Reference implementation
The causal stop primitive is published as
05_INSTRUMENTS/src/causal_stop.py, and the exit-geometry sweep as
05_INSTRUMENTS/strategies/python/src/exit_geometry.py with 28 tests. The
stop-overlay test driver itself remains scheduled; it is orchestration over
those two.
The exit-geometry instrument's history is preserved here as a worked example of
the reproducibility standard, and publishing it produced one more instance of
the same lesson. The excursion measurement and the grid first ran as one-off
scripts that were never committed, which is why R-25 exists. The source
instrument that replaced them was never given a test file of its own either, so
the 28 cases published with it are written against the module rather than
ported, and the module docstring says so plainly.
Two test counts in an earlier revision of this section were wrong and are
corrected here rather than quietly replaced. It said the causal stop primitive
carried "17 pinned tests" and the exit-geometry sweep "9 pinned bracket-grid
tests". Neither figure has a source. The stop primitive's suite holds 26 cases,
of which 10 touch simulate_with_bracket, and the exit-geometry sweep had no
test file at all. Under R-25 a figure with no instrument behind it is not a
result, and these two were figures about instruments.
The publication pass also found that the stop primitive's published suite
carried 22 of those 26 cases, four of them new guards, without recording what it
left out. Six source cases had no counterpart, all of them on the bracket path
or at the boundaries of the walk: zero-direction rejection, NaN-bar skipping, a
gap fill plus slippage on each side, an empty bar series, and a stop touched on
the very first bar. All six are restored and all six pass against the published
implementation unchanged, so this closed a coverage gap rather than a defect.
BL-SD-000 section 7.3 records it.
12. Evidence register
| ID | Artifact | Carries |
|---|---|---|
| E-0023 | Volatility stop overlay, stop-size sweep | No stop -8.735, CI [-27.485, +10.073], n=43,209; at 1.5 sigma -16.65, CI [-30.42, -3.167], bootstrap p=0.0168 |
| E-0024 | Stop sweep with equal and capped notional sizing bases | No stop equal weight -8.735; capped notional -1.035, CI [-4.856, +2.458], bootstrap p=0.574 |
The bracket-grid evidence (E-0015) is registered under BL-SD-039 and
applies here as the third confirming angle described in section 7.
13. Lessons extracted
The audit discipline in Rule R-8 caught a defective test before a defective implementation could be shaped to satisfy it; that ordering, test first, implementation checked against it rather than the reverse, is recorded here as the reason the gap-fill logic can be trusted.
The reproducibility standard applied to the exit-geometry work generalises beyond this hypothesis: a number that lives only in a log file, however precisely it reproduces later, is not admissible evidence for a verdict until an instrument with tests exists to produce it on demand. Two measurements that had already shaped the programme's thinking about this family were rebuilt for exactly that reason, and both reproduced to within 0.01 basis points, which closes the question of whether the original numbers were right while opening the separate and more important question of why they were not yet citable.
The substantive lesson is the mechanism-level one in section 8: a stop placed against a reversion trade cuts the reversion, not merely the tail, because the two share a single cause. This is now treated as a standing caution against pairing a contrarian entry with a price-based stop of any distance, absent a genuinely different stop construction that has not yet been tested.
14. Cross-references
BL-SD-039 for the predecessor hypothesis and the retracted closure that
produced this one under Rule R-10. BL-SD-038 for the earlier instance of
the same "small wins, rare large loss" profile in the unhedged short
straddle. BL-D-002 section 4 for the UNIVERSAL classification test.
BL-SD-000 ledger row H-R2.
Copyright (c) 2026 Bijective Labs. All rights reserved.