1 · The pipeline in one line

FINRA TRACE bond prints → cleaning & de-duplication → z-spread per bond against a SOFR discount curve → piecewise-flat hazard-rate bootstrap on the 1–10Y tenor grid → ISDA-standard par CDS spreads → three-state quality gate → static JSON publication.

Why bond-implied? Single-name traded CDS quotes live behind institutional terminals and data-vendor licences. Corporate bond prints in FINRA TRACE are public. Deriving CDS spreads from the bond market — a bond-implied CDS curve — answers the same question (what default risk does the market price into this issuer?) from data anyone can observe, at a price point individuals, small desks, students and builders can actually pay. The sections below are the full method; /v1/index.json is the free JSON plane it feeds.

2 · Source data

Input is public fixed-income market data only:

3 · Cleaning

Daily prints are cleaned before anything is fitted: duplicate prints are de-duplicated, low-volume prints are floored out, and outliers are guarded. The number of bonds surviving cleaning per issuer per day is published in every curve payload (n_bonds_priced, n_prints_day) so thin coverage is always visible.

When the bootstrap cannot match a bond-implied z-spread at a tenor knot — negative or unreachable z-spread, non-finite or unbracketable solution — the hazard is carried forward flat from the previous knot and the tenor is flagged. The published spread at such a tenor is a placeholder, not a fit; the flag lists (unsolved_knots and friends) are the way to see this. These are coverage diagnostics, never signals.

4 · Discounting

From 2026-09-30 the discount curve is the SR3 futures strip (provenance string in every payload, e.g. SR3 futures strip to 2.2y via Yahoo/CME). Rows before that date were computed with flat-SOFR discounting at each historical date (legacy_flat regime). The two regimes are not comparable level-for level — every history series carries a regime_note marking the boundary, and within-regime comparison is the only like-for-like comparison.

5 · Hazard bootstrap and ISDA conventions

A piecewise-flat hazard (default-intensity) curve is bootstrapped on the 1, 2, 3, 5, 7, 10-year tenor grid so that model-implied par CDS spreads reproduce the bond-implied z-spreads at each knot. Par spreads are priced under ISDA standard conventions: quarterly payments on IMM dates, ACT/360 day count, accrued interest paid at default (half-spread accrued). The credit curve is published as par spreads per tenor plus the fitted hazard rates and z-spreads behind them.

Par spreads on this bootstrap are recovery-invariant to first order — the hazard level re-absorbs the recovery assumption — so an honest recovery sensitivity is a grid of upfront values at fixed running coupons, not a grid of par spreads. That is exactly what the Pro recovery_grid publishes.

6 · Recovery assumption

Fixed at 40% in v1 — single assumption, not user-selectable, and stated in every payload (recovery_assumption: 0.4).

7 · The quality gate

Every curve passes a no-arbitrage and smoothness gate before publication. It is a three-state classification, and the state is always exposed as status:

statusconditionpayload
publishednormalised curvature ≤ 20 bp/yr², no violations, no unsolved knotsfull spreads
published_volatilecurvature ≤ 60 bp/yr², or one unsolved knot short of the withhold rulefull spreads + volatility_flag
withheldcurvature > 60 bp/yr², or any hard invariant broken, or the 5Y knot unsolved / half the knots unsolvedspreads stripped; violation list instead

Curvature is the second derivative of the quadratic through each consecutive tenor triple, normalised on the non-uniform tenor grid (bp per year²). Hard invariants — all of which withhold regardless of thresholds — are plain no-arbitrage checks: discount factors positive, strictly decreasing and ≤ 1; hazards non-negative; survival curve non-increasing; risky annuity positive.

Design intent. published_volatile exists so that genuine market repricings are not suppressed — the repricing is the signal. Withholding is reserved for curves that are not trustworthy as a credit measure: a missing curve is a deliberate outcome, never a silently smoothed or backfilled one. Clients must handle all three states explicitly.

8 · Publication

9 · Known limitations

  1. Model-implied from bond markets — never present these numbers as traded CDS quotes or marks.
  2. Fixed 40% recovery in v1; no per-name or per-seniority override yet.
  3. History depth ≈ one year, bounded by the rolling print window; it extends only as time passes.
  4. Discounting-regime boundary inside history (§4); compare within a regime only.
  5. Survivorship in backfilled history (§8).
  6. Coverage is uneven across issuers and changes over time; enumerate what exists rather than assuming.
  7. Bank issuers show elevated volatile/withheld rates pending a floating-rate-note universe filter — the measured driver is floating-rate paper priced as fixed, not subordination.
  8. Unsolved knots produce carried-forward placeholders at flagged tenors (§3); treat them as missing data.

10 · FAQ

Where can I get free CDS spread data?
Traded single-name CDS quotes are dealer-market data licensed through terminals and data vendors at institutional prices. What is freely available is bond-implied CDS: curves derived from public FINRA TRACE corporate-bond prints. Basisline publishes model-implied 1–10Y par CDS spreads for its covered US issuers on a free JSON tier (/v1/index.json), with roughly one year of history.
What is a bond-implied CDS spread?
A par credit-default-swap spread computed from corporate bond prices rather than observed CDS quotes: each bond's z-spread versus a risk-free discount curve is matched by bootstrapping a default-intensity (hazard-rate) curve, and par CDS spreads are priced from that hazard curve under ISDA standard conventions (§5). It answers the same question as a traded quote — what default risk does the market price into this issuer? — using the bond market's answer.
How do you derive risk-neutral default probabilities from corporate bond prices?
Fit a piecewise-flat hazard-rate curve so that model CDS par spreads reproduce bond-implied z-spreads at each tenor knot; the survival curve implied by those hazards gives risk-neutral default probabilities per tenor. Basisline bootstraps on the 1, 2, 3, 5, 7, 10-year grid under ISDA conventions with a fixed 40% recovery assumption (§5–§6) and publishes the fitted hazards alongside the par spreads.
Is this traded CDS data?
No — and every payload says so. These are model-implied curves computed from public bond prints, never traded CDS quotes, dealer marks, or evaluated prices. Each curve passes a three-state quality gate before publication (§7): published, published_volatile (flagged), or withheld. Curves that fail the gate are flagged or withheld — never silently smoothed or backfilled.