Screen ETFs (FinBridge DB)
screen_etfsScreen exchange-traded funds in the local finbridge database on the things that actually distinguish an ETF: premium/discount to NAV, fund size (AUM), the index it tracks, price momentum, and — for US funds — the audited calendar-year TOTAL return from the fund's own prospectus.
⚠These funds are excluded from screen_companies by construction: that tool ranks on annual financial statements, which funds do not file.
Coverage differs by market and the response says so per row:
KR (1,170 listed ETFs): NAV, AUM (net assets, KRW), listed units and the tracked index come from the same daily feed as prices, 2020-01-02 onward. premium_pct is close/NAV-1 computed on the SAME day (mixing dates would be meaningless).
US (5,868 ETFs): no NAV or AUM source exists that we may redistribute, so those fields are null. Instead total_return_pct carries the fund's audited calendar-year total return (distributions reinvested) from SEC prospectus data — the only distribution-inclusive number available.
⚠ret_20d / ret_120d are PRICE returns in every market: ETF distributions are not in the daily bars, so income funds look worse than they were. For US funds compare against total_return_pct to see the gap. ⚠aum is in the listing currency (KRW today). Do not rank across markets on it. ⚠total_return_pct is pinned to ONE calendar year across all rows (reported as total_return_year), because prospectus refresh dates differ per fund — ranking a 2024 figure against a 2025 one would be a silently wrong table.
Args:
market: 'kr', 'us', or 'all' (default)
min_aum: minimum net assets in listing currency (KR only; e.g. 100000000000 = 1,000억)
max_abs_premium_pct: keep funds trading within this |premium| of NAV, e.g. 0.5
min_premium_pct: keep funds at or above this premium (negative values find discounts)
min_price, min_volume: liquidity floors (vol_avg20 is the 20-session average)
index_contains: substring of the tracked index name — 'TR' finds total-return index trackers, '코스피' finds KOSPI trackers
name_contains: substring of the fund name or ticker
total_return_year: calendar year for total_return_pct; omit for the best-covered year
sort_by: aum | premium | abs_premium | ret_20d | ret_120d | ret_250d | volume | total_return (default aum); order: 'asc'|'desc' (default desc)
limit: 1-100 (default 20); response_format: 'markdown'|'json'
Returns: {count, market, total_return_year, sort_by, order, rows: [{market, symbol, name, as_of, close, nav, premium_pct, aum, index_name, ret_20d, ret_120d, vol_avg20, total_return_pct, total_return_period}]}
Examples:
Large KR ETFs trading close to fair value: {market:'kr', min_aum: 100000000000, max_abs_premium_pct: 0.3, sort_by:'aum'}
KR ETFs at the deepest discount to NAV: {market:'kr', sort_by:'premium', order:'asc'}
KR trackers of a total-return index: {market:'kr', index_contains:'TR', sort_by:'aum'}
US ETFs by audited total return: {market:'us', sort_by:'total_return'}
Use when: choosing or comparing funds. Don't use for stocks (screen_companies) or for a single fund's price history (get_stock_prices). Errors: 'database has not been built yet' — ingest has not run; an empty result is not an error (count 0).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows, 1-100 (default 20) | |
| order | No | Sort direction (default desc) | desc |
| market | No | Market: 'kr', 'us', or 'all' (default) | all |
| min_aum | No | Minimum net assets in listing currency (KR only; US is null) | |
| sort_by | No | Sort key (default aum) | aum |
| min_price | No | Minimum last close in listing currency | |
| min_volume | No | Minimum 20-session average volume | |
| name_contains | No | Substring of the fund name or ticker | |
| index_contains | No | Substring of the tracked index name ('TR' for total-return indices) | |
| min_premium_pct | No | Keep funds at or above this premium in percent (negative finds discounts) | |
| response_format | No | 'markdown' for a table, 'json' for compact output | markdown |
| total_return_year | No | Calendar year for total_return_pct; omit for the best-covered year (the response says which) | |
| max_abs_premium_pct | No | Keep funds within this |premium to NAV| in percent |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| rows | Yes | ||
| count | Yes | ||
| order | No | ||
| market | Yes | ||
| sort_by | No | ||
| total_return_year | No |