---
title: "Copula"
method: GET
path: "/api/contagion/copula"
tags: ["contagion"]
---

# Copula

`GET /api/contagion/copula`

## Request

- Base URL: `https://basisprotocol.xyz` (the document declares no server; this is the origin it was published from)
- URL: `https://basisprotocol.xyz/api/contagion/copula`
- Auth: none declared

Return the calibrated 2-parameter t-copula fits for ``peg_type``.

The parametric successor to λ_L: per DENSE pair (n_joint_tail >= 50) a t-copula
fit recovering correlation ρ and tail-fatness ν, with the fitted log-likelihood
as an honest goodness-of-fit. Reads the latest run's frozen ``pair_copula`` rows
(written by the slow-cycle calibration pass), FITTED pairs first then by ρ desc,
wrapped in the same provenance envelope as ``/pairwise`` (calibration_window /
qualified_entity_count / formula_version from the latest calibration run) plus
the §6 copula disclaimer. Pairs below the dense-core floor carry
fit_status='not_fitted' / support_tier='insufficient_support' with ρ/ν null —
reported, never fit; a met-the-floor-but-untrustworthy fit carries
fit_status='fit_failed'. ``fit_source`` discloses WHICH substrate produced an
attempted fit — 'continuous' (the real joint-tail series, ν meaningful) or
'binary_fallback' (count-derived indicators, ν only coarsely identified);
null when no fit was attempted. Pre-calibration (no run / no rows) returns an
empty set with a null envelope.

STEP 2 (estimator pinned + stability gate): ``provisional`` is now a PER-ROW,
earned status. A row is promoted (provisional=false, estimator_version=
'copula_t_v1', attested under the 'pair_copula_v1' domain) only when its ν
passed the bootstrap stability gate (``stability_gate_passed`` — the fit
sample met the synthetic-harness-validated floor AND the bootstrap ν CI is
narrow enough that ν is identified for THIS pair). Rows that fail stay
provisional/v0 and are never attested. The envelope's top-level
``provisional`` is true iff ANY returned row is provisional (mixed states
are honest: some pairs trusted, some not) — and true on an empty set
(nothing has earned trust yet).

CERTIFICATION (migration 287): rows are served from ``pair_copula_certified``
and carry ``certification_defect`` / ``is_certified``. Four historical rows
passed the stability gate while ν was pinned at the estimator bound with a
collapsed CI — a non-identification signature, not a stable fit. They are
flagged rather than dropped (a dropped row is invisible; a flagged row is a
disclosure), and ``is_certified`` is the promoted-AND-sound subset.
``stability_gate_reason`` names why a fit was refused promotion.

## Query parameters

- `peg_type` string

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/basisprotocol/apis/basis-protocol-api.md) · [All operations](https://skmtc.dev/basisprotocol/apis/basis-protocol-api/llms.txt) · [OpenAPI document](https://skmtc.dev/basisprotocol/apis/basis-protocol-api/revisions/c0067366b9c0?raw)
