Ch 03 — Financial statements as summary statistics
PyPI workbook run (Track D)
From inside your Track D workbook folder (created by pystatsv1 workbook init --track d --dest ...), run:
pystatsv1 workbook run |trackd_run|
Outputs are written under outputs/track_d/ by default.
If you’re unsure what a file is for, start with Track D Outputs Guide.
To see the full chapter-by-chapter run map (D00–D23), see Track D chapter index (PyPI).
Optional: write to a custom output folder:
pystatsv1 workbook run |trackd_run| --outdir outputs/track_d_custom
Interpretation prompts (quick self-check):
What is the accounting or business measurement goal in this chapter?
Which invariant/check would catch a “numbers look fine but are wrong” mistake here?
Why this matters (for accountants)
Financial statements are aggregated views of the ledger. They are “summary statistics” for business performance and position.
But like any summary: - they are only as good as the underlying ledger structure and posting discipline, and - they can hide important drivers (timing, classification, and working-capital effects).
Forecasting starts by understanding what these summaries do (and do not) tell you.
Learning objectives
By the end of this chapter, you will be able to:
Connect journal → trial balance → statements as a reproducible pipeline.
Explain the links among the income statement (P&L), balance sheet, and cash flow.
Translate statement lines into operational drivers (sales volume, margins, working capital).
Run controls-aware reconciliation checks so statement analytics are trustworthy.
Core terms (fast refresher)
Income statement (P&L)
The income statement summarizes performance over a period:
Revenue (value earned)
Expenses (resources consumed)
Net income = revenue − expenses
Key idea: P&L is flow over time (a period summary), not a point-in-time snapshot.
Balance sheet
The balance sheet summarizes position at a point in time:
Key idea: the balance sheet is a snapshot (end-of-period totals).
Cash flow statement
The cash flow statement explains why cash changed:
Cash from operations: cash impact of core business activity
Cash from investing: long-term asset purchases/sales
Cash from financing: owner contributions, loans, repayments, distributions
Key idea: the cash flow statement is the “bridge” between net income and cash change.
Why net income ≠ cash change (the big refresher idea)
Net income differs from cash change mainly because of:
Accrual timing (earned/incurred vs paid)
Working capital changes (AR, inventory, AP)
Financing and investing flows (cash changes that are not “income”)
Accounting Connection (PDF refresher)
Refreshes: income statement, balance sheet, cash flows.
Dataset tables used (LedgerLab core)
This chapter uses the small LedgerLab core ledger dataset.
Later chapters shift to the NSO v1 running case (data/synthetic/nso_v1) for richer operational examples.
chart_of_accounts.csvgl_journal.csvtrial_balance_monthly.csvstatements_is_monthly.csvstatements_bs_monthly.csvstatements_cf_monthly.csv
PyStatsV1 lab (Run it)
If you haven’t generated the LedgerLab core dataset yet:
make business-sim
Run Chapter 3:
make business-ch03
Key artifacts written to outputs/track_d:
business_ch03_summary.json(checks + key metrics)business_ch03_statement_bridge.csv(net income → cash change bridge)business_ch03_trial_balance.csv(recomputed from the GL)business_ch03_net_income_vs_cash_change.png(plot)
What the automated checks verify (exactly)
When you run make business-ch03, the script prints a controls-style checklist.
These are intentionally “audit-friendly”: they tell you whether the summaries reconcile.
Ledger integrity checks
transactions_balanced: for everytxn_id, sum(debits) == sum(credits). Companion diagnostics: -n_transactions-n_unbalanced-max_abs_diff
Trial balance reconciliation
trial_balance_matches_source: recomputed TB (from the GL) matchestrial_balance_monthly.csv. Companion diagnostic: -trial_balance_max_abs_diff
Statement reconciliation
income_statement_ties_to_trial_balance: statement revenue/expense/net income agrees with TB-derived totals. Companion diagnostic: -income_statement_max_abs_diffbalance_sheet_equation_balances: verifies assets = liabilities + equity. Companion diagnostic: -balance_sheet_abs_diff
Cash flow tie-out
cash_flow_ties_to_balance_sheet_cash: ending cash from the cash flow bridge matches the balance sheet cash line. Companion diagnostic: -cash_flow_cash_abs_diff
Small nonzero differences extremely close to 0 can occur due to floating-point arithmetic; treat anything near machine precision as “effectively zero.”
Interpretation & decision memo
After you run the lab, answer these prompts in 6–10 sentences:
Why does net income differ from the change in cash in this month?
Which statement lines look like “drivers” (inputs you can influence) vs “outcomes”?
If you had to forecast one line next month, which would it be and why?
What control(s) would you add if these were real books?
End-of-chapter problems
Explain three reasons net income differs from cash change (use AR/inventory/AP examples).
Map GL accounts to statement lines and justify your mapping rules.
Define 5 KPIs tied to statement lines (include formulas).
Propose a “close checklist” that prevents timing and classification errors.
Textbook alignment notes
Textbook Part A: Chapters 1–3.