CLAUDE.md · git:20260916.3368f05 · 2026-09-16 · sha256 3701dd0fc275a840

CLAUDE.md git:20260916.3368f05A

Immutable. This exact content is served forever at /api/v1/blob/3701dd0fc275a840.

# 论文-研报工作流 · FinResearch Agent

> **📌 占位符约定**:本文档中提及的 MCP 总数使用 `{{MCP_COUNT}}` 占位符。
> 实际数字由 `python scripts/count_mcp.py` 自动扫描 `mcp_servers/user_*` 目录后写入
> `.docs-cache/MCP_COUNT.txt`。新增/删除 MCP 目录后,跑一次该脚本即可让所有引用保持准确。
>
> **CI 状态**:PR-1 ~ PR-7 全部 merge,16/16 CI 全绿(`3165d09`)。

> 经济金融领域 AI 研究助手。生成论文草稿,集成 MCP 数据获取、因果推断、LaTeX 排版和 AI 辅助 review。
>
> ⚠️ **重要声明**:本工具生成的论文草稿必须经研究者逐字审阅后方可投稿。所有因果识别策略、统计结果和引用必须由研究者独立核实。

> **适用工具**: Claude Code · GitHub Copilot · Cursor(通用 AI 编码工具均可)

---

## 一句话

**"告诉我研究主题,我帮你:从文献综述 → 想法生成 → 实证设计 → 论文草稿 → LaTeX 编译。(草稿需研究者审阅后投稿。)"**

---

## 快速开始

不需要记命令。直接说研究方向:

```
"我想研究关税政策对A股出口型企业创新的影响,设计一篇发表在经济研究的实证论文"
"帮我做数字金融领域的文献综述"
"有什么新的研究想法关于企业ESG表现和融资成本"
```

或用脚本直接运行:

```bash
# 写作轨
python scripts/agent_pipeline.py --topic "碳排放权交易对企业绿色创新的影响" --use-hitl
# 实证轨(现代 DID)
python -m scripts.research_framework.enhanced_pipeline --topic "碳排放权交易对企业绿色创新的影响"
pytest tests/ -v
```

---

## 自动启动流程(每次对话必须执行)

```
用户打开对话
        ↓
① 问候 + 能力介绍(固定文案,不跳过)
        ↓
② 快速诊断:python scripts/startup_check.py(轻量,<3秒)
        ↓
③ 详细诊断(可选):python scripts/health_check.py --verify
        ↓
④ MCP 注册检查:python scripts/register_mcp_servers.py --list
        ↓
  ┌─ API Key 缺失 → 简短提示(不阻塞)
  ├─ LLM 不可用 → 询问是否继续
  ├─ MCP 未注册 → 提示运行 `python scripts/register_mcp_servers.py`
  └─ LaTeX 缺失 → 提示安装 tectonic / MacTeX
        ↓
⑤ 等待研究方向 → 用户描述 → 开始研究
        ↓
⑥ 推荐路径(两条,勿混用文档死链):
     · 新用户澄清:python scripts/start_research.py --topic "..."
       (锁定 research_profile.json;默认不自动开跑)
       可选:加 --continue --use-hitl 进入写作流水线
     · 直接写作:python scripts/agent_pipeline.py --topic "..." [--use-hitl]
       (--use-hitl 默认停 outline/literature/draft)
     · HITL:agent_pipeline 的 HITLGate;InteractivePipelineCheckpoint
       仅供技能/脚本手动 import,不自动挂入主流水线
```

**第一步问候是强制要求**,不要跳过。直接开始工作会显得突兀。

---

## 核心能力

### 数据获取(MCP,`{{MCP_COUNT}}` 个服务器目录)

> **重要说明**:`{{MCP_COUNT}}` 个 MCP 目录中,28 个完全免费(无需 API Key),12 个需要 API Key,3 个为 opt-in 法律风险。详见 `python scripts/count_assets.py`。

