Fundamentals
oneapi.finance exposes two flavors of fundamentals:
- Snapshot metrics at
GET /v1/statistics— a single point-in-time row of the most-watched ratios and figures. - Statement-level history (income, balance, cash flow) — coming as
GET /v1/financialsin a future release. The data model is in the schema today (fundamentals_statements); the endpoint is not yet public.
This page documents both layers.
Snapshot metrics
The fields exposed by /v1/statistics map 1:1 to columns in
fundamentals_snapshot. Field-by-field origin and refresh policy:
| Field | Source | Refresh | Notes |
|---|---|---|---|
marketCap | Computed (price × sharesOutstanding) | Per quote pull (~15 min) | Always derived, never imported. |
enterpriseValue | Computed (marketCap + debt - cash) | Daily | Requires balance-sheet data; null pre-IPO. |
trailingPe | Computed (price / EPS_TTM) | Per quote pull | Negative if EPS is negative. |
forwardPe | Aggregated analyst consensus | Weekly | Sparse for non-US small caps. |
pegRatio | Computed | Weekly | Uses 5-year forecast growth. |
priceToSales | Computed | Daily | Uses TTM revenue. |
priceToBook | Computed | Daily | Uses most recent book value. |
profitMargin | Income statement | Quarterly (filing day) | TTM net income / TTM revenue. |
operatingMargin | Income statement | Quarterly (filing day) | |
roe | Computed | Quarterly | TTM net income / average equity. |
roa | Computed | Quarterly | TTM net income / average assets. |
revenueTtm | Income statement | Quarterly | Trailing twelve months. |
eps | Income statement | Quarterly | Diluted, TTM. |
ebitda | Income statement | Quarterly | Computed when not directly reported. |
beta | Computed | Weekly | 5-year monthly returns vs S&P 500. |
fiftyTwoWeekHigh | Time-series | Daily | Walking 52-week window. |
fiftyTwoWeekLow | Time-series | Daily | Walking 52-week window. |
fiftyDayMa | Time-series | Daily | Simple moving average of close. |
twoHundredDayMa | Time-series | Daily | Simple moving average of close. |
sharesOutstanding | Filings + corporate actions | Quarterly + event | Adjusted on each split. |
dividendYield | Computed (annualDividend / price) | Daily | Trailing 12 months. |
payoutRatio | Computed (annualDividend / EPS) | Quarterly | Null when EPS ≤ 0. |
exDividendDate | Dividend feed | Per dividend event | Most recent ex-date. |
Source priority for US issuers
For US-domiciled issuers, the priority order on each field is:
- SEC EDGAR XBRL — authoritative for filed numbers (revenue, net income, shares outstanding, balance-sheet items). Refreshes within ~2 hours of filing acceptance.
- Issuer investor-relations page — for figures EDGAR does not structure (analyst consensus, forward P/E).
- Stockanalysis.com / yahoo finance — for derived ratios (EBITDA when not reported, beta) and as fallback when EDGAR is silent.
The actual source for each field on each row is recorded in the provenance
JSONB column on fundamentals_snapshot in the database, but is not currently
surfaced in the API response. Tell us if you want it.
Source priority for non-US issuers
Non-US issuers do not file with EDGAR. We use:
- Exchange filings where the exchange offers a structured feed (LSE Regulatory News Service, Euronext NewsRoom).
- Stockanalysis.com / yahoo finance, which already aggregate global filings.
- Issuer IR pages as a tiebreaker.
Coverage is best for FTSE 100 / DAX / CAC 40 / Nikkei 225 names and degrades roughly with market cap.
Refresh cadence in practice
- Per-quote-pull fields (
marketCap,trailingPe,dividendYield) move with the price. They are recomputed every time we refresh the underlying quote, which on liquid US tickers is roughly every 15 minutes during market hours. - Daily fields are recomputed at 02:00 UTC after the previous trading day’s closes are in.
- Weekly fields are recomputed Saturday 06:00 UTC.
- Quarterly fields are recomputed within ~2 hours of the issuer’s 10-Q or 10-K filing for US issuers, and within ~24 hours of exchange-filed half-year or full-year reports for non-US issuers.
The meta.fetched_at field on the response tells you the actual freshness for
this exact row.
What we do not do
- We do not provide analyst price targets.
- We do not provide guidance ranges (we surface them in news but not as fields).
- We do not provide insider transactions (Form 4) or institutional holdings (13F). Both are roadmap items.
- We do not provide credit ratings. They are licensed and expensive.