Official Track Record · Methodology v

The borrower sentiment index, day by day.

Every reading the index has produced — captured daily, stamped with its methodology version, and cryptographically chained so nothing can be altered after the fact. Organized for review and one-click export.

0 of 90 days captured building the institutional track record…
Borrower Sentiment Index — daily history
0–100 composite · one immutable reading per day · methodology v
Loading track record…
Daily readings
Institutional data access & licensing
Full history via API, versioned methodology docs, and redistribution licensing for research desks, servicers, and policy teams. Exports on this page are free for evaluation.
Contact for licensing → API documentation

📌 Point-in-time & revision policy

Every row is a live reading captured on its stated date. Readings are never restated, revised, or backfilled. If a capture is missed, the day stays empty — modeled or interpolated values are never written into the official record. Methodology changes only apply forward, under a new version number.

🗂 Methodology version history

  • v1.1.0 — effective 2026-07-09 · intraday noise suppression (one authoritative reading per day) and hardened signal-failure handling. Applied forward only.
  • v1.0.0 — frozen 2026-06-19 · initial six-signal composite; daily capture begins 2026-06-21.

Each row carries the version it was computed under (see the Ver column below the chart).

📖 Data dictionary

  • Index — 0–100 composite; higher = greater borrower financial distress.
  • Google — search-panic intensity for repayment/forgiveness/default terms (Google Trends).
  • Reddit — AI-classified sentiment across borrower communities, 30-day window.
  • CFPB — federal student-loan complaint volume vs. baseline.
  • Delinq. — 90+ day delinquency trend (NY Fed household debt data).
  • Refi — refinance-demand search interest.
  • Survey — published borrower-stress survey composite (e.g. Pew).
  • Chain hash — SHA-256 binding this row to the prior row (tamper evidence).

🔐 Verify the record independently

No trust required — the chain recomputes from public data:

GET /api/snapshots # full history, JSON for each row (date order): h = SHA-256(prev_hash + canonical_json(date, captured_at, index_score, status, methodology_version, signals)) assert h == row.hash # genesis prev_hash = 64 zeros

Or let the server show its work: /api/verify recomputes every hash and returns per-row matches.