BL-IS-017: The Strategy Source Publication Schedule

BIJECTIVE LABS


BIJECTIVE LABS . SEP 11, 2026


BL-IS-017: The Strategy Source Publication Schedule

Status: RELEASED

Classification: PUBLIC

Revision: 11

Date: 2026-09-11


1. Why this document exists

BL-FM-004 section 4 commits to publishing every closed family in full, and it gives the reason: publishing the source alongside a verdict is what makes the verdict checkable rather than asserted. BL-TR-001 section 5 makes the same commitment from the other direction, calling a closed strategy's source the thing a reader with a different envelope re-runs.

Those commitments were not kept all at once. Volume V shipped the measurement instruments first, and forty-three dossiers carried a sentence saying their strategy source was scheduled for publication here. A sentence like that is a promise with no due date and nothing to audit it against, which over time is indistinguishable from a sentence that will never come true.

This document is the audit surface. It names what is published, what is not yet, and in what order the rest arrives. A release gate reads it and fails if a dossier promises publication without appearing here, or if this document names a module that does not exist on disk.

The record should be checkable against itself on its own unfinished business, not only on its findings.


2. Publication order, and why it runs this way

Three tiers, ordered by what an outside reader can do with each.

Tier 1, the envelope-bound families. These are the thirteen rows a reader operating different parameters is told to re-test. BL-FM-004 section 3 names that as the intended use of this record and the Kill Ledger is structured to support it. Without the source, that instruction cannot be carried out, so these came first.

Tier 2, the universally falsified families. The mechanism died on its own merits and the result carries to anyone. The source is worth less as a tool here and more as evidence: it is what shows the kill was reached honestly. The cointegration family is the one to read first, because its source contains the look-ahead defect that produced a false positive before the walk-forward harness caught it.

Tier 3, the maker engine. Complete, wired, disabled by configuration, and closed on economics rather than on technique. It is the largest single body of strategy code in the archive and the one most sensitive to a reader's fee tier.


3. Tier 1, published

Thirteen envelope-bound dossiers, plus two more whose implementations are dependencies of them and are therefore published in the same pass.

3.1 Rust decision cores

Built as their own crate under 05_INSTRUMENTS/strategies/rust/, with no external dependencies. A reader compiles and tests these without the trading engine, its transport, or any credentials.

ModuleDossiersLinesTests
05_INSTRUMENTS/strategies/rust/src/directional_alpha.rsBL-SD-003, BL-SD-00451220
05_INSTRUMENTS/strategies/rust/src/taker_wider_edge.rsBL-SD-00850815
05_INSTRUMENTS/strategies/rust/src/vacuum_capture.rsBL-SD-00292824
05_INSTRUMENTS/strategies/rust/src/types.rsshared market-data structs100
05_INSTRUMENTS/strategies/rust/src/lib.rscrate root15

3.2 Python strategy cores

Under 05_INSTRUMENTS/strategies/python/src/, with tests in the sibling tests/ directory.

ModuleDossiersLinesTests
05_INSTRUMENTS/strategies/python/src/cash_and_carry.pyBL-SD-01625420
05_INSTRUMENTS/strategies/python/src/lead_lag.pyBL-SD-01839619
05_INSTRUMENTS/strategies/python/src/identity_burst.pyBL-SD-02929420
05_INSTRUMENTS/strategies/python/src/aggressor_identity.pyBL-SD-026, BL-SD-02916613
05_INSTRUMENTS/strategies/python/src/whale_drift.pyBL-SD-030, BL-SD-03126921
05_INSTRUMENTS/strategies/python/src/volatility_premium.pyBL-SD-038, BL-SD-04728419
05_INSTRUMENTS/strategies/python/src/option_pricing.pyBL-SD-038, BL-SD-04714110
05_INSTRUMENTS/strategies/python/src/conditioned_reversion.pyBL-SD-03924816
05_INSTRUMENTS/strategies/python/src/exact_pnl_backtest.pyBL-SD-03910018

Two of the thirteen needed no new code. BL-SD-001 carries no reference implementation at all, because the order-flow computation it used was later carried into the directional-alpha module. BL-SD-046 rests on the cost and markout primitives already published under 05_INSTRUMENTS/src/.

3.3 What tier 1 came to

Strategy cores published14 modules, 4,215 lines
Tests215, all passing
Dossiers whose promise is now kept15
Defects found in ported arithmetic0
Defects found in the record while porting5

The last row is the one worth reading twice. Porting found nothing wrong with the code and five things wrong with the documents describing it: four cells in a results table in BL-SD-039, recorded in BL-SD-000 section 7.3, and one ambiguous condition list in BL-SD-002 section 4.

That is the same pattern the instrument publication pass produced, and BL-IS-000 section 6 draws the conclusion this one confirms. A specification and an implementation that never meet cannot disagree. Putting them side by side is what makes the disagreement visible, and the disagreements surface in the prose more often than in the code.


4. Tier 2, published

Thirty-one dossiers, all closed, none envelope-bound. Every one of them now cites running code. Twenty cite the whole of what their verdict rests on; eleven cite the reasoning layer and have an orchestration driver still scheduled, and section 4.2 names each.

4.1 Published

ModuleDossiersLinesTests
05_INSTRUMENTS/strategies/rust/src/vpin_reversal.rsBL-SD-00545213
05_INSTRUMENTS/strategies/rust/src/spread_spike_capture.rsBL-SD-00644712
05_INSTRUMENTS/strategies/python/src/cointegration_prescreen.pyBL-SD-01343623
walk_forward_momentum in 05_INSTRUMENTS/src/walk_forward.pyBL-SD-0146 of 26
05_INSTRUMENTS/strategies/python/src/cross_sectional_reversion.pyBL-SD-010, BL-SD-01131328
05_INSTRUMENTS/strategies/python/src/funding_carry.pyBL-SD-01220324
05_INSTRUMENTS/strategies/python/src/validation_stats.pyBL-SD-010, BL-SD-011, BL-SD-03912216
05_INSTRUMENTS/strategies/python/src/exit_geometry.pyBL-SD-04023828
05_INSTRUMENTS/strategies/python/src/fragility_conditioning.pyBL-SD-043, BL-SD-044, BL-SD-04534037
05_INSTRUMENTS/strategies/python/src/oi_accumulation.pyBL-SD-01525835
05_INSTRUMENTS/strategies/python/src/accumulation_distribution.pyBL-SD-01727545
05_INSTRUMENTS/strategies/python/src/session_structure.pyBL-SD-033, BL-SD-034, BL-SD-03537052
05_INSTRUMENTS/strategies/python/src/cascade_events.pyBL-SD-022, BL-SD-02817927
05_INSTRUMENTS/strategies/python/src/oracle_premium.pyBL-SD-024, BL-SD-02529240
05_INSTRUMENTS/strategies/python/src/settlement_flow.pyBL-SD-02125126
05_INSTRUMENTS/strategies/python/src/cohort_persistence.pyBL-SD-02319225
05_INSTRUMENTS/strategies/python/src/maker_replay.pyBL-SD-02710321
05_INSTRUMENTS/strategies/python/src/carry_characterisation.pyBL-SD-05015523
05_INSTRUMENTS/strategies/python/src/dislocation.pyBL-SD-01915720
05_INSTRUMENTS/strategies/python/src/crowding_state.pyBL-SD-03714221

BL-SD-009 needed no new code. Its configuration lives in the strategy registry and its code is the taker wider-edge core already published; nothing was written for it because there was nothing to write, and the dossier now says so rather than leaving an absence.

