返回技能市场
企业经营 安全

预算差异分析

@bailian/budget-variance-analysis

Monthly and quarterly budget vs. actual variance analysis for businesses. Compare planned vs. realized revenue, expenses, and margins. Identify favorable/unfavorable variances, root-cause material variances (>5% or >$X threshold), produce management commentary, and generate actionable reforecast recommendations. Outputs: variance table, waterfall narrative, and updated rolling forecast. Use when a CFO, controller, or analyst needs to close the books for a period, explain results to management or investors, or update the annual operating plan mid-year. NOT for: building budgets from scratch (use startup-financial-model), tax preparation, transactional bookkeeping, or real-time cash tracking.

阿里云百炼 热度 473v1.0

预算与实际差异分析 Skill

开展严谨的期末预算与实际分析。此 skill 指导 Sam Ledger 提取实际数据、对照预算、计算差异、识别根因、撰写管理层分析说明并更新重预测。

---

此 Skill 的适用场景

触发短语:

  • "Run budget vs. actual for [month/quarter]"
  • "Explain our variances this month"
  • "Why did we miss/beat revenue?"
  • "Prepare the management report for [period]"
  • "Update the rolling forecast based on actuals"
  • "Board needs BvA commentary"
  • "What drove the EBITDA miss?"
  • "Reforecast the rest of the year"

不适用场景:

  • 编制初始预算——使用 startup-financial-model
  • 税务申报或税项拨备工作——使用合规工作流
  • 实时记账或交易分类——使用 qbo-automationexpense-categorization
  • 涉及内部交易抵销的多实体合并(需要专用合并工具)
  • 战略规划或跨年度长期规划(LRP)

---

核心概念

差异类型

| 类型 | 公式 | 含义 | |---|---|---| | 绝对差异 | 实际 − 预算 | 金额差额 | | 百分比差异 | (实际 − 预算)/ 预算 × 100 | 相对于预算的幅度 | | 有利(F) | 收入:实际 > 预算 / 费用:实际 < 预算 | 优于计划 | | 不利(U) | 收入:实际 < 预算 / 费用:实际 > 预算 | 劣于计划 |

重要性阈值(默认值——按具体项目自定义)

Revenue line items:    ≥ $5,000 or ≥ 5% of budgeted line → investigate
Expense line items:    ≥ $2,500 or ≥ 10% of budgeted line → investigate
Total EBITDA:          ≥ $10,000 or ≥ 5% of budgeted EBITDA → board commentary required
YTD cumulative:        Carry forward monthly variances; flag if YTD > full-year materiality

差异根因——分类体系

收入差异:

  • 数量差异:销量/客户数多于或少于计划
  • 价格/费率差异:ASP 或定价偏离假设
  • 组合差异:产品/细分市场组合与模型设定不同
  • 时间差异:交易在非计划期间成交(提前或延后)
  • 新增与存量:特定客户群表现高于或低于预期

费用差异:

  • 人员到岗时间:招聘晚于或早于预算安排
  • 承包商/供应商:支出超出或低于计划
  • 一次性项目:预算中未包含的非经常性费用
  • 随业务量变动:COGS、销售佣金随收入规模变化
  • 定价/通胀:模型未考虑供应商价格变化

---

分步工作流

步骤 1:收集输入

Required:
□ Period (Month, Quarter, YTD)
□ Budget/forecast file (CSV, Sheets, or typed data)
□ Actuals file or QBO export (same period, same account mapping)
□ Chart of Accounts mapping (if budget and actuals use different labels)
□ Materiality threshold (use defaults if not specified)
□ Audience (internal management, board, investors)

Optional:
□ Prior period actuals (for trend context)
□ Prior year same period (for YoY context)
□ Existing narrative from last period

步骤 2:规范化数据

将实际数据映射到预算科目。标准损益表映射:

Budget Label          → QBO/Actuals Equivalent
-------------------------------------------------
Revenue               → Total Income
COGS                  → Cost of Goods Sold / Direct Costs
Gross Profit          → (calculated)
Sales & Marketing     → Advertising, Sales Commissions, Marketing Expenses
R&D / Engineering     → Contract Labor (tech), Software Tools
G&A                   → Payroll (admin), Legal, Accounting, Insurance
Total OpEx            → (sum of above)
EBITDA                → (Gross Profit − Total OpEx)

步骤 3:计算差异

对于每个科目:

# Variance calculation logic
for each line_item:
    absolute_var = actual - budget
    pct_var = (actual - budget) / abs(budget) * 100  # handle $0 budget edge case
    
    if is_revenue_line:
        favorable = actual > budget
    else:  # expense line
        favorable = actual < budget
    
    flag = abs(pct_var) >= threshold_pct or abs(absolute_var) >= threshold_dollar

步骤 4:构建差异表

标准输出格式:

PERIOD: March 2026 | Budget vs. Actual

