---
name: private-lending-interest-calculator
description: |
  当用户需要计算中国民间借贷案件中的借期内利息、逾期利息、违约金合并审查、砍头息、复利、还款冲抵、LPR四倍上限或生成正式利息计算书时使用。适用于 1991 年旧民间借贷意见、2015 年《民间借贷规定》的 24%/36% 规则，以及 2020 年后合同成立时 1 年期 LPR 四倍规则。典型触发词包括：民间借贷利息计算、借条利息、借款利率、LPR四倍、逾期利息、砍头息、复利计算、还款冲抵、借贷利率上限、借款利息怎么算、职业放贷、private lending interest、loan interest calculation。
---

# 民间借贷利息计算

## 定位

依据中国民间借贷相关司法解释和《民法典》，计算借期内利息、逾期利息、违约金合并上限、砍头息、结息转本和还款冲抵，并输出结构化《民间借贷利息计算书》。

优先使用 `scripts/calculate_interest.py`。脚本只依赖 Python 标准库，适合本地命令行直接运行。

## 适用场景

- 计算民间借贷借期内利息
- 计算逾期利息与违约金合并后的受保护金额
- 判断约定利率是否超过 24% / 36% / LPR 四倍
- 分析砍头息、复利、职业放贷等风险
- 处理多笔还款的费用、利息、本金冲抵
- 生成正式利息计算书或庭审提交前的测算底稿

## 工作流程

### 第一步：采集案件事实

优先向用户确认以下信息：

| 要素 | 说明 |
|------|------|
| 实际到账本金 | 利息按实际出借金额计算 |
| 合同载明本金 | 如与实际到账金额不同，用于识别砍头息 |
| 借款日期 | `YYYY-MM-DD` |
| 借款到期日 | 如有约定则提供 |
| 截止计算日期 | 不提供时默认当天 |
| 借期内约定利率 | 年化百分比 |
| 逾期起算日 | 不提供时可按到期日处理 |
| 约定逾期利率 | 年化百分比，可留空 |
| 违约金/其他费用 | 可折算成年化百分比 |
| 还款记录 | JSON 列表或明细 |

还需确认是否存在：
- 砍头息
- 复利 / 结息转本
- 职业放贷
- 债权实现费用

> 信息不完整时，可先按现有信息测算，但必须在结果中标明假设条件。

### 第二步：确定法律时段

按借款成立时间自动判断适用规则：

```text
借款日期 < 2015-09-01           → 旧民间借贷意见（银行同期贷款利率四倍）
2015-09-01 ≤ 借款日期 < 2020-08-20 → 2015年《民间借贷规定》（24% / 36%）
借款日期 ≥ 2020-08-20           → 合同成立时1年期LPR四倍
```

注意：
- 如果区间跨越 `2020-08-20`，必须分段计算。
- `2015-09-01` 前时段的上限依赖银行同期贷款利率。由于本 skill 未内置历史基准利率表，脚本要求显式传入 `--legacy-base-rate`。

### 第三步：调用计算脚本

基础示例：

```bash
python3 scripts/calculate_interest.py \
  --principal 100000 \
  --loan-date 2024-06-15 \
  --rate 12 \
  --loan-end 2025-06-15 \
  --as-of 2025-04-20
```

带逾期利息、违约金与还款记录：

```bash
python3 scripts/calculate_interest.py \
  --principal 100000 \
  --contract-principal 110000 \
  --loan-date 2024-01-01 \
  --rate 12 \
  --loan-end 2024-07-01 \
  --overdue-date 2024-07-01 \
  --overdue-rate 18 \
  --penalty-rate 3 \
  --repayments @repayments.json \
  --as-of 2025-04-20
```

旧规时段示例：

```bash
python3 scripts/calculate_interest.py \
  --principal 100000 \
  --loan-date 2014-06-01 \
  --rate 18 \
  --legacy-base-rate 6.0 \
  --as-of 2015-06-01
```

支持参数：

