差异分析计算
角色
以资深经营分析专家的身份执行本技能:
- 拥有 10 年以上数据分析经验。
- 拥有 10 年以上美国注册管理会计师(CMA)从业经验。
所有结论必须基于用户提供的明细数据计算得出,不得编撰数据;差异数字必须由脚本运算生成,验证数据仅用于校验逻辑,严禁硬编码进报告。
概述
差异分析脱胎于因素连环替代法,是管理会计中差异分析的基本方法。本技能把指标差异(收入 / 成本 / 毛利)拆解为总量差异、结构差异、单价差异;其中毛利进一步把单价差异拆成销售单价差异与成本单价差异(四因素),并区分老产品、新产品、淘汰产品的贡献,从而定位经营指标变动的关键影响因素。
计算与呈现一体化:脚本运行完毕即产出结论先行的 HTML 归因报告(核心结论 → 指标 → 瀑布图 → 归因排序 → 明细 → 平衡校验),不需要再人工另攒一份报告。
何时使用
在以下场景触发本技能:
- 收入、毛利、成本出现同比 / 环比 / 目标差异,需要量化各构成项的影响程度。
- 需要回答"差异主要是量带来的、结构带来的、还是价带来的"。
- 产品结构变化(新老产品更替、淘汰)对收入 / 毛利的影响归因。
- 单位成本、材料采购单价、工时单价等"量 × 单价"型指标的差异拆解。
前置条件
- 销售明细表(必有):日期、产品编码、产品名称、单位、销量、收入、成本。必须包含基期与本期两期数据。
- 生产成本明细表(做成本结构 / 单位成本分析时):日期、产品编码、产品名称、单位、产量、成本结构明细项金额。必须包含两期。
- 老产品 / 新产品 / 淘汰产品的定义:可自动识别(两期都有 = 老产品;仅本期 = 新产品;仅基期 = 淘汰产品)。
- 口径一致:同一产品在基期与本期的单位、成本口径必须一致;量的计量单位必须统一,否则不能计算结构差异。
核心公式(连环替代,顺序不可调换)
设 q = 量(销量 / 产量),p = 单价(售价 / 单位成本 / 单位毛利),下标 0 = 基期,1 = 本期。
差异 = 总量差异 + 结构差异 + 单价差异
总量差异 = (Q1 − Q0) × P0
结构差异 = Σ[(q1ᵢ/Q1 − q0ᵢ/Q0) × Q1 × p0ᵢ]
单价差异 = Σ[(p1ᵢ − p0ᵢ) × q1ᵢ]
量差 = 总量差异 + 结构差异
其中 Q0 = Σq0、Q1 = Σq1、P0 = Σ(q0ᵢp0ᵢ)/Q0(基期加权平均单价)。
毛利口径:四因素分解
毛利口径下,将单位毛利 mᵢ = pᵢ − cᵢ 代入三因素法,再把第三项拆成售价与成本两条线,得到四因素:
毛利差异 = 总量差异 + 结构差异 + 销售单价差异 + 成本单价差异
总量差异 = (Q1 − Q0) × (P0 − c0)
结构差异 = Σ[(q1ᵢ/Q1 − q0ᵢ/Q0) × Q1 × (p0ᵢ − c0ᵢ)]
销售单价差异 = Σ[(p1ᵢ − p0ᵢ) × q1ᵢ]
成本单价差异 = Σ[(c0ᵢ − c1ᵢ) × q1ᵢ]
其中 P0 − c0 即基期加权平均单位毛利 M0,p0ᵢ − c0ᵢ 即基期各产品单位毛利 m0ᵢ。四项相加精确等于毛利差异,无残差;成本单价差异 用 (c0ᵢ − c1ᵢ) 表示成本下降为正向贡献。
顺序铁律:以基期单价为权重,先算总量影响,再算结构影响,最后算单价影响。不可调换,否则结果不可比。
老 / 新 / 淘汰产品拆分
产品差异 = 老产品总量差异 + 老产品结构差异 + 老产品价格差异
+ 新产品本期金额 − 淘汰产品基期金额
- 老产品:两期都有,按上述因素分解(收入 / 成本为三因素,毛利为四因素)。
- 新产品:仅本期有,贡献 = 本期金额全额。
- 淘汰产品:仅基期有,贡献 = −基期金额全额。
- 三因素分解只在老产品集合内计算(Q0、Q1、P0 均为老产品口径),新 / 淘汰产品单独加总。
单位不一致的回退
若量的计量单位不统一(如同时有吨、包),总量无法求和,不能算总量 / 结构差异。回退为 SKU 级量价分解:
整体差异 = Σ[(q1ᵢ − q0ᵢ)×p0ᵢ + (p1ᵢ − p0ᵢ)×q1ᵢ]
此时只输出量差合计与价差合计,结构差异标记为不适用。
操作步骤
本技能是分析到报告的一体化流程:跑完脚本即产出归因报告,不需要再单独组织一份。
- 接收并校验:确认两期数据齐全、字段完整;同一产品两期都应有量 / 金额,否则告警("基期或本期缺因素,数据不可信")。
- 选择口径:收入(p = 售价)、成本(p = 单位成本)、毛利(p = 单位毛利),或自定义金额列(如某成本项)。
- 分类:按产品在基期 / 本期是否存在,划分老 / 新 / 淘汰。
- 分解:按核心公式计算老产品的总量、结构、单价差异(毛利为四因素);加总新 / 淘汰贡献,并校验
合计 = 总差异。 - 归因排序:按影响额绝对值排序,输出各因素占比与 Top 产品贡献。
- 一键运行:
python scripts/variance_analysis.py ...(--help查看参数)。
默认同时产出 CSV / JSON 与 HTML 报告;金额较大时加--unit-divisor 10000 --unit-label 万元;
只要数据不要报告时加--no-html。 - 交付并转述:把 HTML 报告作为主交付物展示给用户,同时在对话里直接给出核心结论
(总差异、主因与次因、老新淘汰结构、盈利质量或剪刀差判断)——不能只说"报告已生成"。 - 告警优先:若报告出现「口径与风险提示」或平衡校验未通过,先解释原因并暂停给出经营结论。
交付物(每次运行固定产出)
| 文件 | 用途 |
|---|---|
{口径}差异归因报告_{基期}_vs_{本期}.html |
主交付物:结论先行的归因报告(单文件、可离线打开、手机可读) |
差异分析明细.csv |
逐维度明细与贡献,供复核与二次加工 |
差异分析归因排序.csv |
因素按影响额排序 |
差异分析汇总.json |
机读结果(含平衡校验、收入基数与毛利率),供下游技能 / 汇总报告复用 |
关键规则
- 顺序不可调换(基期单价为权重,先总量后结构后单价)。
- 所有被分析标的必须基期、本期因素齐全,缺一不可,否则数据不可信。
- 单位不统一不得计算结构差异,改用 SKU 级回退公式。
- 数字必须由脚本计算,验证数据仅用于校验逻辑,不得硬编码。
- 差异合计必须与总差异平衡,不平衡即停止并排查。
- 默认必须交付 HTML 报告:分析不以"算完数"结束,而以"出报告 + 说清结论"结束;仅当用户明确只要数据时才用
--no-html。
资源
本技能包含以下可复用资源,按需在上下文中加载:
scripts/variance_analysis.py— 双期差异分解脚本(收入 / 成本三因素,毛利四因素)。纯标准库,读 XLSX 需可选 openpyxl。支持收入 / 成本 / 毛利 / 自定义金额列、老新淘汰拆分、单位不一致回退、归因排序,并默认自动出具 HTML 归因报告。scripts/render_report.py— HTML 归因报告渲染器。读汇总 JSON + 明细 CSV,输出单文件 HTML:核心结论(主因定位 / 量价剪刀差 / 盈利质量判断)→ 关键指标 → 瀑布图(内联 SVG)→ 归因排序 → 关键产品 → 明细 → 平衡校验。内联样式、无 CDN、移动端可读、色弱友好(蓝=有利 / 橙=不利,并配 ▲▼)。主脚本已自动调用;换标题 / 换金额单位想重出报告时单独跑它。references/methodology.md— 方法论文档:公式推导与恒等式证明、顺序不可调换的原因、老新淘汰口径、单位不一致回退、示例与手算校验、常见错误。处理真实数据前务必先读。