Prior-art research for the TradingView-style asset-explorer dashboard: which existing data platform + charting product to adopt so a user can click any equity or commodity, see its market data, and overlay fund activity. No build — every option disqualified on a stated reason.
Two pass/fail gates eliminate most vendors: G1 fund license (DB-store + internal display + non-display engine, no redistribution upcharge) · G2 real gold/silver/copper/oil OHLCV.
| Vendor | G1 License | G2 Commodity | Covering price | Verdict |
|---|---|---|---|---|
| FMP | CONDITIONAL licensing agreement |
PASS 4 classes + 1m/5m intraday |
~$149/mo | ★ RECOMMENDED |
| Twelve Data | AMBIGUOUS DB-store not explicit |
PARTIAL spot only, no futures |
$1,099/mo | Fallback |
| EODHD | CLEANEST explicit DB-store |
FAIL copper/oil uncharteable |
€399/mo | equities-only |
| Databento | live=exch reg months of CME registration |
STRONGEST exchange COMEX/NYMEX futures |
~$6,500/mo | Phase-2 |
| Polygon / Massive | business-tier | futures | ~$4,000/mo | ✗ no LSE/TSX |
| Alpha Vantage | personal-only | no intraday | TBD | slow onboarding |
| Finnhub · Tiingo · Intrinio | ToS blocks / — | no commodities | — | ELIMINATED |
Read: no single vendor is license-clean and commodity-strong and cheap. FMP wins coverage-per-dollar; EODHD is the cleanest license but can't chart copper/oil; Databento is the "correct" data at 40× the cost + a multi-month license runway — right only for execution-grade futures, which a visualization surface doesn't need.
Must consume OUR Supabase data via a custom datafeed adapter · overlay fund activity · ship built-in indicators (MA/RSI/MACD/Bollinger) · fund-commercial license.
| Library | License | Datafeed adapter | Fund overlay | Indicators | Score |
|---|---|---|---|---|---|
| KLineChart | Apache-2.0 · $0 | EXCELLENT — setDataLoader | YES | 30+ ✓ | ★ 4/5 |
| Highcharts Stock | $185/seat/yr | GOOD — series API | YES flags | 40+ ✓ | 4/5 · fallback |
| Advanced Charts | free tier excludes internal | EXCELLENT (gold std) | YES | 100+ ✓ | license-blocked |
| Lightweight Charts | Apache-2.0 · $0 | GOOD (manual) | YES | NONE | 3/5 |
| ApexCharts / ApexStock | relicensed · Pro $349/yr | WEAK — no adapter | PARTIAL | 18+ | 2.5/5 |
Read: KLineChart is the only lib that is free + has a real datafeed adapter + ships indicators + overlays. The one more-capable option (Advanced Charts) is license-blocked for a private fund dashboard. Lightweight Charts is clean but forces us to compute every indicator. Risk: KLineChart v10 setDataLoader is beta → pilot v10, keep v9-stable as the fallback.
Picking FMP dissolves the copper/oil problem — it carries them as spot-with-intraday, sidestepping both ETF roll-drag and the exchange-futures license cliff.
KLineChart ← Supabase signals.market_candles(ticker, d, o, h, l, c, v, source)
// KLineChart v10 setDataLoader (recommended; v9 fallback = applyNewData + updateData) setDataLoader({ getBars({ symbol, period, from, to }, callback): → SELECT d,o,h,l,c,v FROM signals.market_candles WHERE ticker = symbol.ticker AND d BETWEEN from AND to ORDER BY d ASC → callback(rows.map(r => ({ timestamp: Date.parse(r.d), open:r.o, high:r.h, low:r.l, close:r.c, volume:r.v }))) subscribe({ symbol, period }, callback): → setInterval(POLL_MS): SELECT … ORDER BY d DESC LIMIT 1 // delayed poll (15-min OK) unsubscribe(): clearInterval })
| Load-bearing claim | Tier | Note |
|---|---|---|
| Vendor license quotes (Finnhub/Tiingo/EODHD/Databento/TwelveData/Intrinio) | deep-read | primary ToS/pricing fetched |
| FMP pricing + LSE/TSX + commodity-intraday + adjustment | snippet | ⚠ site 403'd — VERIFY AT SIGNUP |
| FMP Data Display & Licensing Agreement terms/cost | not-researched | ⚠ vendor contact — the G1 gate |
| Chart licenses (KLineChart / Highcharts / Advanced-block / ApexCharts relicense) | deep-read | LICENSE files fetched |
| Datafeed API shapes (TradingView / Lightweight / KLineChart) | deep-read | official docs |
| Commodity ETF drag (GLD 0.40%, CPER 1.06%, USO contango) | deep-read | CME/issuer pages |
Gate on the headline: FMP is recommended pending the two starred rows. If its agreement disallows our DB+engine use, or LSE/TSX/intraday don't confirm → fall to Twelve Data Enterprise (spot-only) or a two-vendor split. The KLineChart pick has no open gates.