Repository navigation
Release 2.5.1 - #234
Merged
Merged
Release 2.5.1#234
Conversation
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.
Bumps the version to 2.5.1:
pyproject.toml,uv.lock,server.json, and the MCP bundle'smanifest.jsonandpyproject.toml, including its pinnedfinancedatabase[mcp]==2.5.1.Changelog since 2.5.0
2.5.0 introduced the MCP server and a cleaned-up database. 2.5.1 is about keeping that database current without manual work, and about making the MCP server's answers trustworthy. Sampling hundreds of real searches on the hosted server showed where results went wrong: depositary receipts or foreign regional lines shown as a company's main listing, funds and bonds filed as equities, stale data, and accent or spelling variants that found nothing. Each fix below is a general, data-derived rule rather than a list of exceptions, so it keeps working as the data changes every week.
Funds and money markets are retired
Funds and money markets are no longer maintained. The decision followed a scan of how current they were:
Badly out of date. Compared with Nasdaq's list of US funds (tickers A to I):
Money markets looked the same: 40% are no longer listed, and only 352 of the 970 money market funds listed in that range are present.
No source to keep them current. Mutual and money market funds aren't traded on an exchange, so there is no public, official directory that lists them worldwide, unlike stocks and ETFs. The roughly 27,000 non-US funds (Morningstar IDs; funds on Frankfurt, Stuttgart, Madrid, Vienna and Mexico) have no public source at all. Keeping them current would mean scraping fund portals or relying on paid data, which this project doesn't do.
No way to mark closures. Funds have no ISIN or delisted column, so a closed or merged fund can't even be flagged; it just stays in the data as if it still existed.
Little use. In the MCP server's usage statistics, funds were among the least called asset classes.
An outdated answer is worse than no answer, especially for an AI assistant that presents it confidently, so the classes were retired rather than left to decay further:
fd.Funds()andfd.MoneyMarkets()still load their data unchanged, but warn when loaded (FutureWarning) that it's no longer maintained. Existing code keeps working.fundsandmoneymarketstools are removed, and both classes are left out ofsearch_instruments,show_optionsandsearch_categories, so an assistant never returns them.The database's own equity classification (breaking)
Equities are now classified in the database's own three levels, listed in
scripts/categories.json.This is a hard switch: filters on an old industry group or industry name return nothing.
fd.show_options("equities")lists the new names.MCP server
lorealfinds L'Oréal, buttoyotano longer finds Toyo Tanso.only_primary_listingkeeps a company's real home listing. It leaves out:curacao→ Curaçao).Côte d'Ivoire→ Ivory Coast,USA,UK,Holland,Korea,Czechia; sectors such asTechorHealthcare; and tiers such asmegacap.search_instrumentsadds adelistedcolumn wheninclude_delistedis on./stats. A user is a keyed hash (HMAC) of the address and user agent, and neither is ever stored raw.PRIVACY.mddescribes this.Package
fd.Funds()andfd.MoneyMarkets()warn that they're no longer maintained (see above).listings_model.py) gains the rules described under the MCP server. ETFs and indices, which have no country, keep their primary listings.Database
ETFs.
Cryptocurrencies. Coins in CoinGecko's top 500 were added (such as Sui, Shiba Inu, NEAR, Pepe), and coins that no longer exist were removed. Numbered duplicates of a coin (SOL1, DOT1, UNI3) were removed.
Currencies. The list now follows ISO 4217: new currencies (SLE, ZWG, VED, XCG) were added, and withdrawn ones (HRK and BGN after the euro, SLL, ANG, CUC) removed.
Indices.
Equities.
Classification and countries reviewed.
Listing status.
ETFs.
Non-shares. More instruments that aren't company shares are recognised and removed: debentures, Nordic knock-out certificates, subscription warrants, rights issues and listed indices.
Weekly update
database_update.ymlholds no Python anymore.scripts/follows the package's MVC layout, andscripts/README.mddocuments every rule.scripts/check_database.pycompares each update with the last commit and undoes it before the commit if it would introduce duplicate symbols, symbols in two asset classes, changed columns or a large loss of rows.Documentation