Line Item          | Budget    | Actual    | $ Var     | % Var  | F/U | Flag
-------------------|-----------|-----------|-----------|--------|-----|------
REVENUE            |           |           |           |        |     |
  Product Revenue  | $120,000  | $108,500  | ($11,500) | -9.6%  |  U  |  ⚠️
  Service Revenue  |  $30,000  |  $34,200  |  $4,200   | +14.0% |  F  |  ⚠️
  Total Revenue    | $150,000  | $142,700  |  ($7,300) | -4.9%  |  U  |
                   |           |           |           |        |     |
COGS               |  $45,000  |  $43,100  |  $1,900   | +4.2%  |  F  |
Gross Profit       | $105,000  |  $99,600  |  ($5,400) | -5.1%  |  U  |  ⚠️
Gross Margin %     |   70.0%   |   69.8%   |   -0.2pp  |        |     |
                   |           |           |           |        |     |
OPERATING EXPENSES |           |           |           |        |     |
  S&M              |  $25,000  |  $27,400  |  $2,400   | +9.6%  |  U  |  ⚠️
  R&D              |  $20,000  |  $18,500  | ($1,500)  | -7.5%  |  F  |
  G&A              |  $15,000  |  $16,200  |  $1,200   | +8.0%  |  U  |
  Total OpEx       |  $60,000  |  $62,100  |  $2,100   | +3.5%  |  U  |
                   |           |           |           |        |     |
EBITDA             |  $45,000  |  $37,500  |  ($7,500) | -16.7% |  U  |  🚨
EBITDA Margin      |   30.0%   |   26.3%   |   -3.7pp  |        |     |

步骤 5:根因分析

对每项标记的差异进行深入分析:

收入未达标示例(产品收入 -$11,500 / -9.6%):

Root cause analysis:
- Volume: Closed 8 deals vs. 10 budgeted = -2 deals
- Price: Avg deal size $13,563 vs. $12,000 budget → +$1,563 per deal (favorable mix)
- Net: 2 fewer deals × $12,000 ASP = -$24,000 volume miss
       + 8 deals × $1,563 price premium = +$12,500 price/mix offset
       = ($11,500) net as reported ✓

Assessment: Volume issue, not pricing. Sales pipeline slipped — 2 deals moved to April.

S&M 超支示例($2,400 / +9.6% 不利差异):

Root cause analysis:
- Planned: $15k paid ads + $10k salaries
- Actual: $15k paid ads + $10k salaries + $2,400 conference registration (unbudgeted)
- Classification: One-time / non-recurring — will not repeat next month
Assessment: Benign. Budget for next year; no action required.

步骤 6:管理层分析说明

按以下结构为每项重大差异撰写说明:

[LINE ITEM] — [VARIANCE DIRECTION] by $[AMOUNT] ([PERCENT]%)

