Methodology v0.1.1 · CC BY 4.0

Fully public methodology, every value recomputable

An index provider earns credibility by being recomputable. SpreadBench publishes no “black-box numbers” — constituents, formula, weights, benchmark curve and version history are all public, so anyone with the same TRACE trades computes the same number.

Today's levels · cite directly

—
Citations must carry the index code, methodology version and DOI — plus the current data status (seed / verified). Machine-readable version: /api/v1/latest.json (includes the data_status field).

§1Definition and index family

NCSX (Neocloud Credit Spread Index) is the sector index published by SpreadBench, measuring secondary-market credit spreads of AI-infrastructure (Neocloud) issuer bonds. The unit is basis points (bp) over a duration-matched US Treasury yield curve.

  • NCSX-Composite — all constituents weighted by face value outstanding; the flagship series.
  • NCSX-IG — investment-grade tier (BBB− and above, or asset-backed / contract-guaranteed structures).
  • NCSX-HY — high-yield tier (BB+ and below).

The index measures credit pricing the market has transacted at — not quotes, not ratings, not model valuations.

§2Constituent eligibility and screening

A bond enters NCSX only if it satisfies all of the following:

  • Issuer profile: primary business is AI compute infrastructure (GPU cloud / HPC / AI data centres), or its revenue base has shifted to AI compute services.
  • Instrument type: publicly traded fixed-rate corporate bond (including 144A); no convertibles, no loans, no private placements.
  • Liquidity floor: at least 5 TRACE trades in the past 20 trading days with cumulative traded face value ≥ $1MM; otherwise the bond does not participate that day (it is not removed).
  • Face value outstanding: ≥ $300MM.
  • Remaining maturity: ≥ 1 year.

Constituents are reviewed quarterly (end of March / June / September / December). New bonds are added on the second trading day after the liquidity floor is met. Constituent changes never rewrite history — they take effect at the next review only, which keeps the series continuous.

Constituent exit rules

Any of the following triggers an exit effective from the next review period (again, no retroactive rewrite). The rules are written in advance so the index behaves predictably when the sector deteriorates, rather than by ad-hoc decision:

  • Default or bankruptcy: all of the issuer's constituent bonds move to “default watch” the same day and stop counting towards the index (post-default prices no longer represent secondary credit pricing and would contaminate the series).
  • Repayment, call or maturity: exits from the day after the last trading day.
  • Business shift: failing the issuer-profile test at two consecutive quarterly reviews means exit at the second review.
  • Persistent inactivity: 60 consecutive trading days without a TRACE trade moves the bond to an “inactive” list, flagged on the constituents page; history is retained and counting resumes automatically once the liquidity floor is met again.
Minimum sector viability: when eligible constituents fall below 5 bonds or 3 issuers, NCSX enters “observation mode” — the series keeps publishing, the DOI and full history stay citable, but the index is no longer described as a “sector benchmark”. Below 3 eligible constituents, publication stops and the series is archived. NCSX is always a sector observation, not an official benchmark (see §10); this clause is the hard constraint on that positioning.

§3Spread calculation

A bond's spread is its trade-level yield to worst minus the Treasury benchmark yield:

spreadi,t (bp) = [ YTWi,t − rTreasury ] × 100 where YTWi,t is the face-value weighted average yield of all TRACE trades in that bond that day: YTWi,t = Σ ( park × ytwk ) / Σ park , k ∈ trades of the day
Benchmark status (stated honestly): rTreasury is currently a single benchmark rate snapshot (4.02%) shared by all tenors — not a per-bond duration-matched curve. For the IG tier (~310bp), the 30–50bp dispersion across Treasury tenors implies a relative error above 10%; that limitation is recorded in §10. A tenor-matched curve is scheduled for v0.2.0 (see the change log) and will trigger a convention change with a major version bump.

Trade weighting rather than a simple average gives large prints more influence — consistent with an index that measures “pricing actually transacted”.

§4Weighting and index level

The level is the constituent spreads weighted by face value outstanding:

Levelt = Σi ( Outstandingi × spreadi,t ) / Σi Outstandingi Current: IG = 314.7 bp (3 bonds, $3,850MM) HY = 865.8 bp (17 bonds, $19,000MM) Composite = 773.0 bp (20 bonds, $22,850MM)

Face value rather than market value, because market-value weights carry an inverse bias as prices fall (lower price → smaller weight), which systematically understates distressed risk.

Why the HY weight is so large: most Neocloud bonds are high yield, so Composite and HY are highly correlated. The IG tier exists to observe whether “secured / contract-guaranteed” structures get priced separately by the market.

§4.1Change attribution and rounding

Index change decomposes exactly into constituents, because the index is itself a weighted sum:

contributioni = wi × Δspreadi wi = Outstandingi / Σ Outstanding Σi contributioni = Levelt − Levelt−k

Rounding does not break that identity. Contributions are shown to 0.1bp; if each were rounded independently the sum would drift 0.1–0.4bp from the index change — and a table that “does not add up” is the single biggest destroyer of trust in a recomputable product. We therefore use the largest remainder method: floor each contribution to the 0.1bp grid, then hand the remaining units to the largest remainders. The result is per-bond contributions = attribution total = published index change, exactly equal, not approximately.

Verify it yourself: sum the contribution column of any day's attribution table and it must equal that day's index change; if it does not, the data is wrong. The identity holds for all three tiers and all three windows (1D / 5D / 30D).