Eleven rows are published in part rather than in full, and the schedule says which half. BL-SD-040 has its causal stop primitive and its exit-geometry sweep published; the stop-overlay driver that orchestrates them is scheduled. BL-SD-042 has the cross-sectional primitive its three successors reuse. BL-SD-043, BL-SD-044 and BL-SD-045 have the whole conditioning layer they share -- the causal fragility gate, the trailing volatility gauge, the rank-weighting, the double sort -- and their per-hypothesis drivers, decile map, cell map and post-mortem diagnostic are scheduled. BL-SD-051 has the anchor-robustness instrument its own correction motivated, and its momentum cell map and rebalance-hour sweep are scheduled. BL-SD-034 and BL-SD-035 have the session partition, the interval machinery and the door criterion, and the detector wiring that supplies their events is scheduled. BL-SD-028 has the cascade detector it shares with BL-SD-022, and its own two-entry-point comparison glue is not published, because section 6 of that dossier records that the glue lacked dedicated unit coverage and publishing untested code would carry the gap forward under the appearance of closing it. BL-SD-041 has every module its verdict rests on -- direction selection, leg pricing, the portfolio collapse, the interval, the stop and the geometry -- and only its own event-selection loop is scheduled. BL-SD-037 has the causal crowding state; its mechanical selection, characterisation instrument and tail test are scheduled. Counting any of the eleven as delivered would overstate the tier.

The split holds the same shape in every case. What is published is the layer a reader has to check to disagree with a verdict: the gate, the control, the weighting, the sign convention, the matcher. What is scheduled reads a data lake and calls those functions in order.

The split is not arbitrary. What is published in each case is the part that carries the reasoning a reader has to check: the gate that decides when to trade, the control that holds two arms at the same size, the weighting that bounds concentration. What is scheduled is orchestration over it. A reader who disagrees with one of these verdicts will disagree about the layer that is out, not about the loop that reads a data lake.

BL-SD-007 needed no new code. It shares the taker wider-edge core already published in tier 1, and the sharing claim was verified rather than assumed: the core takes its instrument universe as a parameter and holds no selection logic, so the only difference between the two hypotheses is which symbol list was supplied.

The cointegration pre-screen is the one to read first in this tier. It is published as a negative exhibit, refuses to run without an explicit look-ahead acknowledgement, and its test suite measures the leak rather than asserting it: handed two independent random walks, it reports a net edge above +50 basis points while the corrected harness on the same series reports a negative one. BL-SD-013 section 11 sets out both leakage channels.

validation_stats.py was extracted from inside conditioned_reversion.py during this batch rather than written fresh. Two families beyond BL-SD-039 rest on the same portfolio-sizing collapse and the same block bootstrap, and a primitive three dossiers depend on should not live inside one of them. The extraction changed no arithmetic and the test count went up rather than down, because functions that were only covered through a caller now have cases of their own.

oracle_premium.py carries the data rule that does more for its family's credibility than any of its statistics. Sampling gaps are cut, never bridged, and each contiguous segment is resampled on its own. Interpolating across an outage would manufacture exactly the reversion the instrument is looking for: a premium wide before a gap and narrow after appears, bridged, as a smooth reversion nobody observed, and the instrument would then report reversion strongest precisely where the data is worst.

cascade_events.py carries the equivalent choice on the statistics side. Its trailing volatility measure is a median rather than a mean, because a cascade is a period in which true range explodes and this statistic scales the band that decides which events exist at all. A mean over a window containing the cascade would grow with the event, widen the band, admit more forced flow, and make the event look larger than it was. That is not a general preference for medians. It is specific to a detector whose threshold is computed on the same series that trips it.

session_structure.py is the one published module that names an open methodological question in its own signature instead of settling it.

Its intervals come from a bootstrap that resamples observations independently, and the function is called bootstrap_ci_iid for that reason. BL-IS-001 argues correlation-aware resampling is mandatory on this substrate and R-02 forbids per-leg statistics, but both arguments are about legs held simultaneously across correlated instruments, where measured pairwise correlation is 0.737. The observations here are events spread across coins and across time, so that argument does not transfer directly, and it does not obviously fail to either.