| 你要什么 | 用这个 MCP |
|---------|-----------|
| A股行情/财务/融资融券 | `user-tushare`(需 TUSHARE_TOKEN)|
| 中国宏观(GDP/CPI/M2)| `user-financial` |
| 美联储/FOMC | `user-fed-data` |
| 世界银行宏观 | `user-wb-data` |
| IMF数据 | `user-imf-data` |
| OECD数据 | `user-oecd-data` |
| 美国经济分析局GDP | `user-bea-data` |
| 国债收益率/经济日历 | `user-eodhd`(需Key)或 `user-fed-data` |
| 美股/ETF/期权/财务 | `user-yfinance` |
| 研报/新闻/板块/分析师 | `user-eastmoney-reports` |
| 公募基金 | `user-eastmoney-fund` |
| 债券数据 | `user-eastmoney-bond` |
| 期权数据 | `user-eastmoney-option` |
| 外汇/航运/大宗商品 | `user-enhanced-finance` |
| 加密货币 | `user-cryptocompare` |
| SEC 10-K/10-Q/8-K | `user-sec-edgar` |
| 学术论文(全文)| `user-openalex`、`user-arxiv`、`user-context7`、`user-semantic-scholar` |
| NBER工作论文 | `user-nber-wp` |
| 中文文献(CSSCI/CNKI)| `user-chinese-literature`、`user-wanfang`、`user-csmar` |
| 中国专利数据 | `user-sipo` |
| 中国海关数据 | `user-chinese-customs` |
| Wind数据 | `user-wind`(需账号)|
| CSMAR国泰安 | `user-csmar`(需Key)|
| CEIC宏观 | `user-macro-ceic` |
| 省级/市级统计 | `user-province-stats`、`user-hubei-stats`、`user-wuhan-stats` |
| 新闻搜索 | `user-newsapi`(需Key)、`user-brave-search`(需Key)|
| 云端代码执行 | `user-e2b-mcp`(需Key)|
| 浏览器自动化 | `user-playwright-mcp` |
| 数据处理 | `user-pandas-mcp` |
| LaTeX排版检查 | `user-latex-mcp` |
| 文件系统操作 | `user-filesystem-mcp` |

> **注意**:以下 MCP 需要付费账号或 API Key 才能获取真实数据:
> - `user-tushare` — Tushare Pro Token(年费约 600-2000 元人民币)
> - `user-wind` — Wind 账号(机构付费,个人研究者通常无法获取)
> - `user-csmar` — CSMAR 国泰安(机构账号,通常需高校/机构购买)
> - `user-wanfang` / `user-cnki` — 需要机构网络权限或账号
> - `user-eodhd` — EODHD API Key(免费注册有每日额度限制)
> - `user-brave-search` — Brave Search API Key(免费注册每月有限额)
> - `user-newsapi` — NewsAPI Key(免费注册有限额)
> - `user-yfinance` / `user-sec-edgar` — 免费,无需 Key

### 计量方法(约59种独立实现,JF/JFE/RFS 标准)

> **重要说明**:以下方法中,标注 🔗 的依赖 `linearmodels`、`diff-in-diff2` 等第三方包;标注 ⭐ 的为独立 Python 实现。
> 数量为近似值,因部分估计器(如 TWFE × 3 种 SE × bootstrap 变体)存在重复计数。
>
> **独立验证状态**:标准 DID、Bacon 分解、CS(2021)、事件研究、空间回归(部分)有独立测试文件;其他方法的正确性依赖 statsmodels/linearmodels 间接保证。