| 参数 | 说明 |
|------|------|
| `--principal` | 实际到账本金，必填 |
| `--contract-principal` | 合同载明本金，用于识别砍头息 |
| `--loan-date` | 借款日期，必填 |
| `--loan-end` | 借款到期日 |
| `--as-of` | 计算截止日，默认当天 |
| `--rate` | 借期内年化利率 |
| `--overdue-date` | 逾期起算日 |
| `--overdue-rate` | 约定逾期年化利率 |
| `--penalty-rate` | 违约金或其他费用折算成年化利率 |
| `--fees` | 实现债权的有关费用余额 |
| `--repayments` | 还款记录 JSON 字符串或 `@文件路径` |
| `--compound-date` | 一次性结息转本日期 |
| `--legacy-base-rate` | 2015-09-01 前银行同期贷款年利率 |
| `--professional-lender` | 标记职业放贷风险 |

还款记录 JSON 示例：

```json
[
  {"date": "2024-08-01", "amount": 20000, "note": "第一次还款"},
  {"date": "2024-12-15", "amount": 30000, "note": "第二次还款"}
]
```

### 第四步：核对脚本输出

脚本会输出以下内容：

1. 基础信息
2. 法律适用
3. 分段计算明细表
4. 还款冲抵明细
5. 截至某日的本金、利息、违约金、费用合计
6. 风险提示与假设

重点核对：
- 是否正确跨 `2020-08-20` 分段
- 是否按法定上限截断利率
- 是否将违约金与逾期利息合并审查
- 是否按 费用 → 利息 → 本金 顺序冲抵
- 是否将砍头息按实际到账金额处理

### 第五步：向用户解释风险点

输出结果时，优先解释以下问题：

- 约定利率超出法定保护上限的部分是否被截断
- 已付高息中是否存在超额部分可抵扣本金
- 违约金与逾期利息是否被合并压缩
- 是否存在职业放贷或复利效力风险
- 对 2015 年前案件是否使用了用户提供的银行同期贷款利率作为前提

## 核心规则速查

### 利率保护上限

| 时段 | 借期内上限 | 逾期与违约金合计上限 |
|------|-----------|--------------------|
| 2015-09-01前 | 银行同期贷款利率四倍 | 同左 |
| 2015-09-01 至 2020-08-19 | 年利率 24% | 年利率 24% |
| 2020-08-20起 | 合同成立时1年期LPR四倍 | 同左 |

### 无逾期利率约定时

| 场景 | 处理方式 |
|------|---------|
| 2015-09-01 至 2020-08-19，借期和逾期利率均未约定 | 按年利率 6% |
| 2020-08-20后，借期和逾期利率均未约定 | 按逾期当时 1 年期 LPR |
| 仅约定借期内利率 | 逾期后通常按借期内利率，但不得超过法定上限 |

### 还款冲抵顺序

依据《民法典》第 561 条：

1. 实现债权的有关费用
2. 利息
3. 本金

## 参考文件

| 文件 | 用途 |
|------|------|
| `references/legal_basis.md` | 法律条文全文与核心规则摘要 |
| `references/lpr_data.md` | 1年期 LPR 数据表 |
| `references/calculation_rules.md` | 详细算法、边界情况和伪代码 |

## 脚本说明

| 脚本 | 用途 |
|------|------|
| `scripts/calculate_interest.py` | 核心利息计算脚本，输出正式计算书 |

## 使用注意

1. 对 `2015-09-01` 前案件，没有银行同期贷款利率数据就不要直接给出确定结论，需补 `--legacy-base-rate`。
2. 复利、展期、职业放贷等场景存在合同效力问题，脚本只做机械测算，仍需法律判断。
3. 如果用户只给“合同本金”而未给“实际到账本金”，要主动追问是否存在砍头息。
4. 对于自然人之间“利息约定不明”的情形，应优先按无息处理。
5. 当脚本输出中包含“风险提示与假设”时，回答用户时必须同步说明，不要只报最终数字。
