Contents Lesson 2 of 17

5 min read · practitioner

Why does an index have no financial statements?

The mistake here is common, confident and wrong. Somebody builds a fundamentals pipeline, points it at the S&P 500, expects a balance sheet, and gets almost nothing back. They conclude the data is missing. It is not missing. An index does not have financial statements, because an index is not a company.

What actually comes back

Call /fundamentals/GSPC.INDX and the entire response is one block:

General: {
  Code: "GSPC", Type: "INDEX", Name: "S&P 500 Index",
  Exchange: "INDX", MarketCap: 63706729098586,
  CurrencyCode: "USD", CountryName: "USA", ...
}

No Highlights. No Valuation. No Financials. No Earnings. General carries eleven keys and that is the whole of what an index has in common with a company.

What sits beside General depends on your entitlement, and this is worth knowing before you conclude anything. On one key the response is General alone; on a key with index-components access the same call also returns Components and HistoricalTickerComponents — the membership list and its history, in the fundamentals payload. Both were checked. So "an index returns one block" is a statement about a subscription, not about indices.

Why that is correct behaviour, not a gap

The S&P 500 is a rule, not a legal entity. It has no revenue, because it sells nothing. It has no cash flow statement, because it has no bank account. It cannot file with a regulator, because there is nobody to file. What it does have is a level, a currency, a calculation methodology, and a membership list.

The one aggregate every key gets is MarketCap — about $63.7 trillion when this was written, and a different figure whenever you read it, being the summed capitalisation of the constituents. That is a derived roll-up, not an accounting figure, and it behaves like one: it moves every day with prices and jumps whenever membership changes.

Where membership lives

Index constituents are a separate question from index fundamentals, and the answer to it is an entitlement question rather than a schema one. The documented switch is the historical parameter — historical=1 — which turns on historical sections for the ticker types that have them.

So state the boundary honestly, because it is what a learner needs:

  • You will never get Balance_Sheet, Income_Statement or Cash_Flow from an index ticker. There is nothing to return, on any key, ever.
  • Membership may or may not be there. Count the top-level keys on your own key before you design around either answer. Getting General alone is not evidence that components do not exist; getting Components is not a promise every key does.
  • If you want statement-level data for "the index", you have to fetch the constituents, call /fundamentals per constituent, and aggregate them yourself — which is a real piece of work, and exactly the job the bulk endpoint in Unit 4 exists for.

The general principle

This is a specific case of something worth generalising: an API path names a resource, not a schema. /fundamentals/{ticker} promises to tell you what it knows about a ticker. What it knows about a manufacturer, an ETF and an index are three genuinely different things, and a response that returned empty statement objects for an index would be lying more than an absent key does.

When a section is missing, the first question is not "is this a bug?" but "does this instrument have such a thing?" Half the time the answer is no, and the API is being honest.

Try it now

  1. Unfiltered, on 28 September 2026, /fundamentals/AAPL.US returned 13 top-level keys and /fundamentals/GSPC.INDX returned three on the academy's key: General, Components and HistoricalTickerComponents. Thirteen against three, where another key gets thirteen against one. Say which of the two index answers your pipeline has to survive, and write it down before it surprises one. The index's General block is below.
Live API response: sp500 index general
  1. Take MarketCap from the index table above and divide it by the market capitalisation of its largest constituent, NVIDIA on 28 September 2026, below. That ratio is a concentration measure you computed from two fields, without a screener. Both are snapshots, so read them from the same refresh.
Live API response: mda12 nvda market cap
  1. Write down the sentence "an index has no accounts" and put it in the docstring of whatever function calls this endpoint. The next person to read your code will need it.