git clone https://github.com/daloopa/investing
T=$(mktemp -d) && git clone --depth=1 https://github.com/daloopa/investing "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/build-model" ~/.claude/skills/daloopa-investing-build-model && rm -rf "$T"
.claude/skills/build-model/SKILL.mdBuild a comprehensive Excel financial model (.xlsx) for the company specified by the user: $ARGUMENTS
Before starting, read
for data access methods and ../data-access.md
for formatting conventions. Follow the data access detection logic and design system throughout this skill.../design-system.md
This skill gathers all available financial data and builds a multi-tab Excel model from scratch using openpyxl.
Phase 1 — Company Setup
Look up the company by ticker using
discover_companies. Capture:
company_id
— anchor for all period calculations (seelatest_calendar_quarter
Section 1.5)../data-access.mdlatest_fiscal_quarter- Firm name for report attribution (default: "Daloopa") — see
Section 4.5../data-access.md
Get current stock price, market cap, shares outstanding, beta, and trading multiples for {TICKER} (see ../data-access.md Section 2 for how to source market data).
Phase 2 — Comprehensive Data Pull
Calculate periods backward from
latest_calendar_quarter. Pull as much data as Daloopa has for this company. Target 8-16 quarters.
Income Statement — search and pull all available:
- Revenue / Net Sales
- Cost of Revenue / COGS
- Gross Profit
- Research & Development
- Selling, General & Administrative
- Total Operating Expenses
- Operating Income
- Interest Expense / Income
- Pre-tax Income
- Tax Expense
- Net Income
- Diluted EPS
- Diluted Shares Outstanding
- EBITDA (or compute from Op Income + D&A)
- D&A
Balance Sheet — search and pull all available:
- Cash and Equivalents
- Short-term Investments
- Accounts Receivable
- Inventory
- Total Current Assets
- PP&E (net)
- Goodwill
- Total Assets
- Accounts Payable
- Short-term Debt
- Long-term Debt
- Total Liabilities
- Total Equity
Cash Flow — search and pull all available:
- Operating Cash Flow
- Capital Expenditures
- Depreciation & Amortization
- Acquisitions
- Dividends Paid
- Share Repurchases
- Free Cash Flow (compute if not direct)
Segments:
- Revenue by segment
- Operating income by segment (if available)
KPIs:
- All company-specific operating metrics
Guidance:
- All guidance series and corresponding actuals
Phase 3 — Market Data & Peers
- Identify 5-8 peers and get their trading multiples (see ../data-access.md Section 2)
- Get risk-free rate (see ../data-access.md Section 2)
- If consensus forward estimates are available (../data-access.md Section 3), include NTM estimates for peers
Phase 4 — Projections
Build forward estimates. If a projection engine is available (see ../data-access.md Section 5), use it. Otherwise, project manually:
- Revenue: guidance + decay to long-term growth
- Margins: mean-revert to trailing averages
- CapEx, D&A, tax rate, share count: trailing trends
Project 4-8 quarters forward.
Phase 5 — DCF Inputs
Calculate:
- WACC (CAPM: Rf + Beta × ERP; cost of debt from interest/debt)
- 5-year FCF projections (annualized from quarterly)
- Terminal value (perpetuity growth at 2.5-3%)
- Sensitivity matrix: WACC (7 values) × terminal growth (6 values)
Phase 6 — Build Excel Model
Write the complete context to
reports/.tmp/{TICKER}_model_context.json, then run:
python infra/excel_builder.py --context reports/.tmp/{TICKER}_model_context.json --output reports/{TICKER}_model.xlsx
The context JSON should include ALL of these sections (each optional — the builder handles missing data):
{ "company": {name, ticker, exchange, currency}, "market_data": {price, market_cap, shares_outstanding, beta, trailing_pe, forward_pe, ev_ebitda, ...}, "periods": ["2023Q1", ...], "projected_periods": ["2026Q1", ...], "income_statement": {"Revenue": {"2023Q1": value, ...}, ...}, "balance_sheet": {"Total Assets": {...}, ...}, "cash_flow": {"Operating Cash Flow": {...}, ...}, "segments": {"Revenue by Segment": {"iPhone": {...}, ...}}, "kpis": {"Metric Name": {...}, ...}, "guidance": {"series": {...}, "actuals": {...}}, "projections": {"Revenue": {...}, ...}, "projection_assumptions": {revenue_growth, gross_margin, op_margin, capex_pct_revenue, tax_rate, buyback_rate_qoq}, "dcf": {wacc, terminal_growth, risk_free_rate, equity_risk_premium, projected_fcf, terminal_value, enterprise_value, implied_share_price, sensitivity}, "comps": {"peers": [{ticker, name, trailing_pe, ev_ebitda, ...}, ...]} }
If the Excel builder fails, report the error. The context JSON is still saved for debugging.
Output
Tell the user:
- Where the .xlsx was saved:
reports/{TICKER}_model.xlsx - Where the context JSON was saved:
reports/.tmp/{TICKER}_model_context.json - Summary of what tabs were built
- Key model outputs: trailing revenue, projected revenue growth, implied DCF value, peer-implied range
- Remind user that yellow cells in the Projections tab are editable inputs
All financial figures gathered must use Daloopa citation format: $X.XX million