- ⭐ **标准 DID**: 2x2 OLS + cluster-robust SE(HC0/HC1/CR0/CR1/CGM)
- ⭐ **事件研究**: pre/post 可视化 + 平行趋势检验
- ⭐ **Bacon 分解**: Goodman-Bacon (2021) 权重分解
- 🔗 **交错 DID**: Callaway-SantAnna (QJE 2021) — 需要 `pip install diff-in-diff2`;Sun-Abraham (REStud 2021);Borusyak-Jaravel-Spinks (REStud 2024);dCdH
- 🔗 **合成控制**: Abel (JASA 2016);Arkhangelsky (Science 2021)
- ⭐ **RDD**: 精确/模糊/局部线性(三角核/均匀核)
- 🔗 **IV/2SLS**: 面板 IV、Jackknife IV — 依赖 `linearmodels`
- 🔗 **Panel GMM**: Arellano-Bond、Blundell-Bond — 依赖 `linearmodels`
- ⭐ **三重差分**: Triple-DiD(处理效应异质性稳健)
- ⭐ **面板分位数**: 固定效应分位数回归(Canay 2011)、QTE(分位数处理效应)
- ⭐ **交互固定效应**: Bai (2009) 交互固定效应
- ⭐ **局部投影 DID**: Jordà (2005) 局部投影
- ⭐ **空间回归**: SAR/SEM/SDM/SLX — 部分依赖 `libpysal`
- ⭐ **敏感性分析**: Wild Cluster Bootstrap、Leamer 边界、异质性分析
  - Honest DiD (Rambachan-Roth 2023):需 `pip install honestdid`;Rambachan & Roth (2023) REStud 的 Python 实现,提供 DeltaSD 和 DeltaRM 两种敏感性框架;旧版 homebrew 近似公式已移除(不正确)
  - Oster Bounds (2019):Selection-on-unobservables 敏感性分析
- 🔗 **其他**: 面板门槛回归(Hansen 2000,含 Bootstrap CI)、TVP-VAR、离散选择、因果森林、面板协整 — 依赖 `linearmodels`/`sklearn`
- ⭐ **稳健性检验**: 19种自动化检验(`RobustnessRunner.run_comprehensive("full")`),覆盖 JF/JFE/RFS 和中文顶刊标准

### 论文写作

- LaTeX 输出(30种期刊格式(EN/ZH 25种 + JP/DE 5种),EN/ZH: 经济研究/金融研究/JF/JFE/RFS 等,JP: JPE/RES/JoMa 等,DE: ZWiSt/JNS 等)
- JF / JFE / RFS / JAE / JPE / Econometrica 等英文顶刊
- 经济研究 / 金融研究 / 管理世界 / 会计研究 等中文顶刊
- 多轮对抗性 review 循环

### 图表生成

- matplotlib / seaborn / plotly
- 20种专业金融图表预设
- 输出格式:PDF / SVG / PNG(≥300 DPI)
- 数据溯源追踪(provenance)

---

## 项目结构

