CI
RareEarthIndex.com

Data

Every file under /data/, its fields, when it updates, the licence, and how to cite the index.

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.

FileContentWritten by
/data/headline.jsonThe 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.jsonThe 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.csvThe same series as two columns, date,level, one row per published close.Page build, after the daily run
/data/inception.jsonThe 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.csvFrozen 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. null when 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_date
100 and "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 to provisional_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/). Currently 2026-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.json that 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 the event field 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_deletion and treatment (methodology §8.4).
periods[].constituents
Map from ticker to {name, weight, currency, base_date, base_price_local, base_fx, base_price_usd}. weight is the capped index weight (sums to 1). Rebalance periods also carry ff_shares (free-float shares held constant from the workbook), ff_mcap_usd (free-float market capitalization at the anchor close) and raw_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.