返回 Skill 列表
extension
分类: 数据与分析无需 API Key

Financial Ratio Analysis

Compute and report 25+ financial ratios (profitability, liquidity, leverage, efficiency, growth) from QBO data. Produces a 9-tab Excel workbook with traffic-...

person作者: samledger67-dotcomhubclawhub

Financial Ratio Analysis — SKILL.md


When to Use This Skill

Use when a user asks for:

  • Financial ratio analysis for a QBO-connected client
  • Profitability, liquidity, leverage, or efficiency metrics
  • DuPont decomposition or Altman Z-Score analysis
  • Month-over-month, QoQ, or YoY ratio comparison
  • Ratio benchmarking against industry averages
  • Trend analysis across 6 months of ratios
  • Trend reversal detection for any financial ratio
  • CDC (change data capture) on ratio movements

NOT for:

  • Bank reconciliation → use bank-reconciliation
  • P&L variance analysis (line-item drill-down) → use pl-deep-analysis
  • Cash flow forecasting → use cash-flow-forecast
  • AR collections aging → use ar-collections
  • Budget vs. actual → use budget-vs-actual

Quick Invocation

# Standard monthly ratio report
python3 scripts/pipelines/financial-ratios.py --slug sb-paulson --month 2026-03

# Custom output directory
python3 scripts/pipelines/financial-ratios.py --slug <client-slug> --month 2026-03 --out ~/Desktop/reports

# QBO sandbox
python3 scripts/pipelines/financial-ratios.py --slug sb-paulson --month 2026-03 --sandbox

Unknown slugs use default thresholds and disable inventory/valuation ratios unless SOP file found.


What It Produces

Excel workbook saved to ~/Desktop (or --out path): FinancialRatios_{slug}_{YYYY_MM}.xlsx

| Tab | Contents | |-----|----------| | Ratio Summary | All ratios with traffic lights, benchmarks, DuPont & Altman summary | | Profitability | Gross/Operating/Net margins, ROA, ROE, EBITDA margin + 6-mo trend | | Liquidity | Current/Quick/Cash ratios, Working capital + 6-mo trend | | Leverage | D/E, D/A, Interest coverage, Equity multiplier + 6-mo trend | | Efficiency | Asset/Inventory/Receivable/Payable turnover, DSO, DPO, CCC + 6-mo trend | | Growth | Revenue (MoM/QoQ/YoY), Expense, Net income growth + 6-mo trend | | DuPont Analysis | 3-factor + 5-factor ROE decomposition, 6-month component trend | | Trends | All ratios × 6 months with direction arrows + trend reversal flags | | CDC Log | Ratio changes vs. prior run with trend reversal detection |


Ratio Categories

Profitability

| Ratio | Formula | |-------|---------| | Gross Margin % | Gross Profit / Revenue × 100 | | Operating Margin % | EBIT / Revenue × 100 | | Net Margin % | Net Income / Revenue × 100 | | EBITDA Margin % | EBITDA / Revenue × 100 | | ROA | Net Income / Total Assets × 100 | | ROE | Net Income / Total Equity × 100 |

Liquidity

| Ratio | Formula | |-------|---------| | Current Ratio | Current Assets / Current Liabilities | | Quick Ratio | (Current Assets − Inventory) / Current Liabilities | | Cash Ratio | Cash / Current Liabilities | | Working Capital | Current Assets − Current Liabilities | | Working Capital Ratio | Working Capital / Total Assets × 100 |

Leverage

| Ratio | Formula | |-------|---------| | Debt-to-Equity | Total Liabilities / Total Equity | | Debt-to-Assets | Total Liabilities / Total Assets | | Interest Coverage | EBIT / Interest Expense | | Equity Multiplier | Total Assets / Total Equity |

Efficiency

| Ratio | Formula | |-------|---------| | Asset Turnover | Revenue / Total Assets | | Inventory Turnover | COGS / Inventory (annualized) | | Receivable Turnover | Revenue / Accounts Receivable | | DSO (Days Sales Outstanding) | AR / (Revenue / Days) | | Payable Turnover | COGS / Accounts Payable | | DPO (Days Payable Outstanding) | AP / (COGS / Days) | | Cash Conversion Cycle | DSO + DIO − DPO |

Growth

| Ratio | Formula | |-------|---------| | Revenue Growth MoM | (Current − Prior) / |Prior| × 100 | | Revenue Growth QoQ | (Current − 3mo ago) / |3mo ago| × 100 | | Revenue Growth YoY | (Current − 12mo ago) / |12mo ago| × 100 | | Expense Growth | (Current Opex − Prior Opex) / |Prior Opex| × 100 | | Net Income Growth | (Current NI − Prior NI) / |Prior NI| × 100 |