```
scripts/
├── agent_pipeline.py              # 主入口:端到端流水线
├── research_framework/           # 研究执行层(47个模块)
│   ├── pipeline.py            # 标准流水线
│   ├── modern_did.py          # 现代 DID(CS/SunAb/Borusyak/GB/dCdH)
│   ├── synthetic_control.py  # 合成控制法(Abadie et al. 2010)
│   ├── synthetic_did.py       # 合成DID(Arkhangelsky et al. 2021)
│   ├── local_projections_did.py  # 局部投影DID(Jordà 2005)
│   ├── triple_diff_did.py    # 三重差分DID
│   ├── panel_quantile_regression.py  # 面板分位数回归
│   ├── interactive_fixed_effects.py  # 交互固定效应(Bai 2009)
│   ├── spatial_regression.py  # 空间回归(SDM/SAR/SEM)
│   ├── iv_panel.py           # IV/Panel/GMM
│   ├── rdd.py                # 断点回归(RDD)
│   ├── regression_engine.py   # DID/OLS/PSM/GMM
│   ├── fin_charts.py         # 20种专业金融图表
│   ├── data_fetcher.py       # MCP数据获取(7层fallback)
│   ├── report_generator.py    # LaTeX/Word双格式
│   └── robustness_runner.py   # 19类稳健性检验
├── core/                         # Agent编排层(87个非测试模块)
│   ├── provenance.py            # 数据溯源追踪
│   ├── checkpoint.py             # 断点续传
│   ├── event_monitor.py          # 宏观事件监控(NFP/CPI/FOMC)
│   └── mcp_tool_market.py        # MCP工具市场
└── research_directions/          # 研究方向(12个)
    ├── digital_finance.py          # 数字金融
    ├── green_finance.py            # 绿色金融
    ├── carbon_economics.py         # 碳经济学
    ├── corporate_finance.py        # 公司金融
    ├── macro_finance.py            # 宏观金融
    ├── asset_pricing.py            # 资产定价
    ├── behavioral_finance.py        # 行为金融
    ├── fintech_innovation.py        # 金融科技创新
    ├── real_estate_finance.py      # 房地产金融
    ├── international_finance.py    # 国际金融
    └── political_economy_finance.py # 政治经济学

mcp_servers/                      # `{{MCP_COUNT}}` 个 MCP 服务器目录
output/                           # 输出目录
├── fin-literature/              # 文献综述
├── fin-ideas/                   # 研究想法
├── fin-novelty/                # 新颖性验证
├── fin-refinement/              # 研究设计
├── fin-experiments/             # 实证结果
├── fin-review/                 # 对抗性review
└── fin-manuscript/             # 论文草稿
```

---

## 关键入口脚本

| 脚本 | 功能 |
|------|------|
| `scripts/agent_pipeline.py` | 完整流水线(主题 → 论文 PDF)|
| `scripts/health_check.py` | 系统健康检查(每次启动前必运行)|
| `scripts/idea_data_checker.py` | 想法-数据交叉验证(**新**)|
| `scripts/data_source_checker.py` | 数据源预检查(**新**)|
| `scripts/pipeline_checkpoint.py` | 强制交互 checkpoint(**新**)|
| `scripts/setup_wizard.py --guided` | 交互式配置向导 |
| `scripts/register_mcp_servers.py --list` | 列出 `{{MCP_COUNT}}` 个 MCP 服务器注册状态(首次必须跑)|
| `scripts/register_mcp_servers.py` | 一键注册所有 MCP 到 `~/.cursor/mcp.json` |
| `scripts/research_framework/pipeline.py` | 实证 demo TWFE + design scaffold(非写作轨)|
| `scripts/research_framework/enhanced_pipeline.py` | 实证生产入口(现代 DID;`--mechanism` 指定渠道;写出 `GOLD_TABLES.md` + `empirical_package.json`)|
| `scripts/research_framework/gold_tables.py` | 黄金八格实跑表(结构事实 / 逐步 / 更紧 / 样本流 / 处理→M)|
| `scripts/core/empirical_package.py` | 实证包写稿门(黄金八格 / 控制职务 / 机制分族 / 故事页 / 推断地板 / 图门)|
| `scripts/research_framework/modern_did.py` | 现代 DID 库(import,无独立 CLI)|
| `scripts/research_framework/fin_charts.py` | 专业金融图表 |
| `scripts/research_framework/report_generator.py` | LaTeX 论文生成 |
| `scripts/demo_research_report.py` | 演示研报生成(**已修复静默fallback**)|
| `scripts/journal_template.py --list` | 列出所有期刊模板 |
| `scripts/event_monitor.py --test` | 测试事件监控 |

---

## 可用技能(18个)

技能文档在 `.claude/skills/`(Claude Code)、`.github/skills/`(Copilot)和 `knowledge/skills/`(真相源)。在 Cursor 中直接用 `Skill:` 语法触发。

