{
  "tool_id": "art-561-currency-basket-index",
  "tool_version": "1.0.0",
  "display_name": "Currency Basket Index",
  "mcp_name": "currency_basket_index",
  "mandate_type": "currency_basket_index",
  "wave": 91,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-561-currency-basket-index.html",
  "description": "Values a currency basket by the fixed-amount method, where currency amounts are fixed at a rebase date and the live weights float daily with FX, and gives that valuation its own citable execution_hash. Two modes. Valuation takes amounts already fixed and returns the index value as the sum of amount times USD rate, each component's live weight as its share of that total, and its drift from any stated target weight. Derivation is the non-obvious arithmetic this node owns: given target weights, a rebase-date index value and the rebase-date FX rates, it derives the fixed amounts that those weights imply, then values them at today's rates, so amounts are an output of the rebase rather than an input to it. Target weights that do not sum to one are refused rather than silently normalized, since a basket derived from them is not a basket. Integer-quantity baskets are supported through an amount scale. Per-pair rates may cite the upstream oracle prints they came from, which populates the chain parent hashes without entering the hash preimage. HARD FENCE: every FX rate, fixed amount and target weight is supplied and asserted, never fetched (zero-egress); this computes what the stated method yields on the stated numbers, never that those numbers are the correct rates for the stated date, and never a live basket publication.",
  "input_schema_ref": "chaingraph/art-561-currency-basket-index.html#manifest",
  "deadline": null,
  "deadline_note": "No statutory deadline; basket valuation follows the basket's own rebase and publication cycle, not a filing calendar.",
  "consumes": [
    "art-560-oracle-price-aggregation"
  ],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [
    {
      "system": "sha256-source",
      "image_id": "sha256:84f9b197e0b2e11acc54f7bb0ac50a30db1e80f22e33238395093d9ac9887921",
      "valid_from": "2026-07-10"
    },
    {
      "system": "risc0",
      "image_id": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
      "valid_from": "2026-08-08"
    }
  ],
  "compute_proof_ready": "ready",
  "deferred_reason": "New node shipped in a shard work unit. Proving runs on the asynchronous GPU queue after the shard lands and is assembled; no compute proof is claimed here, and compute_proof_ready is stated per artifact rather than hardcoded in the kernel.",
  "export_capability": [
    "json"
  ],
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "CAm9FjnSw2jKaR3T+7rTjC8TTuZmEMDaZGPnjCojIeoobDtYsbsZud/HeKxvLDcJEWqznZFiaICvH780OkGksCbbcr9RAsJFyeFI6pRtD+E5c03C/TG+5o1UeZPYShCvAc0bfeZO0hLMBGDPmyPnfeg1dw6mAeBIqjEVb4dLC9QH3+JTVS9wIWr60WQWxvY48jmiLxAJp2/CDD/dUOTHow+6JzkZU6vugaq9JHkrDIcNxHbAF9CWWK90JIeBRju+E8wMluTdi8nsj3pj8fAAlfUnxX/IdfAa44Q/hc0Yt6UqaGUHIB9f8bEQnPREqhSlkzV5dXblpiL8ihsRgLNW8w==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:84f9b197e0b2e11acc54f7bb0ac50a30db1e80f22e33238395093d9ac9887921",
      "output": {
        "amount_scale": 0,
        "as_of_date": "2026-08-08",
        "basket_id": "BASKET-DEMO-5",
        "basket_shift_pct": -0.093813,
        "component_count": 5,
        "components": [
          {
            "currency": "USD",
            "drift_from_target_pct": 0.112888,
            "fixed_amount": 0.57813,
            "live_weight_pct": 43.492888,
            "target_weight_pct": 43.38,
            "usd_contribution": 0.57813,
            "usd_rate": 1
          },
          {
            "currency": "EUR",
            "drift_from_target_pct": 1.124633,
            "fixed_amount": 0.37379,
            "live_weight_pct": 30.434633,
            "target_weight_pct": 29.31,
            "usd_contribution": 0.40455292,
            "usd_rate": 1.0823
          },
          {
            "currency": "CNY",
            "drift_from_target_pct": -0.768068,
            "fixed_amount": 1.0993,
            "live_weight_pct": 11.511932,
            "target_weight_pct": 12.28,
            "usd_contribution": 0.15302256,
            "usd_rate": 0.1392
          },
          {
            "currency": "JPY",
            "drift_from_target_pct": -0.759014,
            "fixed_amount": 13.452,
            "live_weight_pct": 6.830986,
            "target_weight_pct": 7.59,
            "usd_contribution": 0.090801,
            "usd_rate": 0.00675
          },
          {
            "currency": "GBP",
            "drift_from_target_pct": 0.289561,
            "fixed_amount": 0.08087,
            "live_weight_pct": 7.729561,
            "target_weight_pct": 7.44,
            "usd_contribution": 0.10274533,
            "usd_rate": 1.2705
          }
        ],
        "dominant_contribution_pct": 43.492888,
        "dominant_contributor": "USD",
        "fence": "Every FX rate, fixed amount and target weight is SUPPLIED, asserted, and digested into this receipt. This kernel computes what the fixed-amount basket method yields on the stated numbers: it performs no FX or reference-rate lookups (zero-egress by contract), does not verify any rate against a published fixing, and makes no claim that any administrator did or would publish this value.",
        "index_value": 1.32925181,
        "max_drift_from_target_pct": 1.124633,
        "mode": "fixed_amount_valuation",
        "not_proven": [
          {
            "detail": "Every usd_rate is caller-supplied and asserted. This kernel performs no FX, reference-rate or market-data lookups (zero-egress) and does not verify any rate against a published fixing for the stated date.",
            "item": "FX-rate accuracy"
          },
          {
            "detail": "Fixed amounts and target weights are caller-supplied. This kernel does not verify that a stated composition matches any published basket, nor that a preset remains current -- a basket reviewed on a periodic cycle changes on its own schedule.",
            "item": "Basket-composition authority"
          },
          {
            "detail": "The index value computed here is what the fixed-amount method yields on the supplied rates. It is not a claim that any basket administrator did, or would, publish this value for this date.",
            "item": "Live index publication"
          },
          {
            "detail": "Where per-pair rates are cited from upstream oracle prints, this kernel records the citation but does not verify that those prints are current, in-epoch, or drawn from the same observation window.",
            "item": "Parent-print freshness"
          }
        ],
        "parent_print_hashes": [],
        "rejected_inputs": [],
        "structural_error": null,
        "target_weight_sum": null
      }
    }
  }
}