Valuation (SOP-gated)

| Ratio | Formula | |-------|---------| | Revenue Multiple | Enterprise Value / (Revenue × 12) | | EBITDA Multiple | Enterprise Value / (EBITDA × 12) |


DuPont Analysis

Three-Factor Model

ROE = Net Margin × Asset Turnover × Equity Multiplier

Five-Factor Model

ROE = Tax Burden × Interest Burden × EBIT Margin × Asset Turnover × Equity Multiplier

Both models computed; trend shown for each component across 6 months.


Altman Z-Score

Bankruptcy risk indicator. Model selected automatically by entity_type in SOP config:

| Model | Used For | Zones | |-------|----------|-------| | Z' (Revised) | Private/Services (default) | Safe >2.9 | Grey 1.23-2.9 | Distress <1.23 | | Z (Original) | Manufacturing | Safe >2.99 | Grey 1.81-2.99 | Distress <1.81 |

Formula (Z' model): Z' = 0.717×(WC/TA) + 0.847×(RE/TA) + 3.107×(EBIT/TA) + 0.420×(BVE/TL) + 0.998×(Revenue/TA)


Traffic Light Scoring

Each ratio scores GREEN / YELLOW / RED based on thresholds configured per client SOP.

  • GREEN: Within healthy range
  • YELLOW: Watch — approaching threshold
  • RED: Action required

Thresholds are configured in CLIENT_CONFIGS within the script. Override by editing the dict or adding a client SOP file.


Trend Reversal Detection

The pipeline detects when a ratio reverses direction over the 6-month window:

  • Compares direction of first half vs. second half of history
  • Flags ⚡ Trend Reversal — Now Improving or ⚠ Trend Reversal — Now Declining
  • Flagged prominently in Trends tab and CDC Log

Client SOP Integration

Place a sop.md file at clients/{slug}/sop.md. The pipeline reads it to detect:

| SOP Signal | Effect | |-----------|--------| | "POS collection" / "no accounts receivable" | Disables AR ratios (DSO, receivable turnover) | | "no inventory" / "service-based" | Disables inventory ratios | | "manufacturing" / "distribution" | Switches to original Altman Z model | | enterprise value: $X | Enables valuation ratios (revenue/EBITDA multiples) | | benchmark: {key} {value} | Overrides specific benchmark values |


Client Configuration

Add clients to CLIENT_CONFIGS in the script with:

  • ratios_enabled list (which ratios to compute/display)
  • thresholds dict per ratio: {"green": (min, max), "yellow": (min, max)}
  • benchmarks dict per ratio: Decimal values
  • entity_type: "services" or "manufacturing" (for Altman Z model)

QBO Data Pulled

| Report | Purpose | |--------|---------| | P&L (current month) | Revenue, COGS, OpEx, Net Income, Interest, D&A | | Balance Sheet (current month-end) | Assets, Liabilities, Equity, Cash, AR, Inventory, AP | | Cash Flow (current month) | Operating/Investing/Financing cash flows | | P&L (prior month) | MoM growth ratios | | P&L (3 months ago) | QoQ growth ratio | | P&L (12 months ago) | YoY growth ratio | | All of the above × 6 months | Historical trend analysis |

Total QBO calls: ~17 per run (6-month history + current + prior + QoQ + YoY)


CDC Cache

Cache stored at: .cache/financial-ratios/{slug}.json

Tracks:

  • All ratio values from prior run
  • Detects per-ratio changes (delta + % change)
  • Flags trend reversals when 6-month history available
  • Compares run-over-run for drift monitoring

Technical Notes

  • All financial math: Python Decimal (no floating-point errors)
  • Division-by-zero: returns ZERO, never crashes
  • Missing QBO lines: ZERO (safe fallback), does not inflate ratios
  • Inventory turnover: annualized (× 12 for monthly periods)
  • Interest coverage = 999.99 when no interest expense (signals no debt burden)
  • Altman Z-Score uses book value of equity (not market cap) for private company model
  • EBITDA = EBIT + D&A; EBIT = Net Income + Interest + Taxes
  • Operating margin uses EBIT as proxy for operating income if QBO doesn't separate it

Files

| File | Description | |------|-------------| | scripts/pipelines/financial-ratios.py | Main pipeline script | | skills/financial-ratios/SKILL.md | This file | | .cache/financial-ratios/{slug}.json | CDC cache per client |