| 技能 | 功能 |
|------|------|
| `fin-full-pipeline` | 端到端流水线(主题 → 论文 PDF)|
| `fin-idea-discovery` | 想法发现 + 数据验证 |
| `fin-lit-review` | 系统性文献综述 |
| `fin-generate-idea` | 8-12 个排序想法(含实证验证)|
| `fin-novelty-check` | 新颖性验证(JF/JFE/RFS 查重)|
| `fin-experiment-design` | 完整实证设计(DID/IV/RD/PSM)|
| `fin-paper-writing` | 论文写作编排 |
| `fin-paper-draft` | 正文生成(LaTeX)|
| `fin-paper-plan` | 大纲生成(30种期刊模板)|
| `fin-paper-figure` | 图表生成(≥300 DPI,20+类型)|
| `fin-paper-convert` | LaTeX 编译 |
| `fin-review-loop` | 多轮对抗性 review |
| `fin-submit-check` | 投稿前检查 |
| `fin-data-acquisition` | 数据获取 + 回归脚本生成 |
| `fin-brief-generator` | 生成 `FIN_BRIEF.md` |
| `fin-ref-paper` | BibTeX 参考文献管理 |
| `fin-viz-launch` | 自然语言 → 学术图表 |
| `fin-arch-diagram` | 架构/流程/层次图(PPT 用,graphviz 后端) |

---

## 核心原则

1. **数据优先** — 数据验证前移到想法生成阶段,不编造,不等到阶段5才发现无数据
2. **数据溯源** — 每次数据获取记录来源和时间戳
3. **禁止静默Fallback** — 模拟数据必须经用户明确授权才可使用
4. **强制交互Checkpoint** — 每阶段完成后暂停,等待用户确认,不自动继续
5. **生成-评审分离** — 写作和 review 由不同模块处理
6. **中文顶刊标准** — 经济研究 / 金融研究 / 管理世界(含稳健性检验)

---

## 研究流程(8步)

```
第0步  系统自检     → python scripts/health_check.py → 确认工具就绪
第1步  研究想法     → 描述方向 → 8-12个候选想法 → 确认
第1.5步想法-数据交叉验证 → idea_data_checker.py → 用户决策(补充数据/授权模拟/更换)→ 确认
第2步  文献综述     → literature_download.py + arxiv/openalex/semantic_scholar MCP → 引文网络 → 识别研究缺口
第3步  新颖性验证   → agent_pipeline.py --novelty-check(NoveltyGate→SS/OpenAlex 检索;搜索失败才 LLM 回退)→ 确认
第4步  实证设计     → scaffold: pipeline.py --mode design;真设计: fin-experiment-design → data_source_checker → 确认
第5步  数据获取     → universal_data_fetcher.py → MCP → Python/Stata脚本 → 确认 【实证轨】
第5.5 回归分析     → enhanced_pipeline / modern_did(非 agent_pipeline)→ 确认 【实证轨】
第6步  论文写作     → agent_pipeline / report_generator → 大纲 → 正文 → 图表 → LaTeX草稿 【写作轨】
第7步  对抗性Review → core/llm_reviewer.py → 多轮严格评审 → 达到发表标准
```

### 关键入口速查

| 阶段 | 入口脚本 | 调用方式 |
|---|---|---|
| 0. 系统自检 | `scripts/health_check.py` | `python scripts/health_check.py --json` |
| 1. 想法生成 | `scripts/agent_pipeline.py` / skills | `--topic "..."` |
| 1.5 想法-数据 | `scripts/idea_data_checker.py` | `--idea-file <path>` |
| 2. 文献综述 | `scripts/literature_download.py` | `"query" --source ...` |
| **3. 新颖性** | `scripts/agent_pipeline.py` | `--novelty-check`(`NoveltyGate`→SS/OpenAlex) |
| 4. 实证设计 scaffold | `scripts/research_framework/pipeline.py` | `--mode design` |
| 5. 数据获取 | `scripts/universal_data_fetcher.py` | MCP / local `data/` |
| 5.5 实证回归 | `scripts/research_framework/enhanced_pipeline.py` | `python -m ...enhanced_pipeline` |
| 5.6 实证包写稿门 | `scripts/core/empirical_package.py` | `python -m scripts.core.empirical_package audit FILE` |
| 6. 论文写作 | `scripts/agent_pipeline.py` | `--topic "..." --use-hitl` |
| 7. Review | `scripts/core/llm_reviewer.py` | `--draft <path>` |
| Checkpoint 工具 | `scripts/checkpoint.py` | `from scripts.checkpoint import InteractivePipelineCheckpoint` |

