Kpi Calculator

by alongor666

skill

基于每周六截止的年度累计CSV数据,精确计算车险业务16个核心KPI指标。接受原始CSV数据,执行聚合和计算,输出完整的KPI结果。当用户提到"计算KPI"、"KPI计算"、"赔付率"、"边际贡献"、"指标"时使用。

Skill Details

Repository Files

1 file in this skill directory


name: kpi-calculator description: 基于每周六截止的年度累计CSV数据,精确计算车险业务16个核心KPI指标。接受原始CSV数据,执行聚合和计算,输出完整的KPI结果。当用户提到"计算KPI"、"KPI计算"、"赔付率"、"边际贡献"、"指标"时使用。 allowed-tools: Read, Grep, Bash, mcp__ide__executeCode

车险KPI计算器

角色定位

车险KPI计算专家。基于每周六截止的年度累计CSV数据,精确计算16个核心KPI指标,严格遵循既定公式。

⚠️ 数据性质说明(必读)

CSV数据特征

  • 时间截止点: 每周六(week ending on Saturday)
  • 数据性质: 年初至当周六的累计数据(Year-To-Date cumulative data)
  • NOT单周数据: CSV中的数值是累计值,不是单周发生额

示例理解

第1周数据(截至1月4日周六): 签单保费 = 100万元(年初至今累计)
第2周数据(截至1月11日周六): 签单保费 = 250万元(年初至今累计)
→ 第2周增量 = 250 - 100 = 150万元(第2周实际发生)

计算模式

  1. 当周值模式(累计视角): 直接使用CSV中的累计数据
  2. 周增量模式(单周视角): 第N周累计 - 第(N-1)周累计

关键规则

  • 绝对值指标(签单保费、保单件数等): 可用增量或累计
  • ⚠️ 比率指标(赔付率、费用率等): 必须基于累计数据计算,不能用增量
    • 错误❌: 周增量赔款 / 周增量保费(会产生剧烈波动)
    • 正确✅: 累计赔款 / 累计保费(反映整体水平)

参考: src/lib/calculations/kpi-engine.ts:calculateIncrement()

周次日历规则

周次定义(50周工作制)

  • 第1周: 1月1日 → 第一个周六(可能不足7天)
  • 第2周起: 完整7天(周日 → 周六)
  • 第N周结束日 = 第1周结束日 + (N-1) × 7天

2025年示例

  • 第1周: 2025-01-01(周三) ~ 2025-01-04(周六) = 4天,已过天数=4
  • 第2周: 2025-01-05(周日) ~ 2025-01-11(周六) = 7天,已过天数=11
  • 第42周: 2025-10-13(周一) ~ 2025-10-18(周六) = 7天,已过天数=292

时间进度计算

  • 年度时间进度 = 已过天数 / 365
  • 周计划 = 年度目标 / 50(工作周数)

16个核心KPI计算公式

第一行:核心比率指标(%)

  1. 满期边际贡献率 = 100% - 变动成本率
  2. 保费时间进度达成率:
    • 当周值模式: (累计签单保费/年度目标) / (已过天数/365) × 100%
    • 周增量模式: 周增量签单保费 / (年度目标÷50) × 100%
  3. 满期赔付率 = 累计已报告赔款 / 累计满期保费 × 100%
  4. 费用率 = 累计费用额 / 累计签单保费 × 100%

第二行:核心金额指标(万元)

  1. 满期边际贡献额 = 累计满期保费 × 满期边际贡献率 / 10000
  2. 签单保费 = 累计签单保费_元 / 10000
  3. 已报告赔款 = 累计已报告赔款_元 / 10000
  4. 费用额 = 累计费用额_元 / 10000

第三行:结构与效率指标

  1. 变动成本率 = 满期赔付率 + 费用率
  2. 满期率 = 累计满期保费 / 累计签单保费 × 100%
  3. 满期出险率 = (累计赔案件数 / 累计保单件数) × 满期率
  4. 保单件数 = 累计保单件数

第四行:单均质量指标(元)

  1. 赔案件数 = 累计赔案件数
  2. 单均保费 = 累计签单保费_元 / 累计保单件数
  3. 案均赔款 = 累计已报告赔款_元 / 累计赔案件数
  4. 单均费用 = 累计费用额_元 / 累计保单件数

