Skip to main content

What quality controls should you apply to a finished three-statement model?

Once you've built a three-statement model and the balance sheet balances, the temptation is to declare victory and move on. Resist it. A balanced model is a necessary condition, not a sufficient one. It could still have logical errors, unrealistic assumptions, hidden gaps, or presentation issues that would undermine any investment decision or valuation built on top of it. Professional modelers and investment professionals use a rigorous quality-control checklist before any model leaves their desk. This article provides that checklist: structural controls, assumption validation, scenario testing, and presentation standards.

Quick definition

Quality control for a three-statement model is a systematic audit of the model's structure, assumptions, calculations, and presentation to ensure it accurately reflects business logic, passes reasonableness tests, and is defensible in a presentation or investment committee. It goes beyond "does it balance?" to ask "is it correct, realistic, and transparent?"

Key takeaways

  • Structural controls: Verify the balance sheet balances, all linking formulas are correct, and there are no circular references or hidden assumptions.
  • Assumption validation: Test that key assumptions (revenue growth, margins, capex, working capital, tax rate) are internally consistent and reasonable relative to historical performance and peer benchmarks.
  • Scenario and sensitivity testing: Run the model under base, bull, and bear cases. Identify which assumptions drive the valuation outcome.
  • Red-flag tests: Check for impossible outcomes (negative cash flow in a profitable business, growing debt in a cash-generative business, negative equity).
  • Presentation standards: Document all assumptions, use consistent formatting, color-code inputs vs. calculations, and include a waterfall or bridge showing how key metrics change.
  • Peer and historical benchmarking: Compare your forecasted margins, ROI, and growth rates to actual historical performance and competitor data.

Structural quality controls

Control 1: Balance sheet reconciliation

Test: Verify that total assets = total liabilities + total equity for each year.

How: Create a reconciliation line:

Imbalance = Total assets - (Total liabilities + Total equity)

This should be zero (or within a rounding tolerance of < 0.1 percent of total assets).

Pass/fail: If not zero, the model has an error. Do not proceed until it balances.

Control 2: Cash flow to balance sheet cash

Test: Verify that the ending cash balance on the cash flow statement matches the cash line on the balance sheet, for each year.

How: Print a reconciliation:

Year 1:
Beginning cash (from prior year BS): 1,000
+ Operating cash flow: 800
+ Investing cash flow: (200)
+ Financing cash flow: 50
= Ending cash: 1,650

Cash on balance sheet: 1,650 ✓

Pass/fail: Must match exactly, year by year. If any year doesn't match, the cash flow statement or balance sheet cash formula is wrong.

Control 3: Retained earnings waterfall

Test: Verify that retained earnings at the end of the period equals the starting balance plus cumulative net income minus cumulative dividends.

How: Create a retained earnings roll-forward:

Year 0 (starting): 1,000
+ Year 1 net income: 200
- Year 1 dividends: 0
= Year 1 ending RE: 1,200
+ Year 2 net income: 250
- Year 2 dividends: 100
= Year 2 ending RE: 1,350

The Year 2 ending RE should match the balance sheet.

Pass/fail: Sum cumulative net income (starting + all years NI) minus cumulative dividends. Add to starting RE. Does it match? If not, the RE formula is wrong.

Control 4: Debt reconciliation

Test: Verify that debt on the balance sheet equals starting debt plus debt issued minus debt repaid, using only the financing section of the cash flow.

How:

Year 1 debt (start): 2,000
+ Debt issued: 500
- Debt repaid: 100
= Year 1 debt (end): 2,400

Year 2 debt (start): 2,400
+ Debt issued: 0
- Debt repaid: 200
= Year 2 debt (end): 2,200

Pass/fail: Debt on the balance sheet should exactly match. If not, either the balance sheet or the financing section of the cash flow has an error.

Control 5: Depreciation and accumulated depreciation

Test: Verify that accumulated depreciation equals the starting balance plus cumulative depreciation expense.

How:

Accumulated depreciation (starting): 1,000
+ Year 1 depreciation: 100
+ Year 2 depreciation: 100
= Accumulated depreciation (ending Year 2): 1,200

The balance sheet accumulated depreciation should match.

Pass/fail: Sum all depreciation expenses year-to-date and add to starting accumulated depreciation. Does it match the balance sheet line?

Control 6: Intangible and goodwill impairment

Test: If the model includes intangible assets or goodwill, verify that impairment tests are documented (even if the result is no impairment).

How: Add a footnote section or separate tab:

Goodwill impairment test (Year 2):
Goodwill balance: 500
Implied value from valuation: 550
Impairment charge: 0 (no impairment, fair value > carrying value)

