One of the app's features lets you select Invesco ETFs in the Watchlist and aggregate their holdings to see how often each ticker appears across the selected funds. Repeated holdings make overlapping exposure visible: the more selected funds include a ticker, the greater its potential influence on the portfolio; gains in that holding may help, while declines may hurt, and actual impact also depends on each fund's position size. Another feature makes it faster and easier to find funds with stronger growth over different periods, higher dividend yields or distributions, greater Total Return (price performance plus dividends), and other key performance metrics. A single-file client-side tool that reads the generated ./api/invesco static feed (invesco.com product-list / performance CSVs, per-fund daily holdings CSVs, the official per-fund prices & yields CSV as the default daily NAV/close history source, Yahoo Finance for distributions and as the history fallback, SEC EDGAR N-PORT-P only as a holdings fallback) into a searchable ETF/asset-class catalog with per-fund tabs, watchlist aggregation, ticker copy and CSV/TXT export — the same look, feel, columns and business logic as the sibling applications.
bunx degit daggerok/Invesco#main ./12345 && cd $_
bunx serve . -p 1234
open http://0:1234The published application is available at https://daggerok.github.io/Invesco/.
Run the updater with Bun:
bun test scripts/update-data.test.ts
./scripts/update-data.tsRun ./scripts/update-data.ts -h (or --help) to print every configuration variable with its default and usage examples.
The Update Invesco ETF data GitHub Actions workflow exposes the same settings as manual inputs. All supplied filters use AND logic.
| Block | Source |
|---|---|
| Catalog (all US Invesco ETFs) | https://www.invesco.com/us/financial-products/etfs/performance/prices/main/performance/0?audienceType=Advisor&action=download (product list CSV) |
| Holdings per fund | https://www.invesco.com/us/financial-products/etfs/holdings/main/holdings/0?audienceType=Investor&action=download&ticker={TICKER} (per-fund holdings CSV) |
| Daily NAV/close history (default) | https://www.invesco.com/us/financial-products/etfs/pricing/main/prices/0?audienceType=Investor&action=download&ticker={TICKER} (official per-fund prices & yields CSV) |
| Distributions; history fallback | Yahoo Finance chart API — used for distributions/exchange/quote, and for daily closes only when the official CSV above fails or is empty |
| Fallback | SEC EDGAR N-PORT-P as fallback for funds with no Invesco CSV |
Each fund carries a derived metrics object that powers the catalog columns shared with the sibling sites:
ytd/tr1y— official YTD and 1-year returns → YTD Return, TR 1Ycagr3y/cagr5y/cagr10y— published annualized 3Y/5Y/10Y figures → CAGR 3Y/5Y/10Ytr3y/tr5y/tr10y— cumulative 3Y/5Y/10Y figures(1 + CAGR)^n - 1→ TR 3Y/5Y/10YsiAnn— since-inception annualized → SI Ann.dividendYield— 12-month trailing yield or indicated yield (latest distribution × frequency ÷ price)secYield— 30-day SEC yield when published;—otherwise
| Environment variable | Default | Meaning |
|---|---|---|
MAX_FETCHES |
all | Batch size: with a positive value the updater continues after the committed cursor in api/invesco/update-state.json; empty or 0 is a full pass — every fund is refreshed in one run. |
REQUEST_SLEEP |
1 |
Minimum delay in seconds between outgoing request starts, including retries. |
CONCURRENCY |
2 |
Number of parallel fund update workers. Request starts are still globally spaced by REQUEST_SLEEP. |
AUM |
: |
Net Assets range. Each bound may be a USD amount or K/M/B/T, or one of nano, micro, small, mid, large. |
TER |
: |
Expense ratio range in % (strict min:max). |
DIVIDEND_YIELD |
: |
Dividend-yield percentage range. |
TICKERS |
all | Space-, comma- or semicolon-separated ticker allowlist, e.g. QQQ QQQM RSP PGX. |
HOLDINGS_PAGE_SIZE |
250 |
Rows in each generated current-holdings JSON page. |
HISTORY_PAGE_SIZE |
1000 |
Rows in each generated daily-history JSON page. |
MAX_RETRIES |
2 |
Retries after the initial request. Only network errors and HTTP 408/425/429/5xx are retried with exponential backoff. |
SEC_UA |
declared UA | Override the SEC User-Agent. SEC policy requires automated tools to declare a contact. |
PRICES_HISTORY |
on | Use the official per-fund prices & yields CSV as the daily NAV/close history source, falling back to Yahoo's closes only when that CSV request fails or returns no rows. Set 0/false to use Yahoo's closes for every fund instead. |
SKIP_YAHOO |
off | Skip Yahoo Finance history updates. |
TICKERS combines with AUM, TER, yield filters using AND logic; it does not override them. Funds not selected for a successful update keep their prior published metadata and data files.
MAX_FETCHES=10 ./scripts/update-data.ts
TICKERS="QQQ QQQM RSP PGX" ./scripts/update-data.ts
AUM="1B:" TER=":0.5" ./scripts/update-data.ts
PERFORMANCE_1Y="15:" ./scripts/update-data.tsThe browser app is intentionally build-free: index.html carries the markup, styles and bootstrap, and app.tsx is TypeScript compiled in the browser with Babel standalone — no build step, no bundler, no tsconfig.json needed. Bun runs TypeScript out of the box.
Verification before every publish: bun install --frozen-lockfile, bun test, and git diff --check.
| Brand | Where to get the data |
|---|---|
| abrdn (Aberdeen) | aberdeeninvestments.com | aberdeen |
| Amplify | amplifyetfs.com | Amplify |
| Capital Group | capitalgroup.com | Capital-Group |
| Fidelity | fidelity.com | Fidelity |
| First Trust | ftportfolios.com | First-Trust |
| Franklin Templeton | franklintempleton.com | Franklin |
| Global X | globalxetfs.com/explore | Global X |
| Goldman Sachs | am.gs.com | Goldman-Sachs |
| Invesco | invesco.com | Invesco |
| iShares | ishares.com | iShares |
| JPMorgan | am.jpmorgan.com | JPMorgan |
| NEOS | neosfunds.com | Neos |
| Northern Trust | etfs.ntam.northerntrust.com | Northern-Trust |
| ProShares | proshares.com | ProShares |
| Schwab | schwabassetmanagement.com | Schwab |
| SPDR | ssga.com | SPDR |
| VanEck | vaneck.com | VanEck |
| Vanguard | investor.vanguard.com | Vanguard |
| VictoryShares | vcm.com VictoryShares ETFs | VictoryShares |
| WisdomTree | wisdomtree.com | WisdomTree |
| Application | Data provider | Repository |
|---|---|---|
| abrdn (Aberdeen) | Official Aberdeen gateway + SEC N-PORT holdings fallback + Yahoo history/dividends | aberdeen |
| Amplify | Amplify ETFs (Firestore data feed) | Amplify |
| Capital Group | Official Capital Group fund data + SEC N-PORT holdings fallback + Yahoo history fallback | Capital-Group |
| Fidelity | SEC EDGAR N-PORT-P + Yahoo Finance | Fidelity |
| First Trust | ftportfolios.com official ETF list + fund summary, holdings, distribution and price-history export pages + SEC EDGAR N-PORT-P holdings fallback + Yahoo Finance history fallback | First-Trust |
| Franklin Templeton | franklintempleton.com ETF listings + product pages + SEC EDGAR N-PORT-P | Franklin |
| Global X | globalxetfs.com Next.js catalog and fund pages + dated full-holdings CSV | Global X |
| Goldman Sachs | am.gs.com fund finder + detail pages + SEC EDGAR N-PORT-P | Goldman-Sachs |
| Invesco | invesco.com CSV downloads + Yahoo Finance | Invesco |
| iShares | iShares (BlackRock) product workbooks | iShares |
| JPMorgan | am.jpmorgan.com fund explorer + product-data JSON | JPMorgan |
| NEOS | neosfunds.com lineup table + official fund pages + daily holdings CSV | Neos |
| Northern Trust | etfs.ntam.northerntrust.com funds list + per-fund CSV/JSON downloads | Northern-Trust |
| ProShares | proshares.com ETF finder + fund pages + official data host | ProShares |
| Schwab | schwabassetmanagement.com product pages + CSV exports | Schwab |
| SPDR | SSGA / State Street public feeds | SPDR |
| VanEck | vaneck.com ETF finder + product pages | VanEck |
| Vanguard | Vanguard product pages + SEC EDGAR N-PORT-P | Vanguard |
| VictoryShares | VCM VictoryShares catalog and product JSON + SEC EDGAR N-PORT-P holdings fallback + Yahoo Finance adjusted-market-price history | VictoryShares |
| WisdomTree | WisdomTree product table + SEC EDGAR N-PORT-P + Yahoo Finance | WisdomTree |
MIT — same as all sibling ETF repositories.
Invesco® and the fund names/tickers referenced here are trademarks of Invesco Holding Company Limited, used under licence by Invesco Ltd. and its affiliates. This is an independent, unofficial tool; it is not affiliated with, endorsed by, or sponsored by Invesco. All data is reproduced from Invesco's own public downloads, public SEC EDGAR filings and Yahoo Finance for research purposes. All other trademarks, including index names, are the property of their respective owners.