Platform · Data layer

Where the data comes from,how it moves, and whathappens when it breaks.

Why traders trust Convexity's data, uptime, and security. 100+ live data feeds across 20+ named upstream sources, including market tape, fundamentals, fund look-through, issuer segments, and events. No synthetic data, no black boxes.

7Primary sources, 9 feeds, deduped
394Tables, unified schema
122M+Rows, indexed
nightlyRefresh, + minute streams

Data sources

Data you can trust.

Every number in Convexity traces back to a named, auditable source: SEC EDGAR, FRED, Financial Modeling Prep, USPTO, FINRA, Greenhouse, congressional financial disclosures. Parsed, normalized, queryable, cited.

FMP LIVE TAPE
THE FOUNDATION

Market data, fundamentals, and business segments

FMP is not a narrow US-equity quote pipe. It brings global exchange coverage, ETF and mutual fund structure, indexes, FX, crypto, commodities, statements, estimates, calendars, transcripts, and product/geographic revenue segmentation into one normalized upstream.

REST + WSprimary channel
multi-assetquotes + bars
segmentsproduct + geography
AAPLiPhone / services / geography revenuesegments
SPYholdings, sector weights, country exposurefund look-through
EURUSDFX quote + intraday barscross-asset
BTCUSDcrypto quote, chart, and news lanelive
Market tape

Asset classes stay separate.

Equities, ETFs, mutual funds, indexes, FX pairs, crypto pairs, and commodities carry symbol type, exchange, source, and cadence metadata.

equitiesfundsindexesFXcryptocommodities
Company layer

Statements, estimates, profiles.

Income statement, balance sheet, cash flow, ratios, growth, DCF, executives, ratings, and price targets.

Fund layer

Look through the wrapper.

ETF and fund profiles carry holdings, country allocation, sector weights, asset mix, issuer, expense, and AUM fields.

Segment layer

Revenue by product and geography.

Reported segment names stay intact, so services, China sales, data center revenue, and other slices can be queried separately.

Event layer

Calendar and ownership feeds land as rows.

Earnings, IPOs, dividends, splits, transcripts, market news, 13F ownership, insider trades, and congressional disclosures retain dates, IDs, and source URLs.

SEC EDGAR

Three products, one filing pipeline.

Direct EDGAR ingestion with a ~30 second lag from publication. The same parser feeds insider Form 4, 13F whale positions, and 8-K material events into three separate domain tables.

  1. Insider & Congress STOCK ActForm 4 + House & Senate Financial Disclosure PTRs, clustered
    PLTR Schultz K · CEO · +$892KNVDA Hartwell C · House · calls $500K
    ~30s lag · 5y backfill
  2. 13F whale positioningHedge fund positions + ETF holdings flow
    Scion opened BABA · 1.2% AUMTiger trimmed META · −18%
    quarterly · 70 funds · 183k pos
  3. 8-K material eventsMaterial events for the Russell 3000 + tracked tickers
    OKTA 8-K · breach disclosureWMT 8-K · CFO departure
    3×/day sync · Russell 3000
USPTO · GREENHOUSE · FRED

And the supporting cast.

Three independent upstreams keeping the IP, hiring, and macro layers honest. Each on its own sync cadence with its own freshness badge in-app.

  1. USPTO patent filingsGrants + applications tagged to issuer via PatentsView
    AAPL · 42 grants · AR/VR clusterLLY · GLP-1 oral formulation
    weekly upstream · 03:00 UTC sync
  2. Hiring & layoffsGreenhouse ATS boards + NY-state WARN digests
    NVDA ML eng · Greenhouse · +48 reqsWARN NY · weekly digest
    daily · engineering as leading indicator
  3. FRED macro & Fed policyFed Funds, CPI, UNRATE, T10Y2Y, M2 + 38 more
    SOFR 5.33% · unchanged10Y yield 4.58% · +6 bps
    40+ series · daily 04:35 UTC
How it moves
  1. UpstreamREST · WS · EDGAR · flat files
  2. Sync job~200 cron entries · try/finally log
  3. Postgres333 tables · ticker FK spine
  4. DataEnvelopedata · data_as_of · sync_status
  5. Every surfaceterminal · Vexa · API · AI cites

How deep each feed actually goes.

The number of tickers, the history depth, and the refresh cadence per source, checked against the live ledger on the date printed below.

