findata-aggregator

source health · market data · accounts · signals · API docs

Source Health

Data typeProviderStatusCalls todayPriority
Auto-refreshes every 60s. No account needed — this uses only the global API key held by the dashboard server.

Symbol Lookup

Index structure

Nightly snapshot of major indices: % from 52-week high and ATH, breadth (advance/decline, % above SMA50/200), and a MarketCap-proxy concentration read. Cache only — never walks 500 tickers live. SPX uses the seeded S&P 500 list; SXXP is the Europe starter list, not official Stoxx 600. Concentration is a cap proxy, not licensed index weights.

Top movers

From GET /movers for composition indices (SPX / SXXP).

Gainers

#Symbol1d %

Losers

#Symbol1d %

History

% from ATH and, for composition indices, % advancing — from prior nightly snapshots.

Live Squawk Feed

Real-time-ish headlines from FinancialJuice's WebSocket stream (server-side, always-on ingestion — see server/src/financialJuiceStream.js). Free tier: news and economic-calendar events delayed by ~10 minutes. This panel reads the resulting cache, it never opens its own connection.

Economic Calendar

WhenEventCountryActualForecastPreviousImportance

My Alert Rules

Get notified when a squawk headline matches a keyword, category, and/or minimum importance. Requires login (My Account tab). At least one filter is required per rule.

LabelKeywordCategoryMin importanceEnabled

Triggered Alerts

Log in

Email and password. New accounts are created on the Admin tab (master key required).

Advanced: log in with an account API key

Log in above to manage your watchlist, entitlements, and dashboard layout.

Buy / Hold / Sell Signals

Not financial advice. Heuristic decision-support only, computed from cached fundamentals, news sentiment, social sentiment, and price momentum. Requires login (My Account tab).

Data Explorer

Browse what's actually cached in Postgres, rendered nicely instead of as raw database tables. Read-only — nothing here ever triggers a live provider call or creates new instrument rows, it only shows you what's already been fetched. Master key only (Admin-tier).

Price History

to
DateOpenHighLowCloseAdj. CloseVolumeSource

Fundamentals

Derived ratios (by fiscal period)

Metric

Raw fields (by fiscal period)

Field

News & Squawk Feed

Alt-Data

Screener & Movers

Nightly batch-job output — never triggers a live scan, this only reads whatever the last screener/movers run already computed.

Workbench — files in, files out

This is the human-facing door on the same API everything else uses. Pull history for one or many tickers, pick the columns that actually exist in our providers, download Excel / CSV / JSON / Parquet — or drop in a file of your own, map its columns, and optionally join it onto a pull by date. Master-key tier, no account login required. Does not write imported files into the database.

1. What to pull

Commas, spaces, or newlines. ETFs like SPY/QQQ work with asset class left on equity.

2. Columns we actually have

Loading catalog…

3. Import a file (optional)

CSV, JSON, Parquet, or Excel (.xlsx). Map the date column — and a ticker column, or assign one symbol — then join onto the pull or just inspect it.

Drop a file here, or click to choose. Max 15 MB.

4. Preview / download

Admin

Master-key-only room: mint accounts, inspect quota/cache, and manage the rolling Parquet snapshots the scheduler writes every 30 minutes on weekdays. Nothing here is visible to an account key — same auth tier as Data Explorer.

Create Account (insider-only)

This form re-enters the master API key (AGGREGATOR_API_KEY from .env) as a deliberate second check — even though this dashboard's server already holds that key internally, creating an account still requires whoever is sitting at this screen to type it in correctly. If the key is wrong, the account is not created — node-api rejects it exactly like a direct POST /accounts call with a bad key would. This keeps the number of accounts limited to people who actually know the master key, not just anyone who can open this Admin tab.

Provider Quota / Usage

ProviderWindowUsedLimit

Cache Stats

TableRowsOldestNewest

Parquet exports

Files the rolling snapshot job writes under EXPORT_DATA_DIR (Hive folders: modality / date / file). Live refresh is still intraday + news + social; each run also snapshots cached EOD, fundamentals, screener, and a unified PIT report (unified_pit = latest cross-section; unified_pit_history = last 60 trading days) joining technicals + fundamentals (filed_at cutoff) + news/social sentiment for the current security set (dashboard instruments, else the screener universe). Click a column header to sort. Delete is permanent; there is still no automatic retention policy.

Session & System Info

Snapshot of the current browser session and this dashboard server — paste this when reporting a bug.


    

Compile Report

A raw dump of every cached row this aggregator holds — for one symbol (every modality: price, fundamentals, news, alt-data, predictions, sentiment, screener/movers) or for one squawk theme (category/keyword/importance across the squawk feed + economic calendar). Every row, every column, verbatim, capped to a safe payload size below. Built to paste straight into an agent's context to look for gaps/optimization opportunities across the pipeline.


    

Quick Endpoint Tests

One button per documented endpoint, pre-filled with a working example. Buttons marked (fill in) only populate the Manual API Tester below and require you to fill in a sensitive field yourself (e.g. the master key) before pressing Send — everything else sends immediately and jumps you to the result.

Manual API Tester

Send any request through this dashboard's proxy with full control over auth headers. Useful for reproducing an issue exactly, or pressing a button above to pre-fill this. Set DEBUG_EXPOSE_KEYS=true in .env and optional DEBUG_ACCOUNT_KEY / DEBUG_DASHBOARD_KEY in .env or .env.providers to auto-fill the key fields below on tab open.


    

Client Request Log

Every request this browser tab has made through the dashboard proxy (most recent last). Click a row to expand its full request payload and response body. Copy this whole log when something looks wrong.

TimeMethodPathStatusmsError