Whether these events cluster enough to require block resampling was not measured, and this pass did not measure it. Naming the construction is what a reader needs in order to decide for themselves and to substitute the moving-block version in 05_INSTRUMENTS/src/inference.py if they judge it necessary. The direction of the risk is stated too: an interval narrower than it should be makes the session door easier to trip, not harder, so the exposure is toward finding a difference that is not there.

That is the honest handling of a question a publication pass surfaces but cannot answer. The alternative is either a silent assumption or a claim the measurement does not support, and the record's own rules rule out both.

oi_accumulation.py and accumulation_distribution.py are published as a pair, and the pair is the point: the second supersedes the first, and reading them together is what shows what the successor added. It added a market regime gate and a corrected funding accrual.

The predecessor is also where this record's clearest data-defect lesson sits. Its funding cost function was handed an empty sequence on every one of 107 trades, because the feed above it was not delivering rates, and the function had no way to tell that from a hold that spanned no settlement. R-17 is the rule that came out of it and the published module records the distinction it cannot itself make. Correcting the feed did not save the hypothesis: the strategy is long-only and the sample ran through a nine-day decline, so it died on the idea afterwards. A data defect that hides a cost term has to be found before a mechanism can be judged, and finding it is not the same as having judged one.

The successor carries a caveat that constrains what its own verdict may be read as saying, and it was verified rather than repeated. entry_confirmation accepts two routes into a position, and the spring and upthrust route was never live: the engine's only call site passed reclaimed=False unconditionally. The verdict falsified the confirmed-turn route and says nothing about the other one. The published signature keeps the argument rather than dropping it, so the untested path stays visible, and the test suite pins both routes so a reader can see the untested one works.

fragility_conditioning.py carries the sharpest instrument lesson in the record, and it is a lesson about measurement rather than about markets.

Its trailing percentile is a midrank rather than a plain empirical distribution function, and the reason was measured. Perpetual funding is clamped to a one-basis-point baseline whenever the premium index sits inside the interest-rate band, so between 43 and 68 percent of bars on our panel sit at exactly that value. The distribution has an atom. Under a plain distribution function the modal value scores near zero despite being the median, and a threshold written as "at or below 10" was measured capturing 24 percent of the sample. The threshold had stopped meaning what it was written to mean.

That is an instrument failure, not a hypothesis failure, and the two must not be allowed to look alike. It was caught before a single forward return had been computed, which is the only reason it is a design note rather than an incident note. The published test suite reproduces the substrate condition and pins the definition against it, so a reader can see both the failure and the fix rather than taking either on trust.

exit_geometry.py is the one module in this record whose tests are written rather than ported, and the reason is the point of the module. Its measurements first ran as one-off scripts that were never committed, which is where R-25 came from. The instrument built to replace them was never given a test file either, so publishing it meant writing the suite. The module docstring says so instead of letting a reader assume the cases came from somewhere.

It also carries the sharpest teaching point in the tier. Maximum favourable excursion is a look-ahead statistic: "ninety-six percent of trades were briefly up more than 22 basis points" is an upper bound on what any exit rule could have collected, not an estimate of what one would collect, because harvesting it would require knowing in advance which bar turns out to be the peak. A take-profit is the only causal implementation, which is why both halves are in one module. Publishing them apart would make it easy to report the bound as though it were the result.

The cross-sectional module is worth reading for the identity in BL-SD-010 section 11. Its two modes are one selection rule with the direction flipped, so net_momentum = -net_reversal - 2 * (fee + spread_cost) holds per trade and the two families cannot both be profitable. That is the kind of relation that is obvious once written down and invisible until then, and the test suite pins it rather than trusting it.

4.2 Scheduled drivers

Orchestration over published cores. None of these carries reasoning a reader needs to check a verdict, and each is named so the promise stays auditable.

