dcf-model
Build institutional-quality DCF valuation models in Excel — revenue projections, FCF build, WACC, terminal value, Bear/Base/Bull scenarios, 5x5 sensitivity tables. Pairs with excel-author. Use for intrinsic-value equity analysis.
What this skill does
## Environment This skill assumes **headless openpyxl** — you are producing an .xlsx file on disk. Follow the `excel-author` skill's conventions for cell coloring, formulas, named ranges, and sensitivity tables. Recalculate before delivery: `python /path/to/excel-author/scripts/recalc.py ./out/model.xlsx`. # DCF Model Builder ## Overview 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). ## Tools - Default to using all of the information provided by the user and MCP servers available for data sourcing. ## Critical Constraints - Read These First These constraints apply throughout all DCF model building. Review before starting: **Formulas Over Hardcodes (NON-NEGOTIABLE):** - Every projection, margin, discount factor, PV, and sensitivity cell MUST be a live Excel formula — never a value computed in Python and written as a number - When using openpyxl: `ws["D20"] = "=D19*(1+$B$8)"` is correct; `ws["D20"] = calculated_revenue` is WRONG - The only hardcoded numbers permitted are: (1) raw historical inputs, (2) assumption drivers (growth rates, WACC inputs, terminal g), (3) current market data (share price, debt balance) - If you catch yourself computing something in Python and writing the result — STOP. The model must flex when the user changes an assumption. **Verify Step-by-Step With the User (DO NOT build end-to-end):** - After data retrieval → show the user the raw inputs block (revenue, margins, shares, net debt) and confirm before projecting - After revenue projections → show the projected top line and growth rates, confirm before building margin build - After FCF build → show the full FCF schedule, confirm logic before computing WACC - After WACC → show the calculation and inputs, confirm before discounting - After terminal value + PV → show the equity bridge (EV → equity value → per share), confirm before sensitivity tables - Catch errors at each stage — a wrong margin assumption discovered after sensitivity tables are built means rebuilding everything downstream **Sensitivity Tables:** - **Use an ODD number of rows and columns** (standard: 5×5, sometimes 7×7) — this guarantees a true center cell - **Center cell = base case.** Build the axis values so the middle row header and middle column header exactly equal the model's actual assumptions (e.g., if base WACC = 9.0%, the middle row is 9.0%; if terminal g = 3.0%, the middle column is 3.0%). The center cell's output must therefore equal the model's actual implied share price — this is the sanity check that the table is built correctly. - **Highlight the center cell** with the medium-blue fill (`#BDD7EE`) + bold font so it's immediately visible which cell is the base case. - Populate ALL cells (typically 3 tables × 25 cells = 75) with full DCF recalculation formulas - Use openpyxl loops to write formulas programmatically - NO placeholder text, NO linear approximations, NO manual steps required - Each cell must recalculate full DCF for that assumption combination **Cell Comments:** - Add cell comments AS each hardcoded value is created - Format: "Source: [System/Document], [Date], [Reference], [URL if applicable]" - Every blue input must have a comment before moving to next section - Do not defer to end or write "TODO: add source" **Model Layout Planning:** - Define ALL section row positions BEFORE writing any formulas - Write ALL headers and labels first - Write ALL section dividers and blank rows second - THEN write formulas using the locked row positions - Test formulas immediately after creation **Formula Recalculation:** - Run `python recalc.py model.xlsx 30` before delivery - Fix ALL errors until status is "success" - Zero formula errors required (#REF!, #DIV/0!, #VALUE!, etc.) **Scenario Blocks:** - Create separate blocks for Bear/Base/Bull cases - Show assumptions horizontally across projection years within each block - Use IF formulas: `=IF($B$6=1,[Bear cell],IF($B$6=2,[Base cell],[Bull cell]))` - Verify formulas reference correct scenario block cells ## DCF Process Workflow ### Step 1: Data Retrieval and Validation Fetch data from MCP servers, user provided data, and the web. **Data Sources Priority:** 1. **MCP Servers** (if configured) - Structured financial data from providers like Daloopa 2. **User-Provided Data** - Historical financials from their research 3. **Web Search/Fetch** - Current prices, beta, debt and cash when needed **Validation Checklist:** - Verify net debt vs net cash (critical for valuation) - Confirm diluted shares outstanding (check for recent buybacks/issuances) - Validate historical margins are consistent with business model - Cross-check revenue growth rates with industry benchmarks - Verify tax rate is reasonable (typically 21-28%) ### Step 2: Historical Analysis (3-5 years) Analyze and document: - **Revenue growth trends**: Calculate CAGR, identify drivers - **Margin progression**: Track gross margin, EBIT margin, FCF margin - **Capital intensity**: D&A and CapEx as % of revenue - **Working capital efficiency**: NWC changes as % of revenue growth - **Return metrics**: ROIC, ROE trends Create summary tables showing: ``` Historical Metrics (LTM): Revenue: $X million Revenue growth: X% CAGR Gross margin: X% EBIT margin: X% D&A % of revenue: X% CapEx % of revenue: X% FCF margin: X% ``` ### Step 3: Build Revenue Projections **Methodology:** 1. Start with latest actual revenue (LTM or most recent fiscal year) 2. Apply growth rates for each projection year 3. Show both dollar amounts AND calculated growth % **Growth Rate Framework:** - Year 1-2: Higher growth reflecting near-term visibility - Year 3-4: Gradual moderation toward industry average - Year 5+: Approaching terminal growth rate **Formula structure:** - Revenue(Year N) = Revenue(Year N-1) × (1 + Growth Rate) - Growth %(Year N) = Revenue(Year N) / Revenue(Year N-1) - 1 **Three-scenario approach:** ``` Bear Case: Conservative growth (e.g., 8-12%) Base Case: Most likely scenario (e.g., 12-16%) Bull Case: Optimistic growth (e.g., 16-20%) ``` ### Step 4: Operating Expense Modeling **Fixed/Variable Cost Analysis:** Operating expenses should model realistic operating leverage: - **Sales & Marketing**: Typically 15-40% of revenue depending on business model - **Research & Development**: Typically 10-30% for technology companies - **General & Administrative**: Typically 8-15% of revenue, shows leverage as company scales **Key principles:** - ALL percentages based on REVENUE, not gross profit - Model operating leverage: % should decline as revenue scales - Maintain separate line items for S&M, R&D, G&A - Calculate EBIT = Gross Profit - Total OpEx **Margin expansion framework:** ``` Current State → Target State (Year 5) Gross Margin: X% → Y% (justify based on scale, efficiency) EBIT Margin: X% → Y% (result of revenue growth + opex leverage) ``` ### Step 5: Free Cash Flow Calculation **Build FCF in proper sequence:** ``` EBIT (-) Taxes (EBIT × Tax Rate) = NOPAT (Net Operating Profit After Tax) (+) D&A (non-cash expense, % of revenue) (-) CapEx (% of revenue, typically 4-8%) (-) Δ NWC (change in working capital) = Unlevered Free Cash Flow ``` **Working Capital Modeling:** - Calculate as % of revenue change (delta revenue) - Typical range: -2% to +2% of revenue change - Negative number = source of cash (working capital release) - Positive number = use of cash (working capital build) **Maintenance vs Growth CapEx:** - Maintenance CapEx: Sustains current operations (~2-3% revenue) - Growth CapEx: Supports expansion (additional 2-5% revenue) - Total CapEx should align with company's growth strategy ### Step 6: Cost of Capital (WACC) Research **CAPM Methodology for Cost of Equity:** ``` Cost of Equity = Risk-Free Rate + Beta × Equity Risk Premium Where: - Risk-Free Rate = Current 10-Year Treasury Yield - Beta =
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.