{
  "tool_id": "art-444-collateral-haircut-engine",
  "tool_version": "1.0.0",
  "display_name": "Collateral Haircut Engine (Basel CRE22)",
  "mcp_name": "compute_basel_haircut_adjusted_exposure",
  "mandate_type": "regulatory_reporting",
  "wave": 71,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-444-collateral-haircut-engine.html",
  "description": "Basel CRE22 comprehensive-approach collateral haircut engine for counterparty credit risk: applies a caller-supplied, versioned supervisory haircut table (policy input, not hardcoded) to each collateral item's asset class/maturity bucket, scales for a non-standard holding period via the CRE22.68 square-root-of-time rule, adds an FX-mismatch haircut where collateral currency differs from exposure currency, and computes net exposure E* = max(0, E*(1+He) - sum(C*(1-Hc-Hfx))). An item haircut override without a reason_code is flagged -- the item-level basis for a separate signed §27 human_accountability_record, not minted by this kernel. An unmatched asset_class/maturity_bucket defaults to a conservative 100% haircut, flagged, never silently valued. Deterministic per-item haircut application and summation only -- no collateral-to-exposure allocation/optimization solver. Not calculate_repo_haircut (508, Canton 24/7 timing-gap-specific SFT calculator) or compute_stock_token_collateral_haircut (art-320, RHC liquidation-risk layering) -- this is the generic Basel comprehensive-approach net-exposure engine across asset classes and currencies. Not a capital-return filing tool -- evidence artifact only, never regulator-submittable.",
  "input_schema_ref": "chaingraph/art-444-collateral-haircut-engine.html#manifest",
  "deadline": null,
  "deadline_note": "Basel CRE22 comprehensive approach for financial collateral, standardised supervisory haircuts (BCBS d424 CRE22.68 as implemented via 12 CFR 217 Subpart D / EU CRR2 Art 224) -- ongoing capital-treatment standard, no filing deadline.",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [
    {
      "system": "sha256-source",
      "image_id": "sha256:1d708d8172b54b003ff2da60df4711a8999f6e0d8f327a28ef3538e1eae84cb7",
      "valid_from": "2026-07-23"
    },
    {
      "system": "risc0",
      "image_id": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
      "valid_from": "2026-07-23"
    }
  ],
  "export_capability": [
    "json"
  ],
  "compute_proof_ready": "ready",
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "IoPY4tVmqw8IW9flqUbru2y89di9DnEkzpYJVM50rscpdAYFVayv/XSxzN1PZYHHDQjIAcwmmaMGWxIEvKvwpS3N7HKhPRdl44f/+pQgAjZk3OK0KcgpI1IG0nQmTtm5B543NZitCuyzEewTQNWPJp+jXQqv6bK7Zdn+UZllgtMN596DmPlVBYOdoUs3Fn0JWBmX8Lv8I7eRNYlyJigihw+li50sjLQ05j/A6wBsnEaTeFvA34Gl1XksSnW7uPOsCDIhiyVUtSQi6Bde6T6i5FKa/t13DVjtsIVb7VPApnYbHsRmO9M0F3P4daJV6E6Dbv1TDy1BP5XmqgfBc/7hgg==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:1d708d8172b54b003ff2da60df4711a8999f6e0d8f327a28ef3538e1eae84cb7",
      "output": {
        "collateral_adjusted_total": 103000000,
        "collateral_items": [
          {
            "adjusted_value": 58800000,
            "asset_class": "sovereign_aaa_aa",
            "combined_haircut_pct": 2,
            "currency": "USD",
            "currency_mismatch": false,
            "fx_haircut_scaled_pct": 0,
            "haircut_pct": 2,
            "haircut_scaled_pct": 2,
            "item_id": "c0",
            "market_value": 60000000,
            "maturity_bucket": "1-5y",
            "override_applied": false,
            "override_reason_code": null,
            "table_haircut_pct": 2,
            "unclassified": false
          },
          {
            "adjusted_value": 28800000,
            "asset_class": "corporate_aaa_a",
            "combined_haircut_pct": 4,
            "currency": "USD",
            "currency_mismatch": false,
            "fx_haircut_scaled_pct": 0,
            "haircut_pct": 4,
            "haircut_scaled_pct": 4,
            "item_id": "c1",
            "market_value": 30000000,
            "maturity_bucket": "1-5y",
            "override_applied": false,
            "override_reason_code": null,
            "table_haircut_pct": 4,
            "unclassified": false
          },
          {
            "adjusted_value": 15400000,
            "asset_class": "equity_main_index",
            "combined_haircut_pct": 23,
            "currency": "EUR",
            "currency_mismatch": true,
            "fx_haircut_scaled_pct": 8,
            "haircut_pct": 15,
            "haircut_scaled_pct": 15,
            "item_id": "c2",
            "market_value": 20000000,
            "maturity_bucket": null,
            "override_applied": false,
            "override_reason_code": null,
            "table_haircut_pct": 15,
            "unclassified": false
          }
        ],
        "exposure_adjusted": 100000000,
        "exposure_amount": 100000000,
        "exposure_asset_class": "cash",
        "exposure_currency": "USD",
        "exposure_haircut_scaled_pct": 0,
        "haircut_table_version": "2026-07-01",
        "holding_period_days": 10,
        "item_count": 3,
        "net_exposure": 0,
        "note": "Basel CRE22 comprehensive-approach standardized supervisory haircuts (versioned table = policy input), scaled to the supplied holding period via the square-root-of-time rule. An overridden item haircut without a reason_code is flagged and is the item-level basis for a separate signed §27 human_accountability_record (this kernel does not mint that record). An unmatched asset_class/maturity_bucket defaults to a conservative 100% haircut, flagged, never silently valued. No allocation/optimization across collateral items -- deterministic per-item haircut application and summation only. Evidence artifact only -- not a capital-return filing, never regulator-submittable.",
        "override_count": 0,
        "override_missing_reason_count": 0,
        "time_scale_factor": 1,
        "unclassified_count": 0
      }
    }
  }
}
