Skip to content
SimicX

Performance · Endpoint

Metrics documentation

The metrics contract, machine-readably: every field's meaning, formula, horizon, granularity, source and unit.

GET/v1/alphas/{alpha}/metrics/_doc

Parameters

Path parameters

NameTypeRequiredDefaultDescription
alphastringrequiredalpha_id (e.g. CausalHaarActivityDisplacement_0de63b8678a2_sp500pit_weekly_20260730t000858z_f358d1480d42). Use the value returned by GET /v1/alphas.

Example request

curl

curl -H "Authorization: Bearer sxk_live_4f9c…" \
  "https://api.simicx.com/v1/alphas/CausalHaarActivityDisplacement_0de63b8678a2_sp500pit_weekly_20260730t000858z_f358d1480d42/metrics/_doc"

Try it

Execute GET /v1/alphas/{alpha}/metrics/_doc against the live API using your key. Paste a key below to send without signing in, or sign in to auto-fill from your profile — either way, the call counts towards your rate limits. Whether the route answers depends on your key's endpoint allow-list — /v1/me lists what is in force; a new key starts with only the self-service routes until an administrator grants more.

Sent server-side via a same-origin proxy; only the documented host(s) are allowed.

Paste an API key above to list alphas your key may access.

Request

GEThttps://api.simicx.com/v1/alphas/{alpha}/metrics/_doc

Example response

JSON · synthetic values, real schema

{
  "data": {
    "schema_version": "2.0.0",
    "endpoint": {
      "path": "/v1/alphas/{alpha}/metrics",
      "identity": "{alpha} is the collection name: one collection = one run = one alpha. The run_id stored in run_result.identity is also accepted.",
      "parameters": { "from": "…", "to": "…", "granularity": "…", "doc": "…" },
      "window_semantics": "from/to narrow every derived block (ic_deciles, nwt.ic_score_panel, nwt.ir, tenure) and the periods list. Stored metrics and facts describe the run's full sealed evaluation window and are served as stored; when from/to is set, a window_lifetime_only warning says so. nwt.ic deliberately ignores from/to — it is the significance test for core.ic, a lifetime figure.",
      "access": "performance.metrics required. ic_deciles, nwt.ic and nwt.ic_score_panel additionally read rebalance cross-sections; nwt.ir reads the portfolio ledger. A key that may not call either gets the remaining blocks plus an access_limited warning.",
      "signal_families": "core.ic / core.icir / nwt.ic are always conditioned; nwt.ic_score_panel and ic_deciles are always raw. The two never substitute for one another."
    },
    "fields": {
      "core.information_ratio": {
        "meaning": "Risk-adjusted return of the long/short book, GROSS of the risk-free rate.",
        "formula": "as sealed by the engine (metric information_ratio); per period performance.annual.<YYYY>.long_short_information_ratio",
        "source": "metric performance.information_ratio",
        "annualisation": "always 'annualised'",
        "unit": "ratio"
      },
      "core.excess_sharpe": {
        "meaning": "The only true Sharpe this API publishes — the same book net of the risk-free rate.",
        "formula": "as sealed by the engine (metric excess_sharpe); risk_free_rate rides on the same entry",
        "source": "metric performance.excess_sharpe",
        "annualisation": "always 'annualised'",
        "unit": "ratio"
      },
      "core.sharpe": {
        "meaning": "DEPRECATED alias of core.information_ratio — identical value plus deprecated: true and superseded_by.",
        "formula": "see core.information_ratio",
        "unit": "ratio"
      },
      "core.turnover": {
        "meaning": "Trading intensity of the long/short book.",
        "formula": "annualized_turnover preferred, then turnover, mean_turnover, then total_turnover; per period only long_short_total_turnover is sealed",
        "source": "metric performance.annualized_turnover (overall) / performance.annual.<YYYY>.long_short_total_turnover (periods)",
        "unit": "ratio per year, per session, or a period sum — read annualisation on the value"
      },
      "nwt.ic": {
        "meaning": "Newey–West significance of the CONDITIONED mean weekly IC — the test for core.ic.",
        "signal": "always 'conditioned'",
        "unit": "t-stat / probability"
      },
      "nwt.ic_score_panel": {
        "meaning": "Newey–West significance of the RAW mean weekly IC from the published score panel. Does NOT test core.ic.",
        "signal": "always 'raw'",
        "unit": "t-stat / probability"
      }
    },
    "warnings": {
      "missing_kind": "A kind the block reads is absent from the run collection; dependent blocks are null.",
      "access_limited": "The key may not call the endpoint a block's data comes from; the block is null.",
      "forward_returns_absent": "Rebalance rows seal no forward-return field; return-bearing fields are null.",
      "ic_family_mismatch": "nwt.ic is null while nwt.ic_score_panel may be populated — they measure different signals.",
      "ic_reproduction_mismatch": "The rebuilt conditioned IC series disagreed with the sealed mean_ic; nwt.ic is withheld."
    }
  },
  "meta": {
    "request_id": "req_7f3a2c",
    "generated_at": "2026-07-28T14:03:12Z",
    "source": "alpha_research",
    "run": "CausalHaarActivityDisplacement_0de63b8678a2_sp500pit_weekly_20260730t000858z_f358d1480d42",
    "alpha_id": "CausalHaarActivityDisplacement_0de63b8678a2_sp500pit_weekly_20260730t000858z_f358d1480d42",
    "source_alpha_id": "causal_haar_activity_displacement_reversal_b3874c9db78d"
  }
}

Response fields

Every field the response can carry, what it means, and how it is computed.

  • schema_versionstring

    Version of the documentation block's own shape.

    How it is computed

    Currently "2.0.0". Bumped when the block's structure changes, so a consumer can pin against it.

  • endpointobject

    How to address and window the metrics endpoint.

    How it is computed

    { path, identity, parameters, window_semantics, access, raw_books, signal_families, annualisation } — prose, but stable prose: it states what {alpha} accepts, what from/to does and does not narrow, and which signal each IC-family field measures.

  • fieldsobject

    One entry per field /metrics can return.

    How it is computed

    Keyed by dotted payload path (core.ic, core.information_ratio, ic_deciles, nwt.ic, nwt.ic_score_panel, …). Each entry carries meaning, formula, horizon, granularity, source and unit; IC-family entries also carry signal; ic_deciles adds availability.

  • fields[].unitstring

    The unit the matching /metrics value is expressed in.

    How it is computed

    This is the authority for how to read a number: ratio, percentage_points, base_currency_units, count, or a compound such as ratio per year or per session. Prefer it over the value's magnitude.

  • warningsobject

    The complete warning vocabulary.

    How it is computed

    code → what it means. The same codes appear in meta.warnings on a degraded /metrics response, so a client can map a warning to an explanation without a lookup table of its own.

  • Identical on every call, for every alpha — the response carries Cache-Control: public, max-age=86400, immutable. Fetch it once and cache it.
  • The path is still alpha-scoped, so the usual authorisation applies: an alpha the key may not read is 403, and one that does not exist is 404.
  • The same block is available inline on the metrics endpoint with doc=1, which saves a round trip when you want payload and contract together.
  • The example above is abridged. The live block documents every field, not the sample shown.