← Files Public Equity InvestingARCHIVED FILE

skills/dcf-model-builder/references/output-spec.md

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

↓ Download file

# Output Specification

## Default generated files

The default model-build path is the banker formula workbook path. It writes:

- `banker_formula_workbook.xlsx`
- `banker_formula_workbook_run_log.json`
- `model_citations.json`
- `manifest.json`

The deterministic support pipeline remains available for explicit lightweight runs, controlled computed values, smoke tests, and honest fallback exports. It writes:
- `output/model.xlsx`
- `output/plan.json`
- `output/run_log.json`
- `output/manifest.json`

It may also write `output/support_note.md` as an optional support note or renderer input. Legacy `output/report.md` is written only with `--write-report-md`. Do not use the Markdown note as the lead user-facing deliverable when the workbook is the requested artifact.

## Workbook mode
Two workbook modes are supported:

- `banker_formula_workbook`: default live formula workbook produced only by `scripts/build_banker_formula_workbook.py`.
- `deterministic_export`: values-based support workbook produced by `scripts/run_pipeline.py` for controlled computed values, smoke tests, explicit lightweight exports, or clearly labeled fallback.

Do not call the deterministic workbook a fully linked banker model. Formula mode may be claimed only when `banker_formula_workbook_run_log.json` confirms `workbook_mode: "banker_formula_workbook"`, required sheets/formulas/styles/no-external-link checks pass, and `model_citations.json` exists.

## Formula-mode files

Formula mode is the default for user-facing model builds and writes:

- `banker_formula_workbook.xlsx`
- `banker_formula_workbook_run_log.json`
- `model_citations.json`
- `manifest.json`

`model_citations.json` contains source-to-cell provenance for key valuation outputs. Each record should include workbook path, sheet, cell/range, formula, value when known, scenario, section, line item, source ID, evidence label, source label, source date/freshness, and optional URL.

If formula mode fails its truthfulness gate, do not call the fallback a banker workbook. Either fix formula mode, mark the run `not-decision-ready`, or use `deterministic_export` with the limitation stated loudly.

## Deterministic support XLSX sheets
The bundled workbook uses value-based long-format sheets:

### `Cover`
First visible workbook tab. Required by `shared/workbook-artifact-standard.md`.

The cover is a PM/analyst dashboard, not a raw data table. It must summarize company, model type, valuation date, currency/units, model status, workbook mode, hard failures, warnings, selected valuation range, scenario value/share outputs, base-case DCF bridge, WACC/terminal assumptions, sensitivity drivers, source posture, and a workbook map.

If the stdlib writer cannot create native charts, the cover must still include chart-ready scenario, bridge, and sensitivity rows.

### `Summary`
One row per scenario with EV, equity value, value per share, WACC/cost of equity, terminal value, PV of FCF, PV of terminal value, and terminal value percent of EV.

### `Model`
Long-format valuation rows. Required columns:
- `section`
- `line_item`
- `scenario`
- `period`
- `value`
- `units`
- `evidence_label`
- `source_id`
- `notes`

Required sections/rows include:
- `IS`: revenue, EBITDA, EBIT, taxes
- `FCF`: NOPAT, D&A, capex, change in NWC, unlevered FCF or FCFE
- `WACC`: cost of equity, cost of debt, tax rate, target capital structure, WACC
- `TV`: terminal value, PV of terminal value, TV percent of EV
- `VALUATION`: PV of FCF, EV, equity value, diluted shares, value per share
- `CHECKS`: DCF QA checks
- `ASSUMPTIONS`: source-labeled assumptions

### `Sensitivities`
Long-format sensitivity outputs. Required columns:
- `sensitivity`
- `x_axis`
- `x_value`
- `y_axis`
- `y_value`
- `metric`
- `value`
- `units`

The pipeline emits WACC/terminal growth, WACC/exit multiple, and revenue-growth/EBIT-margin sensitivity rows.

### `Checks`
Machine-computed hard failures, warnings, and informational checks.

### `Assumptions`
Material source basis and key assumption values.

### `Run Log`
Top-level run status, model status, generated paths, and caveats.

## `run_log.json` schema
The runner writes this shape:

```json
{
  "status": "completed",
  "model_status": "screen-grade",
  "workbook_mode": "deterministic_export",
  "artifact_level": "deterministic_export",
  "source_basis": [],
  "hard_failures": [],
  "warnings": [],
  "assumptions": {},
  "checks": {},
  "outputs": {},
  "output_manifest": [],
  "p0_handoff": {}
}
```

`status` is `completed` when the helper ran without hard failures and `failed` when validation or execution blocks decision use. `output_manifest` mirrors `output/manifest.json` and records required artifacts, paths, and whether each artifact was written.

Allowed `model_status` values:
- `decision-grade`
- `senior-review-ready`
- `screen-grade`
- `not-decision-ready`
- `blocked`

Use `blocked` only for pre-run messaging when no run log can be produced. If `hard_failures` is non-empty, `model_status` must be `not-decision-ready`.

## P0 handoff fields
`p0_handoff` must include:
- `selected_valuation_range`
- `scenarios`: base/downside/upside EV, equity value, value per share
- `wacc_and_terminal_assumptions`
- `key_value_drivers`
- `major_caveats`
- `model_status`
- `paths`: workbook, plan, run log, manifest, and optional support note

Formula-mode handoffs must also expose `model_citations` or `model_citations_path` when a dashboard cites workbook cells.

## Support Note Template
When `output/support_note.md` is enabled, it is a support note for review, renderer input, or audit. The workbook `Cover` remains the first user-facing landing page. The support note should include:
1. Model status and artifact level.
2. Valuation range and scenario table.
3. Base-case DCF bridge.
4. WACC and terminal assumptions.
5. Sensitivity summary and key drivers.
6. QA checks: hard failures and warnings.
7. Source-basis notes and caveats.
8. Generated artifact paths, led by the workbook.

The support note must not claim decision-grade status when placeholders, stale data, unsupported WACC, missing source basis, or hard failures are present.

SHA-256: 35441efb7d2da600b8a77d2beede2ded74cc772cc7347f2592d3f652309df240