.claude/skills/build-model/SKILL.md
Build a multi-tab Excel financial model
npx skillsauth add daloopa/investing build-modelInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Build a comprehensive Excel financial model (.xlsx) for the company specified by the user: $ARGUMENTS
Before starting, read ../data-access.md for data access methods and ../design-system.md for formatting conventions. Follow the data access detection logic and design system throughout this skill.
This skill gathers all available financial data and builds a multi-tab Excel model from scratch using openpyxl.
Look up the company by ticker using discover_companies. Capture:
company_idlatest_calendar_quarter — anchor for all period calculations (see ../data-access.md Section 1.5)latest_fiscal_quarter../data-access.md Section 4.5Get 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).
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:
Balance Sheet — search and pull all available:
Cash Flow — search and pull all available:
Segments:
KPIs:
Guidance:
Build forward estimates. If a projection engine is available (see ../data-access.md Section 5), use it. Otherwise, project manually:
Project 4-8 quarters forward.
Calculate:
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.
Tell the user:
reports/{TICKER}_model.xlsxreports/.tmp/{TICKER}_model_context.jsonAll financial figures gathered must use Daloopa citation format: $X.XX million
development
Cash conversion cycle, earnings quality, and working capital deep-dive
testing
Refresh existing research note and Excel model with latest data
tools
Bottoms-up unit economics decomposition for any public company
tools
Quick one-page company overview and snapshot