BL-IN-006: The Hour We Never Controlled
BIJECTIVE LABS
BL-IN-006: The Hour We Never Controlled
Status: RELEASED
Classification: PUBLIC
Revision: 1
Date: 2026-09-07
Incident date: 2026-08-03 Class: K5, selection that occurred by default rather than by intent Rule produced: R-09, implemented as an automated robustness instrument
1. What was believed
Every cross-sectional strategy in the second programme rebalanced at 00:00 UTC.
Nobody had ever thought about that. It was an implementation detail on the same level as a variable name, and it appeared in nineteen pre-registrations without once being recorded as a choice.
Separately, a momentum characterisation published the previous day reported a single headline: +14.11 basis points per week at a t-statistic of 2.49, annualising to roughly +7.3 percent. It was reported as the measurement, because as far as anyone knew there was only one.
2. Where the hour came from
It was never chosen.
The grid builder anchors on the first timestamp of the research era. That era boundary happens to fall at midnight UTC, so the rebalance clock inherited midnight from a date boundary that had been set for an entirely unrelated reason.
No decision was made. No alternative was considered. There was nothing to document, which is precisely why nothing was documented.
3. The trigger
The discovery was a side effect of unrelated work.
While building an eligibility layer, a discrepancy appeared between a reversion figure computed inside that work and the previously published figure for the same construction. The gap was 39.75 basis points per week, which is far too large to be noise.
Bisecting it produced a single variable. One code path anchored the grid at 00:00 UTC and returned gross +9.18. The other anchored at the first bar available in the data lake, 10:00 UTC, and returned gross +0.46. Universe, turnover, and sample size were identical across both.
An 8.7 basis point per day difference, attributable to nothing but the hour of day at which the portfolio was rebalanced.
4. The investigation
The first step was not to run the audit. It was to prove the instrument that would run it could reproduce a known result.
A new hour-resolution loader was validated against the programme's most consequential prior measurement, the single-shot held-out gate:
| Source | n | Gross | Cost | Net |
|---|---|---|---|---|
| Original gate result, 2026-08-02 | 826 | +12.13 | 7.85 | +4.28 |
| New loader, phase 00:00 UTC | 826 | +12.13 | 7.85 | +4.28 |
Exact reproduction. Only then was the pre-registered specification re-run across all twenty-four hourly anchors, for three separate strategy families.
5. The finding
5.1 The hypothesis that was killed
The specification from the held-out gate, run across all twenty-four phases [E-0029]:
| Statistic | Value |
|---|---|
| Phases with positive net | 8 of 24 |
| Phases significantly positive | 0 of 24 |
| Phases significantly negative | 7 of 24 |
| Median net across phases | -3.54 bps |
| Worst phase | -15.48 bps, hour 14 |
| Best phase | +10.19 bps, hour 6 |
| The phase actually used, 00:00 UTC | +4.28 bps |
| Rank of the phase used | 3 of 24 |
The hour the programme had been using, without knowing it was using anything, was the third most favourable of twenty-four. Twenty-one alternative anchors would have produced a worse number, and sixteen would have produced a negative one.
The negative significance count in that table was added later and is the more striking of the two. The audit as originally run reported only that no phase was significantly positive, because the instrument compared a signed statistic rather than the two-sided form its own specification required. Recomputed correctly, seven of twenty-four phases are significantly negative, the worst at t = -4.80.
That correction was found while writing the reference implementation for
BL-IS-004, months after the audit, and section 8 of that document records it.
It makes the kill more decisive rather than less: across nearly a third of the
phase space the strategy was not merely unsupported, it was significantly
losing.
5.2 The reversion family
The same treatment applied to the reversion construction [E-0040]:
| Statistic | Value |
|---|---|
| Phases with positive gross | 13 of 24 |
| Phases with positive net | 3 of 24 |
| Gross at 00:00 UTC | +6.51 bps |
| Rank of the phase used | 5 of 24 |
The sign itself flips depending on the hour. A result that changes sign across the phase space of a parameter is not a property of the market. It is a property of the parameter.
5.3 The momentum headline
This is the one that hurt [E-0044]:
| Statistic | Value |
|---|---|
| Phases with positive net | 24 of 24 |
| Phases significant at t above 1.96 | 5 of 24 |
| Median net | +8.72 bps |
| Worst phase | +4.20 bps, hour 7 |
| Best phase | +14.11 bps, hour 10, t = 2.49 |
| Rank of the phase reported as the headline | 1 of 24 |
The published figure was the maximum of twenty-four alternatives that had never been disclosed, because nobody knew they existed.
| Momentum result | Before | After |
|---|---|---|
| Net per week | +14.11 bps | +8.72 bps, median |
| t-statistic | 2.49 | approximately 1.4 |
| Annualised | +7.3 pct | approximately +4.5 pct |
6. Why this is selection without a selector
No one searched the phase space. No one saw twenty-four numbers and reported the largest. The statistical damage is identical to having done so, and that is the part worth carrying away.
Pre-registration locks the parameters you have identified as parameters. Anything you have not recognised as a choice is not locked, because it was never a candidate for locking. The rebalance hour spent nineteen pre-registrations in that category.
The two families also failed in different directions, which sharpens the point. The reversion family reported a favourable phase and the momentum family reported the single best one. Neither was deliberate. Both are unacknowledged multiple testing.
There is an additional structural detail: 00:00 UTC sits inside a session block that measured positive across the reversion family. The accidental anchor was not neutral, and the bias ran consistently in the direction that flattered the research.
7. What survived, and what did not
The audit strengthened the programme's most important verdict and weakened its most promising number, which is the correct pattern for an honest audit.
The kill held. The held-out gate had rejected its hypothesis at a phase that was the third most favourable available. Zero of twenty-four phases were significant. Had the programme run any other anchor, the rejection would have been more decisive, not less. The verdict is now verified robust against a variable nobody knew was live.
The momentum finding held in sign, not in magnitude. Twenty-four of twenty-four anchors positive is a materially different class of evidence from thirteen of twenty-four with sign flips. The direction is real. The magnitude was overstated by roughly sixty percent, and the corrected figure of about 4.5 percent annualised at a Sharpe near one places it in an economic class the programme had already assessed and set aside.
The published numbers came down. Every positive figure the programme had reported for these families reads lower after the correction. That is stated plainly in the source and it is stated plainly here.
8. The fix
The remedy is code, not a note to be careful.
anchor_robustness(nets, t_stats, reported_index) was added to the inference
module with four required behaviours:
It raises if given a single phase. One phase is the defect; it cannot assess itself.
It raises on any missing value, rather than quietly excluding a phase.
It computes sign consistency across the phase space, separating a robust direction from a result that is a property of the chosen phase.
It labels the reported phase against the full distribution as OPTIMISTIC,
TYPICAL, or PESSIMISTIC.
Eleven tests were added, taking the suite from 683 to 694.
The last behaviour is the one worth copying. It does not prevent reporting a favourable phase. It prevents reporting one silently.
9. The rule
Every measurement based on a periodic rebalance must report anchor sensitivity, at minimum the minimum, median and maximum across phases, rather than a single phase. Reporting one phase without disclosing that other phases exist is unacknowledged multiple testing.
This is R-09. It generalises beyond the rebalance clock to any periodic
parameter fixed by convenience: session boundaries, snapshot times, era
partitions, and lookback offsets are all candidates for the same failure.
10. What the audit cost, and what it settled
No capital was at risk. Zero orders were placed and the entire audit ran against recorded data.
One consequence is structural and follows from a design decision rather than from the error. The held-out era is opened once, by design, and it had already been spent on the gate this audit re-examined. Spending it there was correct at the time and the audit confirms it. The consequence is that the momentum family now needs a different substrate to certify, and that is a statement about where the next measurement comes from rather than about anything that went wrong.
The closing assessment in the source is one line, and it is the right one:
This audit produces certainty, not opportunity.
It found no edge. It confirmed a kill, quantified a systematic defect touching nineteen pre-registrations, coded a guard so the defect cannot recur, and revised a published figure downward by sixty percent.
Auditing yourself into a materially worse published result, and then publishing that, is the clearest evidence of process integrity this record can offer.
11. What the source does not settle
The count of nineteen pre-registrations is asserted rather than enumerated, so it cannot be checked item by item from the audit documents alone.
The momentum characterisation used a 10:00 UTC anchor while the reversion chain used 00:00 UTC. Why the two families inherited different accidental anchors is not explained anywhere in the source.
12. Cross-references
BL-D-009 rule R-09. BL-D-004 section 2.8. BL-D-003 section 6, on what
pre-registration cannot lock. Ledger rows H-X4 and TSMOM. Evidence E-0029,
E-0040, E-0044. The anchor robustness instrument is specified in
BL-IS-004, scheduled in Volume V.
Copyright (c) 2026 Bijective Labs. All rights reserved.