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, 唐昌法, 子域名暴力破解, 字符串匹配, 年报下载, 手把手教你读财报, 投资分析, 数据获取, 无后门, 股票代码, 自动化检测, 规则检查, 财务报表分析, 财务风险检测, 财报排雷, 逆向工具, 金融科技, 风险等级报告