Real DCF (Discounted Cash Flow) model creation for equity valuation. Retrieves financial data from SEC filings and analyst reports, builds comprehensive cash flow projections with proper WACC calculations, performs sensitivity analysis, and outputs professional Excel models with executive summaries. Use when users need to value a company using DCF methodology, request intrinsic value analysis, or ask for detailed financial modeling with growth projections and terminal value calculations.
Copy the install command and let the AI configure it · recommended for beginners
Please install the "dcf-model" skill from askskill: 1. Download https://raw.githubusercontent.com/anthropics/financial-services/main/plugins/agent-plugins/pitch-agent/skills/dcf-model/SKILL.md 2. Save it as ~/.claude/skills/dcf-model/SKILL.md 3. Reload skills and tell me it's ready
This skill creates institutional-quality DCF models for equity valuation following investment banking standards. Each analysis produces a detailed Excel model (with sensitivity analysis included at the bottom of the DCF sheet).
These constraints apply throughout all DCF model building. Review before starting:
Environment: Office JS vs Python/openpyxl:
range.formulas = [["=D19*(1+$B$8)"]]. No separate recalc step needed; Excel calculates natively. Use range.format.* for styling. The same formulas-over-hardcodes rule applies: set .formulas, never .values for derived cells.recalc.py before delivery.⚠️ Office JS merged cell pitfall: When building section headers with merged cells, do NOT call .merge() then set .values on the merged range — Office JS still reports the range's original dimensions and will throw InvalidArgument: The number of rows or columns in the input array doesn't match the size or dimensions of the range. Instead, write the value to the top-left cell alone, then merge and format the full range:
// WRONG — throws InvalidArgument:
const hdr = ws.getRange("A7:H7");
hdr.merge();
hdr.values = [["MARKET DATA & KEY INPUTS"]]; // 1×1 array vs 1×8 range → fails
// CORRECT — value first on single cell, then merge + format the range:
ws.getRange("A7").values = [["MARKET DATA & KEY INPUTS"]];
const hdr = ws.getRange("A7:H7");
hdr.merge();
hdr.format.fill.color = "#1F4E79";
hdr.format.font.bold = true;
hdr.format.font.color = "#FFFFFF";
This applies to every merged section header in the DCF (market data, scenario blocks, cash flow projection, terminal value, valuation summary, sensitivity tables).
Formulas Over Hardcodes (NON-NEGOTIABLE):
ws["D20"] = "=D19*(1+$B$8)" is correct; ws["D20"] = calculated_revenue is WRONGVerify Step-by-Step With the User (DO NOT build end-to-end):
Sensitivity Tables:
…
Find target companies, check prior relationships, and draft founder outreach emails.
Analyze portfolio company financials, flag variances, and produce board-ready summaries.
Build M&A accretion dilution models with pro forma EPS and sensitivity analysis.
Evaluate FX carry trades with forwards, volatility, and historical data.
Screen inbound deal materials and generate a one-page memo.
Build quick IRR and MOIC sensitivity tables for PE deal evaluation.