back
loading skill details...
当用户需要计算中国民间借贷案件中的借期内利息、逾期利息、违约金合并审查、砍头息、复利、还款冲抵、LPR四倍上限或生成正式利息计算书时使用。适用于 1991 年旧民间借贷意见、2015 年《民间借贷规定》的 24%/36% 规则,以及 2020 年后合同成立时 1 年期 LPR 四倍规则。典型触发词包括:民间借贷利...
---
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. 当脚本输出中包含“风险提示与假设”时,回答用户时必须同步说明,不要只报最终数字。
don't have the plugin yet? install it then click "run inline in claude" again.