Point-in-time fundamentals. Your backtest can't see the future.
Every fact is stamped with accepted_at — the exact SEC acceptance timestamp — so a signal generated on date T only sees what was public on date T. Survivorship-bias-free by default: the companies that went bankrupt are still in the dataset, because that's the whole point.
- accepted_at timestamps on every fact — no silent restatement leakage.
- Full universe including delisted, bankrupt, and acquired names, keyed on CIK.
- DuckDB-native Parquet — query 105M+ facts locally, no egress on the sample tier.
- Standardized concepts so you rank cross-sectionally without per-filer tag mapping.
Built for
Quants
- Point-in-time accurate
- Survivorship-bias-free
- Every number cited to its filing
Works where you do
Point-in-time accurate · Survivorship-bias-free · Every number cited to its filing
The pain points we remove
Quants don't lose to bad models — they lose to bad data. Every shortcut in the data layer fakes alpha that disappears live. These are the traps we close at the source.
Survivorship bias inflates every backtest
Test on today's index constituents and you implicitly exclude the Enrons and Lehmans — exactly the names a quality screen would have flagged. The backtest looks like genius.
Look-ahead bias from restated/backfilled data
Vendors quietly backfill corrections into the time series without flagging them. Use a revised figure on a signal date and you've imported the future.
Point-in-time data is behind an institutional paywall
Compustat Snapshot / Bloomberg PIT / CRSP-Compustat via WRDS are real but priced for funds and universities — Bloomberg runs ~$32K/seat. Independents are locked out.
Aligning fundamentals to the trading calendar
You need the acceptance date, not the period-end, and Q4 isn't a standalone XBRL period. The standard 'apply a reporting lag' advice either leaks data or throws away alpha.
The 80% data-cleaning tax + signal decay
Cleaning is adversarial — every shortcut introduces a bias that fakes alpha — and ~50% of anomaly alpha decays post-publication, so the researcher stuck cleaning data is structurally late.
Built around your actual cadence
From the daily grind to the month-end crunch — Valuein fits the rhythm of the work, not the other way around.
- Pull and refresh signal inputs
- Run incremental backtests
- Sanity-check that no future-dated data leaked into yesterday's signal
- Re-run factor IC / decay diagnostics
- Reconstruct point-in-time universes for new windows
- Test candidate signals against a holdout
- Survivorship-correct universe rebalance
- Ingest the new 10-Q/10-K wave, re-derive trailing fundamentals
- Restatement audit: did anything I traded on get revised?
What you can do with Valuein
Each job you need done, mapped to the exact capability that delivers it.
Fundamentals as-known on date T
Every fact carries accepted_at; the SDK enforces an as_of cutoff at view creation so signals can't peek.
The universe as it existed on date T
get_pit_universe + index membership with effective/removal dates — dead companies included.
Reconstruct restatement history
Original-vs-amended values are both available, so you can quantify and test on as-reported numbers.
Get to a clean columnar dataset fast
Pre-standardized R2 Parquet queried out-of-core with DuckDB — skip the parser and the cleaning.
Rank cross-sectionally across filers
~11,966 raw XBRL tags collapsed to ~286 canonical concepts — one Revenue, one EBIT, one FCF.
One token. Every channel.
A single Stripe-issued token unlocks every surface at your tier — use Valuein from your AI client, your code, or the browser.
Point-in-time fundamentals, stamped with accepted_at. Your backtest can't see the future.
Survivorship-bias-free by default — the companies that went bankrupt are still here, because that's the point.
Compustat-grade point-in-time, without the WRDS seat or the $32K terminal.
Frequently asked
How exactly do you prevent look-ahead bias?
Every fact stores accepted_at — the SEC EDGAR acceptance timestamp. The SDK filters PIT tables to your as_of date at DuckDB view creation, so a query for date T only returns facts that were public on or before T. Restatements filed later are invisible until their own acceptance date.
Are delisted and bankrupt companies really included?
Yes. The universe is keyed on CIK and spans the full SEC population — active plus inactive, bankrupt, merged, and taken-private — from 1993 to present, so you screen on the full population, not just today's survivors.
What format is the data, and can I query it locally?
Columnar Parquet (ZSTD) in R2. The Python SDK runs out-of-core DuckDB queries against it; Polars and Spark read it natively too. The sample tier streams real data with zero egress and no API key.
How does pricing compare to Compustat / Bloomberg?
Pro is $49/mo and Institutional is $499/mo, versus ~$32K/seat for a Bloomberg terminal or a university-gated WRDS seat for Compustat/CRSP. Same single token unlocks the SDK, MCP, and Bulk API.
Point-in-time fundamentals, stamped with accepted_at. Your backtest can't see the future.
105M+ standardized SEC facts across 19,000+ companies, 1993–present. Free to start — no credit card.