SourceUniverseTickersHistoryRefresh
FMP market data + fundamentalsConfigured equity/ETF core + multi-asset upstream11,329 registry · 9,806 quoted core5 yr bars · varies by assetREST + WS + 2-min poll
SEC EDGAR Form 4All US filers5,7265 yr backfill · filings to 2002~30s lag
SEC EDGAR 8-KRussell 3000 + watchlist1,958since Dec 20253×/day sync
13F whale positionsManager-side, position-mapped70 funds · 267k pos17 qtrquarterly
Congress STOCK Act PTRsUS House + Senate members538 tracked · 137 with trades3 yr4×/day sync
USPTO patentsS&P 500 issuers with mapped assignees43 issuers12 mo windowweekly upstream · daily sync
Greenhouse ATS + WARN layoffsCurated public-company boards + NY WARN64 issuers · 2,338 WARN cos7 yrdaily
FINRA short volumeAll US-listed equities13,349since Jul 2026daily
FRED macroUS macro, rates & credit95 seriessince 1966daily 04:35 UTC

Universe and ticker counts measured against the live data_sync_log on the most recent successful run for each source. Numbers move as upstreams add coverage. These are the primary feeds; the full source registry runs 100+ sync jobs across 20+ upstream providers.

Every row is queryable, citable, joinable.

Not a screenshot. Not a chart-only feed. Each source lands in a normalized SQL table with stable column names, a foreign key to the ticker registry, and a link back to the upstream filing or print. You can join insider trades to options flow to congressional PTRs in a single query.

A row from insider_trades, fetched via the REST API:

Full schema docs: /docs →

GET /api/v1/insider/PLTR/recent
# DataEnvelope[InsiderTrade]  --  one of 24 rows
{
  "data": [{
    "id": "sec_4_a1b2c3d4",
    "ticker": "PLTR",
    "insider_name": "Schultz Karen",
    "insider_role": "CEO",
    "transaction_type": "P",  # open-market buy
    "transaction_date": "2026-05-22",
    "shares": 42000,
    "price": 21.24,
    "value_usd": 892080,
    "cluster_id": "clust_8e7f",  # 3-insider, 48hr
    "cluster_score": 0.92,
    "is_10b5_1": false,
    "filing_url": "https://www.sec.gov/…"
  }, …],
  "meta": {
    "data_as_of": "2026-05-24T07:32:47Z",
    "sync_status": "healthy",
    "source": "sec_edgar_form4"
  }
}
SAME ENVELOPE OVER MCPget_insider_trades {"symbol": "PLTR"} → data + metaMCP server →

What it would cost a la carte.

Public list prices for the closest paid vendor of each feed. We bundle them all and charge $29/mo. Numbers are annual per-seat sticker price, not what a savvy buyer negotiates.

Bloomberg TerminalInsider, 13F, macro, quotes – bundled
$31,980/yr92× Convexity
LSEG WorkspaceQuotes, fundamentals, news
$22,000/yr63× Convexity
Quiver QuantitativeCongressional, lobbying, alt-data API
$750/yr2.2× Convexity
Unusual WhalesOptions flow, dark pool, insider
$600/yr1.7× Convexity
FMP UltimateMulti-asset quotes, fundamentals, holdings
$1,800/yr5.2× Convexity
Convexity ProAll feeds bundled · AI on top
$348/yr

Bloomberg single-terminal list rate as widely reported after the 2025 increase,retrieved 2026-07-22; LSEG Workspace (formerly Refinitiv Eikon) from typical single-user quote, other vendor sites checkedretrieved 2026-07-08. We are not claiming feature-parity with a Bloomberg terminal – we are claiming the data layer underneath it costs an order of magnitude less when you build it instead of license it.

Every row knows when it landed.

Every dataset writes to a sync_log on each refresh: last_sync_at, status, rows_added, error. Both the UI and the AI agent surface freshness, so you know whether a "stale" alert means stale data or stale opinion.

And when an upstream breaks, the run logs failed with its error string, the badge flips, and the surface keeps serving the last good rows with their date. Empty stays empty. Nothing is synthesized to cover the gap.

Sync status is visible on every freshness badge across the app.

DATA_SYNC_LOG · LEDGER snapshot 2026-09-02 · live in-app
data_sync_logreal rows, snapshot 2026-09-02 · the live table backs every freshness badge in-app
SourceLast runRowsStatus
quotes_sync60s ago+5,296partial
fred_sync62m ago+661success ✓
politician_sync3h ago+5,637success ✓
sec_edgar_form44h ago+117success ✓
finra_short_volume17h ago+110,365success ✓
ats_jobs18h ago+11,088partial
institutional_holders22h ago+0partial
patent_sync27h ago+43success ✓
A +0 success is a poll that found nothing new; a failed run keeps its layer on last-good data with the date showing. Figures on this page generated from the live log, snapshot .

See it running.

The same tables that power the signal feed power the AI agent. Both cite. Both stay fresh. Real-time uptime is published on the public status page, and the security posture is documented at /security, with account erasure exercised against real Postgres in CI.

Founder pricing holds for life while the waitlist is open.