WHAT: [What the number shows in plain English]
WHY:  [Root cause — specific, not generic]
ACTION: [What we're doing about it, or why no action needed]
OUTLOOK: [Impact on full-year forecast]

分析说明示例:

EBITDA——不利差异 $7,500 (-16.7%)
情况:三月 EBITDA 为 $37,500,比 $45,000 的预算低 $7,500,原因是收入不足,部分被较低的研发支出抵销。
原因:由于 2 笔企业交易延至四月,产品收入比预算低 $11,500(销售管线已确认,交易并未流失)。S&M 因一次性会议报名费超出预算 $2,400。研发因一项承包商合作延迟启动而产生 $1,500 的有利差异。
行动:预计这 2 笔延期交易将在四月成交(均处于最终合同阶段)。会议报名费已计入费用,不会重复发生。研发承包商现已到岗;预计从四月开始发生全额支出。
展望:调整 Q2 预测,将这 2 笔延期交易计入季度前段。全年 EBITDA 预测维持 $540,000 不变。

步骤 7:更新滚动预测

分析实际数据后,更新本年度剩余期间的预测:

Reforecast logic:
1. Lock actuals for closed periods (do not re-budget history)
2. Roll forward: identify permanent vs. timing variances
   - Timing: shift to next period (deal slippage, late hire)
   - Permanent: adjust full-year assumption (market softness, new run rate)
3. Update full-year totals:
   - YTD actuals + remaining budget (adjusted)
   - Recalculate runway/cash if applicable
4. Flag changes from last forecast:
   - Revenue: +/- $X vs. prior forecast
   - EBITDA: +/- $X vs. prior forecast
   - Cash EOY: +/- $X vs. prior forecast

重预测汇总表:

                   | Original  | Prior     | Current   | Change
                   | Budget    | Forecast  | Forecast  | (vs Prior)
-------------------|-----------|-----------|-----------|----------
Full-Year Revenue  | $1,800,000| $1,750,000| $1,762,000| +$12,000
Full-Year EBITDA   |  $540,000 |  $510,000 |  $512,500 |  +$2,500
Year-End Cash      |  $850,000 |  $790,000 |  $793,000 |  +$3,000

---

输出格式

1. 管理报告(叙述 + 表格)

完整分析说明,包含差异表、根因和重预测。供 CFO/CEO/董事会使用。

2. BvA 快报(1 页)

仅包含三个部分:

  • 核心 KPI:收入、毛利率、EBITDA、现金(实际与预算对比,每项一行)
  • 前 3 项差异及各自的一句话解释
  • 重预测相对上次预测的变化

3. 结构化 JSON(用于下游处理)

{
  "period": "2026-03",
  "period_type": "month",
  "generated_at": "2026-04-02",
  "summary": {
    "total_revenue_budget": 150000,
    "total_revenue_actual": 142700,
    "total_revenue_variance_abs": -7300,
    "total_revenue_variance_pct": -4.87,
    "ebitda_budget": 45000,
    "ebitda_actual": 37500,
    "ebitda_variance_abs": -7500,
    "ebitda_variance_pct": -16.67
  },
  "line_items": [
    {
      "name": "Product Revenue",
      "budget": 120000,
      "actual": 108500,
      "variance_abs": -11500,
      "variance_pct": -9.58,
      "favorable": false,
      "material": true,
      "root_cause": "2 enterprise deals slipped to April (pipeline confirmed)",
      "action": "Deals expected April close; no change to full-year forecast"
    }
  ],
  "reforecast": {
    "full_year_revenue_original": 1800000,
    "full_year_revenue_current": 1762000,
    "full_year_ebitda_original": 540000,
    "full_year_ebitda_current": 512500
  }
}

---

QBO 集成工作流

实际数据来自 QuickBooks Online(通过 qbo-automation)时:

1. Export: QBO → Reports → Profit & Loss (select period, compare to prior)
2. Or via API: GET /v3/company/{id}/reports/ProfitAndLoss?start_date=&end_date=&summarize_column_by=Month
3. Map QBO account names to budget line items using COA mapping table
4. Validate totals: QBO Revenue total must match sum of line items (catch mapping errors)
5. Feed into variance calculation above

常见 QBO 映射陷阱:

  • QBO 可能拆分了预算中合并列示的子类别 → 向上汇总
  • QBO 中的业主提款不属于费用 → 从损益分析中排除
  • 工资税可能位于单独的 QBO 科目中 → 汇总到全口径人员成本

---

常见边界情况处理

某科目有实际发生额,但预算为 $0

Never divide by zero. Instead:
  variance_pct = "N/A (no budget)"
  Flag as material if actual > materiality dollar threshold
  Commentary: "Unbudgeted spend of $X in [account]"

前期重述

If actuals from a prior period changed:
  Flag the restatement explicitly
  Show: prior reported → restated → delta
  Update YTD accordingly
  Note audit trail in commentary

多个部门 / 成本中心

Run variance analysis at:
  1. Consolidated company level (always)
  2. Department level (if cost center tracking exists)
  Highlight cross-departmental offsets where applicable
  (e.g., R&D under-spend masked by G&A over-spend at total level)

季节性业务

Include YoY comparison alongside BvA:
  March 2026 Actual vs. March 2026 Budget (primary)
  March 2026 Actual vs. March 2025 Actual (context)
  Flag: is variance seasonal (expected) or structural (new issue)?

---

指标术语表

| 术语 | 定义 | |---|---| | BvA | 预算与实际对比 | | F | 有利(优于计划) | | U | 不利(劣于计划) | | pp | 百分点(用于利润率比较) | | YTD | 本年截至目前(从一月 1 日起累计) | | QTD | 本季度截至目前 | | MTD | 本月至今 | | 重预测 | 基于截至目前的实际数据,对本年度剩余期间更新预测 | | 快报 | 完整结账前的初步 BvA 快报(可使用估算值) | | 正式结账 | 最终锁定的实际数据(不再调整) | | 初步结账 | 初步实际数据,仍可能进行应计和其他调整 |

---

集成点

  • qbo-automation——直接从 QuickBooks Online 提取实际数据
  • startup-financial-model——原始预算/预测的数据来源
  • kpi-alert-system——差异超过阈值时触发告警
  • report-generator——将 BvA 输出整理为可提交董事会的 PDF 或演示文稿
  • financial-analysis-agent——根因不明确时深入分析趋势

---

需求输入 Prompt 示例

“三月已结账。预算收入为 $150k,EBITDA 为 $45k。实际收入为 $142k,EBITDA 为 $37.5k。产品收入少了 $11.5k——两笔企业交易延期。服务收入多了 $4.2k。S&M 因一次会议超支 $2.4k。研发少支出 $1.5k——承包商延迟到岗。请起草 BvA 表、根因摘要和董事会分析说明。标记对重预测的影响。”

Sam 将:

  1. 构建包含 F/U 标记和重要性指标的差异表
  2. 为所有标记的科目撰写根因摘要
  3. 按情况/原因/行动/展望格式撰写管理层分析说明
  4. 生成重预测差额(时间调整与结构性调整)
  5. 如需下游处理,输出结构化 JSON
qianwen skills install @bailian/budget-variance-analysis