← Files Public Equity InvestingARCHIVED FILE

skills/earnings-deep-dive/references/MODEL_DIFF_GUIDE.md

1.77 KB · Oct 2, 2026 · 00:03 UTC

↓ Download file

# Model Diff Methodology (Signal, not cell noise)

## Table of contents
1. [Goals](#goals)
2. [What to diff](#what-to-diff)
3. [How to rank changes](#how-to-rank-changes)
4. [Workbook diff strategy](#workbook-diff-strategy)
5. [Using the script](#using-the-script)

---

## Goals
The diff exists to answer:
- **What changed in the model?** (inputs and key outputs)
- **Why did it change?** (source-tagged rationale)
- **Which changes matter most for near-term valuation KPIs?**

## What to diff
1) **Driver inputs** (from `driver_registry.csv`)
2) **Key outputs** (from `output_registry.csv`)
3) Optional: scenario switches and key assumptions (WACC, terminal growth, etc.) if your model has them as drivers.

Do NOT diff:
- Formatting, column widths, styles
- Intermediate calculation blocks unless they are decision-critical

## How to rank changes
Rank by estimated impact priority. In absence of a full valuation engine:
1. Next-quarter revenue/EPS/FCF changes
2. FY revenue/EPS/FCF changes
3. Margin and opex run-rate assumptions
4. Working capital and capex assumptions

## Workbook diff strategy
- Prefer **named ranges** for stability.
- If using cells, diff only the explicit cell map in the registry (not the whole sheet).
- Treat blanks carefully:
  - blank vs 0 can be meaningful; retain both
  - if a cell contains a formula, diff the evaluated value and optionally the formula string (advanced)

## Using the script
Run:

```bash
python scripts/model_diff.py \
  --old <prior_model.xlsx> \
  --new <updated_model.xlsx> \
  --driver-registry <driver_registry.csv> \
  --output-registry <output_registry.csv> \
  --out output/audit/WhatChanged_Diff.csv
```

The script outputs:
- `Category` = Driver or Output
- Old/New/Delta
- Rank (simple heuristic)

Then add `SourceTag` and `Why` where missing.

SHA-256: 9e6e242a4907d7ef7febaefd5c0aeb602f6407a5a58b191e63417a68ccd11680