Risk Metrics

Exposure history feed — month-end model history for a list of names (join locally)

Model data feed for long/short books. Send a list of tickers — no position values — and receive signed URLs (1 hour) to two Parquet files: each name's month-end ERM3 history (names: hedge ratios at L1/L2/L3, explained-risk and residual shares, stock_var, lstar_level, l1_mkt_beta = −l1_mkt_hr, sector and subsector ETF) and the ETF covariance over the 252 trading days ending each month-end (cov, upper triangle). Holdings never leave the client: the Python SDK (client.exposure_history(...).exposure(holdings_by_date)) joins the feed with dated holdings locally and returns the same quantities as POST /portfolio/exposure at each month-end.

Each row is the last trading day of its month; the current month uses its latest model day.

History start. Model history is served from the first date whose full estimation window is covered: hedge ratios and l1_mkt_beta from 2010-12-08, explained-risk and residual shares and stock_var from 2011-12-07, lstar_level from 2013-01-01. Rows start at the first month-end on or after 2010-12-08 (2010-12-31); each column is null before its own start date and nothing earlier is served. That is the default start; an earlier start is moved up to it. history_available_from gives each column's first date, and warnings has one before_served_history entry per start date later than the requested start. The same applies to /portfolio/exposure/history/daily. Names with no model rows in range are dropped as no_data_in_range; ETFs stay in the covariance universe. The ETF-to-sector mapping is today's registry, not point-in-time. Derived data only: no prices, market caps or return series.

Billing: per successful call, by names delivered (stocks with rows plus ETFs in the covariance): $1.25 up to 25, $5.00 above 25. A request with nothing to deliver returns 422 and is not charged. Identical requests on the same panel build reuse the stored files.

post/portfolio/exposure/history

Request

  • Base URL: https://riskmodels.app/api
  • URL: https://riskmodels.app/api/portfolio/exposure/history
  • Auth: HTTP bearer

Request body

tickersstring[] required

Stocks and ETFs. No values.

startstring date

First month-end to include. Default and earliest 2010-12-08 (an earlier start is moved up to it).

endstring date

Last month-end to include. Default latest.

Response

Signed Parquet URLs plus coverage.

as_ofobject

first_teo, last_teo, months, frequency, panel_built_utc, source_last_teo.

filesobject

names and cov — each with url, format, rows, columns; expires_in_seconds; cached.

names_deliveredinteger
etfs_in_covariancestring[]
history_available_fromobject

First date each column is served (column → YYYY-MM-DD); null before it.

Example response

{
  "history_available_from": {
    "l1_mkt_hr": "2010-12-08",
    "l1_mkt_beta": "2010-12-08",
    "l3_res_er": "2011-12-07",
    "stock_var": "2011-12-07",
    "lstar_level": "2013-01-01"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.