{
  "tool_id": "art-530-default-fund-cover2-sizing",
  "tool_version": "1.0.0",
  "display_name": "CCP Default Fund Cover-2 Sizing",
  "mcp_name": "size_ccp_default_fund_cover2",
  "mandate_type": "risk_parameter",
  "wave": 81,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-530-default-fund-cover2-sizing.html",
  "description": "Sizes a CCP default fund under the PFMI Principle 4 \"Cover 2\" standard: fund size must be at least the largest plus second-largest clearing-member stress loss across caller-declared stress scenarios. Applies each caller-declared scenario loss rate (in basis points, shaped from qfa-03-stress-test-engine's scenario_losses output as a chained input) to every caller-declared member exposure, ranks members per scenario, takes the two largest, and checks a caller-declared fund size against the worst scenario across the declared set. Not a stress-loss engine itself -- qfa-03 already computes multi-scenario portfolio stress losses; this node consumes that shape read-only and never reimplements it. Region-portable: no CCP, currency, or jurisdiction is hardcoded. Arithmetic sizing check only, no fund-size recommendation.",
  "input_schema_ref": "chaingraph/art-530-default-fund-cover2-sizing.html#manifest",
  "consumes": [
    "qfa-03-stress-test-engine"
  ],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [
    {
      "system": "sha256-source",
      "image_id": "sha256:4d53619712ff1da614212e1de80b28da3a815322d590e9fa5f7dd3db647c59b2",
      "valid_from": "2026-07-10"
    },
    {
      "system": "risc0",
      "image_id": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
      "valid_from": "2026-08-04"
    }
  ],
  "export_capability": [
    "json"
  ],
  "compute_proof_ready": "ready",
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "B7LhrChMFh8OY1PdbzHD+K8hJATg+Zhm6joL+3ASGM4E6uZzYhU2NrdXwXC5jGjIfhBywuRPSBHl7JMLBvaN5w8zjuZKusTGUEcUwNAzoiFKJARueQ5vK7AlRXedBpZ4LAkvZ234yKtStMpRHMTmKqoBQK7xHR/0rUdPRxdFWJsCm0S4kReFySNThpoeVS0iYFeOSWbu5NDEpR4vvBK8OCOlGv/lk5wP0CLuGbub9APxhDJTyglZX8VAyg8z4TWtBiA8RIfT3IESY+f8OTbt0lHIqm02bT8WB3tVuSZJQc4i2xmnG3H4zc6yN+hayst2/+kqxD2X9rXB16MMUUrwEQ==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:4d53619712ff1da614212e1de80b28da3a815322d590e9fa5f7dd3db647c59b2",
      "output": {
        "as_of": "2026-08-01",
        "fund_adequate": true,
        "fund_size_display": "2000000.00",
        "fund_size_minor_units": 200000000,
        "member_count": 3,
        "note": "Deterministic Cover-2 default fund sizing over caller-declared clearing members, member exposures, stress-scenario loss rates (shaped from a stress-test-engine chain input as basis points), and a declared fund size. Per PFMI Principle 4, the fund must cover the default of the two members creating the largest combined stress loss under the worst declared scenario. No CCP, currency, or jurisdiction is named. It performs no stress-scenario computation of its own -- that shape is a chained input -- and it recommends no fund-size change.",
        "per_scenario": [
          {
            "cover2_requirement_display": "1617000.00",
            "cover2_requirement_minor_units": 161700000,
            "largest": {
              "member_id": "member-alpha",
              "stress_loss_minor_units": 92400000
            },
            "loss_bps": 4620,
            "member_losses": [
              {
                "member_id": "member-alpha",
                "stress_loss_minor_units": 92400000
              },
              {
                "member_id": "member-beta",
                "stress_loss_minor_units": 69300000
              },
              {
                "member_id": "member-gamma",
                "stress_loss_minor_units": 27720000
              }
            ],
            "scenario_id": "gfc_2008",
            "second_largest": {
              "member_id": "member-beta",
              "stress_loss_minor_units": 69300000
            }
          },
          {
            "cover2_requirement_display": "1134000.00",
            "cover2_requirement_minor_units": 113400000,
            "largest": {
              "member_id": "member-alpha",
              "stress_loss_minor_units": 64800000
            },
            "loss_bps": 3240,
            "member_losses": [
              {
                "member_id": "member-alpha",
                "stress_loss_minor_units": 64800000
              },
              {
                "member_id": "member-beta",
                "stress_loss_minor_units": 48600000
              },
              {
                "member_id": "member-gamma",
                "stress_loss_minor_units": 19440000
              }
            ],
            "scenario_id": "covid_2020",
            "second_largest": {
              "member_id": "member-beta",
              "stress_loss_minor_units": 48600000
            }
          }
        ],
        "rationale": [
          "3 declared clearing members evaluated across 2 declared stress scenarios.",
          "Worst-case scenario \"gfc_2008\" at 4620 bps: largest member loss 924000.00 (member-alpha), second-largest 693000.00 (member-beta); Cover-2 requirement 1617000.00.",
          "Declared default fund size 2000000.00 is adequate against the worst-case Cover-2 requirement of 1617000.00.",
          "This is an arithmetic sizing check over declared member exposures, declared stress-scenario loss rates, and a declared fund size. It proves nothing about whether those declarations match any external position or margin system, and it recommends no fund-size change."
        ],
        "rejected_inputs": [],
        "scenario_count": 2,
        "shortfall_display": "0.00",
        "shortfall_minor_units": 0,
        "worst_case_cover2_requirement_display": "1617000.00",
        "worst_case_cover2_requirement_minor_units": 161700000,
        "worst_case_scenario_id": "gfc_2008"
      }
    }
  }
}
