Change log · one comparison per day
What changed in the list, and the date it changed
We compare each new holdings snapshot with the one before it, then publish what moved: the tickers that appeared, the tickers that disappeared, and the date on both sides of the change. Every row links to the issuer page the holdings came from.
Loading the change log…
This is data, not investment advice
SafaStack reports what a named fund published as held on a given date, and what changed between two published snapshots. We report the change we observed, and we do not guess whether it was a rebalance, an index reconstitution, a corporate action or a compliance exit. A ticker leaving this list is not a signal to sell it. We do not certify compliance and we do not issue rulings: "held by SPUS" is not the same statement as "halal". Check the linked source, and speak to a licensed professional where it matters.
The free view below covers the last 7 days of entries and exits. The full log, every change day since our first comparison, is planned for the Alerts tier at US$8/month or US$59/year. Nothing on this site charges money today, and the change days outside the window are listed at the bottom of this page with their counts.
Rows are read in your browser from our published JSON: the index at data/changes/index.json, then the dated change document it names. There's no backend and no login, and nothing here is tracked. Comparison schema: data/changes/schema.json. Page behaviour and QA notes: docs/changes-page.md.
Before two real holdings days existed, one comparison was published from synthetic test snapshots, using placeholder funds (DEMO, DEMO2) and placeholder tickers (GOLF, HOTE). It lets this page be checked end to end, and the page labels it as a test fixture wherever it appears. It is not a claim about any real fund or security. That example comparison is published as data/changes/2026-09-11.json.
Entries and exits, newest first
Each row is one change between two dated snapshots. The date is the newer snapshot's date, which is the day the change showed up in the fund's published list. Filter by fund, by direction, or search a ticker.
Loading the change log…
No changes observed yet
We have nothing to show because nothing has been observed: a comparison appears here once two holdings snapshots with the same data status exist to compare, and each comparison is written from those two snapshots only. We would rather show you an empty log than an invented one.
What will be here: the ticker, company name, fund, the date it joined or left, and a link to the issuer page
behind the row. The scheduled daily run writes the comparison into
data/changes/YYYY-MM-DD.json and lists it in
data/changes/index.json; this page fills in as soon as the
first comparison lands.
We could not load the change log
The change files did not load.
You appear to be opening this page straight from disk (a file:// address). Browsers block a page
from reading local JSON that way. Serve the folder over HTTP (for example npx serve or
python3 -m http.server) and reload.
Note on the comparisons on this page
Free window: loading…
No entries or exits in the last 7 days
The comparisons inside the free window recorded no ticker entering and none leaving. That is a real result, not a missing one: a fund can publish the same list for several days, and we publish the days it changes as well as the days it doesn't. Older change days are listed further down this page.
| Source |
|---|
Weight % is the percentage of net assets the issuer published for that row. For an entry it is the weight on the day the ticker appeared. For an exit it is the last weight the fund published for it, before it disappeared. Where the issuer's cell was not usable as a number we leave the cell empty rather than guess. Change date is the date of the newer snapshot; a row also records the date the name was last seen where the comparison gives one.
Change days in the free window
| Change date | Compared with | Funds | Entered | Left | Also recorded | Status |
|---|
Counts come from each comparison's own totals. Weight shifts, renames and rows whose weight the issuer did not publish are counted here but not listed row by row: the shifts themselves, with both weights and both dates, are planned for the Alerts tier.
Change days outside the free window
Checking whether any older change days exist…
See the Alerts tier The full log is planned at US$8/month or US$59/year. Nothing is charged today.
Join the waitlist
One email when the daily SPUS list goes live, then only on the days a stock enters or leaves SPUS. HLAL changes come from the fund's quarter-end SEC filings.
Every row on this page comes from two of our published snapshots, and the source link on the row goes to the issuer's own page. We haven't launched, so there's no crowd to quote at you yet.