Thanks for your interest in improving the dataset. This repository is an open reference dataset of stock and ETF profiles, refreshed weekly from upstream sources by GitHub Actions.
If a stock or ETF record is wrong (sector mismatch, missing ISIN,
outdated name), open a PR that adds or edits a JSON file under
manual_overrides/. The pipeline deep-merges
overrides over the auto-generated record on every refresh, so your
fix survives weekly rebuilds.
Example: to fix Shopify's industry, create
manual_overrides/CA82509L1076.json:
{
"industry": "Internet Retail"
}The filename must match the auto-generated shard_key (ISIN if
present, else primary symbol). See manual_overrides/README.md
for details.
The list of ETFs we cover lives in
config/etf_universe.yml. To request that
a new ETF be tracked, open a PR adding an entry. Provide:
ticker— primary symbolcik— SEC filer CIK if US-domiciled (10-digit string), else omitname— fund display nameissuer— iShares, Vanguard, SSGA, Invesco, etc. (used to pick the scraper if EDGAR has nothing)
We aim to cover the top ~300 ETFs by holdings frequency in real portfolios, not every ETF in existence. PRs for obscure funds with no demonstrated user demand may be deferred.
The build code lives in scripts/. Run locally with:
uv pip install -r scripts/requirements.txt
SEC_USER_AGENT="dev-name dev@example.com" python scripts/build.py
python scripts/validate.py v1/PRs welcome for:
- New normalization rules (e.g. better sector mapping)
- New issuer scrapers (only as fallback for non-US funds)
- Schema additions (must be backwards compatible — additive only on
minor; breaking changes require
/v2/path)
- ❌ Don't import data from Yahoo Finance — their ToS forbids redistribution.
- ❌ Don't import real-time quotes, OHLCV, fundamentals, or analyst ratings — out of scope.
- ❌ Don't use proprietary sector taxonomy names (e.g. don't say
"GICS"). Use the normalized labels in
config/sector_taxonomy.yml.
.github/workflows/validate-pr.yml runs python scripts/validate.py v1/
on every PR. It checks JSON Schema conformance, weight-sum invariants,
and index consistency. Make sure it passes locally before pushing.
By contributing code, you agree it is licensed under MIT (see
LICENSE). By contributing data, you agree it is licensed
under CC-BY-NC-SA 4.0 (see LICENSE-DATA).
Email opensource@wealthfolio.app. See DISCLAIMER.md.