What is published
The RareEarth Index publishes its data as plain files under https://rareearthindex.com/data/. Three JSON files are written by the daily calculation; one CSV is derived from them; the rebalance-period file is written only by the maintenance scripts at each rebalance or deletion; and a frozen price archive is kept for deleted constituents. Every level on the site is computed from these files, and every file is fetchable without a key, a login or a script.
| File | Content | Written by |
|---|---|---|
| /data/headline.json | The current level, the 1-day and since-inception changes, the as-of date and the constituent count. The homepage tiles read this file. | Daily run |
| /data/level-history.json | The daily closing level series from April 30, 2026 (base 100) to the latest close, with the provenance fields described below. The homepage chart reads this file. | Daily run |
| /data/level-history.csv | The same series as two columns, date,level, one row per published close. | Page build, after the daily run |
| /data/inception.json | The rebalance periods: for each period its anchor date, base value and every constituent’s weight and base price. The complete input to every published level. | Maintenance scripts, at each rebalance or deletion |
| /data/archive/ASM.AX.csv | Frozen daily price record of Australian Strategic Materials, April 20 to August 19, 2026, used to compute the levels for the period it was held. One file per deleted constituent; see /data/archive/README.md for provenance. | Committed to the repository |
When it updates
The daily calculation runs once a day at 22:00 UTC, after the US close, when every constituent exchange has closed for the day. (The schedule is set in US Central time, 17:00; during Central Standard Time that is 23:00 UTC.) A run that starts earlier publishes nothing for the current day: a bar dated later than the cutoff is discarded, so no level is built on a partial session.
Published levels are final, except the latest one. Each run re-derives only the newest stored date — the provisional point, whose inputs may still settle — and appends new dates. Everything earlier is carried forward unchanged. A wider rebuild happens only when a rebalance or deletion period has been appended since the last run (the series is then recomputed from that period’s anchor), or as an explicit restatement, which is disclosed in the reconstitution log. The latest level on the homepage, in headline.json and at the end of level-history.json is therefore provisional until the next run; provisional_date names it.
A level is published for every date on which at least one constituent exchange traded. Where a level cannot be computed from source data, no level is published for that date; the index does not interpolate, carry a prior close forward, or substitute a proxy (methodology §12.1). Such dates would appear in coverage_gaps; none exist.
How a level is computed
Every level is computed from the weights and base prices of the rebalance period containing its date, not by chaining daily returns:
level(d) = base_value × Σi wi × Pi(d)USD / Pi,base,USD
where the active period for date d is the one with the latest anchor_date ≤ d, each constituent uses its latest close on or before d with the FX rate dated to the same bar, and each constituent price is dated by its exchange’s local trading day (methodology §5.4). A new period’s base_value is the level on its anchor close under the prior period, so the chained series is continuous through every rebalance and deletion. The published series is readable from inception.json alone, given the closes.
headline.json
series_id"REI_HEADLINE".as_of- Date of the latest published level,
YYYY-MM-DD. This is the provisional point. last_fetched_utc- Timestamp of the run that wrote the file.
level- The latest level, four decimal places.
delta_1d,delta_1d_pct- Change from the previous published level, in index points and in percent of that previous level.
nullwhen there is no previous level. delta_inception,delta_inception_pct- Change from the base value of 100, in points and in percent. The two are numerically equal because the base is 100.
base_value,base_date100and"2026-04-30", the inception anchor.constituents_count- Number of constituents in the period in force.
active_period_anchor- Anchor date of the period in force — the latest rebalance or deletion.
level-history.json
series_id,base_value,base_date"REI_LEVEL",100,"2026-04-30".last_fetched_utc- Timestamp of the run that wrote the file.
history- Array of
{date, level}in date order, one entry per published close, from the base date toprovisional_date. Levels to four decimal places. provisional_date- The newest date in
history. It is re-derived on the next run; every earlier date is final. recompute_from- The earliest date the live price sources can still rebuild in full: the anchor of the earliest period whose constituents are all still in the index. No daily rebuild reaches below it; the segment before it is rebuilt only from archived closes (
/data/archive/). Currently2026-08-19, because every earlier period held Australian Strategic Materials. rebuilt_from,rebuild_reason- What the run that wrote the file actually recomputed, and why: the provisional date, a newly appended period, or an explicit restatement.
applied_periods- The anchor dates of the periods in
inception.jsonthat this series reflects. A period appended after this run triggers a rebuild from its anchor on the next run. coverage_gaps- Array of
{from, to}date ranges with no published level at all (methodology §12.1). The homepage chart shades each range and breaks its line across it. Empty: a gap for July 7 – August 18, 2026 was declared on October 9, 2026 and withdrawn on October 10, 2026 after the missing closes were recovered.
inception.json
The canonical anchor file. Top level: schema_version (2), inception_date ("2026-04-30"), inception_value (100), created_utc, and periods, an array in anchor-date order. The daily run reads this file and never writes it.
periods[].anchor_date- The close from which the period’s weights and base prices apply. Four periods to date: 2026-04-30 (inception), 2026-06-18 (Q2 rebalance), 2026-08-19 (deletion of ASM.AX), 2026-09-18 (Q3 rebalance).
periods[].base_value- The level on the anchor close under the prior period; 100 for inception. The continuity constant of the chained series.
periods[].event,note"rebalance"or"deletion", with a one-line note. The inception period and the June 18 rebalance predate theeventfield and carry the note only.periods[].workbook,applied_utc- For periods written by the maintenance scripts: the free-float workbook the weights were computed from, and when the period was appended.
periods[].deletion- For a deletion period:
ticker,name,reason,last_trade_date,last_price_local,last_fx,last_price_usd,weight_at_deletionandtreatment(methodology §8.4). periods[].constituents- Map from ticker to
{name, weight, currency, base_date, base_price_local, base_fx, base_price_usd}.weightis the capped index weight (sums to 1). Rebalance periods also carryff_shares(free-float shares held constant from the workbook),ff_mcap_usd(free-float market capitalization at the anchor close) andraw_weight(the uncapped free-float weight before the 10% cap, methodology §5.2).
Archive
When a constituent leaves the index, the live price sources eventually stop serving its history. The closes needed to recompute any level from a period that held the name are frozen in /data/archive/<TICKER>.csv: columns date, open, high, low, close, volume, local currency, exchange-local trading day; only date and close are used. One file exists: ASM.AX.csv, 87 trading days from April 20 to August 19, 2026, whose provenance (source, half-cent recovery, the three anchors it reproduces exactly) is set out in the archive README and in the October 10, 2026 entry of the reconstitution log.
Licence
The data files under /data/ are published under the Creative Commons Attribution 4.0 International licence (CC BY 4.0). You may copy, redistribute and adapt them, for any purpose, provided you attribute Clay Indices and link to rareearthindex.com. The methodology and the page text are © 2026 RareEarthIndex.com. The index is an informational benchmark and does not constitute investment advice; see methodology §13.
How to cite
Clay Indices (George Clay). RareEarth Index, daily closing levels, methodology v2.1 (October 10, 2026), base 100 at April 30, 2026. https://rareearthindex.com/data/level-history.json. Accessed [date].
In running text: “RareEarth Index (Clay Indices), level as of [date], rareearthindex.com.” The latest level is provisional until the next daily run; cite a dated level from level-history.json rather than the homepage tile where the distinction matters.