{
  "tool_id": "art-706-yield-curve-gspread",
  "tool_version": "1.0.0",
  "display_name": "Yield Curve & G-Spread",
  "mcp_name": "build_yield_curve_gspread",
  "mandate_type": "analytics_mandate",
  "wave": 125,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-706-yield-curve-gspread.html",
  "description": "Builds a par yield curve from caller-supplied benchmark points (at least 2, strictly increasing tenors; no live data, the caller's points are used exactly as given) under a named, versioned interpolation, linear (linear@1) or monotone cubic Hermite with Fritsch-Carlson 1980 tangents (monotone_cubic_hermite@1), and reports the G-spread of a bond against that curve: the interpolated benchmark yield at the bond's maturity and (bond yield minus benchmark yield) x 100 in basis points. A bond maturity outside the benchmark tenor range is refused naming the range, never extrapolated. Every assumption is named in plain sentences in the output. Exclusions: no bootstrapping of zero rates, no day-count, no live Treasury feed.",
  "input_schema_ref": "chaingraph/art-706-yield-curve-gspread.html#manifest",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [{"system":"sha256-source","image_id":"sha256:376d1cf65cb78cf0f916e618176436b629b0fcd903bda64f5c9bd2de934e1f50","valid_from":"2026-10-12"},{"system":"risc0","image_id":"sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6","valid_from":"2026-10-16"}],
  "export_capability": ["json"],
  "standards_basis": "not_applicable",
  "compute_proof_ready": "ready",
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "DLf8Cq3jkXPMjEV3Ijgsw77hfwKC9PZD0SeluveX9sAZoM+FimwQa4S1OoFS2ssU7Mbi3ozN42SoQZEoNt2toCzQdVVGbwHXKQdStnPh4SqCooemK+QG5/wcRyevSsrjCCRHnl9ZP5Yy5qGMZsENDbcubQPN+DMkcY5sF9vYWiUJ8QbcYiT4pRrlgUoxZsL62zO4MFFwwIYmK7rP53Cipwylh6A6FObWnX6UmYVHyoczJDQj+IfmNl+0QKyYpdzxKXNjKwAvzyCaSkupy7NxflOxleHE9/EbwKK5Dcvxn30l8+0euVs4n+RtdVOEwqvb8UBul/UlNOb4WTWSysxJPA==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:376d1cf65cb78cf0f916e618176436b629b0fcd903bda64f5c9bd2de934e1f50",
      "output": {
        "assumptions": [
          "Curve assumption: the benchmark curve is built ONLY from the 3 benchmark point(s) the caller supplied under benchmark_name \"UST par, as supplied\" — there is no live Treasury feed, no market data lookup, and no blending with any other source.",
          "Interpolation assumption: the benchmark yield at the bond’s maturity is read from the curve by linear interpolation (method_version linear@1) — inside each section the yield is the straight line between that section’s two benchmark points; within a section the curve is smooth and no extrapolation happens outside [2, 10] years.",
          "Spread assumption: g_spread_bp is (bond.yield_pct − benchmark_yield_at_maturity_pct) × 100 — a yield difference in basis points against the interpolated benchmark yield, not an asset-swap spread and not a Z-spread; the bond’s own cash flows are not repriced.",
          "Exclusions: no bootstrapping of zero rates from coupon instruments (the supplied points are used exactly as given), no day-count or accrual adjustments (tenors are used as plain year numbers), no interpolation of the bond’s own yield, and no live data of any kind."
        ],
        "benchmark_yield_at_maturity_pct": 4.5,
        "curve": {
          "benchmark_name": "UST par, as supplied",
          "method": "linear",
          "method_version": "linear@1",
          "points": [
            {
              "tenor_years": 2,
              "yield_pct": 4
            },
            {
              "tenor_years": 5,
              "yield_pct": 4.5
            },
            {
              "tenor_years": 10,
              "yield_pct": 4.8
            }
          ]
        },
        "g_spread_bp": 60,
        "note": "The benchmark curve is caller-supplied by design: deterministic arithmetic over the given points only. Exclusions: no bootstrapping of zero rates, no day-count, no live Treasury feed.",
        "regulatory_basis": "Standard fixed-income relative-value analytics: the G-spread (a.k.a. yield spread) of a bond against a government benchmark yield curve, computed as the difference between the bond’s yield to maturity and the interpolated benchmark yield at the bond’s maturity (Fabozzi, Bond Markets, Analysis and Strategies). The monotone cubic option implements Fritsch and Carlson (1980)."
      }
    }
  }
}
