Repository navigation
feat(updater): shared calendar dates, ticker and new-fund checks, u.s.-listing tickers - #99
Merged
Merged
Conversation
….-listing tickers
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
iShares gets the shared updater blocks of the ETF template (
.claude/tools/etfs/etf-std/*.block.ts, applied withapply-block.ts, byte-identical in every brand), wired as in Schwab #75. iShares has no N-PORT code and no Yahoo history window, sonport-readerandwindowed-chartare left out; pages keep the array-row format:holdings-guard(Q24): an all-non-numeric weight sheet never replaces a published sheet with numeric weights, even withnumericandsumrelaxed (previousWeightsfrom the published holdings pages)calendar-dates:isoDateand the Performance and Distributions date parsing read calendar text (wasDate.parse(text + ' UTC'));withoutYoungMetricsnulls the 1y, 3y, 5y, 10y and annualized since-inception returns of a fund younger than the horizon (calendar anniversary of the catalog inception date); the 12-contiguous-month rule for since-inception staysfund-selection(Q27, Q28): aTICKERSentry outside the live catalog and the published funds stops the run before any fund request (closed published funds stay valid); a catalog-only row the live catalog no longer lists is always dropped, also when the vanished-funds safety keeps the other rows;NEW FUNDS:names a fund on its first successful publish,NEW FUNDS (not published yet):a new fund whose first read failed (before: every catalog ticker missing from the previous index)2330in Taiwan and Saudi funds): a holdingsTickeris kept only for a security on a U.S. exchange (the sheet's ownExchangecolumn); foreign local codes, futures, options, swaps, FX and cash lines become-. iShares sheets carry no CUSIP or ISIN, so the Watchlist then keys those rows by nameValues that change on the next run: international and global funds publish
-instead of local codes for every non-U.S. listing (EFA: 670 of 680 rows), U.S. funds only for futures, cash and unlisted lines (IVV: 5 rows, among themESZ6,USDand the delisted HOLX);NEW FUNDSlines change as aboveHow it was checked
bun test: 42 pass, 0 fail (exit 0), also with the control variables ofupdate-data.config.jsonexported; the new Q24, Q27, Q28, young-fund and dates tests fail without their wiring (checked by removing each piece)bun build --target=bun scripts/update-data.ts --outfile=/dev/null,bun build --target=bun src/main.tsx --outfile=/dev/null,git diff --check, hubcheck-readme.ts,check-scripts.ts,apply-block.ts --check holdings-guard,calendar-dates,fund-selection.claude/tools/etfs/tc/check.sh: no new errors (53 -> 53 pre-existing lines)TICKERS="IVV EFA AGG IAU"-> 3 updated, 1 unchanged, only the ticker change above plus fresh upstream values