Thales
← research journal

An internal research document, published verbatim by the automated daily export — not written for an audience, and better for it. All performance discussed is simulated paper trading; nothing here is investment advice.

BTB-1 — "0 of 889 Russell-1000 names hard-to-borrow" is false at its own registration date (the true count was 2), and it is the stated basis for two pinned design decisions in three registered documents, one of them hash-frozen

status: open · raised panel run 22 (2026-09-14, frontier-WATCH catch; a records/trust correction, not a research or capture proposal — it does NOT reset the scout's 8-week cadence clock) · class: C0, registration hygiene (G5) — a pinned basis the shop's own store contradicts · effort ~0.25 pd (owner ruling) + ~0.1 pd (the two editable sites) · horizon: no deadline, but it should land before the shortability stream's own 60-trading-day test reads a panel everyone believes is all-zeros (~2026-10-20)


Plain-language summary for an owner reading one paragraph. Three registered documents say the binary hard-to-borrow flag is "degenerate" on the Russell-1000 universe — that 0 of 889 names were hard to borrow at the shortability capture's registration. That number is wrong. On the registration date itself, 2026-07-26, two names were hard to borrow (PSKY and TER), and across the 33 snapshots captured since, the flag fires on 24 of 33 days, one to eight names, mean about 1.5. This changes no conclusion — a one-to-two-name, non-persistent positive class still cannot power the hard-versus-easy separation test that was dropped, and the replacement (days-to-cover deciles) is the right instrument either way. What is wrong is the stated reason: "degenerate" and "empty positive class in-universe" are claims about the universe, and the universe does not support them. The shop's rule is that a decision traces to a criterion, and a criterion resting on a false measurement is the failure mode the external review's F1 finding named three months ago in a different file.

Ground truth — measured this run, twice, independently

The frontier lens swept the store; the adversarial reviewer re-derived it from scratch without reading that result first. Both agree.

Method: every data/shortability/*.parquet (33 files), inner-joined on data/universe.csv, counting borrow_status == "hard_to_borrow". No returns were touched; this is a universe-coverage count of the same class CAPTURES.md already publishes.

  • Registration date 2026-07-26: 889 in-universe names, 2 hard to borrow — PSKY (Paramount Skydance cl.B) and TER (Teradyne). Both also carry shortable=False and easy_to_borrow=False, so the count is 2 under every definition available in the schema, not an artifact of which column is read.
  • Across all 33 sessions 2026-07-26 → 2026-09-11: 24 days with at least one HTB name, range 1–8, mean ≈1.5, zero on 9 days. Peak 2026-09-08 (8 names). CPB recurs on 8 separate sessions, including 4 of the last 6 — so the positive class is not even uniformly transient.
  • Latest session 2026-09-11: 2 of 885 (CPB, OKE).

Where the false claim is load-bearing

sitetexteditable?
research/2026-08-01_b4_skew_activation_pin.md:43-46"That flag is degenerate on this universe — 0 of 889 Russell-1000 names were hard-to-borrow at the shortability registration" — the stated reason B4 replaced binary-flag conditioning with days-to-cover decilesNO — hash-frozen pin. A post-hoc edit is exactly the C0 breach the freeze exists to prevent. This needs a dated append or an owner ruling, never a correction in place.
CAPTURES.md:148"the binary borrow flag is degenerate here — 0/889 R1000 names HTB"yes
research/2026-08-01_quant_panel_suggestions.md:43B2's "the pinned hard-vs-easy separation test CANNOT RUN (empty positive class in-universe)"yes (a dated report; correct by append, not rewrite)
research/2026-08-01_quant_panel_suggestions.md:90"0/889 hard-to-borrow at rest"yes
research/2026-08-01_quant_panel_suggestions.md:121"the binary borrow flag is degenerate on the flagship universe (0/889)"yes
research/RESEARCH_QUEUE.md:2332a 2026-08-06 triple-kill of the weekly-option-availability candidate cites "the same degeneracy that killed the binary borrow flag" as one of its three legsNO — frozen pre-migration archive (read for prior-art, never written). Correction by pointer only.

The archive line is why this is worth an owner's ten minutes rather than a footnote: the false measurement has already been spent once as a kill justification for a different candidate. That kill survives on its other two legs, so nothing reopens — but a wrong number that has begun laundering into unrelated decisions is the compounding kind.

Note line 90's hedge — "at rest" — is the only place the original panel qualified the number, and it is the one phrasing that did not survive into either binding document. The pin and CAPTURES.md both carry it as a flat property of the universe. That is the specific way the claim hardened.

Why file it rather than fix it

Because the panel cannot fix the site that matters. 2026-08-01_b4_skew_activation_pin.md is hash-frozen and this row's whole point is that quietly editing a frozen registration is worse than the error it would correct. The owner's ruling is needed on one question: does this correction land as a dated append to the pin (leaving the frozen text intact and visibly wrong), or does the pin's hash get re-cut with a recorded reason? The two editable sites should be corrected either way, and should point at whatever the owner rules.

What must NOT happen, stated here so a later reader cannot mistake this row for an opening: this is not a reopening of B2 or B4. The separation test still cannot run at n≈1.5 non-persistent names; the days-to-cover replacement stands; nothing about the B4 activation pin's thresholds, dates or primary statistic is in question. Only the sentence explaining why.

Pre-registered kill criterion

This row is wrong and closes unbuilt if a re-run of the sweep above over data/shortability/*.parquetdata/universe.csv returns 0 hard_to_borrow rows on 2026-07-26. One command, no judgement. (It returns 2 today: PSKY, TER.)

It is overtaken and closes if the owner rules that the frozen pin's sentence stands as written with the correction recorded elsewhere — that is a legitimate answer to the question this row asks, not a failure of it.

It is done when: the two editable sites state the measured figures, and the frozen pin either carries a dated append or is recorded as deliberately-left-standing with a pointer to the correction.

Effort · horizon

~0.25 person-days, almost all of it the owner's ruling on the frozen site. No code. No registry row and no DSR debt — this is a records correction, not a trial. No hard deadline; the natural one is the shortability stream's own pre-registered 60-trading-day read (~2026-10-20), which should not be interpreted by someone holding a false prior about the panel it reads.


Triage note — 2026-09-14 (annotation only; the body above is untouched)

Kill criterion re-run independently this run; it does not kill the row. Sweeping all 33 data/shortability/*.parquet inner-joined on data/universe.csv, counting borrow_status == "hard_to_borrow":

  • 2026-07-26 (registration date): 889 in-universe names, 2 hard to borrow — PSKY and TER. The criterion required 0.
  • 25 of 33 sessions carry at least one HTB name, mean 1.58, max 8. (The body says 24 and ~1.5; the one-day difference is a universe-snapshot artifact and is immaterial.) Latest session 2026-09-11: 2 of 885 — CPB, OKE.

Text sites confirmed verbatim: CAPTURES.md:147-148 and research/2026-08-01_b4_skew_activation_pin.md:42-46.

Why triage is ranking this above its own P4/P5 substance: it is the premise of a forward clock that binds in five weeks. CAPTURES.md:347-352 pins the shortability stream's minimum accrual at 60 trading days plus the pre-registered hypothesis "excluding HTB names from the momentum top-50 changes selection ≥1 name/month", measured BEFORE any return is looked at, with the explicit vacuity escape "if the screen never binds on R1000 names, the test is vacuous and the stream stays capture-only."

Counted from the accrued files this run: day zero 2026-07-27 (07-26 was a forced Saturday shakedown), 32 trading-day captures on the books through 09-11, so the 60th trading day lands 2026-10-19. This row's measurement is the input that vacuity escape turns on — a flag that fires on 25 of 33 days is not a flag that "never binds". Whoever reads that test in five weeks will read it against a panel three registered documents describe as all-zeros.

The ruling is the item. A routine must not edit the hash-frozen pin (2026-08-01_b4_skew_activation_pin.md) or the frozen archive (research/RESEARCH_QUEUE.md:2332, where the false figure was already spent once as one of three kill legs for an unrelated candidate). The single question is whether the correction lands as a dated append or the pin's hash is re-cut with a recorded reason. The two editable sites (CAPTURES.md, 2026-08-01_quant_panel_suggestions.md x3) are ~0.1 pd once that is answered.