辅助字段

  • 商业险自主系数 = 累计签单保费 / 累计商业险折前保费
  • 单均边贡额 = 累计边际贡献额 / 累计保单件数

计算工作流

模式A:当周值模式(默认)

输入: 第N周CSV数据(年初至第N周六的累计)
→ 直接聚合: SUM各字段
→ 计算KPI: 所有指标基于累计数据
→ 输出: 累计KPI结果

模式B:周增量模式

输入:
  - 第N周CSV数据(年初至第N周六的累计)
  - 第(N-1)周CSV数据(年初至第(N-1)周六的累计)
→ 计算增量:
  - 签单保费增量 = 第N周累计 - 第(N-1)周累计
  - 保单件数增量 = 第N周累计 - 第(N-1)周累计
  - (所有绝对值字段同理)
→ 计算KPI:
  - 绝对值指标: 使用增量值
  - 比率指标: 使用第N周累计值(⚠️ 关键)
  - 均值指标: 增量金额 / 增量件数
→ 输出: 单周KPI结果

关键差异表

指标类型 当周值模式 周增量模式
签单保费 累计值 增量值
保单件数 累计值 增量值
满期赔付率 累计赔款/累计保费 累计赔款/累计保费 ⚠️
费用率 累计费用/累计保费 累计费用/累计保费 ⚠️
单均保费 累计保费/累计件数 增量保费/增量件数

核心计算规则

  1. 安全除法: 分母≤0时返回 null(使用 safeDivide 函数)
  2. 单位转换:
    • 金额类: 元 → 万元(÷10000,四舍五入到整数)
    • 比率类: 小数 → 百分比(×100,保留2位小数)
    • 均值类: 保留整数元
  3. 数据来源:
    • 所有比率的分子分母必须来自同一时间点的累计数据
    • 增量只用于绝对值指标的展示
  4. 验证关系:
    • 变动成本率 = 满期赔付率 + 费用率(必须相等)
    • 满期边际贡献率 = 100% - 变动成本率(必须相等)

参考实现:

  • src/domain/rules/kpi-calculator.ts (纯函数计算)
  • src/lib/calculations/kpi-engine.ts:calculateIncrement() (增量模式)

必需CSV字段(累计数据)

  • signed_premium_yuan - 年初至今签单保费累计(元)
  • matured_premium_yuan - 年初至今满期保费累计(元)
  • policy_count - 年初至今保单件数累计
  • claim_case_count - 年初至今赔案件数累计
  • reported_claim_payment_yuan - 年初至今已报告赔款累计(元)
  • expense_amount_yuan - 年初至今费用金额累计(元)
  • commercial_premium_before_discount_yuan - 年初至今商业险折前保费累计(元)
  • marginal_contribution_amount_yuan - 年初至今边际贡献额累计(元)

可选字段:

  • week_number - 周次(用于识别数据对应的周)
  • policy_start_year - 年份

标准输出格式

## KPI计算结果

**数据说明**:

- 截止时间: 第X周(YYYY-MM-DD 周六)
- 计算模式: [当周值模式/周增量模式]
- 已过天数: XXX天(年度时间进度: XX.XX%)

### 核心KPI(4x4网格)

| KPI名称              | 计算值 | 单位 | 说明     |
| -------------------- | ------ | ---- | -------- |
| **第一行:核心比率** |
| 满期边际贡献率       | XX.XX  | %    | 盈利能力 |
| 保费时间进度达成率   | XX.XX  | %    | 进度达成 |
| 满期赔付率           | XX.XX  | %    | 风险成本 |
| 费用率               | XX.XX  | %    | 运营效率 |
| **第二行:核心金额** |
| 满期边际贡献额       | XXX    | 万元 | 利润贡献 |
| 签单保费             | XXX    | 万元 | 业务规模 |
| 已报告赔款           | XXX    | 万元 | 赔付支出 |
| 费用额               | XXX    | 万元 | 费用支出 |
| **第三行:结构效率** |
| 变动成本率           | XX.XX  | %    | 成本控制 |
| 满期率               | XX.XX  | %    | 成熟度   |
| 满期出险率           | XX.XX  | %    | 出险频率 |
| 保单件数             | XXX    | 件   | 业务量   |
| **第四行:单均质量** |
| 赔案件数             | XXX    | 件   | 赔付频率 |
| 单均保费             | XXX    | 元   | 业务质量 |
| 案均赔款             | XXX    | 元   | 风险成本 |
| 单均费用             | XXX    | 元   | 成本效率 |

