borghei/financial-analyst
> Performs financial ratio analysis, DCF valuation, budget variance analysis, and rolling forecast construction for strategic decision-making
npx skills add https://github.com/borghei/Claude-Skills --skill financial-analyst
Production-ready financial analysis toolkit providing ratio analysis, DCF valuation, budget variance analysis, and rolling forecast construction. Designed for financial analysts with 3-6 years experience performing financial modeling, forecasting & budgeting, management reporting, business performance analysis, and investment analysis.
Before the analysis, confirm these inputs. If any is unknown or vague, ASK — do not assume:
Stop rule: ask only the 2-3 that most change the output. If the user says "just draft it," proceed and list your assumptions at the top of the artifact.
scripts/ratio_calculator.py)Calculate and interpret financial ratios from financial statement data.
Ratio Categories:
python scripts/ratio_calculator.py sample_financial_data.json
python scripts/ratio_calculator.py sample_financial_data.json --format json
python scripts/ratio_calculator.py sample_financial_data.json --category profitability
scripts/dcf_valuation.py)Discounted Cash Flow enterprise and equity valuation with sensitivity analysis.
Features:
python scripts/dcf_valuation.py valuation_data.json
python scripts/dcf_valuation.py valuation_data.json --format json
python scripts/dcf_valuation.py valuation_data.json --projection-years 7
scripts/budget_variance_analyzer.py)Analyze actual vs budget vs prior year performance with materiality filtering.
Features:
python scripts/budget_variance_analyzer.py budget_data.json
python scripts/budget_variance_analyzer.py budget_data.json --format json
python scripts/budget_variance_analyzer.py budget_data.json --threshold-pct 5 --threshold-amt 25000
scripts/forecast_builder.py)Driver-based revenue forecasting with rolling cash flow projection and scenario modeling.
Features:
python scripts/forecast_builder.py forecast_data.json
python scripts/forecast_builder.py forecast_data.json --format json
python scripts/forecast_builder.py forecast_data.json --scenarios base,bull,bear
| Reference | Purpose |
|-----------|---------|
| references/financial-ratios-guide.md | Ratio formulas, interpretation, industry benchmarks |
| references/valuation-methodology.md | DCF methodology, WACC, terminal value, comps |
| references/forecasting-best-practices.md | Driver-based forecasting, rolling forecasts, accuracy |
| Template | Purpose |
|----------|---------|
| assets/variance_report_template.md | Budget variance report template |
| assets/dcf_analysis_template.md | DCF valuation analysis template |
| assets/forecast_report_template.md | Revenue forecast report template |
| Metric | Target |
|--------|--------|
| Forecast accuracy (revenue) | +/-5% |
| Forecast accuracy (expenses) | +/-3% |
| Report delivery | 100% on time |
| Model documentation | Complete for all assumptions |
| Variance explanation | 100% of material variances |
All scripts accept JSON input files. See assets/sample_financial_data.json for the complete input schema covering all four tools.
None - All scripts use Python standard library only (math, statistics, json, argparse, datetime). No numpy, pandas, or scipy required.
| Problem | Cause | Solution |
|---------|-------|----------|
| All ratios return 0.00 | Missing or zeroed financial statement fields in input JSON | Verify income_statement, balance_sheet, and cash_flow keys are populated with non-zero values; check field names match expected schema |
| DCF yields negative equity value | Net debt exceeds enterprise value, or WACC is set lower than terminal growth rate | Confirm net_debt is accurate; ensure terminal_growth_rate < WACC (typically 2-3% vs 8-12%); review capital structure assumptions |
| Sensitivity table shows "N/A" across entire row | WACC value in that row is less than or equal to every terminal growth rate in the range | Widen the gap between WACC and terminal growth; raise WACC inputs or lower the growth range in assumptions.terminal_growth_rate |
| Budget variance analyzer flags every line as material | Materiality thresholds set too low relative to the data scale | Increase --threshold-pct (e.g., from 5 to 10) and --threshold-amt (e.g., from 25000 to 100000) to match organizational materiality policy |
| Forecast builder produces flat projections | Historical data has fewer than 2 periods, or revenue_growth_rate is set to 0 | Provide at least 3-4 historical periods in historical_periods; set a non-zero revenue_growth_rate in assumptions |
| JSON parsing error on script execution | Malformed JSON input file (trailing commas, unquoted keys, encoding issues) | Validate input with python -m json.tool input_file.json; ensure UTF-8 encoding; remove trailing commas and comments |
| Valuation ratios all show "Insufficient data" | Missing market_data section in input JSON (share price, shares outstanding) | Add the market_data object with share_price, shares_outstanding, and earnings_growth_rate fields to the input file |
This skill covers:
This skill does NOT cover:
| Anti-pattern | Failure mode | Fix |
|--------------|--------------|-----|
| Building a DCF on a single-scenario forecast | False precision; one number presented as a target price | Always run base/bull/bear; present valuation as a range with sensitivity tables |
| Terminal growth rate ≥ long-run GDP growth | Valuation dominated by terminal value assuming perpetual above-economy growth | Cap terminal growth at 2-3% (long-run GDP proxy); if comps justify higher, flag explicitly |
| WACC inputs more than a quarter old | Rate environment moved; discount rate is wrong; valuation wrong | Refresh risk-free rate, ERP, and beta quarterly; document "last reviewed" date per input |
| Benchmarking ratios against a generic "industry average" | Peer set is wrong; conclusions are wrong | Use a specific comparable-company set (size, geography, business model) — see industry benchmarks in references/financial-ratios-guide.md |
| Reporting every variance instead of filtering by materiality | Stakeholders tune out; real issues buried | Apply a materiality threshold (absolute $ or % of budget); below threshold goes into an appendix, not the report |
| Favorable variance = "good"; unfavorable = "bad" | Misses revenue shortfalls masked by expense underspend; misses over-delivery hiding scope cuts | Always pair the classification with a root-cause note — direction alone is not insight |
| Mixing forecast periods (quarterly actuals against annual budget) | Variances that don't reconcile; trust collapses | Run the tools on matched periods only; if a period is partial, annotate and use period-adjusted comparisons |
| Treating model output as the answer | Model is a reasoning aid, not a decision | Lead the executive summary with the decision; put the model outputs in support |
| Related Skill | Domain | Integration Use Case |
|---------------|--------|---------------------|
| c-level-advisor/ceo-advisor | C-Level Advisory | Feed DCF valuation outputs and scenario comparisons into CEO strategic investment decisions and board-ready presentations |
| c-level-advisor/cto-advisor | C-Level Advisory | Provide technology investment ROI analysis and CapEx forecasts to support build-vs-buy and infrastructure scaling decisions |
| business-growth/revenue-operations | Business & Growth | Connect revenue forecasts and unit-economics metrics (CAC, LTV, payback period) to pipeline and go-to-market planning |
| product-team/product-manager | Product Team | Supply budget variance data and RICE-weighted financial projections for feature prioritization and resource allocation |
| data-analytics/data-analyst | Data Analytics | Export ratio analysis and forecast outputs as structured JSON for BI dashboard integration and trend visualization |
| project-management/project-financial-management | Project Management | Align budget variance analysis with project-level cost tracking, earned value management, and milestone-based funding releases |
scripts/ratio_calculator.pyCalculate and interpret financial ratios across 5 categories with industry benchmarking.
usage: ratio_calculator.py [-h] [--format {text,json}]
[--category {profitability,liquidity,leverage,efficiency,valuation}]
input_file
positional arguments:
input_file Path to JSON file with financial statement data
(must contain income_statement, balance_sheet,
cash_flow, and optionally market_data objects)
options:
-h, --help Show help message and exit
--format {text,json} Output format (default: text)
--category {profitability,liquidity,leverage,efficiency,valuation}
Calculate only a specific ratio category;
omit to calculate all 5 categories (20 ratios)
Ratios computed: ROE, ROA, Gross Margin, Operating Margin, Net Margin, Current Ratio, Quick Ratio, Cash Ratio, Debt-to-Equity, Interest Coverage, DSCR, Asset Turnover, Inventory Turnover, Receivables Turnover, DSO, P/E, P/B, P/S, EV/EBITDA, PEG Ratio.
scripts/dcf_valuation.pyDiscounted Cash Flow enterprise and equity valuation with WACC calculation and sensitivity analysis.
usage: dcf_valuation.py [-h] [--format {text,json}]
[--projection-years PROJECTION_YEARS]
input_file
positional arguments:
input_file Path to JSON file with valuation data
(must contain historical and assumptions objects)
options:
-h, --help Show help message and exit
--format {text,json} Output format (default: text)
--projection-years PROJECTION_YEARS
Number of projection years; overrides the value
in the input file (default: 5)
Outputs: WACC (CAPM), projected revenue and FCF, terminal value (perpetuity growth + exit multiple), enterprise value, equity value, value per share, and a two-way sensitivity table (WACC vs terminal growth rate).
scripts/budget_variance_analyzer.pyAnalyze actual vs budget vs prior year performance with materiality filtering and executive summaries.
usage: budget_variance_analyzer.py [-h] [--format {text,json}]
[--threshold-pct THRESHOLD_PCT]
[--threshold-amt THRESHOLD_AMT]
input_file
positional arguments:
input_file Path to JSON file with budget data
(must contain line_items array with actual,
budget, and optionally prior_year values)
options:
-h, --help Show help message and exit
--format {text,json} Output format (default: text)
--threshold-pct THRESHOLD_PCT
Materiality threshold as percentage (default: 10.0)
--threshold-amt THRESHOLD_AMT
Materiality threshold as dollar amount (default: 50000.0)
Outputs: Executive summary (revenue/expense/net impact), all variances with favorability classification, material variances filtered by threshold, department summary, and category summary.
scripts/forecast_builder.pyDriver-based revenue forecasting with rolling cash flow projection and multi-scenario modeling.
usage: forecast_builder.py [-h] [--format {text,json}]
[--scenarios SCENARIOS]
input_file
positional arguments:
input_file Path to JSON file with forecast data
(must contain historical_periods, drivers,
assumptions, cash_flow_inputs, and scenarios objects)
options:
-h, --help Show help message and exit
--format {text,json} Output format (default: text)
--scenarios SCENARIOS
Comma-separated list of scenarios to model
(default: base,bull,bear)
Outputs: Trend analysis (linear regression, growth rates, seasonality index), scenario comparison table, per-period forecast detail (revenue, COGS, gross profit, OpEx, operating income), and 13-week rolling cash flow projection with runway calculation.
Take borghei/financial-analyst from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.