Repository navigation
fix(nport): tickers for abbreviated and reordered issuer names - #93
Merged
Merged
Conversation
Shared nport-reader block (workspace 3d3f574 and f25d869, open item Q35): a common stock the exact SEC name key misses gets a second match on a looser key (abbreviations, slash qualifiers, reordered words) that must name one company in the SEC table or the Nasdaq Trader directories; the stated class picks among listed classes.
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
nport-readerblock (workspaceetf-std/nport-reader.block.ts, open item Q35). A common-stock row the exact SEC name key leaves without a ticker gets a second match on a looser key (nportLooseKey): a Bloomberg qualifier after a slash and a trailingNEW,DELor state code dropped, abbreviations seen in real filings read as one word (COS=COMPANIES,FINL,PPTYS,MFG,HLDGS,SVCS,GRP,BANCORPORATION=BANCORP, ...), words sorted so EDGAR's reordered titles meet the usual order (SCHWAB CHARLES CORP=Charles Schwab Corp/The,HORTON D R INC=DR Horton Inc)company_tickers.jsonand/or one company's common shares in the Nasdaq Trader directories (both must agree when both know it). Several listed classes (Lennar, Fox, Zillow, Alphabet) need the class the row states, matched to the listed security name (LENNAR CORP CL B->LEN-B), else no ticker; a foreign ISIN still needs the directory listing. Tickers the exact match gives never change, and a loose ticker that another security of the filing already holds is dropped. No wiring change:nportTickers(positions, names, listings)reads the new\u0001entries ofparseSecCompanyNamesandparseUsListingsWhy
About 560 distinct names in large funds published
-because the N-PORT issuer name is abbreviated or ordered differently from the SEC title ("Lowe's Cos" vs "LOWES COMPANIES", TJX, Travelers, Williams, T Rowe Price, Charles Schwab), so Copy Tickers and the Watchlist lost themEffect on real filings
Every fund of this feed with an N-PORT-P filing (92 filings, 39232 positions), newest filing read with the shared reader, previous block (workspace d7db168) vs this block on the same cached SEC answers and directories of 2026-10-26; nothing written to
api/:Independent check over all 26 N-PORT brands: 199 of the 202 distinct gained identifier/ticker pairs equal OpenFIGI's ticker of that CUSIP or ISIN; the other 3 are former identifiers of the same company (Alight's old Class A CUSIP 01626W101, which OpenFIGI lists only on a European venue as ALIGHT INC - CLASS A; Honeywell's old CUSIP 438516106 and Liberty Global's old Class B CINS G5480U112, unknown to OpenFIGI). No existing ticker was lost or moved (0 lost, 0 moved above); a loose key shared by two companies (First Bancorp NC and Puerto Rico, Independent Bank MA and MI, Tetra Tech and Tetra Technologies) gives no ticker
Checks
bun testandbun testwith everyupdate-data.config.jsoncontrol exported: 66 pass 0 fail, exit 0 bothbun build --target=bun scripts/update-data.ts --outfile=/dev/null,bun build --target=bun src/main.tsx --outfile=/dev/null,git diff --check,check-readme.ts .,check-scripts.ts .apply-block.ts --check nport-reader .: identical;tc/check.sh .: no new errors (52 lines, before 52)blocks.test.ts: 17 pass (the new Q35 case: Lowe's, Schwab, Lennar A and B, Alphabet A and C, TrustCo through the directory name, two First Bancorps and a second Chevron CUSIP without a ticker)