Data ingest
Every data source NVTrader can pull from, with adapter status and what each one feeds. Adapters are pluggable — same Bar/NewsItem/Filing schema across providers — so a sleeve config can switch from yfinance to Polygon without code changes.
Sources
| Provider | What it feeds | Free tier | Status |
|---|---|---|---|
| yfinance | EOD bars (daily back to 1980+), 1m intraday rolling 60d | unlimited | live |
| Alpaca data | Real-time + historical bars, options chain, account data | via your Alpaca account | live |
| Webull | Live snapshots, orders, positions | via your Webull OpenAPI account | UAT pending |
| Finnhub | Fundamentals · news · analyst consensus | 60 req/min | live |
| SEC EDGAR | 10-K / 10-Q / 8-K filings | no key, polite UA only | live |
| Tavily | Open-web search for DeepResearch | 1000 calls/mo | live |
| Polygon | Institutional bars + minute-resolution history | paid | optional |
| Alpha Vantage · IEX · Databento · SerpAPI | various | varies | optional |
Picking a provider
Each sleeve config (configs/sleeves/*.yaml) names a primary data provider for bars and a fallback. The default is yfinance + Alpaca data as fallback. The default for fundamentals is Finnhub; news = Finnhub + Tavily; filings = EDGAR.
To switch a sleeve to Polygon for bars:
data:
bars:
primary: polygon
fallback: yfinance
fundamentals:
primary: finnhub
filings:
primary: edgar
Reading the ingest page
The Data page (/data.html) shows for each linked provider:
- Last successful pull — UTC timestamp.
- Rate-limit headroom — calls remaining in the current window if the provider exposes it.
- Latency p50/p95 — measured over the last 100 calls.
- Error rate — last 24h.
- Per-endpoint roll-up — for the providers with multiple endpoints (Finnhub fundamentals vs news vs consensus).
Adding a provider
Subclass traderspace.data.base.DataAdapter. Implement bars(symbol, start, end, interval), plus whichever of fundamentals · news · filings apply. Register via src/traderspace/data/__init__.py. Write a setup playbook at skills/setup/data/<id>.md. Done — the Setup Wizard and the sleeve config layer pick it up automatically.
REST surface
| Verb | Path | Purpose |
|---|---|---|
| GET | /api/data/providers | Active providers + per-endpoint health. |
| GET | /api/data/bars?symbol=NVDA&interval=1d&range=1y | Adapter-normalized OHLCV. |
| GET | /api/data/news?symbol=NVDA&limit=20 | Latest news. |
| GET | /api/data/filings?symbol=NVDA | Latest filings. |