DriverDossiers
Fragility-family drivers over the published conditioning layerBL-SD-042, BL-SD-043, BL-SD-044, BL-SD-045
Stop-overlay driver over the published stop and geometry modulesBL-SD-040
Momentum cell map and rebalance-hour sweep over the published anchor instrumentBL-SD-051
Two-entry-point comparison glue, deliberately withheld as untestedBL-SD-028
Detector wiring supplying the session families their eventsBL-SD-034, BL-SD-035
Mechanical selection, characterisation instrument and tail test over the published crowding stateBL-SD-037
Event-selection loop over the published reversion modulesBL-SD-041

5. Tier 3, published

The maker engine's decision cores are published as 05_INSTRUMENTS/strategies/rust/src/maker_core.rs, 644 lines, 29 tests, in the same dependency-free crate as the strategy cores. Its vacuum-capture component was published in tier 1, because that component carried a family verdict of its own.

CoreWhat it decides
Quote placementThe five-step price and skip decision, per symbol, per tick
Inventory skewThe four-tier classification and the sign that steers it
ToxicityWhether a reading clears both the floor and the window's own percentile
Force-flattenWhich of three triggers, if any, closes a position by taker

Each core is a pure function. In the source the quote computation was asynchronous because it read the skew level, the inventory sign, the toxicity flag and the runtime order size through locks and a cache; all four are arguments in the published version, so the algorithm is testable without any of that and a reader can see which inputs decide a quote.

What is not published is the order manager, the fill watcher, the per-account plumbing, the realised-PnL bookkeeping and the run loop. BL-TR-001 section 4 records the engine at 3,673 lines. What is decision logic is here; the rest places orders, and publishing it would mean publishing the trading platform rather than the research.

Two production defects are recorded in the module because their fixes are in the arithmetic. On 2026-05-25 order notional was found to be validated at the mark price rather than at each side's own quote price; a buy quote sits at the bid, below the mark, so its effective notional could fall under the venue minimum while the check passed, and the venue rejected it on every tick of a low-priced symbol. The same day, force-flatten was found to be issuing market orders on dust positions under the venue minimum, which were rejected and re-issued the next tick without end. Both fixes are pinned.

One label is corrected rather than the behaviour beneath it. The toxicity test returns not-toxic while its window is short of its sample floor, and the source described that as failing closed. It is the opposite: during warm-up the guard does not engage and quotes are placed. That is a defensible choice for a passive maker whose alternative is not quoting, but the label was inverted. The behaviour is unchanged, because changing it would change what ran.

With this, every tier of the schedule is published. What remains scheduled is listed in section 4.2: eleven orchestration drivers over cores that are already out, none carrying reasoning a reader needs in order to check a verdict.


6. What publication does and does not mean

A published strategy core is the decision logic that produced a verdict in this record, translated and tested. It is not a runnable trading system, and the modules say so individually.

What is left behind is consistent across the tier and stated in each module's own change record: the asynchronous run loop, the cache and market-data transport, the cancellation plumbing, order placement, and the engine types those depend on. None of it is needed to check a verdict, and publishing it would mean publishing the trading platform rather than the research.

A mechanical check of the published tier confirms the separation holds. A deterministic parse of the strategy modules and their tests resolves every reference leaving that set to a standard library, to the test runner, or to a sibling module inside this record. Nothing reaches back into the vault, the engine, or a transport client.

One published module deliberately reaches across into Volume V rather than staying inside its own tier. The cointegration pre-screen's test suite imports the corrected walk-forward instrument, because the exhibit is the comparison between the two and a test that could not run both would not be able to make it.

Nothing here is a representation that any of these strategies is profitable. Every one of them is closed.


7. Cross-references

BL-FM-004 section 4 for the classification policy this schedule discharges. BL-IS-000 section 8 for what Volume V publishes overall. BL-SD-000 section 5 for the envelope-bound rows tier 1 covers, and section 7.3 for the defects this pass found. BL-TR-001 section 5 for the live, dormant and archived distinction in the source tree.


Copyright (c) 2026 Bijective Labs. All rights reserved.