terancejiang/financial-report-minesweeper
GitHub: terancejiang/financial-report-minesweeper
财报排雷工具,基于规则与双数据源自动检测 A 股财报风险并输出分级报告。
Stars: 40 | Forks: 13
# 财报排雷 / Financial Report Minesweeper
本项目基于唐朝老师的《手把手教你读财报(新准则升级版)》,将书中的财报分析方法论提炼为一套自动化的风险检测工具。通过 Claude Code Skill 实现一键排雷:输入股票代码 → 自动获取数据 → 逐条检查 30 条规则 → 输出风险等级报告。
## 安装
### 前置条件
- [Claude Code](https://claude.ai/claude-code) CLI
- Python 3.9+
- [Tushare Pro](https://tushare.pro/register) Token(免费注册)
### 一键安装
git clone https://github.com/terancejiang/financial-report-minesweeper.git
cd financial-report-minesweeper
bash install.sh
安装脚本会自动:
1. 检查 Python 环境和依赖(`tushare`, `pandas`, `requests`),缺少的自动安装
2. 引导设置 `TUSHARE_TOKEN`(保存到 `.env`)
3. 将 Skill 文件安装到 `~/.claude/commands/minesweeper/`
4. 将年报下载 Skill 安装到 `~/.claude/commands/download-report.md`
### 手动安装
如果不想用安装脚本:
# 1. 克隆项目
git clone https://github.com/terancejiang/financial-report-minesweeper.git
cd financial-report-minesweeper
# 2. 安装 Python 依赖
pip install tushare pandas requests
# 3. 设置 Tushare Token (复制示例文件并填入你的 token)
cp .env.example .env
# 编辑 .env,将 your_token_here 替换为你的实际 token
# 4. 安装 Skill 到 Claude Code
mkdir -p ~/.claude/commands/minesweeper/references
cp skill/SKILL.md ~/.claude/commands/minesweeper/
cp skill/references/checklist-rules.md ~/.claude/commands/minesweeper/references/
cp skill/download-report.md ~/.claude/commands/download-report.md
### 验证安装
在 Claude Code 中输入 `/minesweeper 600519`,如果能正常获取数据并输出报告,说明安装成功。
## 使用方法
在 Claude Code 中运行:
/minesweeper 600519 # 用股票代码
/minesweeper 贵州茅台 # 用公司名称
/minesweeper 000858 2023 # 指定年份
Skill 会自动:
1. 通过 Tushare API 获取 10 年结构化财务数据(三表 + 审计 + 股东 + 同行对比)
2. 通过内置下载脚本获取最新年报 PDF(用于附注等定性分析)
3. 按 7 层 30 条规则逐条检查
4. 输出带风险等级的排雷报告
5. 保存原始数据、分析日志和报告到 `output/{stock_code}/`
## 数据源
采用 **Tushare(主)+ PDF(辅)** 双数据源策略:
| 数据源 | 用途 | 优势 |
|--------|------|------|
| **Tushare API** | 量化规则检查(Layer 0-4, 部分 5-6) | 零提取误差、10+ 年历史、可自动对比同行 |
| **年报 PDF** | 定性分析(附注、董事会报告、关联交易) | 包含运费明细、研发资本化、前五大客户等非结构化信息 |
Tushare 模块和年报下载脚本均已内置于项目 `scripts/` 目录中,无需外部依赖。
## 排雷规则体系(7 层 30 条)
以下每条规则均标注其在原书中的出处与逻辑依据。
### Layer 0: 门槛检查(一票否决)
#### 0.1 审计意见必须是「标准无保留意见」
| 判定 | 条件 |
|------|------|
| **FAIL → 直接排除** | 审计意见为非标准无保留意见 |
#### 0.2 年报按时披露
| 判定 | 条件 |
|------|------|
| **FAIL → 直接排除** | 超过 4 月 30 日截止日仍未披露 |
### Layer 1: 利润表信号(6 条)
#### 1.1 毛利率异常高 + 大幅波动
| 级别 | 阈值 |
|------|------|
| WARN | YoY 波动 >5pp 或高于同行中位数 15pp |
| FAIL | 波动 >10pp 且高于同行 |
#### 1.2 毛利率↑ + 应收↑ + 应付↓
| 级别 | 阈值 |
|------|------|
| WARN | 部分条件满足 |
| FAIL | 三项同时满足 |
#### 1.3 运费增长 << 收入增长
| 级别 | 阈值 |
|------|------|
| WARN | 运费增速 < 收入增速的 50% |
| FAIL | < 25% |
#### 1.4 其他业务收入占比突增
| 级别 | 阈值 |
|------|------|
| WARN | >5% 且 YoY +3pp |
| FAIL | >15% 或 YoY +10pp |
#### 1.5 费用率异常下降
| 级别 | 阈值 |
|------|------|
| WARN | 低于 3 年均值 3pp 或低于同行中位数 |
| FAIL | 低于 5pp |
#### 1.6 资产减值损失暴增
| 级别 | 阈值 |
|------|------|
| WARN | YoY >50% |
| FAIL | YoY >100% 或 >5% 净利润 |
### Layer 2: 现金流信号(3 条)
#### 2.1 经营 CF 好 + 投资 CF 持续大额为负
| 级别 | 阈值 |
|------|------|
| WARN | 投资 CF > 经营 CF 的 80%(多年) |
| FAIL | 投资 CF > 经营 CF(3+ 年) |
#### 2.2 经营 CF 持续为负
| 级别 | 阈值 |
|------|------|
| WARN | 近 5 年中 2 年为负 |
| FAIL | 连续 3+ 年为负 |
#### 2.3 高现金余额 + 高息借债
| 级别 | 阈值 |
|------|------|
| WARN | 现金覆盖有息负债却利率高于基准+2pp |
| FAIL | 高于基准+4pp |
### Layer 3: 资产负债表信号(5 条)
#### 3.1 应收增速 > 收入增速
| 级别 | 阈值 |
|------|------|
| WARN | >1.5x |
| FAIL | >2x |
#### 3.2 存货周转率↓ + 毛利率↑(权重最高的单项信号)
| 级别 | 阈值 |
|------|------|
| WARN | 周转率降 >10% + 毛利率升 |
| FAIL | 两项均强烈(大概率造假) |
#### 3.3 在建工程不转固
| 级别 | 阈值 |
|------|------|
| WARN | CIP 增长 >30% 无对应固定资产增加 |
| FAIL | 持续 3+ 年 |
#### 3.4 长期待摊费用大增
| 级别 | 阈值 |
|------|------|
| WARN | YoY >50% |
| FAIL | YoY >100% |
#### 3.5 坏账计提比例低于同行
| 级别 | 阈值 |
|------|------|
| WARN | 应收减值/应收余额显著低于同行中位数 |
| FAIL | 低于同行中位数 50% |
### Layer 4: 交叉验证(5 条,权重最高)
#### 4.1 经营 CF / 净利润 < 1
| 级别 | 阈值 |
|------|------|
| WARN | 近 5 年中 2 年 < 1 |
| FAIL | 连续 3+ 年 < 1 |
#### 4.2 销售收现 / 营收 < 1
| 级别 | 阈值 |
|------|------|
| WARN | < 0.9 |
| FAIL | < 0.8 持续 2+ 年 |
#### 4.3 利润膨胀 → 资产膨胀
| 级别 | 阈值 |
|------|------|
| WARN | 资产增速远超收入增速 |
| FAIL | 强烈背离 |
#### 4.4 核心利润 vs 净利润背离
| 级别 | 阈值 |
|------|------|
| WARN | 偏差 > 20% |
| FAIL | 偏差 > 40% |
#### 4.5 净利润增长 + FCF 持续为负
| 级别 | 阈值 |
|------|------|
| WARN | 2 年 |
| FAIL | 3+ 年 |
### Layer 5: 非财务信号(9 条)
#### 5.1 更换审计机构
| 数据源 | 方法 |
|--------|------|
| Tushare | 事务所名称变化→WARN,多次→FAIL |
#### 5.2 大股东减持
| 数据源 | 方法 |
|--------|------|
| Tushare | 控股股东持股比例连续下降→WARN |
#### 5.3 财务总监频繁更换
| 数据源 | 方法 |
|--------|------|
| PDF | 读年报中"离任"信息 |
#### 5.4 独董集体辞职
| 数据源 | 方法 |
|--------|------|
| PDF | 读年报中"离任"信息 |
#### 5.5 可疑供应商/客户
| 数据源 | 方法 |
|--------|------|
| PDF | 前 5 大客户占比 >50%→WARN |
#### 5.6 跨行业频繁收购
| 数据源 | 方法 |
|--------|------|
| PDF | 读投资状况分析 |
#### 5.7 商誉过大
| 级别 | 阈值 |
|------|------|
| WARN | 商誉/净资产 >20% |
| FAIL | 商誉/净资产 >40% |
#### 5.8 其他应收款异常
| 级别 | 阈值 |
|------|------|
| WARN | 其他应收款/总资产 >3% 或 YoY >30% |
| FAIL | 其他应收款/总资产 >5% 或 YoY >50%,或年报"非经营性占用"段标注"适用" |
#### 5.9 监管处罚/立案调查
| 级别 | 阈值 |
|------|------|
| WARN | 公司/董监高收到警示函或行政处罚 |
| FAIL | 公司/控股股东/实控人被立案调查 |
### Layer 6: 行业特有风险(2 条)
#### 6.1 农林渔牧行业
| 判定 | 条件 |
|------|------|
| WARN | 行业分类属于农林渔牧 → 自动标记 |
#### 6.2 研发资本化比例
| 级别 | 阈值 |
|------|------|
| WARN | >30% |
| FAIL | >50% |
## 评分体系
### 权重
| 层级 | 每条 WARN | 每条 FAIL | 设计依据 |
|------|----------|----------|----------|
| Layer 1 利润表 | 2 分 | 5 分 | 利润表最容易造假(权责发生制),但单条信号还需交叉验证 |
| Layer 2 现金流 | 3 分 | 6 分 | 现金流造假难度更高,信号可信度强于利润表 |
| Layer 3 资产负债表 | 2 分 | 5 分 | 虚增利润 90% 体现为资产膨胀,但需结合其他层判断 |
| Layer 4 交叉验证 | 3 分 | 7 分 | 三表交叉验证是最可靠的排雷方法,权重最高 |
| Layer 5 非财务 | 1 分 | 3 分 | 非财务信号是"先兆",但主观性较强 |
| Layer 6 行业 | 1 分 | 3 分 | 行业风险是背景因素,需结合具体指标 |
### 组合加分
特别危险的信号组合会额外加分(原书中这些信号常同时出现于造假案例中):
- 规则 3.2 FAIL(存货周转↓ + 毛利率↑)→ **+10 分** — 唐朝原话"大概率造假"
- 规则 2.3 FAIL + 4.1 FAIL(高现金高息借债 + CF/利润 < 1)→ **+8 分** — 货币资金疑似造假 + 利润无现金支撑
- 规则 1.2 FAIL + 3.1 FAIL(毛利率↑应收↑应付↓ + 应收增速超收入)→ **+6 分** — 放松信用冲收入的完整证据链
### 风险等级
| 得分 | 等级 | 说明 |
|------|------|------|
| 0-10 | 低风险 | 几乎无异常信号 |
| 11-25 | 中风险 | 存在需关注的异常 |
| 26-45 | 高风险 | 多项严重异常 |
| 46+ | 极高风险 | 强烈暗示操纵 |
| Layer 0 FAIL | 直接排除 | 门槛未通过 |
## 知识库
`手把手读财报/` 目录包含唐朝《手把手教你读财报(新准则升级版)》的 8 章读书笔记:
| 章节 | 内容 | 对应规则层 |
|------|------|-----------|
| ch1 | 为什么读财报 | Layer 0(审计意见) |
| ch2 | 资产负债表 | Layer 3 |
| ch3 | 利润表 | Layer 1 |
| ch4 | 现金流量表 | Layer 2 |
| ch5 | 综合分析 | Layer 4 |
| ch6 | 权益变动表与附注 | Layer 5(关联交易) |
| ch7 | 管理层汇报 | Layer 5(非财务信号) |
| ch8 | 欺诈与反欺诈 | 全部层级 |
## 项目结构
financial_report_minesweeper/
├── README.md # 本文件
├── install.sh # 一键安装脚本
├── .gitignore
├── skill/ # Claude Code Skill 定义(安装时复制到 ~/.claude/commands/)
│ ├── SKILL.md # 主 Skill 文件
│ ├── download-report.md # 年报下载 Skill
│ └── references/
│ └── checklist-rules.md # 30 条规则详细阈值
├── scripts/ # 数据获取脚本
│ ├── minesweeper_data.py # 排雷专用数据获取
│ ├── download_report.py # 年报 PDF 下载工具
│ ├── config.py # Token 和股票代码管理
│ ├── format_utils.py # 格式化工具
│ ├── tushare_collector.py # Tushare API 客户端
│ └── tushare_modules/ # Tushare 子模块
│ ├── financials.py # 三表 + 指标获取
│ ├── other_data.py # 审计 + 股东数据
│ └── ...
├── 手把手读财报/ # 知识库(读书笔记)
│ ├── ch1~ch8 .md
│ └── *.pdf (gitignored)
└── output/ # 分析输出(gitignored)
└── {stock_code}/
├── raw_data.md
├── report.md
└── analysis_log.md
安装后 ~/.claude/commands/ 目录结构:
~/.claude/commands/minesweeper/
├── SKILL.md # 主 Skill 文件
└── references/
└── checklist-rules.md # 30 条规则详细阈值
## 依赖
- **Python 包**:`tushare`, `pandas`, `requests`(可选:`yfinance`)
- **环境变量**:`TUSHARE_TOKEN`(Tushare Pro API token)
- 所有模块均已内置,无需外部项目依赖
## 免责声明
本工具仅供学习和研究使用,不构成任何投资建议。财报分析存在局限性,自动化检测无法替代专业的财务审计。投资决策需结合多方面信息综合判断。
标签:A股, Claude Code, Claude Skill, Python, SEO, Tushare Pro, 唐昌法, 子域名暴力破解, 字符串匹配, 年报下载, 手把手教你读财报, 投资分析, 数据获取, 无后门, 股票代码, 自动化检测, 规则检查, 财务报表分析, 财务风险检测, 财报排雷, 逆向工具, 金融科技, 风险等级报告