{
  "tool_id": "art-654-perp-funding-implied-yield",
  "tool_version": "1.0.0",
  "display_name": "Perp Funding Implied Yield",
  "mcp_name": "compute_perp_funding_implied_yield",
  "mandate_type": "perp_funding_rate",
  "wave": 111,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-654-perp-funding-implied-yield.html",
  "description": "Recomputes a perpetual-contract funding rate and its simple-annualized implied yield from caller-declared inputs, for either of two declared funding-mechanism variants: offshore-8h-twap (a continuous TWAP-sampled premium-index-plus-interest-rate-differential-clamp formula, the shape observed on offshore crypto perpetual venues) or kalshi-periodic (a simpler point-in-time price-differential reset, modeled against the CFTC's 2026 regulated-perpetual-contract framework). The funding mechanism, and every numeric parameter of it (interval length, clamp bound), is always a declared input, never an assumed default. An optional prev_funding_hash chains this print to its predecessor's own execution_hash, turning a series of same-pair prints into a walkable, cryptographically bound funding history. Complements the landed Prediction Market Artifact Validator (T631) in copy only, with no file overlap: that tool validates settlement artifacts for event markets, this one recomputes the ongoing funding-rate carry on a perpetual position. Verify-only: recomputes a caller-declared formula from caller-declared inputs, never fetches a live market price or a venue's actual current funding print, and never asserts that any venue's own published print matches this recompute. A declared input outside the domain (invalid mechanism, non-positive price, malformed prior-print hash, etc.) is rejected by name, never silently clamped or coerced.",
  "input_schema_ref": "chaingraph/art-654-perp-funding-implied-yield.html#manifest",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [{"system":"sha256-source","image_id":"sha256:1a7986042035938b1d91987d97e2c17a6b36146d4c214dbc02ef5507d324ebab","valid_from":"2026-09-04"},{"system":"risc0","image_id":"sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6","valid_from":"2026-09-04"}],
  "export_capability": [
    "json"
  ],
  "standards_basis": "cites_informative",
  "cited_clause_digest": [
    {
      "digest": "sha256:6a1142552697dbb0db0d030158c29dbe939fbe5cc4d399c53b3c723261fccf5d",
      "source_url": "https://www.govinfo.gov/content/pkg/FR-2026-06-03/pdf/2026-11020.pdf",
      "retrieved_at": "2026-08-27",
      "clause_path": "§I (Introduction and Background)",
      "scheme": "fedreg",
      "id": "91 FR 33160"
    },
    {
      "digest": "sha256:a003c39cd7523565d70b2fb1cb967ba72f3bf8ee4f043d0497a981a632a3f35f",
      "source_url": "https://www.govinfo.gov/content/pkg/FR-2026-06-03/pdf/2026-11020.pdf",
      "retrieved_at": "2026-08-27",
      "clause_path": "§II (Structural Distinctiveness of Perpetual Contracts)",
      "scheme": "fedreg",
      "id": "91 FR 33161"
    }
  ],
  "compute_proof_ready": "ready",
  "cycle_preflight": "FAST — 4,257,974 user_cycles max across all 8 fixture vectors (argmax v4), measured exec-only 2026-09-04; Phase 0.2 narrative-vocab fix carried in the same push (commit 630e9834), digest proves the post-fix bytes; 0.14x the 30,000,000 line.",
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "CiespQRatjzgBEErZEJI+c1PIS7+++U/3yQtqloXXuIWvs1BZOTgLwS+f+JBKfXBtW+AbPkK3Q4ebvJjpr41VQuyIOnbOLrBL/q07VJWcyiyvC5hDOJSSn0kr4RXivSLCI2fDKeDuA6MROKc+9I6WGRbsUvJGarsKdeH6RjLXI8DmLpr+goHjCwumJIVHB45Cx6Gq0pfGxG3xmJ82qeOfxEu5M9GE32sP/OAndUMV3D7o17ysRzKIwLSgltJ7hqVJ0iGRcQ5sE+BWXDqK5FOcKYtVrWRyj3JfjfCO7reWBcnkH5veV42nT9JRlorR+Ed2uUWls54dPEh5ZYYo9Sm6Q==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:1a7986042035938b1d91987d97e2c17a6b36146d4c214dbc02ef5507d324ebab",
      "output": {
        "chained": false,
        "clamp_pct": 0.05,
        "disclaimer": "Not financial advice. Verify actual funding mechanics, interval length, and historical prints with your venue before trading. For informational purposes only.",
        "domain_errors": [],
        "funding_mechanism": "offshore-8h-twap",
        "funding_payment": 10,
        "funding_payment_direction": "position_pays",
        "funding_rate_pct": 0.01,
        "implied_annual_funding_yield_pct": 10.95,
        "index_price": 65000,
        "interest_rate_pct": 0.01,
        "interval_hours": 8,
        "mark_price": 65200,
        "mechanism_note": "offshore-8h-twap: funding_rate = premium_index + clamp(interest_rate - premium_index, -clamp_pct, +clamp_pct), applied to a TWAP-sampled premium index over the declared interval -- the continuous funding formula shape observed on offshore perpetual venues (e.g. Binance/Hyperliquid-class). The TWAP sampling and clamp bound are venue conventions this node lets the caller declare; the cited policy statement (see this node's cited_clause_digest) describes the funding-rate concept in general terms and does not itself prescribe this or any specific formula.",
        "periods_per_year": 1095,
        "position_notional": 100000,
        "position_side": "long",
        "premium_index_pct": 0.02,
        "prev_funding_hash": null,
        "scope_note": "Recomputes a caller-declared funding-rate formula and its simple-annualized implied yield from caller-declared inputs. Never fetches a live market price or a venue's actual current funding print, never asserts that any venue's own published print matches this recompute, and the mechanism formulas themselves are declared modeling conventions (see mechanism_note), not requirements drawn from the cited policy statement.",
        "sign_convention_note": "Per the cited policy statement (see this node's cited_clause_digest): when the perpetual contract trades above the underlying spot/index price, long positions make payments while short positions receive them, and vice versa. funding_rate_pct > 0 with position_side=\"long\" therefore yields a positive (paying) funding_payment; the reverse holds for a short position or a negative rate.",
        "venue": "hyperliquid"
      }
    }
  }
}
