- Point-in-time filtering
- Price windows
- Earnings calendars
- Filing and news visibility
- Agent replay
- Leakage prevention
The scenario clock
Each scenario has its own clock defined bystart_date, end_date, and current_date (the “as-of now” point). For historical-context scenarios, the clock is anchored to a plausible historical analog era for the theme. For future-branch scenarios, the clock starts on or after the forecast as-of date and runs forward.
In both cases, the generated issuer values are synthetic; the dates are labels for ordering, visibility, and replay, not claims about what really happened on that calendar date.
A scenario’s
public_summary exposes date_semantics, path_mode, and path_mode_description so agents can reason about the clock correctly. See GET /scenarios/{id}.Visibility and leakage control
David tracks a release date for every piece of generated data. Artifacts (news, filings, notes, events) carry both adate and a visible_from timestamp. When you pass an as_of date, David returns only what would have been visible at that point, nothing from the future leaks in.
This is what makes leakage-free backtesting possible: an agent stepping through the scenario day by day sees exactly the information set a real participant would have had.
Date parameters
Endpoints accept ISOYYYY-MM-DD dates through a consistent set of parameters:
| Parameter | Meaning | Where |
|---|---|---|
as_of | Point-in-time cutoff, return only data visible on or before this date. | News, events, snapshots, estimates, metrics snapshot, interest-rate snapshot |
start_date / end_date | Inclusive window for time-series data. | Prices, macro, news, events |
report_period_gte / report_period_lte | Filter statements by fiscal report period. | Financial statements |
filing_date_gte / filing_date_lte | Filter by filing date. | Insider trades |
report_period_gte / report_period_lte | Filter holdings by report period. | Institutional holdings |
Best practices
- Always pass
as_ofin agent loops to enforce point-in-time visibility. - Use windows (
start_date/end_date) instead of pulling full history and filtering client-side. - Don’t treat dates as real. A 1993 date in a historical-context scenario is a scenario-clock label, not a claim about 1993 markets.
Next steps
Point-in-time agents
A leakage-free backtest loop, step by step.
Prices API
Windows, snapshots, and market snapshots.