Skip to content

Keep exchange-listed funds findable as ETFs and align iNAV categories with their index - #226

Merged
JerBouma merged 1 commit into
mainfrom
feature/after-retirement
Oct 11, 2026
Merged

JerBouma merged 1 commit into
mainfrom
feature/after-retirement

Conversation

@JerBouma

Copy link
Copy Markdown
Owner

Follow-ups to the funds retirement (#222), from the latest MCP re-test.

Exchange-listed funds move to ETFs (620 rows)
Retiring funds also made funds that trade on a stock exchange unsearchable, e.g. Kempen Sustainable Global High Dividend (KSGHD.AS) and the AEGON-Industrial LOFs.

A fund moves when both of these hold:

  • it is listed on a main stock exchange (the main-venue notion the primary-listing logic uses);
  • its symbol is an ordinary ticker for that exchange: a shape (letters vs digits, length) that at least 1% of the exchange's stock and ETF tickers have. ISINs and Morningstar IDs don't qualify.
Exchange Moved
Shenzhen 158
Euronext Amsterdam 135
Copenhagen 113
Milan 89
Shanghai 74
Jakarta 45
Seoul, Lisbon, Paris, Tadawul 6
  • Spanish SICAVs are left alone. Their S0816.MC symbols are CNMV registry codes, not exchange tickers, and most SICAVs left the exchange after 2022.
  • Category, category group and family carry over. Six fund files left empty are removed.

iNAV categories follow their index
An ETF iNAV takes the categories of the headline index it tracks when two things hold:

  • its name ends with that index's name, once generic endings are dropped (currencies, share classes; taken from the data as last words of at least 0.3% of iNAV names);
  • the index's rows agree on the categories (at least 80%).

Variants such as "S+P 500 MV" keep their own category. The rule is part of the weekly index update (markets_model.align_inav_categories) and changes 14 iNAVs now: the MSCI World iNAVs (0JHC–0JHG.DE, X2H5.DE, now Developed Markets like 7FGD/4QAF), the S&P 500 iNAVs, the Nikkei 225 iNAVs and one Nasdaq 100 iNAV.

Other

  • The setup wizard banner no longer lists Funds and Money Markets.
  • The funds controller tests use Frankfurt instead of Paris, which has no funds left.

Not changed, as decided: within a market cap tier, equities stay ordered by the number of exchanges they trade on, as the MCP instructions already state.

Checks: invariants, the identifier gate, the GICS check, the full test suite, black and ruff.

… with their index

- 620 funds that trade on a main stock exchange under an ordinary ticker (a symbol shape
  at least 1% of that exchange's stock and ETF tickers have, not an ISIN or Morningstar
  id) move from the retired funds to the ETFs, so the MCP server finds them again: Euronext
  Amsterdam (Kempen, Actiam, ASN), the Shenzhen and Shanghai LOFs, Copenhagen, Milan,
  Jakarta and a few more. Spanish SICAV registry codes (S0816.MC) do not qualify. Fund
  files left empty are removed.
- An ETF iNAV takes the categories of the headline index it tracks, when its name without
  generic endings (currencies, share classes) ends with that index's name and the index's
  rows agree; variants such as minimum volatility keep theirs. Part of the weekly index
  update; 14 iNAVs changed now (e.g. MSCI World iNAVs 0JHG.DE and X2H5.DE).
- The setup wizard banner no longer lists funds and money markets.
@JerBouma
JerBouma merged commit 9d6ed48 into main Oct 11, 2026
4 checks passed
@JerBouma
JerBouma deleted the feature/after-retirement branch October 11, 2026 15:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant