---
title: "An index's own published entry rules applied to every company we track, with a rule-by-rule scorecard behind each company. The S&P 500 adds a versioned probability over probabilityHorizonDays for each eligible join candidate and every current member exit. kind is \"Screen\" for the S&P indexes, whose additions a committee decides, and \"Projection\" for the Russell indexes and Nasdaq-100, whose membership a published ranking decides. Each model revision is immutable; a model-version change may append a higher revision for the same trading day, and readers use the highest revision."
method: GET
path: "/v1/indexes/{index}/forecast"
tags: ["Indexes"]
---

# An index's own published entry rules applied to every company we track, with a rule-by-rule scorecard behind each company. The S&P 500 adds a versioned probability over probabilityHorizonDays for each eligible join candidate and every current member exit. kind is "Screen" for the S&P indexes, whose additions a committee decides, and "Projection" for the Russell indexes and Nasdaq-100, whose membership a published ranking decides. Each model revision is immutable; a model-version change may append a higher revision for the same trading day, and readers use the highest revision.

`GET /v1/indexes/{index}/forecast`

## Request

- Base URL: `https://api.equibles.com`
- URL: `https://api.equibles.com/v1/indexes/{index}/forecast`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/equibles/apis/equibles-api/docs/v1/indexes/:index/forecast/get.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `index` string, required

## Response `200`

OK

