BL-SD-040: Conditioned Reversion With a Causal Stop

BIJECTIVE LABS


BIJECTIVE LABS . SEP 8, 2026


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

FieldValue
Internal codeH-R2
FamilyConditioned reversion, causal stop-loss overlay
VenueBybit perpetuals
ProgrammeII
Pre-registered2026-07-30
Verdict issued2026-07-30, same day
Pre-registration document2026-07-30_RnDv2_HR2_preregistration.md
Verdict documentrndv2_hr2_verdict_2026-07-30.md, confirmed from a fourth angle in rndv2_exit_geometry.py and its report
PredecessorBL-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.

MetricThresholdDecision if crossed
No k value with CI95 above 0 after FDRtrueFALSIFIED, axis cost/execution
Every k value gives a worse mean than no stoptrueFALSIFIED, axis idea, stop cuts the reversion itself
n, collapsed events at chosen kbelow 200NOT PROVEN, axis sample
Subperiod consistencyfewer than 2 of 3 agreeFALSIFIED, axis condition
Low-fragility control also positive significanttrueMechanism 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 significantallPASS, 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 significant

Causality 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

ParameterValue for this measurement
Round-trip cost assumed22.0 bps base, plus 5.0 bps adverse slippage on stopped trades (27.0 bps effective when stopped)
Execution channelCrossing on entry and on any stop trigger; passive rest is not available against a fragile-regime move
Latency bandNot binding at a 24-hour scheduled horizon
Measurement cadence1-hour bars for stop-touch detection, matching H-R1's base cadence
Capital scaleProgramme default, BL-FM-002 section 6; unchanged from H-R1
Venue and instrumentsBybit perpetuals, 154 symbols
Data eraResearch 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.

PropertyValue
InferenceMoving-block bootstrap, block = 24 bars, n_boot = 10,000
Multiple testingBenjamini-Hochberg FDR across the 4-value stop grid
Sample43,209 trades at every stop level, same event set as H-R1
Bracket grid9 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 stoppedMean netCI95pFDR significantMedianWin rate
No stop0 pct-8.73[-27.48, +10.07]--+40.253.6 pct
1.038.3 pct-13.43[-25.18, -1.80]0.023Yes-46.146.7 pct
1.523.6 pct-16.65[-30.42, -3.17]0.017Yes+11.551.0 pct
2.015.0 pct-13.92[-29.07, +1.26]0.071No+28.052.4 pct
3.07.3 pct-12.83[-29.83, +3.71]0.128No+37.153.2 pct

Every stop value produces a worse mean than no stop at all. This holds across all three sizing bases:

Stopequal_weightequal_notionalcapped_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:

StopPct stoppedPct that would have wonAvg lost per whipsaw (bps)Avg saved per correct stop (bps)Asymmetry
1.0 sigma38.3 pct17.9 pct8621495.8x
1.5 sigma23.6 pct10.9 pct1,1237614.8x
2.0 sigma15.0 pct7.9 pct1,3752068.8x
3.0 sigma7.3 pct4.6 pct1,879-111not 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 trade

Capacity 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

IDArtifactCarries
E-0023Volatility stop overlay, stop-size sweepNo 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-0024Stop sweep with equal and capped notional sizing basesNo 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.