Research
Measured, verifiable writing on point-in-time data and backtest honesty. Every number traces to the dataset or a public filing.
We Shipped a 10x Error on General Mills. Here's the Bug, and the Check That Would Have Caught It.
We served General Mills FY2024 revenue as $2.038B against a true $19.857B, and every automated check passed. The root cause, the second bug we found fixing it, and why self-consistency checks cannot catch wrong numbers.
Your Backtest Saw the Future: Lookahead Bias in Fundamental Data
Fundamentals go public an average of 66 days after period end across 313,001 EDGAR rows (43 on our large-cap sample). How lookahead bias inflates backtests, and how to fix it.
Point-in-Time Fundamentals Data: What It Is, Why It Matters, and How to Choose
What point-in-time fundamentals data is, why it kills lookahead bias in backtests, what to look for in a dataset, and an honest survey of your options.
How to Build a Point-in-Time Fundamentals Database from SEC EDGAR (and When Not To)
A build-vs-buy guide to point-in-time fundamentals from SEC EDGAR companyfacts: the real steps, where DIY breaks, and when a $49/mo API is the shortcut.
Survivorship Bias vs Lookahead Bias: The Two Silent Backtest Killers
Two backtest killers, compared: what each is, why lookahead hides in a merge, how fundamentals data causes both, and how PIT data + a stable universe fix them.
How to Detect Lookahead Bias in a Backtest: A Practical Checklist
A practical checklist to find lookahead bias: audit join dates vs filing dates, run the lag-shift test, and check for known symptoms. Pandas code included.
As-Reported vs Restated Financial Data: Why the Difference Matters for Backtesting
As-reported is what the market saw; restated is today's revised number. Here's why conflating them injects lookahead bias into backtests.
SEC 10-K Filing Deadline Data: The Structural Reason Fundamentals Lag Weeks Behind
How SEC 10-K filing deadlines (60/75/90 days) create the point-in-time gap in fundamentals data, and what it means for backtests.
Why the Same Fundamental Lives Under Different XBRL Tags in SEC EDGAR
Why revenue and other fundamentals live under different XBRL tags across years, how that breaks naive datasets, and how tag synonyms get resolved.
Point-in-Time Fundamentals for Numerai Signals: Killing Lookahead in Your Feature Join
How to join first_filed fundamentals correctly for Numerai Signals, why lookahead bias inflates validation, and a US-annual PIT dataset option.