Nexus deep diveReference data · used at every stepCompanion to the case study
What each instrument is, which universe it was in, and since when, when its market trades, and what dividends and splits did to its price, kept as dated records and refreshed by scheduled jobs.
A price series alone cannot say which companies were in an index last spring, which calendar a market keeps, or whether a fall in price was a sell-off or a split. Nexus keeps that knowledge as reference data, and capture, validation, research and trading all read the same records. Four universes maintain themselves: when a company joins an index or a coin enters the ranking, it gets an instrument record and a price feed without anyone editing a list. Each record below is marked with what runs today, including what is still open.
Read on 2026-10-22 from the reference tables (instruments, memberships and their snapshots, the crypto listing and exchange snapshots, corporate actions, calendars and dataset declarations) and from the jobs' code on the data service's main branch.
Every series in the store belongs to an instrument record: its name, asset class, currency, tick and contract size, sector and trading calendar. Research, validation and the trader all read the same record.
When a name joins a universe, its record is created from the source's own details, such as the exchange's tick size for a crypto pair, and it is subscribed to prices. No one adds it by hand.
All 9,396 futures instruments carry their currency, tick size, contract size, price multiplier and calendar, 9,313 of them under 47 roots. 8,545 carry an expiry, for most of them the roll schedule's last trading day, which the schedule holds for each of its 8,564 contracts. First notice dates are not yet taken from the exchanges: 2,720 contracts carry a placeholder or an approximation, which nothing should use.
A change to an instrument's fields is logged with the old value, the new value and the date. The log is noisy: it holds 392,782 name changes for 18,329 instruments, far more than real renames, so it is not yet a clean history of what changed.
A Yahoo symbol does not say which exchange it trades on. Symbols are matched to their exchange and calendar using fund holdings files, which carry each security's ISIN, and Yahoo's own metadata. Each batch is reviewed before it is applied. 28,398 of 28,686 datasets now declare a calendar.
What can be tradedExecution today is through one broker, IG, on a demo account. The equities and crypto on this page are research data.
An equity backtest that uses today's index members has already picked the winners, because the companies that fell out are missing. Nexus records each membership as a dated range, so the history of who was in a universe is kept from the day its record began. Reading it back by date is not finished; the daily lists can be read whole.
| Universe | Source | Members | Exits recorded | State |
|---|---|---|---|---|
| Russell 2000 | The iShares fund's holdings file; a range opens on the file's date | 1,973 | 256 | Runs |
| Nasdaq-100 | Nasdaq | 101 | 19 | Runs |
| Nasdaq-listed equities | Nasdaq's listings screener | 3,936 | 6,991 | Runs, with limits 763 names have left and rejoined; one has 22 separate ranges. |
| Crypto coins on Binance | CoinMarketCap's top 5,000, kept to coins with an active Binance spot pair against USDT | 501 | 36 | Runs |
| Dow Jones Industrial Average | A fixed list, as of April 2026 | 30 | 0 | Fixed list |
| Russell 1000 | A hand-written list of 233 large companies, not the index | 233 | 0 | Fixed list |
| STOXX Europe 600 | Loaded in April and May 2026 under another vendor's symbols. 397 have Yahoo prices: 99 through a symbol mapping, 298 because the symbol is the same on Yahoo. The daily run falls back to a 29-name list, which the guard refuses, until a reviewed symbol mapping lets the official file load | 600 | 21 | Not refreshed since 3 May 2026. |
Each day the top 250 coins by CoinMarketCap rank are refreshed and merged into the previous snapshot, and the changes are recorded.
Coins outside the day's top 250 are carried forward unchanged, and the daily refresh marks none as gone.
A snapshot of the exchanges from CoinGecko, now taken weekly on Mondays, with the differences from the last one kept.
For your firmMembership from before April 2026 has to come from an index provider or a data vendor. It loads into the same dated ranges as the history recorded since then.
A split cuts the price overnight and a dividend lowers it on the ex-date. Neither is a move a strategy could have traded. Nexus stores the events beside the prices and applies the dividends when a series is read. Splits are not applied on read, which leaves a gap, set out in step 3.
Every day, for every daily Yahoo ticker
Dividends and splits are fetched once a day for every active instrument with a daily Yahoo subscription, and stored with their ex-date and amount. A stored event is never overwritten: the first value is kept.
145,858 dividends and 6,633 splits for 3,602 tickers, with ex-dates from 1962 to 21 October 2026. The latest were stored at 02:26 UTC on 22 October.
A refused request is recorded as refused
Since August 2026 the vendor has refused deep history for some thin instruments, mostly warrants and rights. An empty answer to a refused request used to look like a stock that had never paid a dividend. Now the refusal is recorded in the job's log, and refused tickers are asked again in rotation.
The data API does not yet mark a refused ticker, so an empty answer there does not mean none.
The dividend-adjusted series is built when it is read
The data API builds a dividend-adjusted series from the stored price and the dividend record, scaling earlier prices at each ex-date. The adjustment is not stored, so it can always be checked against the events behind it.
The vendor restates its history after a split, but a later download never replaces a stored daily bar. A split before a series was first downloaded is already in its prices; a split after that leaves a jump, and the dividend-adjusted series keeps it. KLA's stored closing price, before adjustment, falls from 2,307.54 on 11 June 2026 to 252.91 on 12 June, the day of its 10-for-1 split.
Validation and trading both need to know whether a missing bar is a gap or a closed market, and whether a price is adjusted. Each dataset declares the answers, so no reader has to guess.
Validate and clean sets out what was known, and when, for prices. Here is the same question for reference data.
| Record | Point in time | How |
|---|---|---|
| Index and crypto membership | With limits | Recorded as dated ranges from April 2026, with each accepted daily list since 5 June 2026. The data API's reads return only open memberships, so they miss leavers; the daily lists since 5 June 2026 can be read whole. |
| The CoinMarketCap listing | With limits | A daily snapshot since 10 April 2026 of the top 250 coins, merged into the last. Other coins are carried forward, and the daily refresh marks none as gone. |
| Crypto exchanges | Yes | Snapshots since 10 April 2026, with the differences kept. |
| Broker contract terms | Yes | Observations that are only added to, each with a content hash, since 30 July 2026. |
| Instrument fields | With limits | Logged field by field, but the log is noisy; see Instruments. |
| Corporate actions | No | Ex-date and amount, and the time each event was first stored. Events from before capture began were stored long after their ex-date, there is no announcement date, and a later correction from the vendor is not recorded. The adjusted series applies every stored dividend, whenever it arrived. |
| Futures contract specifications | No | Current values are held for the fields listed under Instruments. Their dated history is not: the table for it is built and empty. Exchange rulebooks and product guides for 40 of the 47 roots, each with a recorded checksum, were captured on 1 September 2026; they have not been reviewed, and nothing has been loaded from them. |
Each line here was checked against the database or the code on 22 October 2026.
Sources, read 2026-10-22: the instrument, membership, snapshot, crypto listing, exchange, corporate action, calendar, dataset declaration and broker contract tables in the market-data store; the constituents, corporate actions and price jobs' code on the data service's main branch; and the universe resolver in the research service.
I can put dated universes and corporate-action records around your data, or audit the ones your backtests already rely on.