- IndexForecastResponse: An index's published entry rules applied to every company we track, for one day.
  - `slug` string, nullable
  - `name` string, nullable
  - `kind` string, nullable: "Screen" or "Projection". A Screen's index is decided by a committee. The S&P 500 supplements that eligibility screen with empirical probabilities; other S&P rows remain screen results only. A Projection's index is decided by a published ranking.
  - `headline` string, nullable: One sentence saying what this forecast is, in the index's own terms.
  - `asOfDate` string, date: The trading day scored. Readers receive its highest immutable model revision.
  - `methodologySource` string, nullable: The methodology document the rules come from.
  - `methodologyVersion` string, nullable
  - `probabilityHorizonDays` integer, nullable: Probability horizon in days, null when rows are deterministic screen results.
  - `probabilityModelVersion` string, nullable: Version of the probability calculation, null when probabilities are unavailable.
  - `probabilitySource` string, nullable: The empirical study used to calibrate probability event rates, or null.
  - `probabilitySourceUrl` string, nullable: Official URL for probabilitySource, or null.
  - `exitCalibrationSource` string, nullable: The observed-removal dataset used to shape exit risk, or null for older models.
  - `exitCalibrationSourceUrl` string, nullable: Public provenance for exitCalibrationSource, or null.
  - `exitCalibrationMethod` string, nullable: The cohorts, pooling, and within-cohort ordering used by the exit calibration.
  - `scoredCount` integer: Companies scored against this index's rules.
  - `unmeasuredMemberCount` integer: Companies the index holds today that could not be measured against every entry rule. They stay out of deterministic departure buckets: a figure we cannot read is not evidence that a company is leaving an index. S&P 500 probability snapshots still assign the common exit baseline. For a Projection the ranking was built without them, so an addition is only published when its rank survives every one of them outranking it.
  - `candidatesLocked` boolean: True when candidate identities and scorecards require the Plus plan or above.
  - `upgradeUrl` string, nullable: Where a Free caller can compare plans when candidate identities are locked.
  - `additions` IndexForecastBucketDto: One bucket of scored companies, with the count of everything scored into it.
    - `title` string, nullable
    - `note` string, nullable: What this bucket means for this index, in the index's own terms.
    - `count` integer: Companies scored into this bucket in total.
    - `rows` IndexForecastCandidateDto[], nullable
      - `rank` integer: Position within its bucket, by the index's own ranking measure.
      - `ticker` string, nullable
      - `name` string, nullable
      - `isLinked` boolean
      - `rankingValueUsd` number, double, nullable: Size input: the index ranking value, except S&P 500 exits use total company value because that is the probability model's size-pressure input.
      - `probability` number, double, nullable: Estimated chance over probabilityHorizonDays, as a fraction from zero to one.
      - `isMigration` boolean: True when the company leaves this index by joining a sibling one rather than dropping out.
      - `indexFundOwnership` number, double, nullable: Index funds' and index ETFs' share of the company's shares outstanding, a fraction.
      - `memberMedianIndexFundOwnership` number, double, nullable: The same fraction for the index's median measured member.
      - `passiveDemandShares` integer, nullable: Estimated shares index funds would buy if a non-member joined: (member median minus the company's own index-fund ownership, never below zero) times its shares outstanding. An estimate, not a certainty; absent for a member or without the inputs.
      - `passiveDemandUsd` number, double, nullable: passiveDemandShares at the forecast's latest close.
      - `passiveDemandDaysOfVolume` number, double, nullable: passiveDemandUsd over the three-month average daily value traded.
      - `fundOwnershipAsOf` string, date, nullable: The registered-fund quarter the ownership figures read.
      - `rules` IndexForecastRuleDto[], nullable
        - `code` string, nullable: Stable rule identifier ("sp-market-cap", "russell-float").
        - `label` string, nullable
        - `outcome` string, nullable: "Pass", "Fail", "NotEvaluated" or "NotApplied". NotEvaluated is a fact about the COMPANY (a figure we could not read, which blocks a verdict); NotApplied is a fact about US (a rule we run for nobody, disclosed and excluded from the verdict).
        - `requirement` string, nullable: What the index's published methodology requires.
        - `observed` string, nullable: What we measured for this company.
  - `migrations` IndexForecastBucketDto: One bucket of scored companies, with the count of everything scored into it.
    - `title` string, nullable
    - `note` string, nullable: What this bucket means for this index, in the index's own terms.
    - `count` integer: Companies scored into this bucket in total.
    - `rows` IndexForecastCandidateDto[], nullable
      - `rank` integer: Position within its bucket, by the index's own ranking measure.
      - `ticker` string, nullable
      - `name` string, nullable
      - `isLinked` boolean
      - `rankingValueUsd` number, double, nullable: Size input: the index ranking value, except S&P 500 exits use total company value because that is the probability model's size-pressure input.
      - `probability` number, double, nullable: Estimated chance over probabilityHorizonDays, as a fraction from zero to one.
      - `isMigration` boolean: True when the company leaves this index by joining a sibling one rather than dropping out.
      - `indexFundOwnership` number, double, nullable: Index funds' and index ETFs' share of the company's shares outstanding, a fraction.
      - `memberMedianIndexFundOwnership` number, double, nullable: The same fraction for the index's median measured member.
      - `passiveDemandShares` integer, nullable: Estimated shares index funds would buy if a non-member joined: (member median minus the company's own index-fund ownership, never below zero) times its shares outstanding. An estimate, not a certainty; absent for a member or without the inputs.
      - `passiveDemandUsd` number, double, nullable: passiveDemandShares at the forecast's latest close.
      - `passiveDemandDaysOfVolume` number, double, nullable: passiveDemandUsd over the three-month average daily value traded.
      - `fundOwnershipAsOf` string, date, nullable: The registered-fund quarter the ownership figures read.
      - `rules` IndexForecastRuleDto[], nullable
        - `code` string, nullable: Stable rule identifier ("sp-market-cap", "russell-float").
        - `label` string, nullable
        - `outcome` string, nullable: "Pass", "Fail", "NotEvaluated" or "NotApplied". NotEvaluated is a fact about the COMPANY (a figure we could not read, which blocks a verdict); NotApplied is a fact about US (a rule we run for nobody, disclosed and excluded from the verdict).
        - `requirement` string, nullable: What the index's published methodology requires.
        - `observed` string, nullable: What we measured for this company.
  - `departures` IndexForecastBucketDto: One bucket of scored companies, with the count of everything scored into it.
    - `title` string, nullable
    - `note` string, nullable: What this bucket means for this index, in the index's own terms.
    - `count` integer: Companies scored into this bucket in total.
    - `rows` IndexForecastCandidateDto[], nullable
      - `rank` integer: Position within its bucket, by the index's own ranking measure.
      - `ticker` string, nullable
      - `name` string, nullable
      - `isLinked` boolean
      - `rankingValueUsd` number, double, nullable: Size input: the index ranking value, except S&P 500 exits use total company value because that is the probability model's size-pressure input.
      - `probability` number, double, nullable: Estimated chance over probabilityHorizonDays, as a fraction from zero to one.
      - `isMigration` boolean: True when the company leaves this index by joining a sibling one rather than dropping out.
      - `indexFundOwnership` number, double, nullable: Index funds' and index ETFs' share of the company's shares outstanding, a fraction.
      - `memberMedianIndexFundOwnership` number, double, nullable: The same fraction for the index's median measured member.
      - `passiveDemandShares` integer, nullable: Estimated shares index funds would buy if a non-member joined: (member median minus the company's own index-fund ownership, never below zero) times its shares outstanding. An estimate, not a certainty; absent for a member or without the inputs.
      - `passiveDemandUsd` number, double, nullable: passiveDemandShares at the forecast's latest close.
      - `passiveDemandDaysOfVolume` number, double, nullable: passiveDemandUsd over the three-month average daily value traded.
      - `fundOwnershipAsOf` string, date, nullable: The registered-fund quarter the ownership figures read.
      - `rules` IndexForecastRuleDto[], nullable
        - `code` string, nullable: Stable rule identifier ("sp-market-cap", "russell-float").
        - `label` string, nullable
        - `outcome` string, nullable: "Pass", "Fail", "NotEvaluated" or "NotApplied". NotEvaluated is a fact about the COMPANY (a figure we could not read, which blocks a verdict); NotApplied is a fact about US (a rule we run for nobody, disclosed and excluded from the verdict).
        - `requirement` string, nullable: What the index's published methodology requires.
        - `observed` string, nullable: What we measured for this company.
  - `notEvaluated` IndexForecastBucketDto: One bucket of scored companies, with the count of everything scored into it.
    - `title` string, nullable
    - `note` string, nullable: What this bucket means for this index, in the index's own terms.
    - `count` integer: Companies scored into this bucket in total.
    - `rows` IndexForecastCandidateDto[], nullable
      - `rank` integer: Position within its bucket, by the index's own ranking measure.
      - `ticker` string, nullable
      - `name` string, nullable
      - `isLinked` boolean
      - `rankingValueUsd` number, double, nullable: Size input: the index ranking value, except S&P 500 exits use total company value because that is the probability model's size-pressure input.
      - `probability` number, double, nullable: Estimated chance over probabilityHorizonDays, as a fraction from zero to one.
      - `isMigration` boolean: True when the company leaves this index by joining a sibling one rather than dropping out.
      - `indexFundOwnership` number, double, nullable: Index funds' and index ETFs' share of the company's shares outstanding, a fraction.
      - `memberMedianIndexFundOwnership` number, double, nullable: The same fraction for the index's median measured member.
      - `passiveDemandShares` integer, nullable: Estimated shares index funds would buy if a non-member joined: (member median minus the company's own index-fund ownership, never below zero) times its shares outstanding. An estimate, not a certainty; absent for a member or without the inputs.
      - `passiveDemandUsd` number, double, nullable: passiveDemandShares at the forecast's latest close.
      - `passiveDemandDaysOfVolume` number, double, nullable: passiveDemandUsd over the three-month average daily value traded.
      - `fundOwnershipAsOf` string, date, nullable: The registered-fund quarter the ownership figures read.
      - `rules` IndexForecastRuleDto[], nullable
        - `code` string, nullable: Stable rule identifier ("sp-market-cap", "russell-float").
        - `label` string, nullable
        - `outcome` string, nullable: "Pass", "Fail", "NotEvaluated" or "NotApplied". NotEvaluated is a fact about the COMPANY (a figure we could not read, which blocks a verdict); NotApplied is a fact about US (a rule we run for nobody, disclosed and excluded from the verdict).
        - `requirement` string, nullable: What the index's published methodology requires.
        - `observed` string, nullable: What we measured for this company.
  - `limitations` string[], nullable: What this forecast cannot tell you, stated by the index's own methodology.

## Other responses

- `400`: Invalid request — a malformed parameter value or a query parameter this endpoint does not support.
- `404`: Not Found

---

[API](https://skmtc.dev/equibles/apis/equibles-api.md) - [All operations](https://skmtc.dev/equibles/apis/equibles-api/llms.txt) - [OpenAPI document](https://skmtc.dev/equibles/apis/equibles-api/revisions/666e06778588?raw)
