📊 ETF Flow Monitor

Reference Guide · daily unit creation / redemption flows across 54 ETFs in five markets
Universe
54 ETFs
5 markets, US-listed lines
Metric
Flows
creation / redemption, US$
Window
20 sessions
+ RSI 14d, percentile
Cadence
Daily
Tue–Sat 06:00 SGT

1 · What this tracks

ETF unit creation and redemption flows are a clean read on primary-market demand: when investors put money to work, authorised participants create new units (shares outstanding rises); when they pull money out, units are redeemed (shares outstanding falls). Multiplying the change in units by the price gives the dollar value created or redeemed that day. Run across 54 ETFs spanning US, international, sector, thematic and fixed-income exposures, this is a daily map of where money is rotating between markets — not a single aggregate.

The monitor appends one row per ETF each US trading day, computes a trailing 20-session dollar flow and its historical percentile per ETF, the 14-day RSI, the 1-day price change and AUM, then publishes a dark-theme report to the web plus a Discord summary.

2 · Universe — five markets

MarketETFs
US (5)SPY, QQQ, VTV, VUG, VB
International (16)VGK, EWJ, EWA, EEM, MCHI, EWY, EWT, INDA, EWS, EWM, THD, EIDO, EPHE, ILF, EWZ, EWW
US & Global Sectors (17)SMH, XLK, XLC, XLF, IXG, XLI, EXI, XLV, IXJ, IBB, XLY, XLP, XLE, IXC, XLB, XLU, XLRE
Thematics (12)DRAM, SHLD, KWEB, BOTZ, ROBO, NASA, LIT, ICLN, GLD, GDX, COPX, URA
Fixed Income (4)SGOV, TLH, BND, BNDX

Every line is the US-listed ticker, priced and reported in US$, so flows are directly comparable across markets. There is no aggregate / TOTAL row: summing flows across unrelated markets is not meaningful, so each market is shown and ranked on its own. Creation/redemption works identically for bond funds, so the Fixed Income block reads the same way — though bond-fund flows often move opposite to equity risk appetite.

Two names have shorter histories and are ranked against smaller samples: NASA (Tema Space, Mar-2026) and SHLD (Global X Defense, Sep-2023). On ultra-short Treasury funds like SGOV, RSI is not a meaningful momentum signal — the price is near-flat with a monthly distribution sawtooth — but the flow figure (driven by Δ units, not price) remains valid. Until an ETF has 21 valid 20-session flow observations it shows acc n/21 instead of a flow.

3 · How flows are computed

Daily flow

1-day flow ($m) = Δ(units outstanding) × average(pricet, pricet-1)

Units are in millions and price is in US$, so the flow lands in US$ millions. Using the two-day average price avoids attributing a price move to a flow. On holiday carry-forward sessions, units are unchanged so the daily flow is zero by construction.

Flow 20d

Flow 20d ($m) = Σ daily flows over the trailing 20 sessions

This mirrors the Korea ETF monitor's cumulative-flow approach, set to a 20-session window to match the Bloomberg Flows (US$m) 20-day field.

Percentile

Each ETF's current 20-day flow is ranked against its own history using the Excel PERCENTRANK.INC convention (0–100). The history window runs from 31 Dec 2020 (the seed start) — or the fund's inception if it listed later (e.g. SHLD Sep-2023, NASA Mar-2026) — and grows by one observation each trading day. A reading near 100 means the current 20-day creation is near the most extreme inflow in the ETF's sample; near 0 means the most extreme outflow. The percentile is always per-ETF — never pooled across the universe.

4 · RSI 14d — Bloomberg-consistent

RSI is computed with Wilder's smoothing (the original RSI definition: a simple average seeds the first value, then each subsequent average gain/loss is (prev×13 + today)/14). Validated against the Bloomberg RSI_14D field on the seed history, this reproduces Bloomberg to within ~0.3 RSI points mean error on converged data (the only larger gaps are in the first few weeks of any series, before Wilder smoothing settles — irrelevant once 5+ years of history is in place).

5 · Data sources

FieldPrimaryFallback
Price / 1d chgyfinance daily closeStooq .us daily
Shares outstandingyfinance sharesOutstandingtotalAssets ÷ price → carry last count
Seed historyBloomberg export (EQY_SH_OUT, PX_LAST) → bootstrap_history.pyetf_history.csv

History is seeded once from the Bloomberg file, then the script appends a row per ticker per US trading day and recomputes everything from the stored series — so RSI and flow windows always have full lookback. Units have no clean second source, so a feed outage carries the last count forward (zero flow) rather than recording a phantom one.

6 · Staleness

Because a stale feed shows up as an unchanged value repeating across sessions, the report flags it: a next to a price or shares figure means that value has been unchanged for more than three consecutive sessions — either a stale feed or a genuinely low-turnover fund. Treat a flagged name's daily flow with care.

7 · Reading the report

ColumnMeaning
ETFShort name and ticker
AUM ($bn)Shares outstanding × price, US$ billions
Price ($)Latest US$ close
1d ChgPrice change vs prior session
% 52w HiPrice vs its highest close in the trailing 52 weeks (≤ 0; 0 = at a new high)
RSI 14dWilder RSI; ≥70 overbought, ≤30 oversold
Flow 20d ($m)Trailing 20-session creation (+) / redemption (−)
PercentileWhere the 20d flow sits vs the ETF's own history
Sh out (m)Units outstanding, millions

Every column is click-sortable; each market table defaults to AUM descending. Green is net creation / price up / oversold RSI; red is net redemption / price down / overbought RSI. There is no aggregate row by design.

8 · Running it

9 · Caveats

ETF Flow Monitor · creation/redemption measured in US$, 20-session cumulative · percentile per-ETF · RSI 14d Wilder.
Generated reference guide — methodology may evolve as data sources are hardened.