Files
signal-platform/reports
dennisthiessenandClaude Opus 5 8453b87290
Deploy / lint (push) Successful in 10s
Deploy / test (push) Successful in 1m20s
Deploy / deploy (push) Successful in 37s
fix(sec): compose total debt across the styles filers actually tag
total_debt read LongTermDebt, else LongTermDebtNoncurrent/Current, plus one of
ShortTermBorrowings/CommercialPaper. That misses two whole tagging styles, and
it feeds net_debt -> net_debt_to_ebitda -> the categorical leverage read, so the
misses were not absences but confident wrong answers: Coca-Cola scored on 0.25bn
of commercial paper against ~39bn of debt, Verizon on 21.78bn of current
maturities against ~165bn, AT&T and Exxon produced no value at all against 134bn
and 33bn tagged. Measured over 19 large caps and 14 REITs, 11 were wrong or
absent and the rest are unchanged.

Each concept's span is now respected. LongTermDebt already includes current
maturities (Apple tags all three: 71.34 + 11.01 = 82.30), so only true
short-term borrowing is added. LongTermDebtAndCapitalLeaseObligations — what KO,
HD, T, XOM and CVX tag, and nothing read before — is noncurrent and takes a
current complement, and DebtCurrent *is* that whole complement rather than an
addition to it.

The REIT branch needed disambiguating: NotesPayable is not the same line across
issuers. MAA tags NotesPayable 5.66bn = UnsecuredDebt 5.30bn + SecuredDebt
0.36bn exactly, so there it is the total and adding the secured side
double-counts; EQR tags it alongside a larger SecuredDebt, where it is only the
unsecured component. UnsecuredDebt's presence separates them.

A component alone is no longer reported as a total. Chevron tags full debt only
in its 10-K, so its 10-Q carried 0.40bn of short-term borrowing; Boston
Properties tags SecuredDebt 4.28bn against ~15bn real. net_debt needs both sides
and yields nothing when either is missing, so None costs a leverage read where
the fragment produced a confidently wrong one.

Snapshots are immutable, so this corrects new filings only; stored history needs
scripts/reparse_fundamentals.py, which cannot complete until the EQR/931182
collision is retired.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016Lo99z3jWqu9X9ueBU3Z3D
2026-08-21 17:44:18 +02:00
..
2026-07-18 15:29:10 +02:00
2026-07-13 14:07:42 +02:00
2026-07-13 14:07:42 +02:00
2026-07-17 15:22:58 +02:00
2026-07-17 17:42:13 +02:00
2026-07-18 16:57:19 +02:00
2026-07-18 16:57:19 +02:00
2026-07-19 10:40:19 +02:00
2026-07-18 15:29:10 +02:00
2026-07-18 15:29:10 +02:00
2026-07-13 10:58:40 +02:00
2026-07-13 10:58:40 +02:00
2026-07-13 08:18:40 +02:00
2026-07-13 08:18:40 +02:00

Backtest report index

Reports dated 2026-07-11 or earlier are the historical production research record and remain untouched.

The completed 2026-07-12/13 S/R and Gate Target Ladder research is preserved as compact decision evidence instead of full per-arm replay output:

  • sr-v2-validation-comparison.json and sr-v2-validation-cohorts.csv record the held-out detector comparison.
  • sr-full-production-vs-candidate-comparison.json and its cohort CSV record the full-period clean-structure replacement decision.
  • sr-explicit-target-ladder-comparison.json and its cohort CSV record exact GTL parity: 202,765 candidates, 1,086 qualified setups, 321 book trades, Sharpe 2.03, CAGR 50.0%, and max drawdown 21.4% in both arms.
  • The three backtest-20260713-gtl-*.json/.md pairs record the tuning, confirmation, and strength-sensitivity decisions. No stable improvement was found, so the production GTL stayed frozen.

The large backtest-sr-*.json replay files were removed after consolidation. They duplicated hundreds of thousands of candidate rows while adding no decision information beyond the compact comparisons and the narrative in docs/research/sr-levels-and-exits.md. The original raw files remain available in Git history if a forensic reconstruction is ever necessary.

The initial untracked backtest-20260712-sr-detector-rewrite.json is local-only and is intentionally not part of the repository.

The 2026-07-17 post-stop re-entry decision is preserved in daily_reentry_matrix.json. It is the canonical source for the nine-policy daily replay, production-like full-universe ranking, the disjoint 2025+ book, and the cost/capacity sensitivity matrix. The interpretation and production decision live in docs/research/post-stop-reentry.md.

The earlier post-stop-reentry-20260717.json, post-stop-cooldown-sweep-20260717.json, and gate-protected-stop-20260717.json reports were removed as superseded intermediate experiments. They used weekly/hybrid entry cadence or tested the rejected stop-adjustment path, and add no decision evidence beyond the final daily matrix and narrative. Their matching one-off runners were removed too. All remain recoverable from Git history. Rebuildable candidate pickle caches are intentionally ignored and must not be committed.

Phase B fip breadth IC (2026-07-18/19) — compact evidence

Canonical artifacts:

  • fip-reconcile-20260719-000520.json — single-sourced authoritative ICs (unconditional liquid fip, tiers, prod-subset, mom-conditional, context signals). Membership symbol dumps stripped after the decision; narrative in docs/research/fip-breadth-ic.md.
  • fip-breadth-20260718-211440-fingerprint.json — prod-snapshot fingerprint pass (fip IC 0.045 / t 2.91).

Removed as superseded / dangerous intermediate noise (recoverable from Git):

  • fip-breadth-20260718-211440-breadth.json (+ wrapper) — orphaned +0.0575 / t +5.12 from racing a partial research.sqlite. Kept out of the tree so it cannot be re-mythologized.
  • fip-breadth-20260718-194828*.json — fingerprint-only partial run.
  • fip-breadth-diagnostics-20260718-213705.json and …-213908.json — dual-path diagnostics superseded by the single-sourced reconcile.