Jump to the Quickstart
Pick a scenario and pull your first prices in under five minutes.
Why synthetic data
Real market history is a single, finite, and heavily-studied path. That makes it a poor foundation for training and evaluating financial AI agents:- Leakage. Models memorize the one real future instead of reasoning about it.
- Scarcity. There is only one 2008, one COVID crash, one dot-com bust.
- No ground truth. You can never see the hidden state that caused a price move.
David is built for financial agents: backtesting harnesses, research copilots, RL training loops, and evaluation suites. It is not a feed of real, licensed market data.
What you get
David ships a complete market-data surface across a single, consistent scenario:Stock prices
Daily OHLCV with adjusted close, plus point-in-time and market-wide snapshots.
Financial statements
Income statements, balance sheets, and cash-flow statements, normalized, as-reported, and segmented.
Financial metrics
Valuation, margin, return, and leverage ratios, plus a market-wide metrics snapshot and screener.
Earnings & guidance
Consensus, actuals, surprises, earnings calendars, KPI guidance, and non-GAAP reconciliations.
SEC-style filings
10-Q / 8-K filings and item-level text, linked back to the events that generated them.
News & analyst notes
Company and market news with sentiment, entities, and event lineage.
Insider & institutional
Form 4–style insider trades, 13F-style institutional holdings, and index-fund constituents.
Macro & rates
Macro tape, central-bank policy rates, corporate actions, and an event timeline.
How it works
1
Choose a scenario
David generates and curates the scenarios. Browse the library and pick a
scenario_id that fits your task.2
Query the world
Pass that
scenario_id to any data endpoint, /prices, /financials, /news, /earnings, and so on.3
Reason point-in-time
Use
as_of, start_date, and end_date to enforce visibility. David never reveals data before its release date, so agents can’t peek at the future.Design principles
- Deterministic. The same seed and configuration always produce the same world, bit for bit. Scenarios are reproducible and replayable.
- Internally consistent. Accounting identities hold, OHLC invariants hold, prices react to earnings, and news repeats the numbers in the structured records. Every scenario ships a validation report.
- Point-in-time first. Data carries release dates and visibility windows so you can build leakage-free backtests.
- Familiar. Endpoints, parameters, and response shapes follow real market-data conventions, so existing tooling ports over with minimal changes.
Next steps
Quickstart
Authenticate, pick a scenario, and pull your first prices.
Understand scenarios
The core abstraction behind every David response.
Authentication
API keys, accounts, and rate limits.
API reference
Every endpoint, parameter, and response field.
Python SDK
Install
david-data and pull data in a few lines.