Summary
Replace the current point-estimate DCF with a Monte Carlo simulation that produces a distribution of fair value outcomes. Add an EV-to-equity bridge and sector-specific assumption packs (e.g. SaaS, industrials, financials).
Motivation
The current DCF outputs a single number. Real sell-side valuation communicates a range, a base/bull/bear scenario, and the assumptions that drive each. A distribution of outcomes with labeled assumptions is what separates a research engine from a spreadsheet.
Proposed Architecture
trg_workbench/valuation/
├── dcf_monte_carlo.py # Monte Carlo simulation on WACC, growth, margins
├── ev_bridge.py # EV → equity bridge (net debt, minorities, options)
├── scenario_packs/
│ ├── saas.yaml # SaaS: ARR growth, NRR, Rule of 40
│ ├── industrials.yaml # Industrials: EBITDA margins, capex intensity
│ ├── financials.yaml # Banks: ROE, NIM, CET1
│ └── default.yaml # Generic: FCF growth, WACC, terminal multiple
└── sensitivity.py # Tornado chart data: which assumption drives value most
Simulation Design
# Inputs as distributions, not point estimates
wacc = Normal(mean=0.092, std=0.010) # +/- 100bps
revenue_growth = Triangular(low=0.05, mid=0.12, high=0.20)
terminal_growth = Uniform(low=0.020, high=0.030)
# Run 10,000 simulations -> distribution of intrinsic value
Outputs
- P10 / P50 / P90 intrinsic value per share
- Probability that stock is undervalued at current price
- Tornado chart: top 5 value drivers by sensitivity
- Bull / base / bear scenario summary table
Acceptance Criteria
Summary
Replace the current point-estimate DCF with a Monte Carlo simulation that produces a distribution of fair value outcomes. Add an EV-to-equity bridge and sector-specific assumption packs (e.g. SaaS, industrials, financials).
Motivation
The current DCF outputs a single number. Real sell-side valuation communicates a range, a base/bull/bear scenario, and the assumptions that drive each. A distribution of outcomes with labeled assumptions is what separates a research engine from a spreadsheet.
Proposed Architecture
Simulation Design
Outputs
Acceptance Criteria
dcf_monte_carlo.pyruns 10,000 simulations using numpy/scipy distributionsev_bridge.pyconverts enterprise value to equity value correctlyscenario_packs/with documented assumptions--simple-dcfflag fallback