Pass/fail: If fair value is significantly higher than carrying value for multiple years, document why. If it's significantly lower, apply an impairment charge.


Assumption validation controls

Control 7: Revenue growth reasonableness

Test: Compare your projected revenue growth rate to historical growth and peer growth.

How: Create a comparison table:

Historical revenue growth (last 3 years): 5%, 6%, 7% (average 6%)
Projected revenue growth (forecast): 8%, 8%, 8%
Peer average growth: 7%

Pass/fail: Your forecast should be defensible relative to history and peers. If you're projecting 8 percent growth for a company with 6 percent history, justify it (new product, market share gain, geographic expansion, etc.). If you're projecting 20 percent growth for a mature company, that's a red flag.

Control 8: Margin consistency

Test: Compare your projected gross margin, operating margin, and net margin to historical and peer benchmarks.

How:

Gross margin:
Historical (last 3 years): 40%, 41%, 40% (stable)
Projected: 42%, 43%, 44% (improving)
Justification: Shift to higher-margin products (document this in notes)

Operating margin:
Historical: 15%, 16%, 15% (stable)
Projected: 16%, 17%, 18% (improving)
Peer median: 17%
Verdict: Reasonable. Converging to peer level over time.

Pass/fail: If margins are improving, justify it. If they're declining, explain why (competitive pressure, regulatory burden, mix shift). If they diverge significantly from history or peers without explanation, it's a red flag.

Control 9: Working capital assumptions

Test: Verify that days sales outstanding (DSO), days inventory outstanding (DIO), and days payable outstanding (DPO) are consistent with the business and historical data.

How:

DSO (Days Sales Outstanding):
Historical (last 3 years): 35, 36, 35 days
Projected: 35 days (stable)
✓ Reasonable

DIO (Days Inventory Outstanding):
Historical: 45, 45, 46 days
Projected: 45 days (stable)
✓ Reasonable

DPO (Days Payable Outstanding):
Historical: 30, 30, 31 days
Projected: 32 days (improving payment terms)
? Justifiable if supplier relationships improve; otherwise conservative.

Pass/fail: DSO, DIO, and DPO should be stable unless you have a specific reason for change (improved inventory management, supplier negotiations, etc.).

Control 10: Tax rate reasonableness

Test: Compare your effective tax rate assumption to historical rates and the statutory rate.

How:

Statutory US federal tax rate: 21%
Company historical effective tax rate (last 3 years): 22%, 22%, 23%
Projected effective tax rate: 22%

Items affecting rate:
- State and local taxes: ~1-2%
- Non-deductible items: minimal
- Tax credits: none assumed
✓ 22% is reasonable.

Pass/fail: If you're assuming a rate significantly below the statutory or historical rate without justification, that's a red flag. Watch for one-time tax items (R&D credits, losses carried forward) that affect only one year.

Control 11: Capex as a percent of revenue

Test: Compare projected capex to historical capex as a percent of revenue.

How:

Capex as % of revenue:
Historical (last 3 years): 4%, 4%, 5% (average 4.3%)
Projected: 4%, 4%, 4% (stable)
✓ Consistent with history.

Alternative check: Capex vs. depreciation
Historical capex/depreciation ratio: 1.2x (growing asset base)
Projected capex/depreciation: 1.1x (maturing company)
✓ Reasonable for a maturing business.

Pass/fail: If capex is much higher than depreciation for a stable business, you're building net assets. Make sure the balance sheet reflects this. If capex is lower than depreciation, assets are shrinking.


Scenario and sensitivity controls

Control 12: Base, bull, and bear cases

Test: Run the model under three scenarios with different assumptions.

How:

BASE case: Revenue growth 6%, margins stable, working capital terms stable.
BULL case: Revenue growth 10%, margins improve 100 bps, working capital improves.
BEAR case: Revenue growth 2%, margins decline 200 bps, working capital deteriorates.

Base Bull Bear
Revenue CAGR: 6% 10% 2%
Op. margin: 15% 16% 13%
FCFF (Year 3): 500 700 300
Enterprise value: 5,000 8,000 3,000

Pass/fail: The three cases should show a realistic range. If the bear case has negative FCFF or covenant violations, note the vulnerability.

Control 13: Sensitivity analysis

Test: Show how the valuation (enterprise value or equity value) changes with 1-2 percent moves in key assumptions.

How: Create a two-way sensitivity table:

Enterprise Value Sensitivity to Revenue Growth and Op. Margin

13% Op Margin 14% Op Margin 15% Op Margin
4% Revenue: 4,200 4,500 4,800
5% Revenue: 4,700 5,100 5,500
6% Revenue: 5,200 5,700 6,200
7% Revenue: 5,800 6,400 7,000