### 计算验证

- ✓ 变动成本率 = 赔付率(XX.XX%) + 费用率(XX.XX%) = XX.XX%
- ✓ 边际贡献率 = 100% - 变动成本率(XX.XX%) = XX.XX%

### 辅助字段

- 满期保费: XXX 万元
- 商业险自主系数: X.XX
- 单均边贡额: XXX 元

激活条件

当用户请求包含以下关键词时自动激活:

  • "计算KPI" / "KPI计算" / "车险指标"
  • "满期赔付率" / "边际贡献" / "保费达成率"
  • CSV数据 + "周六" / "累计" / "年初至今"

⚠️ 关键注意事项

  1. 累计数据本质: CSV数据是累计值,计算比率时分子分母必须来自同一累计时点
  2. 周增量计算: 通过差分获得,但比率指标仍用累计数据(避免单周波动)
  3. 周六截止: 每周数据截止到周六,时间进度计算需考虑周次映射
  4. 50周工作制: 周计划 = 年度目标 ÷ 50,不是52
  5. 除零保护: 使用 safeDivide,分母为0返回 null
  6. 代码一致性: 与 src/lib/calculations/kpi-engine.ts:calculateIncrement() 保持完全一致

参考文档

  • 核心计算文档: 开发文档/03_technical_design/core_calculations.md
  • Domain层实现: src/domain/rules/kpi-calculator.ts
  • 计算引擎: src/lib/calculations/kpi-engine.ts
  • 公式定义: src/lib/calculations/kpi-formulas.ts

Related Skills

Attack Tree Construction

Build comprehensive attack trees to visualize threat paths. Use when mapping attack scenarios, identifying defense gaps, or communicating security risks to stakeholders.

skill

Grafana Dashboards

Create and manage production Grafana dashboards for real-time visualization of system and application metrics. Use when building monitoring dashboards, visualizing metrics, or creating operational observability interfaces.

skill

Matplotlib

Foundational plotting library. Create line plots, scatter, bar, histograms, heatmaps, 3D, subplots, export PNG/PDF/SVG, for scientific visualization and publication figures.

skill

Scientific Visualization

Create publication figures with matplotlib/seaborn/plotly. Multi-panel layouts, error bars, significance markers, colorblind-safe, export PDF/EPS/TIFF, for journal-ready scientific plots.

skill

Seaborn

Statistical visualization. Scatter, box, violin, heatmaps, pair plots, regression, correlation matrices, KDE, faceted plots, for exploratory analysis and publication figures.

skill

Shap

Model interpretability and explainability using SHAP (SHapley Additive exPlanations). Use this skill when explaining machine learning model predictions, computing feature importance, generating SHAP plots (waterfall, beeswarm, bar, scatter, force, heatmap), debugging models, analyzing model bias or fairness, comparing models, or implementing explainable AI. Works with tree-based models (XGBoost, LightGBM, Random Forest), deep learning (TensorFlow, PyTorch), linear models, and any black-box model

skill

Pydeseq2

Differential gene expression analysis (Python DESeq2). Identify DE genes from bulk RNA-seq counts, Wald tests, FDR correction, volcano/MA plots, for RNA-seq analysis.

skill

Query Writing

For writing and executing SQL queries - from simple single-table queries to complex multi-table JOINs and aggregations

skill

Pydeseq2

Differential gene expression analysis (Python DESeq2). Identify DE genes from bulk RNA-seq counts, Wald tests, FDR correction, volcano/MA plots, for RNA-seq analysis.

skill

Scientific Visualization

Meta-skill for publication-ready figures. Use when creating journal submission figures requiring multi-panel layouts, significance annotations, error bars, colorblind-safe palettes, and specific journal formatting (Nature, Science, Cell). Orchestrates matplotlib/seaborn/plotly with publication styles. For quick exploration use seaborn or plotly directly.

skill

Skill Information

Category:Skill
Allowed Tools:Read, Grep, Bash, mcp__ide__executeCode
Last Updated:12/13/2025