SKILL.md
SKILL.mdBrowse 4 files
4,801 tokens
21,599 bytes
Token encoding: o200k_base
Snapshot 24fd22b
1---2name: 3-statement-model3description: Build integrated IS/BS/CF financial workbooks in Excel.4version: 1.0.05author: Anthropic (adapted by Nous Research)6license: Apache-2.07platforms: [linux, macos, windows]8metadata:9 hermes:10 tags: [finance, three-statement, income-statement, balance-sheet, cash-flow, excel, openpyxl, modeling]11 related_skills: [excel-author, pptx-author, dcf-model, lbo-model]12---13 14## Environment15 16This skill assumes **headless openpyxl** — you are producing an .xlsx file on disk.17Follow the `excel-author` skill's conventions for cell coloring, formulas, named ranges, and sensitivity tables.18Recalculate before delivery: `python /path/to/excel-author/scripts/recalc.py ./out/model.xlsx`.19 20# 3-Statement Financial Model Template Completion21 22Complete and populate integrated financial model templates with proper linkages between Income Statement, Balance Sheet, and Cash Flow Statement.23 24## ⚠️ CRITICAL PRINCIPLES — Read Before Populating Any Template25 26**Formulas over hardcodes (non-negotiable):**27- Every projection cell, roll-forward, linkage, and subtotal MUST be an Excel formula — never a pre-computed value28- When using Python/openpyxl: write formula strings (`ws["D15"] = "=D14*(1+Assumptions!$B$5)"`), NOT computed results (`ws["D15"] = 12500`)29- The ONLY cells that should contain hardcoded numbers are: (1) historical actuals, (2) assumption drivers in the Assumptions tab30- If you find yourself computing a value in Python and writing the result to a cell — STOP. Write the formula instead.31- Why: the model must flex when scenarios toggle or assumptions change. Hardcodes break every downstream integrity check silently.32 33**Verify step-by-step with the user:**341. **After mapping the template** → show the user which tabs/sections you've identified and confirm before touching any cells352. **After populating historicals** → show the user the historical block and confirm values/periods match source data363. **After building IS projections** → run the subtotal checks, show the user the projected IS, confirm before moving to BS374. **After building BS** → show the user the balance check (Assets = L+E) for every period, confirm before moving to CF385. **After building CF** → show the user the cash tie-out (CF ending cash = BS cash), confirm before finalizing396. **Do NOT populate the entire model end-to-end and present it complete** — break at each statement, show the work, catch errors early40 41## Formatting — Professional Blue/Grey Palette (Default unless template/user specifies otherwise)42 43**Keep colors minimal.** Use only blues and greys for cell fills. Do NOT introduce greens, yellows, oranges, or multiple accent colors — a clean model uses restraint.44 45| Element | Fill | Font |46|---|---|---|47| Section headers (IS / BS / CF titles) | Dark blue `#1F4E79` | White bold |48| Column headers (FY2024A, FY2025E, etc.) | Light blue `#D9E1F2` | Black bold |49| Input cells (historicals, assumption drivers) | Light grey `#F2F2F2` or white | Blue `#0000FF` |50| Formula cells | White | Black |51| Cross-tab links | White | Green `#008000` |52| Check rows / key totals | Medium blue `#BDD7EE` | Black bold |53 54**That's 3 blues + 1 grey + white.** If the template has its own color scheme, follow the template instead.55 56Font color signals *what* a cell is (input/formula/link). Fill color signals *where* you are (header/data/check).57 58## Model Structure59 60### Identifying Template Tab Organization61 62Templates vary in their tab naming conventions and organization. Before populating, review all tabs to understand the template's structure. Below are common tab names and their typical contents:63 64| Common Tab Names | Contents to Look For |65|------------------|----------------------|66| IS, P&L, Income Statement | Income Statement |67| BS, Balance Sheet | Balance Sheet |68| CF, CFS, Cash Flow | Cash Flow Statement |69| WC, Working Capital | Working Capital Schedule |70| DA, D&A, Depreciation, PP&E | Depreciation & Amortization Schedule |71| Debt, Debt Schedule | Debt Schedule |72| NOL, Tax, DTA | Net Operating Loss Schedule |73| Assumptions, Inputs, Drivers | Driver assumptions and inputs |74| Checks, Audit, Validation | Error-checking dashboard |75 76**Template Review Checklist**77- Identify which tabs exist in the template (not all templates include every schedule)78- Note any template-specific tabs not listed above79- Understand tab dependencies (e.g., which schedules feed into the main statements)80- Locate input cells vs. formula cells on each tab81 82### Understanding Template Structure83 84Before populating a template, familiarize yourself with its existing layout to ensure data is entered in the correct locations and formulas remain intact.85 86**Identifying Row Structure**87- Locate the model title at top of each tab88- Identify section headers and their visual separation89- Find the units row indicating $ millions, %, x, etc.90- Note column headers distinguishing Actuals vs. Estimates periods91- Confirm period labels (e.g., FY2024A, FY2025E)92- Identify input cells vs. formula cells (typically distinguished by font color)93 94**Identifying Column Structure**95- Confirm line item labels in leftmost column96- Verify historical years precede projection years97- Note the visual border separating historical from projected periods98- Check for consistent column order across all tabs99 100**Working with Named Ranges**101Templates often use named ranges for key inputs and outputs. Before entering data:102- Review existing named ranges in the template (Formulas → Name Manager in Excel)103- Common named ranges include: Revenue growth rates, cost percentages, key outputs (Net Income, EBITDA, Total Debt, Cash), scenario selector cell104- Ensure inputs are entered in cells that feed into these named ranges105 106### Projection Period107- Templates typically project 5 years forward from last historical year108- Verify historical (A) vs. projected (E) columns are clearly separated109- Confirm columns use fiscal year notation (e.g., FY2024A, FY2025E)110 111## Margin Analysis112 113**Note: The following margin analysis should only be performed if prompted by the user or if the template explicitly requires it. If no prompt is given, skip this section.**114 115Calculate and display profitability margins on the Income Statement (IS) tab to track operational efficiency and enable peer comparison.116 117### Core Margins to Include118 119| Margin | Formula | What It Measures |120|--------|---------|------------------|121| Gross Margin | Gross Profit / Revenue | Pricing power, production efficiency |122| EBITDA Margin | EBITDA / Revenue | Core operating profitability |123| EBIT Margin | EBIT / Revenue | Operating profitability after D&A |124| Net Income Margin | Net Income / Revenue | Bottom-line profitability |125 126### Income Statement Layout with Margins127 128Display margin percentages directly below each profit line item:129- Gross Margin % below Gross Profit130- EBIT Margin % below EBIT131- EBITDA Margin % below EBITDA132- Net Income Margin % below Net Income133 134## Credit Metrics135 136**Note: The following Credit analysis should only be performed if prompted by the user or if the template explicitly requires it. If no prompt is given, skip this section.**137 138Calculate and display credit/leverage metrics on the Balance Sheet (BS) tab to assess financial health, debt capacity, and covenant compliance.139 140### Core Credit Metrics to Include141 142| Metric | Formula | What It Measures |143|--------|---------|------------------|144| Total Debt / EBITDA | Total Debt / LTM EBITDA | Leverage multiple |145| Net Debt / EBITDA | (Total Debt - Cash) / LTM EBITDA | Leverage net of cash |146| Interest Coverage | EBITDA / Interest Expense | Ability to service debt |147| Debt / Total Cap | Total Debt / (Total Debt + Equity) | Capital structure |148| Debt / Equity | Total Debt / Total Equity | Financial leverage |149| Current Ratio | Current Assets / Current Liabilities | Short-term liquidity |150| Quick Ratio | (Current Assets - Inventory) / Current Liabilities | Immediate liquidity |151 152### Credit Metric Hierarchy Checks153 154Validate that Upside shows strongest credit profile:155- Leverage: Upside < Base < Downside (lower is better)156- Coverage: Upside > Base > Downside (higher is better)157- Liquidity: Upside > Base > Downside (higher is better)158 159### Covenant Compliance Tracking160 161If debt covenants are known, add explicit compliance checks comparing actual metrics to covenant thresholds.162 163## Scenario Analysis (Base / Upside / Downside)164 165Use a scenario toggle (dropdown) in the Assumptions tab with CHOOSE or INDEX/MATCH formulas.166 167| Scenario | Description |168|----------|-------------|169| Base Case | Management guidance or consensus estimates |170| Upside Case | Above-guidance growth, margin expansion |171| Downside Case | Below-trend growth, margin compression |172 173**Key Drivers to Sensitize**: Revenue growth, Gross margin, SG&A %, DSO/DIO/DPO, CapEx %, Interest rate, Tax rate.174 175**Scenario Audit Checks**: Toggle switches all statements, BS balances in all scenarios, Cash ties out, Hierarchy holds (Upside > Base > Downside for NI, EBITDA, FCF, margins).176 177## SEC Filings Data Extraction178 179If the template specifically requires pulling data from SEC filings (10-K, 10-Q), see [references/sec-filings.md](references/sec-filings.md) for detailed extraction guidance. This reference is only needed when populating templates with public company data from regulatory filings.180 181## Completing Model Templates182 183This section provides general guidance for completing any 3-statement financial model template while preserving existing formulas and ensuring data integrity.184 185### Step 1: Analyze the Template Structure186 187Before entering any data, thoroughly review the template to understand its architecture:188 189**Identify Input vs. Formula Cells**190- Look for visual cues (font color, cell shading) that distinguish input cells from formula cells191- Common conventions: Blue font = inputs, Black font = formulas, Green font = links to other sheets192- Use Excel's Trace Precedents/Dependents (Formulas → Trace Precedents) to understand cell relationships193- Check for named ranges that may control key inputs (Formulas → Name Manager)194 195**Map the Template's Flow**196- Identify which tabs feed into others (e.g., Assumptions → IS → BS → CF)197- Note any supporting schedules and their linkages to main statements198- Document the template's specific line items and structure before populating199 200### Step 2: Filling in Data Without Breaking Formulas201 202**Golden Rules for Data Entry**203 204| Rule | Description |205|------|-------------|206| Only edit input cells | Never overwrite cells containing formulas unless intentionally replacing the formula |207| Preserve cell references | When copying data, use Paste Values (Ctrl+Shift+V) to avoid overwriting formulas with source formatting |208| Match the template's units | Verify if template uses thousands, millions, or actual values before entering data |209| Respect sign conventions | Follow the template's existing sign convention (e.g., expenses as positive or negative) |210| Check for circular references | If the template uses iterative calculations, ensure Enable Iterative Calculation is turned on |211 212**Safe Data Entry Process**2131. Identify the exact cells designated for input (usually highlighted or labeled)2142. Enter historical data first, then verify formulas are calculating correctly for those periods2153. Enter assumption drivers that feed forecast calculations2164. Review calculated outputs to confirm formulas are working as intended2175. If a formula cell must be modified, document the original formula before making changes218 219**Handling Pre-Built Formulas**220- If formulas reference cells you haven't populated yet, expect temporary errors (#REF!, #DIV/0!) until all inputs are complete221- When formulas produce unexpected results, trace precedents to identify missing or incorrect inputs222- Never delete rows/columns without checking for formula dependencies across all tabs223 224### Step 3: Validating Formulas225 226**Formula Integrity Checks**227 228Before relying on template outputs, validate that formulas are functioning correctly:229 230| Check Type | Method |231|------------|--------|232| Trace precedents | Select a formula cell → Formulas → Trace Precedents to verify it references correct inputs |233| Trace dependents | Verify key inputs flow to expected output cells |234| Evaluate formula | Use Formulas → Evaluate Formula to step through complex calculations |235| Check for hardcodes | Projection formulas should reference assumptions, not contain hardcoded values |236| Test with known values | Input simple test values to verify formulas produce expected results |237| Cross-tab consistency | Ensure the same formula logic applies across all projection periods |238 239**Common Formula Issues to Watch For**240- Mixed absolute/relative references causing incorrect results when copied across periods241- Broken links to external files or deleted ranges (#REF! errors)242- Division by zero in early periods before revenue ramps (#DIV/0! errors)243- Circular reference warnings (may be intentional for interest calculations)244- Inconsistent formulas across projection columns (use Ctrl+\ to find differences)245 246**Validating Cross-Tab Linkages**247- Confirm values that appear on multiple tabs are linked (not duplicated)248- Verify schedule totals tie to corresponding line items on main statements249- Check that period labels align across all tabs250 251### Step 4: Quality Checks by Sheet252 253Perform these validation checks on each sheet after populating the template:254 255**Income Statement (IS) Quality Checks**256- Revenue figures match source data for historical periods257- All expense line items sum to reported totals258- Subtotals (Gross Profit, EBIT, EBT, Net Income) calculate correctly259- Tax calculation logic is appropriate (handles losses correctly)260- Forecast drivers reference assumptions tab (no hardcodes)261- Period-over-period changes are directionally reasonable262 263**Balance Sheet (BS) Quality Checks**264- Assets = Liabilities + Equity for every period (primary check)265- Cash balance matches Cash Flow Statement ending cash266- Working capital accounts tie to supporting schedules (if applicable)267- Retained Earnings rolls forward correctly: Prior RE + Net Income - Dividends +/- Adjustments = Ending RE268- Debt balances tie to debt schedule (if applicable)269- All balance sheet items have appropriate signs (assets positive, most liabilities positive)270 271**Cash Flow Statement (CF) Quality Checks**272- Net Income at top of CFO matches Income Statement Net Income273- Non-cash add-backs (D&A, SBC, etc.) tie to their source schedules/statements274- Working capital changes have correct signs (increase in asset = use of cash = negative)275- CapEx ties to PP&E schedule or fixed asset roll-forward276- Financing activities tie to changes in debt and equity accounts on BS277- Ending Cash matches Balance Sheet Cash278- Beginning Cash equals prior period Ending Cash279 280**Supporting Schedule Quality Checks**281- Opening balances equal prior period closing balances282- Roll-forward logic is complete (Beginning + Additions - Deductions = Ending)283- Schedule totals tie to main statement line items284- Assumptions used in calculations match Assumptions tab285 286### Step 5: Cross-Statement Integrity Checks287 288After validating individual sheets, confirm the three statements are properly integrated:289 290| Check | Formula | Expected Result |291|-------|---------|-----------------|292| Balance Sheet Balance | Assets - Liabilities - Equity | = 0 |293| Cash Tie-Out | CF Ending Cash - BS Cash | = 0 |294| Net Income Link | IS Net Income - CF Starting Net Income | = 0 |295| Retained Earnings | Prior RE + NI - Dividends - BS Ending RE | = 0 (adjust for SBC/other items as needed) |296 297### Step 6: Final Review298 299Before considering the model complete:300- Toggle through all scenarios (if applicable) to verify checks pass in each case301- Review all #REF!, #DIV/0!, #VALUE!, and #NAME? errors and resolve or document302- Confirm all input cells have been populated (search for placeholder values)303- Verify units are consistent across all tabs304- Save a clean version before making any additional modifications305 306## Model Validation and Audit307 308This section consolidates all validation checks and audit procedures for completed templates.309 310### Core Linkages (Must Always Hold)311 312See [references/formulas.md](references/formulas.md) for all formula details.313 314| Check | Formula | Expected Result |315|-------|---------|-----------------|316| Balance Sheet Balance | Assets - Liabilities - Equity | = 0 |317| Cash Tie-Out | CF Ending Cash - BS Cash | = 0 |318| Cash Monthly vs Annual | Closing Cash (Monthly) - Closing Cash (Annual) | = 0 |319| Net Income Link | IS Net Income - CF Starting Net Income | = 0 |320| Retained Earnings | Prior RE + NI + SBC - Dividends - BS Ending RE | = 0 |321| Equity Financing | ΔCommon Stock/APIC (BS) - Equity Issuance (CFF) | = 0 |322| Year 0 Equity | Equity Raised (Year 0) - Beginning Equity Capital (Year 1) | = 0 |323 324### Sign Convention Reference325 326| Statement | Item | Sign Convention |327|-----------|------|-----------------|328| CFO | D&A, SBC | Positive (add-back) |329| CFO | ΔAR (increase) | Negative (use of cash) |330| CFO | ΔAP (increase) | Positive (source of cash) |331| CFI | CapEx | Negative |332| CFF | Debt issuance | Positive |333| CFF | Debt repayments | Negative |334| CFF | Dividends | Negative |335 336### Circular Reference Handling337 338Interest expense creates circularity: Interest → Net Income → Cash → Debt Balance → Interest339 340Enable iterative calculation in Excel: File → Options → Formulas → Enable iterative calculation. Set maximum iterations to 100, maximum change to 0.001. Add a circuit breaker toggle in Assumptions tab.341 342### Check Categories343 344**Section 1: Currency Consistency**345- Currency identified and documented in Assumptions346- All tabs use consistent currency symbol and scale347- Units row matches model currency348 349**Section 2: Balance Sheet Integrity**350- Assets = Liabilities + Equity (for each period)351- Formula: Assets - Liabilities - Equity (must = 0)352 353**Section 3: Cash Flow Integrity**354- Cash ties to BS (CF Ending Cash = BS Cash)355- Cash Monthly vs Annual: Closing Cash (Monthly) = Closing Cash (Annual)356- NI ties to IS (CF Net Income = IS Net Income)357- D&A ties to schedule358- SBC ties to IS359- ΔAR, ΔInventory, ΔAP tie to WC schedule360- CapEx ties to DA schedule361 362**Section 4: Retained Earnings**363- RE roll-forward check: Prior RE + NI + SBC - Dividends = Ending RE364- Show component breakdown for debugging365 366**Section 5: Working Capital**367- AR, Inventory, AP tie to BS368- DSO, DIO, DPO reasonability checks (flag if outside normal ranges)369 370**Section 6: Debt Schedule**371- Total Debt ties to BS (Current + LT Debt)372- Interest calculation ties to IS373 374**Section 6b: Equity Financing**375- Equity issuance proceeds tie to BS Common Stock/APIC increase376- Cash increase from equity = Equity account increase (must balance)377- Equity Raise Tie-Out: ΔCommon Stock/APIC (BS) = Equity Issuance (CFF) (must = 0)378- Year 0 Equity Tie-Out: Equity Raised (Year 0) = Beginning Equity Capital (Year 1)379 380**Section 6c: NOL Schedule**381- Beginning NOL (Year 1 / Formation) = 0 (new business starts with zero NOL)382- NOL increases only when EBT < 0 (losses must be realized to generate NOL)383- DTA ties to BS (NOL Schedule DTA = BS Deferred Tax Asset)384- NOL utilization ≤ 80% of EBT (post-2017 federal limitation)385- NOL balance is non-negative (cannot utilize more than available)386- NOL generated only when EBT < 0387- Tax expense = 0 when taxable income ≤ 0388 389**Section 7: Scenario Hierarchy**390- Absolute metrics: Upside > Base > Downside (NI, EBITDA, FCF)391- Margins: Upside > Base > Downside (GM%, EBITDA%, NI%)392- Credit metrics: Upside < Base < Downside for leverage (inverted)393 394**Section 8: Formula Integrity**395- COGS, S&M, G&A, R&D, SBC driven by % of Revenue (no hardcodes)396- Consistent formulas across projection years397- No #REF!, #DIV/0!, #VALUE! errors398 399**Section 9: Credit Metric Thresholds**400- Flag metrics as Green/Yellow/Red based on covenant thresholds401- Summary of any red flags402 403### Master Check Formula404 405Aggregate all section statuses into a single master check:406- If all sections pass → "✓ ALL CHECKS PASS"407- If any section fails → "✗ ERRORS DETECTED - REVIEW BELOW"408 409### Quick Debug Workflow410 411When Master Status shows errors:4121. Scroll to find red-highlighted sections4132. Identify which check category has failures4143. Navigate to source tab to investigate4154. Fix the underlying issue4165. Return to Checks tab to verify resolution417 418 419## Data sources — MCP first, web fallback420 421Many passages below say "use the S&P Kensho MCP / Daloopa MCP / FactSet MCP". Those are commercial financial-data MCPs from the original Cowork plugin context. In Hermes:422 423- **If you have any structured financial-data MCP configured** (Hermes supports MCP — see `native-mcp` skill), prefer it for point-in-time comps, precedent transactions, and filings.424- **Otherwise**, fall back to:425 - `web_search` / `web_extract` against SEC EDGAR (`https://www.sec.gov/cgi-bin/browse-edgar`) for US filings426 - Company IR pages for press releases, earnings decks427 - `browser_navigate` for interactive data portals428 - User-provided data (explicitly ask when the context doesn't have it)429- **Never fabricate**. If a multiple, precedent, or filing number can't be sourced, flag the cell as `[UNSOURCED]` and surface it to the user.430 431## Attribution432 433This skill is adapted from Anthropic's Claude for Financial Services plugin suite (Apache-2.0). The Office-JS / Cowork live-Excel paths have been removed; this version targets headless openpyxl via the `excel-author` skill's conventions. Original: https://github.com/anthropics/financial-services434 Discovery context
Discovered by repository scan. No exact path reference found in the snapshot’s root AGENTS.md.