{
      "tool_id": "art-331-tvm-convexity",
      "tool_version": "1.0.0",
      "display_name": "Bond Convexity",
      "mcp_name": "compute_convexity",
      "mandate_type": "analytics_mandate",
      "wave": 57,
      "gpu": false,
      "url": "https://ainumbers.co/chaingraph/art-331-tvm-convexity.html",
      "description": "Standard closed-form convexity for a bullet bond, annualized by compounding frequency squared. Second-order complement to modified duration for estimating bond price sensitivity to larger yield moves; optionally reports the convexity price-adjustment term for a declared yield shock. Same bond schedule builder as compute_bond_duration.",
      "input_schema_ref": "chaingraph/art-331-tvm-convexity.html#manifest",
      "consumes": [
        "art-329-tvm-bond-duration"
      ],
      "feeds": [],
      "status": "live",
      "conformance_fixtures": true,
      "compute_capability": "server",
      "compute_images": [{"system":"sha256-source","image_id":"sha256:56d259be1b9261ab5eb2f2370e7965b48ec47f329ad585c5e980a327525262c5","valid_from":"2026-07-10"},{"system":"risc0","image_id":"sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6","valid_from":"2026-07-16"}],
      "export_capability": [
        "json"
      ],
      "compute_proof_ready": "ready",
      "compute_proof": {
        "type": "ZkVmReceipt",
        "system": "risc0",
        "receiptFormat": "groth16-bn254",
        "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
        "seal": "BEJW6q0tq67BQJJ2sSk2puc32LwQUokPPL6b2udESA8piPh5IrHZneVPQwF4ZGBdimjouqvbeUd60wdUEY12hg1prxyhO5AiTmljVG42UKM/0TRWA5DFuurSjp/nEah4LEvZ4Pf01bH9A6/7O7+rjyNYZF+GZM2tuBKCfHinxNUWBeYMUjSJuPgJaa1EP4aUj8isdKBuvleCBV7pMbMiMAujZBRe289u0Usfpxz6Oo+VRhrMEPBMpnejUl1ozBofGD8M5Rv3PpeVuyvamuoEY7k08/lNL2VvQNdbsdKlq48DjuomeGw+wP9hOObHkCjCSiuvQoGrtj8YU3K7vx6Mcw==",
        "journal": {
          "chaingraph_version": "0.4.0",
          "kernel_digest": "sha256:56d259be1b9261ab5eb2f2370e7965b48ec47f329ad585c5e980a327525262c5",
          "output": {
            "convexity": 21.151083,
            "convexity_price_adjustment_pct": null,
            "coupon_rate_pct": 6,
            "face_value": 1000,
            "note": "Convexity = sum(CF_t * t*(t+1) / (1+y)^(t+2)) / Price, annualized by dividing by periods_per_year^2. Same even-period bullet-bond schedule as compute_bond_duration/compute_dv01 (no odd first coupon / stub support, declared limitation). convexity_price_adjustment_pct only populates when yield_shock_bp is supplied (0.5 * convexity * dy^2 second-order term).",
            "num_periods": 10,
            "periods_per_year": 2,
            "price": 918.89,
            "regulatory_basis": "Standard closed-form bond convexity, textbook definition (Fabozzi, Bond Markets Ch.4)",
            "years_to_maturity": 5,
            "ytm_pct": 8
          }
        }
      }
    }