§5Tiering rules

  • IG: rated BBB− / Baa3 or better, or asset-backed (GPU, energy assets) / hyperscaler contract-guaranteed structure.
  • HY: BB+ / Ba1 or below, including the BB / B / CCC sub-tiers.
  • Ratings take the second-highest (median) of Moody's, S&P and Fitch; with only two agencies, the lower one.
  • Unrated bonds are classified HY and flagged NR in the constituents table.

§6Calendar and publication

  • Computation: 17:30 US Eastern on each trading day.
  • Publication: T+1 (next day), free tier updated simultaneously.
  • Holidays: US bond market calendar (SIFMA recommended holiday calendar).
  • Revisions: if a delayed TRACE print lands within T+1 and moves the level by more than 2bp, a revised value is published and flagged R.

§7Data sources and licensing

Raw data comes from FINRA TRACE (public, delayed trade-by-trade secondary prints) and the US Treasury benchmark yield curve.

The licensing crux (corrected on second review): publishing derived values — including a processed index level — counts as redistribution, which requires a signed Vendor Agreement and fees; disclosing only an aggregate does not confer redistribution rights. The individual non-professional free feed explicitly prohibits redistribution, and SpreadBench will not use it for product distribution.
ItemPublished priceImpact on design
Historic files$2,000 setup + $2,000/year; redistribution $1 per CUSIP per year, capped at $1,000/yearHistorical trade files, used to backfill and verify the benchmark series
End-of-Day$750/month per dataset ($9,000/year)End-of-day trade files — the primary source once daily updates go live
Real-time vendor feed$1,500/month; agreement explicitly includes “repackaging into indices”Real-time prints with index redistribution rights
Individual free real-timeNon-professional terms prohibit redistributionCannot be a product data source; personal research only
FINRA free media dataMarket aggregates and FINRA-Bloomberg indices, EOD, freeFree aggregate statistics, usable as a sector background layer

Licensing statement (single source across the site): the current v0.1.x series is a seed series — no commercial TRACE licence yet; 5 of 20 constituent identifiers are verified and the history and trade detail are demonstration data (the data_status field in every JSON response and the homepage status card are authoritative). The table above is an unsigned cost model; final vendor quotes govern. Once a Vendor Agreement is signed, real trades replace the seed series (v0.2.0); every convention change is recorded in the change log and the previous series remains downloadable.

§8Recompute tool

With the same inputs, anyone can reproduce the published three-tier levels exactly. Below is the calculation SpreadBench actually runs (runnable on this page — edit the inputs, press “Recompute”):

// input: each constituent's YTW, face value outstanding ($MM), tier; Treasury benchmark yield function recompute(bonds, treasuryPct) { var acc = { IG:{w:0,s:0}, HY:{w:0,s:0}, ALL:{w:0,s:0} }; bonds.forEach(function (b) { var sp = (b.ytw − treasuryPct) * 100; // bp acc[b.tier].w += b.sizeMM; acc[b.tier].s += b.sizeMM * sp; acc.ALL.w += b.sizeMM; acc.ALL.s += b.sizeMM * sp; }); return { IG: acc.IG.s / acc.IG.w, HY: acc.HY.s / acc.HY.w, Composite: acc.ALL.s / acc.ALL.w }; }

Recompute live

edit inputs → recompute → compare with published

§9Version and DOI

  • Current version: v0.1.1 (2026-11-04)
  • DOI: 10.5281/zenodo.23931330 — Zenodo dataset deposit (resolvable at doi.org); each version has its own DOI, and the concept DOI (always pointing at the latest) is 10.5281/zenodo.23931329
  • Licence: CC BY 4.0 — free to use and redistribute with attribution and version
  • Citation: SpreadBench (2026). Neocloud Credit Spread Index (NCSX), v0.1.1 (seed dataset). Zenodo. 10.5281/zenodo.23931330
  • Versioning: any convention change that affects levels (eligibility, weighting, benchmark curve) bumps the major version and keeps the previous series downloadable.

Citation generator

CC BY 4.0 · citations must carry the version and DOI
Citing an index is a vote for that benchmark. With the version and DOI attached, others can reproduce the level you saw.

§10Limitations and boundaries

Boundary: SpreadBench aggregates public secondary trades only. No credit ratings, no investment advice. Rating is a licensed business. All external wording stays factual (“spreads computed from public trades”) and never says buy or sell.
  • Liquidity bias: TRACE only covers TRACE-reportable bonds; on thin days the level rests on fewer prints, and the constituent table discloses the day's trade count.
  • Delay: the free tier is T+1 and unsuitable for intraday decisions.
  • Concentration: CoreWeave carries a large single-issuer weight, so an issuer-specific event moves Composite materially.
  • Verification status: currently a seed series (data_status: seed) — conventions and algorithm are fully public and the in-page recompute tool checks every value; but only 5 of 20 constituent identifiers are verified and the history and trade detail are demonstration data. Progress is shown on the constituents page.
  • Benchmark curve: currently a single all-tenor rate snapshot (4.02%), not per-bond duration-matched (see the §3 box) — 30–50bp of tenor dispersion is a relative error above 10% for the IG tier; a tenor-matched curve is scheduled for v0.2.0.

§11Change log

Convention changes affect comparability, so each is recorded and the previous series stays downloadable.