Viska Research · Decision-Grade · T-Deep

Market-Data + Charting Adopt-Stack

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.

Author ViskaRes Date 2026-07-01 Board #9 Council · child-of #72 Lanes 4 (10 data + 6 chart) Requester ViskaStrat
◆ Recommended Stack
Market Data
FMP Ultimate
~$149/mo · gold/silver/copper/oil with intraday · US/LSE/TSX
Charting
KLineChart
$0 · Apache-2.0 · datafeed adapter · 30+ indicators · overlays
Gated on 2 pre-signup checks (T-deep honesty): (1) execute FMP's Data Display & Licensing Agreement — DB-store + engine use, terms unpublished; (2) direct-verify FMP pricing / LSE-TSX / commodity-intraday (their site returned HTTP 403 to our fetches → FMP facts are secondary-sourced). Chart pick has no open gates.

1 · Data-Platform Matrix — Gate then Score

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.

VendorG1 LicenseG2 CommodityCovering priceVerdict
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.

2 · Charting-Product Matrix

Must consume OUR Supabase data via a custom datafeed adapter · overlay fund activity · ship built-in indicators (MA/RSI/MACD/Bollinger) · fund-commercial license.

LibraryLicenseDatafeed adapterFund overlayIndicatorsScore
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.

3 · Commodity-Instrument Mapping

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.

Gold
XAU/USD · or GLD
Clean OHLCV on any vendor; spot avoids 0.40% ETF drag.
Phase-2: GC1! futures
Silver
XAG/USD · or SLV
Same as gold; SLV needs 0.90× oz-conversion if displaying oz.
Phase-2: SI1! futures
Copper
FMP HGUSD (spot+intraday)
Avoids CPER's 1.06% drag + futures-index tracking, and the futures license.
Phase-2: HG1! continuous
Oil (WTI)
FMP CLUSD (spot+intraday)
USO has severe contango/roll drag — avoid as a price proxy.
Phase-2: CL1! continuous

4 · Datafeed-Adapter Contract

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
})
⚠ Schema gap for ViskaDB: market_candles.d is a DATE (EOD) — the current seam is daily-only. Intraday (1m/5m) needs a timestamp/interval column, or a sibling market_candles_intraday table. This is the one schema change the dashboard forces.

5 · Cost + Source-Coverage Ledger

Now
~$149/mo
FMP Ultimate + KLineChart $0 + one-time license clearance
Fallbacks
TwelveData $1,099 · Highcharts $185/yr
if FMP license/pricing fails verify
Phase-2
Databento $199 hist.
only if execution-grade futures needed
Load-bearing claimTierNote
Vendor license quotes (Finnhub/Tiingo/EODHD/Databento/TwelveData/Intrinio)deep-readprimary ToS/pricing fetched
FMP pricing + LSE/TSX + commodity-intraday + adjustmentsnippet⚠ site 403'd — VERIFY AT SIGNUP
FMP Data Display & Licensing Agreement terms/costnot-researched⚠ vendor contact — the G1 gate
Chart licenses (KLineChart / Highcharts / Advanced-block / ApexCharts relicense)deep-readLICENSE files fetched
Datafeed API shapes (TradingView / Lightweight / KLineChart)deep-readofficial docs
Commodity ETF drag (GLD 0.40%, CPER 1.06%, USO contango)deep-readCME/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.

ViskaRes · research/market-data-charting-adopt-2026-07-01/REPORT.md · commit ac70e20
Per-option evidence: sources/T1–T4 · Wiki: [[market-data-charting-adopt-stack]] · Method: T-deep, source-coverage ledger
Constraints locked by operator 2026-07-01: 15-min delayed OK · our-Supabase + adapter · cost-what-covers