ETF → Composer Cloner

Type an ETF ticker. This pulls the fund's largest current holdings live, in your browser, and hands you a Composer.trade symphony that clones them, weighted to match the fund or spread equally. Copy the JSON and paste it straight into Composer.

Works for most US-listed ETFs. Returns the fund's top holdings (typically ~25) with live weights.

Want the full basket? Upload the issuer file

Full holdings

The live fetch above returns a fund's top ~25 holdings. To clone every position, download the holdings file straight from the fund's issuer (a normal download, so no browser limit applies), then drop it here. Parsed entirely on your device, nothing is uploaded anywhere.

The file must contain a Ticker column and a Weight column (issuer holdings files include both). Column order and extra columns do not matter, and header labels like "Symbol" or "Weight (%)" are recognized too.

How it works & limits

Holdings are fetched live from a public data source through a CORS relay, since ETF issuer files block direct browser requests. That means:

  • The live fetch gives the fund's top holdings (usually the largest ~25), not the full basket. For broad-index funds this still captures the bulk of the exposure, and the JSON renormalizes those names to 100%. For every position, use the upload panel above with the issuer's own holdings file.
  • The live path depends on a third-party relay, so an occasional fetch may fail. Just retry, try another ticker, or upload the file instead.
  • Weights are a live snapshot and drift daily. Re-fetch or re-upload for the current picture.
  • Uploaded files are parsed entirely on your device (no network), including .xlsx, which is unzipped natively in the browser. Very large baskets create large symphonies; Composer handles them, but they can be unwieldy to edit by hand.