Key insight: Enterprise value is most sensitive to operating margin.
A 1% change in margin = 200-300 of EV impact.

Pass/fail: Sensitivity analysis should reveal the key value drivers. If valuation is equally sensitive to all assumptions, you don't have clarity on what matters.

Control 14: Breakeven and covenant testing

Test: Identify the revenue level or margin level at which the company breaks even, or where debt covenants would be violated.

How:

Breakeven analysis:
Current debt level: 2,000
Annual interest: 100
Required EBIT to cover interest: 100
Current EBIT (Year 1): 500
Headroom: 5.0x (comfortable)

If revenue declines by 70%, EBIT = 150, still covers interest. ✓

Debt covenant: Net debt / EBITDA &lt; 2.0x
Current net debt / EBITDA: 1.5x ✓
Stress case (bear scenario): 1.8x ✓
Extreme stress (90% revenue decline): 2.2x ✗ (violates covenant)

Pass/fail: Document the cushion (headroom) for key financial metrics. If there's little headroom to covenants, note the risk.


Red-flag tests

Control 15: Cash flow vs. profitability divergence

Test: In a profitable business, operating cash flow should be positive. In a cash-generative business, free cash flow should be positive.

How:

Year 1:  EBIT = 500, Net income = 375, Operating CF = 100
⚠ Red flag: Why is OCF so low relative to NI?
Check: Is working capital building up? (Inventory + A/R growing faster than revenue?)
Check: Are non-cash charges being exaggerated? (Depreciation, stock comp?)

Pass/fail: If a profitable company has negative or unusually low operating cash flow, investigate. The cash flow statement's working capital section should explain it. If it doesn't, there's an error or a business problem.

Control 16: Negative equity

Test: Ensure that shareholders' equity is positive in all years.

How:

Year 1: Equity = 5,000 ✓
Year 2: Equity = 5,300 ✓
Year 3: Equity = 5,200 (small decline due to high dividends, but still positive) ✓

Pass/fail: If equity becomes negative (liabilities exceed assets), the company is technically insolvent. If your model predicts this, it's either a red flag for the company or an error in your model.

Control 17: Debt growth in a cash-positive business

Test: If the company is generating positive free cash flow, debt should be stable or declining, not growing.

How:

Year 1: FCF = 400, Debt = 2,000
Year 2: FCF = 450, Debt = 2,100 ⚠ Why is debt growing despite positive FCF?
Check: Is the company acquiring, investing in capex, or paying dividends?
If yes, that explains it. If no, it's an error.

Pass/fail: Document the drivers of any debt growth.

Control 18: Impossible reconciliations

Test: Verify the cash flow to balance sheet cash reconciliation matches, and verify no balance sheet line item violates accounting principles.

How:

Check: Is accumulated depreciation > gross PP&E? (impossible)
Check: Are reserves negative? (usually impossible)
Check: Is deferred revenue growing much faster than revenue? (possible but requires scrutiny)

Pass/fail: Each balance sheet line should make logical sense.


Presentation and documentation controls

Control 19: Input assumptions documented

Test: Every assumption in the model should be documented and justified.

How: Create an "Assumptions" tab or section:

Assumptions & Justifications
────────────────────────────
Revenue Growth:
Historical: 5-7% CAGR
Projected: 6% CAGR
Rationale: In line with historical and peer average
Source: 10-K, analyst estimates

Gross Margin:
Historical: 40-41%
Projected: 40% (stable)
Rationale: Stable product mix, no major pricing pressure
Source: 10-K segment data

Tax Rate:
Assumption: 22%
Rationale: Historical effective rate, no one-time items expected
Source: 10-K tax footnote

Capital Expenditures:
Assumption: 4% of revenue
Historical: 4-5%
Rationale: Maintenance capex only, no major initiatives planned
Source: Cash flow statement, MD&A

Pass/fail: Every major assumption should be traceable to a source (company filings, peer data, analyst consensus).

Control 20: Color-coding inputs vs. calculations

Test: In the spreadsheet, hard-coded inputs should be visually distinct from calculated values.

How: Use a consistent color scheme:

Blue background = Input cells (assumptions that you can change)
White background = Calculated cells (derived from inputs and other calculations)
Green background = Key output lines (revenue, EBIT, free cash flow, etc.)
Red background = Error flags or reconciliation checks

This makes it immediately clear what's an assumption and what's a formula.

Pass/fail: A model without clear formatting is hard to audit and prone to errors.

Control 21: Formula transparency

Test: Complex formulas should be transparent, with clear intermediate calculations.

How: Instead of:

= (A1 * B1 - C1) / (D1 * (1 - E1)) + F1 * G1

Break it into steps:

Gross profit = Revenue × (1 - COGS %)
Operating income = Gross profit - OpEx
EBIT = Operating income
Interest expense = Debt × Rate
EBT = EBIT - Interest
Taxes = EBT × Tax rate
Net income = EBT - Taxes

Pass/fail: Any formula that takes more than a few seconds to understand is too complex and should be broken down.

Control 22: Model documentation

Test: The model should include a cover sheet or index explaining what's in it.

How: Create a first tab:

FINANCIAL MODEL – [Company Name]
Analyst: [Name]
Date: [Date]
Purpose: [Valuation / scenario analysis / budget variance / etc.]

CONTENTS:
Sheet 1: Assumptions – all key forecasting inputs
Sheet 2: Income Statement – P&L forecast
Sheet 3: Balance Sheet – BS forecast
Sheet 4: Cash Flow – CFS forecast
Sheet 5: Valuation – DCF or comparable multiples
Sheet 6: Sensitivity – tornado and waterfall charts
Sheet 7: Audit – reconciliation checks

KEY OUTPUTS:
Enterprise Value: [X]
Implied P/E: [X]
WACC: [X]

Pass/fail: Anyone new to the model should be able to navigate it in under 5 minutes.


Mermaid: quality control workflow


Real-world example: catching an error in QC

Scenario: You've built a SaaS model. The income statement shows net income growing from 100 to 150 over three years. The balance sheet shows cash declining from 500 to 200 despite profitability. Red flag.

Investigation:

  1. You check the cash flow statement. Operating cash flow is growing (100, 120, 140), which makes sense.
  2. But investing and financing cash flows total (250, 200, 180) in cash outflows.
  3. Investing: Capex is only 20/year. Where's the rest?
  4. You find "Acquisitions" in the financing section totaling 180/year. That's material capex in a SaaS company; it's likely debt-funded.
  5. You check debt on the balance sheet: it's actually growing from 500 to 900 to cover the acquisitions.
  6. This is sensible, but the model didn't call it out. You add a note: "Model assumes aggressive M&A strategy consuming 180/year, funded by debt issuance."
  7. You also add a red-flag line to the output: "Debt-to-EBITDA: 5.0x in Year 3 (elevated leverage)."
  8. You document the scenario as "high-growth with M&A," and create an alternative scenario ("organic growth only") where debt declines.

The QC process caught a non-obvious assumption (M&A) and forced documentation and scenario analysis.


FAQ

Should I QC my model myself or have someone else review it?

Both. Self-QC catches obvious errors. Having a colleague review it catches assumptions you've made unconsciously, inconsistencies you've overlooked, and logic errors that feel normal to you because you built the model. A fresh pair of eyes is invaluable.

How much detail should I include in the assumptions documentation?

Enough that someone reading it (6 months from now, or someone else entirely) can understand every number in your model. For complex items (tax, working capital, capex), add a brief narrative explaining the logic. For simple items (revenue growth), a one-liner and source is sufficient.

If the bear case shows the company breaks covenant, is the investment automatically bad?

Not necessarily. It depends on the covenant cushion, the likelihood of the bear case, and the company's ability to refinance. Document the covenant position clearly so decision-makers can assess the risk.

What if my model's assumptions conflict with management guidance?

Document the divergence. If management guides 8% revenue growth and you're modeling 5%, explain why (pessimism, a specific headwind you see, or a different terminal assumption). This transparency is important for credibility.

Can I use a model someone else built and just change the assumptions?

Yes, but you must QC it thoroughly. Someone else's model may have hidden errors or assumptions that don't apply to your scenario. Check every formula, every link, and every working assumption. Treat it as if you built it.


  • Model audit trail: A record of changes made to the model, including dates and what was changed. Important for transparency and governance.
  • Stress testing: Running extreme scenarios (50% revenue decline, margin compression to zero) to identify breaking points and vulnerabilities.
  • Monte Carlo analysis: Running the model thousands of times with random assumptions drawn from probability distributions to generate an output distribution.
  • Scenario tree: A structured set of scenarios branching from a base case, each representing a distinct strategic or market outcome.

Summary

Quality controls transform a balanced model into a defensible, transparent tool for decision-making. Structural controls (balance sheet reconciliation, cash flow linkage, retained earnings waterfall) ensure the model is internally consistent. Assumption validation ensures the forecasts are realistic and justified. Scenario and sensitivity testing reveal key value drivers and vulnerabilities. Red-flag tests catch impossible outcomes. Presentation controls ensure the model is navigable and documented. A model that passes all QC checks is ready for investment committee, board presentation, or publication. A model that skips QC is a liability, not an asset.


Next

Advance to What is GAAP?, where we shift from building integrated statements to understanding the accounting frameworks that govern how they're prepared.