Skip to content

Latest commit

 

History

History
112 lines (85 loc) · 8.11 KB

File metadata and controls

112 lines (85 loc) · 8.11 KB

WisdomTree

WisdomTree ETF holdings to Watchlist. A single-file client-side tool reading the generated ./api/wisdomtree static feed (WisdomTree product pages, SEC EDGAR N-PORT-P holdings, Yahoo Finance history) into a searchable ETF/asset-class catalog with per-fund tabs, watchlist, N-PORT upload, CSV/TXT export — the same look, feel, columns and business logic as the sibling applications.

Using Bun

bunx degit daggerok/WisdomTree#main ./12345 && cd $_
bunx serve . -p 1234
open http://0:1234

The published application is available at https://daggerok.github.io/WisdomTree/.

Updating the static WisdomTree data

Run the updater with Bun:

bun test scripts/update-data.test.ts
./scripts/update-data.ts

Run ./scripts/update-data.ts -h (or --help) to print every configuration variable with its default and usage examples.

The Update WisdomTree ETF data GitHub Actions workflow exposes the same settings as manual inputs. All supplied filters use AND logic.

Data sources

Block Source
Catalog (all US WisdomTree ETFs) https://www.wisdomtree.com/investments (WisdomTree product table)
Holdings per fund SEC EDGAR N-PORT-P primary_doc.xml (WisdomTree Trust CIK 0001350487)
Daily history, distributions Yahoo Finance chart API for daily history
Fallback WisdomTree product pages for NAV, expense ratio, yields

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 1Y
  • cagr3y / cagr5y / cagr10y — published annualized 3Y/5Y/10Y figures → CAGR 3Y/5Y/10Y
  • tr3y / tr5y / tr10y — cumulative 3Y/5Y/10Y figures (1 + CAGR)^n - 1TR 3Y/5Y/10Y
  • siAnn — 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

Update controls

Environment variable Default Meaning
MAX_FETCHES all Batch size: with a positive value the updater continues after the committed cursor in api/wisdomtree/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. DGRW USFR WCLD.
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.
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.

Examples

MAX_FETCHES=10 ./scripts/update-data.ts
TICKERS="DGRW USFR WCLD" ./scripts/update-data.ts
AUM="1B:" TER=":0.5" ./scripts/update-data.ts
PERFORMANCE_1Y="15:" ./scripts/update-data.ts

TypeScript

The 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.

Brands table

Бренд Фонды Где брать данные
VanEck (70+) GDX, SMH, MOAT, ESPO, BJK, OIH, REMX vaneck.com ETF finderdaggerok/VanEck
JPMorgan (78) JEPI, JEPQ, JPST, BBJP, JIRE, JGLO am.jpmorgan.com ETF explorerdaggerok/JPMorgan
Schwab (30+) SCHB, SCHX, SCHG, SCHV, SCHD, SCHM schwabassetmanagement.comdaggerok/Schwab
Invesco (245) QQQM, RSP, SPLV, SPHD, SPMO, QQQ invesco.com ETFsdaggerok/Invesco
iShares (400+) IVV, SGOV, DGRO, SOXX, IWM, EFA ishares.comdaggerok/iShares
Fidelity (70+) FTEC, FDVV, FDIS, FCOM, FREL fidelity.com/etfsdaggerok/Fidelity
Amplify (20+) DIVO, IDVO, SILJ, BLOK, IBUY amplifyetfs.comdaggerok/Amplify
Vanguard (80+) VTI, VOO, BND, VUG, VTV, VXUS investor.vanguard.comdaggerok/Vanguard
SPDR (179) SPY, SPYM, SPYG, XLK, XLF, XLV ssga.com fund finderdaggerok/SPDR
WisdomTree (90+) DGRW, USFR, WCLD, DGRW, EFS wisdomtree.comdaggerok/WisdomTree

Sibling applications

Application Data provider Repository
Amplify ETF Holdings to Watchlist Amplify ETFs (Firestore data feed) daggerok/Amplify · published app
iShares ETF Holdings to Watchlist iShares (BlackRock) product workbooks daggerok/iShares · published app
SPDR ETF Holdings to Watchlist SSGA / State Street public feeds daggerok/SPDR · published app
Fidelity ETF Holdings to Watchlist SEC EDGAR N-PORT-P + Yahoo Finance daggerok/Fidelity · published app
Invesco ETF Holdings to Watchlist invesco.com CSV downloads + Yahoo Finance daggerok/Invesco · published app
WisdomTree ETF Holdings to Watchlist WisdomTree product table + SEC EDGAR N-PORT-P + Yahoo Finance daggerok/WisdomTree · published app
JPMorgan ETF Holdings to Watchlist am.jpmorgan.com fund explorer + product-data JSON daggerok/JPMorgan · published app
VanEck ETF Holdings to Watchlist vaneck.com ETF finder + product pages daggerok/VanEck · published app
Schwab ETF Holdings to Watchlist schwabassetmanagement.com product pages + CSV exports daggerok/Schwab · published app
Vanguard ETF Holdings to Watchlist Vanguard product pages + SEC EDGAR N-PORT-P daggerok/Vanguard · published app

License

MIT — same as all sibling ETF repositories.