---
title: "Latest cohort metrics for a 9-box style cell"
method: GET
path: "/funds/style/{slug}"
tags: ["Funds"]
---

# Latest cohort metrics for a 9-box style cell

`GET /funds/style/{slug}`

## Request

- Base URL: `https://riskmodels.app/api`
- URL: `https://riskmodels.app/api/funds/style/{slug}`
- Auth: HTTP bearer

Latest portfolio return decomposition + diagnostics for a 9-box style cell, aggregated across all funds in the cell. Both EW and MV cohort portfolios are returned side-by-side under `weightings`.

The differentiated wedge: Morningstar reports per-fund metrics but doesn't expose cohort aggregates with this attribution depth.

## Path parameters

- `slug` 'large-value' | 'large-blend' | 'large-growth' | 'mid-value' | 'mid-blend' | 'mid-growth' | 'small-value' | 'small-blend' | 'small-growth', required

## Response `200`

Latest cohort metrics (both weightings).

- StyleCohortMetricsResponse: Latest cohort metrics for a 9-box style cell. Both equal-weight (EW) and market-value-weighted (MV) cohort portfolios are returned side-by-side under `weightings`. Bitemporal lineage at top level.
  - `equity_style_9box` string, required
  - `slug` string, required
  - `report_date` string, date, required
  - `filing_date_max` string, date, nullable
  - `n_funds_in_cell` integer, nullable
  - `weightings` object, required
    - `ew` StyleCohortReturnsBlock: Portfolio return components + diagnostics for one weighting in a cohort.
      - `portfolio_gross_return` number, float, nullable
      - `portfolio_market_return` number, float, nullable
      - `portfolio_sector_return` number, float, nullable
      - `portfolio_subsector_return` number, float, nullable
      - `portfolio_idiosyncratic_return` number, float, nullable
      - `identity_residual` number, float, nullable
      - `weight_sum` number, float, nullable: Cohort coverage (fraction of cohort AUM in mapped symbols).
      - `n_holdings_active` integer, nullable
      - `effective_n` number, float, nullable
      - `top10_weight_sum` number, float, nullable
    - `mv` StyleCohortReturnsBlock: Portfolio return components + diagnostics for one weighting in a cohort.
      - `portfolio_gross_return` number, float, nullable
      - `portfolio_market_return` number, float, nullable
      - `portfolio_sector_return` number, float, nullable
      - `portfolio_subsector_return` number, float, nullable
      - `portfolio_idiosyncratic_return` number, float, nullable
      - `identity_residual` number, float, nullable
      - `weight_sum` number, float, nullable: Cohort coverage (fraction of cohort AUM in mapped symbols).
      - `n_holdings_active` integer, nullable
      - `effective_n` number, float, nullable
      - `top10_weight_sum` number, float, nullable
  - `_metadata` object, required
    - `model_version` string, nullable
    - `data_as_of` string, date
    - `data_freshness` string, date-time
    - `last_synced_at` string, date-time

## Other responses

- `400`: Invalid style slug.
- `402`: Insufficient prepaid balance.
- `404`: No cohort metrics available for this cell.
- `429`: Rate limit exceeded.

---

[API](https://skmtc.dev/riskmodels/apis/riskmodels-api.md) · [All operations](https://skmtc.dev/riskmodels/apis/riskmodels-api/llms.txt) · [OpenAPI document](https://skmtc.dev/riskmodels/apis/riskmodels-api/revisions/1a034cad408a?raw)