---

## 环境变量

参考 `.env.example`,主要变量:

| 变量 | 必需 | 说明 |
|------|------|------|
| `DEEPSEEK_API_KEY` | 推荐 | DeepSeek 直连(中文写作/代码/分析)|
| `RELAY_API_KEY` | 可选 | B.AI 中转(GPT/Claude)|
| `TUSHARE_TOKEN` | A股必需 | Tushare Pro Token |
| `EODHD_API_KEY` | 美宏观可选 | EODHD |
| `FRED_API_KEY` | 美宏观可选 | FRED |
| `BRAVE_SEARCH_API_KEY` | 搜索可选 | Brave Search |

---

## 工具适配说明

本项目为三个 AI 编码工具提供完整支持:

| 目录 | 适用工具 | 说明 |
|------|---------|------|
| `scripts/` / `mcp_servers/` / `tests/` | 全部工具 | 核心业务逻辑,无 IDE 依赖 |
| `CLAUDE.md` | Claude Code(主要)/ Cursor / Codex | 项目主入口 |
| `.claude/` | Claude Code | 命令 + 技能文档 |
| `.cursor/rules/` | Cursor | 角色规则(analyst/paper_writer/researcher/mcp_tools/system-init)|
| `.cursor/skills/` | Cursor | 17 个 Skill 文件(原生 Skill 系统)|
| `.cursor/agents/` | Cursor | Agent 指令(literature-scout)|
| `.github/copilot-instructions.md` | GitHub Copilot | Copilot 指令文件 |
| `knowledge/skills/` | Claude Code / Copilot | 18 个技能文档(真相源,不含 README.md;目录副本到 .claude/skills/ 和 .github/skills/)|

## Skill: 语法(Cursor 专用)

在 Cursor 中,使用 `Skill:` 语法触发自动化流程。例如:

```
Skill: fin-full-pipeline
```
触发端到端流水线(主题 → 论文 PDF)。

可用的 Skill 语法:
- `Skill: fin-full-pipeline` — 完整流水线
- `Skill: fin-idea-discovery` — 想法发现 + 数据验证
- `Skill: fin-lit-review` — 系统性文献综述
- `Skill: fin-generate-idea` — 8-12 个排序想法
- `Skill: fin-novelty-check` — 新颖性验证
- `Skill: fin-experiment-design` — DID/IV/RDD 方案设计
- `Skill: fin-paper-writing` — 论文写作编排
- `Skill: fin-paper-draft` — 正文生成(LaTeX)
- `Skill: fin-paper-figure` — 图表生成
- `Skill: fin-arch-diagram` — 架构/流程/层次图(PPT 用,graphviz 后端)
- `Skill: fin-review-loop` — 对抗性 review
- `Skill: fin-data-acquisition` — MCP 数据获取
- `Skill: fin-brief-generator` — 生成 FIN_BRIEF.md

直接用自然语言描述需求也可以正常工作,Skill 语法是快捷方式。

---

## 参考架构

- [Night Owl Research Agent (NORA)](https://github.com/GRIND-Lab-Core/night_owl_research_agent) — 5 轮交互式澄清模式的设计参考(2026-06-27 命名重命名后已无 NORA 标识符)
- [PaperOrchestra (Google)](https://github.com/google-research/paper-orchestra)
- [ARK (KAUST)](https://github.com/kaust-ark/ARK)
- [Qiongli (穷理)](https://github.com/jxpeng98/qiongli)