{
      "tool_id": "art-329-tvm-bond-duration",
      "tool_version": "1.0.0",
      "display_name": "Bond Macaulay / Modified Duration",
      "mcp_name": "compute_bond_duration",
      "mandate_type": "analytics_mandate",
      "wave": 57,
      "gpu": false,
      "url": "https://ainumbers.co/chaingraph/art-329-tvm-bond-duration.html",
      "description": "Macaulay and modified duration for a standard even-period bullet bond, given face value, coupon rate, yield to maturity, years to maturity, and compounding frequency. Prices the schedule and reports the PV-weighted average time to cash flows in years. Feeds compute_dv01 and compute_convexity for full fixed-income risk analytics.",
      "input_schema_ref": "chaingraph/art-329-tvm-bond-duration.html#manifest",
      "consumes": [],
      "feeds": [
        "art-330-tvm-dv01",
        "art-331-tvm-convexity"
      ],
      "status": "live",
      "conformance_fixtures": true,
      "compute_capability": "server",
      "compute_images": [{"system":"sha256-source","image_id":"sha256:1a9ea550792a2f97b68467d9ee4ba5672eb14643c70df767526da61b7913d531","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": "JK7QgUMv2B2wRlq2x+blwGpzbiHHrMz4LqpaohcO8KASwdVhOgtuYQZYDlBsihuAHkZm8L0UzLsjnfs7CeRekii77dfSl0a5DcyQ4JD9HgwTT+pPnA/n4cb9ZWtAfupnG2ATIzEJbBp3Kn7WuuS953BxMaScy5UTgstuT1FEExkmpdUdPT87CfyyXPf1eYx0AXVPX93mAVD2D5xncLWxgxAGWvlwPL4MDnxXeVKvOm+ehFt7K6PHEpGAeUFQE/48Ei9H8fqYkBQawZCVAnX9Ejydzmc2ECKhss8dH5mz89YPTerT2Hbjz8uOp/RUqvFMYLT682KhBjH6c4qTsrSDmQ==",
        "journal": {
          "chaingraph_version": "0.4.0",
          "kernel_digest": "sha256:1a9ea550792a2f97b68467d9ee4ba5672eb14643c70df767526da61b7913d531",
          "output": {
            "coupon_rate_pct": 6,
            "day_count_convention": "30/360",
            "face_value": 1000,
            "macaulay_duration_years": 4.361458,
            "modified_duration_years": 4.193709,
            "note": "Even-period bullet-bond schedule only (no odd first coupon / stub-period support, declared limitation). Macaulay duration = weighted-average time to cash flows (in years) using PV weights at the periodic yield; modified duration = Macaulay / (1 + periodic yield). day_count_convention is echoed for receipt transparency but the schedule itself assumes even periods.",
            "num_periods": 10,
            "periods_per_year": 2,
            "price": 918.89,
            "regulatory_basis": "Standard bullet-bond Macaulay and modified duration, textbook definition (Fabozzi, Bond Markets)",
            "years_to_maturity": 5,
            "ytm_pct": 8
          }
        }
      }
    }
