How We Test Our Valuation Engine Against Company Filings

9,484 paired figures compared against an independent workbook, a second-codebase check of the discount rate, and the 96 disagreements we publish instead of hiding.

Guide

How We Test Our Valuation Engine Against Company Filings

6 min read

the enginethe workbook====9,484 paired figures, compared on every release
Two independent implementations of the same method, fed the same filings, compared figure by figure.

A valuation tool is a claim repeated thirty-one times per company: each model says it computes what it claims to compute, from figures the company actually filed. This page describes how Maineblock tests that claim for Stock Valuation Studio, in plain terms and with the real numbers from the test record: a comparison against an independent spreadsheet implementation, a second-codebase check of the discount rate, and a standing rule that when the two sides disagree, the disagreement is published rather than averaged away.

The Standard: Two Implementations or It Did Not Happen

Every model in the Studio exists twice. Once as the engine that runs in the browser, and once as formulas in the companion valuation workbook, a spreadsheet built separately from the same written specifications. The specifications come first, in writing, before either implementation. The two sides are then fed the same filing figures and their outputs compared, figure by figure: fair values, growth rates, margins, buy prices, scenario values, and the labels and states each model reports.

The current comparison set runs to 9,484 paired figures. For long stretches of the program the count of disagreements was zero, run after run. That is the expected state, and any nonzero count stops a release until each disagreement is traced to its cause.

What Counts as a Disagreement

A disagreement is any pair of figures that differ beyond float noise. Each one gets a verdict, and the verdicts come in only three kinds:

  • The engine is wrong. The specification is the referee, the engine is fixed, and the comparison is rerun until the pair agrees.
  • The workbook is wrong. The same, in the other chair. The workbook is a shipped product in its own right, so its corrections go through its own release discipline.
  • The two sides were told different things on purpose. This happens when a product decision changes one side's definition. It is the only interesting kind, and the next section is about the standing example.

The Ninety-Six

The comparison count currently stands at 9,484 pairs with exactly 96 disagreements, and every one of the 96 sits in the dividend model family. They are there because of a decision, made on October 28, 2026, to change how the Studio treats dividends: the standalone dividend model uses stated defaults for its growth and required return, and a company whose trailing dividend yield is under 1 percent of its price now reports the dividend model as not meaningful, because capitalizing a sliver of income prints precision the payout cannot support.

The workbook was not changed to match. Its dividend formulas still express the earlier definition, and the two implementations now disagree on exactly the figures that decision touched, no more and no fewer. The test fixtures, the frozen expected outputs the comparison runs against, were deliberately not regenerated to hide the gap, because an expected file rewritten from the engine's own output would make the whole comparison circular. The 96 are published here and tracked in the open, and they close only when the workbook's own next revision takes up the same definition through its own process. A zero that has been edited into existence is worth less than an honest 96.

The Second-Codebase Check

The workbook comparison catches disagreement between two implementations of the same specification. It cannot catch a specification that both sides misread the same way, or a component whose inputs are assembled wrongly. For the discount rate, the component with the longest input chain, we run a second defense: an independent recomputation of the weighted average cost of capital, written separately in a different language from the same definitions, comparing every component rather than the finished rate: beta, the observation window, the cost of equity, interest expense, debt, the pre-tax and after-tax cost of debt, the tax rate, the weights, and the final figure.

On the verification panel of nine companies, every component of every computable name agreed to within one part in a billion, and the largest difference found anywhere was at the level of floating-point noise. The betas behind the rates come from sixty paired monthly returns measured from the price record, and the two implementations settled on identical windows for every name. The Coca-Cola walkthrough in the WACC guide in this series is drawn from that record.

The Refusals Are Tested Too

A valuation engine earns trust as much by what it will not print as by what it prints. The test record includes the negative cases:

  • Apple receives no WACC from the Studio at present. Apple's standard interest expense line ends at fiscal 2023, and the feed treats a figure that stale as absent rather than pairing it with current debt. Both implementations refuse identically. A silently mixed vintage would have produced a plausible rate and a wrong one.
  • A company with a pretax loss receives no effective tax rate and therefore no WACC, on both sides, for the same reason: a rate computed from a loss year is arithmetic without meaning.
  • A model whose base is missing or not positive reports its state in words, and the wording itself is part of the compared output, so a state cannot quietly become a number on one side.

What This Does Not Prove

Testing of this kind proves the engine computes what its specifications say, from the figures the filings carry. It does not prove the specifications are wise. A perfectly tested model can still be the wrong model for a company, which is why the Studio runs 31 of them, routes some companies away from some models entirely, and publishes guides, including several in this series, on where each method breaks. It also does not prove a value is a good price. The margin of safety exists because a correctly computed value can still be a wrong estimate of the future. The methodology page describes the model specifications themselves, and the data sources page describes where every figure originates and how stale a figure is allowed to be before the engine treats it as absent.

Sources

  • The Studio decision log and verification records, 2026: the parity comparison program and its counts, the dividend definition decision of October 28, 2026, and the WACC verification record with its component table.
  • The companion workbook is the Automated Stock Valuation Suite. The specifications both implementations follow are summarized on the methodology page: /valuation-studio/methodology/

The Investor Stats Cheat Sheet

A free three-page PDF: breakeven win rates, stop-loss sizing, volatility drag, reverse valuation, and how to tell a real track record from noise. Plus new tools as they ship.