Point-in-time fundamentals. Your backtest can't see the future.
Every fact is stamped with its SEC acceptance date, so your backtest only sees what was knowable then — survivorship-bias-free by default. The catastrophe this removes: the strategy that looked brilliant in-sample and died live.
- accepted_at timestamps on every fact — no silent restatement leakage.
- Full universe including delisted, bankrupt, and acquired names, keyed on CIK.
- Backtest-safe multiples on any historical date — P/E, EV/EBITDA, FCF yield from the price and fundamentals actually knowable then.
- Daily OHLCV with adjusted close and corporate-action factors, plus DuckDB-native Parquet across 111M+ facts.
Built for
Quants
- Point-in-time accurate
- Survivorship-bias-free
- Every number cited to its filing
Works where you do
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.
Merging prices with fundamentals, without leaking
The classic Compustat+CRSP merge — a multiple on date T needs the close on T and the fundamentals accepted by T. Get either leg wrong and the multiple quietly peeks.
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.
The grind we take off your plate
From the daily check-ins to the month-end scramble — this is the recurring work Valuein automates so you spend your hours on the thesis, not the data.
Every day
- Pull and refresh signal inputs
- Run incremental backtests
- Sanity-check that no future-dated data leaked into yesterday's signal
Every week
- Re-run factor IC / decay diagnostics
- Reconstruct point-in-time universes for new windows
- Test candidate signals against a holdout
Month-end & earnings
- 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.
Multiples without the look-ahead
get_pit_valuation_ratios joins the EOD close to the fundamentals accepted by that date — P/E, P/S, P/B, EV/EBITDA, FCF yield, backtest-safe on any historical date.
Smoke-test a factor before you build the pipeline
run_backtest computes a bounded point-in-time factor / forward-return grid over your tickers and rebalance dates, then hands off to the SDK's AlphaEngine for the full run.
Reconstruct restatement history
Original-vs-amended values are both available, so you can quantify and test on as-reported numbers.
Rank cross-sectionally across filers
~11,966 raw XBRL tags collapsed to 292 canonical concepts — one Revenue, one EBIT, one FCF.
Works where you do
One Bearer token reaches the same point-in-time data from your AI agent, your notebook, or your browser. Use the surface that fits the job.
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 plus the price leg: backtest-safe multiples on any date, without the WRDS seat.
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.
Can I get valuation multiples as of a historical date?
Yes — get_pit_valuation_ratios computes P/E, P/S, P/B, EV/EBITDA, and FCF yield on any historical date from the end-of-day close and the trailing fundamentals that were accepted by that date. It's the Compustat+CRSP merge, pre-built and leak-free.
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.
111M+ standardized SEC facts across 19,000+ companies, 1993–present. Free to start — no credit card.