fin-generate-idea · git:20260616.8eba436 · 2026-06-16 · sha256 ea3d5327c53003cd
fin-generate-idea git:20260616.8eba436A
Immutable. This exact content is served forever at /api/v1/blob/ea3d5327c53003cd.
---
name: fin-generate-idea
description: 针对经济金融研究方向的创意生成与评估。生成8-12个可发表的研究idea,过滤后在数据可行的情况下进行小规模实证验证,输出排序后的研究想法报告。
argument-hint: [research-field]
---
# 经济金融研究想法生成器
针对研究方向 `$ARGUMENTS` 生成 8-12 个排序研究想法,经过数据可行性筛选后输出推荐名单。
## 流程概览
```
研究方向输入
↓
阶段1: 研究领域解析 + 约束提取
↓
阶段2: 文献提取 — 使用 MCP 获取高影响力论文
↓
阶段3: 缺口分析 — 识别领域内"未完成"的工作
↓
阶段4: 想法生成 — 基于文献生成 8-12 个想法
↓
阶段5: 【强制】数据可行性筛选 — 对每个想法运行数据源检查
↓
阶段6: 过滤标记 — 无数据路径的想法标记"需授权模拟"
↓
阶段7: 综合排序 — noverlty × 0.4 + data × 0.3 + publish × 0.3
↓
输出: IDEA_REPORT.md
```
## 触发条件
当用户明确要求生成具体研究想法时触发,例如:
- "有什么关于[领域]的研究想法"
- "生成[领域]的研究idea"
- "帮我找[领域]的研究方向"
- "我想研究[主题],有什么新想法"
## 输出文件
```
output/fin-ideas/
├── IDEA_REPORT.md ← 完整想法报告(8-12个想法,含评分)
├── IDEA_DATA_CHECK.md ← 数据可行性检查结果
└── IDEA_CANDIDATES.md ← 精简版(TOP 3-5)
```
## 阶段详解
### 阶段1: 研究领域解析
#### 1.1 解析研究领域
识别研究方向所属的宏观领域:
| 领域 | 核心关键词 | 典型研究问题 |
|------|----------|-------------|
| 绿色金融 | ESG、碳排放、绿色债券、气候风险、绿色信贷 | 绿色政策效果、环境信息披露 |
| 数字金融 | Fintech、数字支付、互联网金融、API银行 | 数字普惠、金融科技赋能 |
| 碳经济学 | 碳交易、碳配额、碳关税、减排激励 | 碳市场效率、政策有效性 |
| 宏观金融 | 货币政策传导、金融周期、系统性风险 | 政策传导机制、金融稳定 |
| 公司金融 | 融资约束、资本结构、公司治理、并购 | 融资决策优化、公司价值 |
| 资产定价 | 因子模型、异常收益、机构投资者 | 定价因子、收益预测 |
| 行为金融 | 投资者情绪、散户行为、羊群效应 | 行为偏差、市场效率 |
| 金融科技 | 区块链、数字货币、开放银行 | 新技术应用、模式创新 |
#### 1.2 提取约束
从用户输入中提取约束条件:
```python
constraints = {
"target_journal": "JF/JFE/RFS/经济研究/金融研究/...",
"method_preference": "DID/IV/RDD/机器学习/...",
"data_preference": "A股/美股/宏观/...",
"time_range": "2010-2024/特定事件窗口/...",
"sample_restriction": "创业板/国有企业/...",
}
```
### 阶段2: 文献提取
#### 2.1 MCP 多源检索
**必须按以下顺序执行检索**:
```yaml
# 第1步:NBER 工作论文(优先)
CallMcpTool: user-nber-wp -> search_nber_papers
query: "[研究领域] + China + empirical"
year_from: 2023
# 第2步:OpenAlex(250M+论文)
CallMcpTool: user-openalex -> get_openalex_works
query: "[研究领域] + [核心机制] + China"
per_page: 30
# 第3步:中文顶刊(A股必查)
CallMcpTool: user-brave-search -> brave_web_search
query: "经济研究 金融研究 管理世界 [核心关键词]"
num_results: 15
# 第4步:ArXiv(方法论文)
CallMcpTool: user-arxiv -> semantic_search
query: "[研究领域] + empirical methods China"
max_results: 15
```
#### 2.2 高影响力论文筛选
从检索结果中筛选高影响力论文:
| 筛选标准 | 阈值 | 原因 |
|---------|------|------|
| 期刊层次 | JF/JFE/RFS/JME/QJE + 中文顶刊 | 质量保证 |
| 引用量 | 前 20% 或 >50 次引用 | 经时间检验 |
| 发表时间 | 近 5 年为主 | 前沿性 |
| 方法可靠性 | 识别策略清晰 | 可参照 |
#### 2.3 文献结构化提取
对每篇核心文献提取:
```markdown
## 文献卡片
- **标题**: [论文标题]
- **期刊**: [期刊名]
- **年份**: [发表年份]
- **作者**: [作者列表]
- **核心发现**: [1-2句话]
- **方法**: [DID/IV/RDD/...]
- **数据**: [数据集描述]
- **研究缺口**: [从该论文的 limitation 或 future work 中提取]
```
### 阶段3: 缺口分析
#### 3.1 缺口识别框架
使用以下框架系统识别研究缺口:
| 缺口类型 | 描述 | 识别方法 |
|---------|------|---------|
| 理论缺口 | 某理论预测在特定场景未被验证 | 文献中"我们尚不清楚..." |
| 方法缺口 | 某方法在特定场景未被使用 | 方法 vs 市场组合矩阵 |
| 数据缺口 | 某数据集未被用于某研究问题 | 新数据源 vs 研究问题 |
| 场景缺口 | 某发现未在特定市场验证 | 市场 vs 机制组合矩阵 |
| 机制缺口 | 某传导路径未被检验 | 机制链条中的空白 |
#### 3.2 缺口输出模板
```markdown
## 已识别研究缺口
### 缺口 1: [缺口名称]
- **类型**: [理论/方法/数据/场景/机制]
- **描述**: [具体描述]
- **为什么重要**: [理论和实践意义]
- **可行性**: [数据和方法是否可行]
### 缺口 2: [缺口名称]
...
```
### 阶段4: 想法生成
#### 4.1 生成提示词
使用 LLM 生成基于文献的研究想法:
```
你是一名经济金融领域顶级学者。请基于以下文献综述和研究缺口,
生成8-12个可发表的研究想法。
【研究领域】
[领域名称]
【核心文献】
[文献卡片列表]
【已识别的研究缺口】
1. [缺口1]
2. [缺口2]
...
【约束条件】
- 目标期刊: [期刊]
- 偏好方法: [方法]
- 数据偏好: [数据]
【生成要求】
1. 每个想法必须对应一个或多个研究缺口
2. 明确识别策略(DID/IV/RDD/面板/机器学习)
3. 明确所需核心数据
4. 指出边际贡献(理论/方法/数据)
5. 评估发表潜力
6. 基于文献给出"初步信号"(支持假设的已有证据)
```
#### 4.2 想法格式
每个想法必须按以下格式输出:
```markdown
## Idea N: [标题]
### 基本信息
- **研究缺口**: [对应缺口编号]
- **研究问题**: [一句话描述]
- **核心机制**: [因果传导路径]
### 方法设计
- **识别策略**: [方法]
- **关键识别假设**: [假设内容]
- **估计方法**: [模型]
### 数据需求
- **核心数据集**: [数据源]
- **时间范围**: [样本期]
- **关键变量**: [Y, X, 控制变量]
### 边际贡献
- **理论**: [理论贡献]
- **方法**: [方法贡献]
- **数据**: [数据贡献]
### 发表潜力
- **目标期刊**: [期刊]
- **新颖性**: [高/中/低]
- **可行性**: [高/中/低]
### 初步信号
- **文献支持**: [支持假设的已有文献]
- **机制合理性**: [1-5评分]
```
### 阶段5: 数据可行性筛选(强制)
**对每个想法执行数据源检查**
#### 5.1 调用 IdeaDataValidator
```python
from scripts.idea_data_checker import quick_check, IdeaDataValidator
# 准备想法列表
ideas = [
{
"id": f"idea_{i}",
"title": "[想法标题]",
"description": "[描述]",
"keywords": "[关键词列表]",
}
for i in range(1, 13)
]
# 执行数据可行性检查
report = quick_check(ideas)
```
#### 5.2 筛选逻辑
```python
def filter_ideas_by_feasibility(report: ValidationReport) -> dict:
"""根据数据可行性筛选想法"""
# 分类
available = [r for r in report.idea_results
if r.feasibility == Feasibility.AVAILABLE]
partial = [r for r in report.idea_results
if r.feasibility == Feasibility.PARTIALLY_AVAILABLE]
gap = [r for r in report.idea_results
if r.feasibility == Feasibility.DATA_GAP]
auth = [r for r in report.idea_results
if r.feasibility == Feasibility.REQUIRES_AUTH]
return {
"green": available, # 可立即推荐
"yellow": partial, # 可推进但需补充
"red": gap, # 需先补充数据
"orange": auth, # 需授权模拟
}
```
### 阶段6: 用户授权决策
**橙色标签的想法需要用户明确授权才能进入推荐名单**
#### 6.1 展示授权请求
```
⚠️ 以下想法需要您授权使用模拟数据:
想法 9: [标题]
- 所需数据: [数据描述]
- 缺失原因: [原因]
- 授权后果: 研究结果不能用于正式发表
想法 10: [标题]
...
──────────────────────────────────────────────
请选择:
(1) 授权模拟 — 使用模拟数据继续(结果不能发表)
(2) 跳过模拟想法 — 仅推荐数据可行的想法
(3) 补充数据 — 稍后补充真实数据后再评估
```
#### 6.2 标记处理
```python
# 用户授权后,标记为可推荐
authorized_ideas = [idea for idea in ideas if idea.get("authorized_synthetic")]
# 未授权的想法标记为"需授权"
for idea in ideas:
if idea.get("feasibility") == Feasibility.REQUIRES_AUTH and not idea.get("authorized_synthetic"):
idea["status"] = "REQUIRES_AUTH"
idea["recommendation"] = "需用户授权使用模拟数据"
```
### 阶段7: 综合排序
#### 7.1 评分公式
```
综合评分 = 新颖性评分 × 0.4 + 数据可行性评分 × 0.3 + 发表潜力评分 × 0.3
```
| 维度 | 权重 | 评分标准 |
|-----|-----|---------|
| 新颖性 | 40% | 高=10, 中=7, 低=4 |
| 数据可行性 | 30% | 可行=10, 部分=6, 缺口=0, 模拟=3 |
| 发表潜力 | 30% | 顶刊=10, 一区=8, 二区=6 |
#### 7.2 排序输出
```python
def rank_ideas(ideas: list[dict], report: ValidationReport) -> list[dict]:
"""综合排序想法"""
# 构建评分查找表
score_map = {r.idea["id"]: r.feasibility_score for r in report.idea_results}
ranked = []
for idea in ideas:
novelty = {"high": 10, "medium": 7, "low": 4}.get(idea.get("novelty"), 5)
data_score = score_map.get(idea["id"], 0) * 10 # 转换为10分制
publish = {"top": 10, "first": 8, "second": 6}.get(idea.get("journal_tier"), 5)
composite = novelty * 0.4 + data_score * 0.3 + publish * 0.3
idea["composite_score"] = round(composite, 1)
ranked.append(idea)
return sorted(ranked, key=lambda x: x["composite_score"], reverse=True)
```
## 输出格式
### IDEA_REPORT.md 模板
```markdown
# 研究想法报告
**研究方向**: [方向]
**生成日期**: [日期]
**想法总数**: N个
## 执行摘要
[3-5句话总结推荐想法]
## TOP 3 推荐想法
### 想法 1: [标题] ⭐⭐⭐
**综合评分**: X.X/10 | **数据可行性**: 🟢 可行
| 维度 | 评分 |
|------|------|
| 新颖性 | X/10 |
| 数据可行性 | X/10 |
| 发表潜力 | X/10 |
| **综合** | **X.X/10** |
- **研究问题**: [一句话]
- **研究缺口**: [对应缺口]
- **识别策略**: [方法]
- **核心数据**: [数据源]
- **边际贡献**: [创新点]
- **文献支持**: [支持假设的已有文献]
- **初步信号**: [支持/不支持/待验证]
---
### 想法 2: [标题] ⭐⭐
**综合评分**: X.X/10 | **数据可行性**: 🟡 部分可行
| 维度 | 评分 |
|------|------|
| 新颖性 | X/10 |
| 数据可行性 | X/10 |
| 发表潜力 | X/10 |
| **综合** | **X.X/10** |
- **研究问题**: [一句话]
- **研究缺口**: [对应缺口]
- **识别策略**: [方法]
- **核心数据**: [数据源]
- **边际贡献**: [创新点]
- **数据缺口**: [缺失的数据]
- **补充方案**: [如何获取]
---
### 想法 3: [标题] ⭐
**综合评分**: X.X/10 | **数据可行性**: 🟡 部分可行
[同上结构]
---
## 所有想法列表
| 排名 | 想法 | 综合评分 | 新颖性 | 数据可行 | 发表潜力 | 状态 |
|------|------|---------|--------|---------|---------|------|
| 1 | 想法1 | 9.2 | 高 | 🟢 可行 | 顶刊 | 推荐 |
| 2 | 想法2 | 8.5 | 高 | 🟡 部分 | 一区 | 推荐 |
| 3 | 想法3 | 8.1 | 中 | 🟢 可行 | 顶刊 | 推荐 |
| 4 | 想法4 | 7.2 | 中 | 🟡 部分 | 一区 | 待补充 |
| 5 | 想法5 | 6.8 | 高 | 🔴 缺口 | 一区 | 待数据 |
| 6 | 想法6 | 5.5 | 中 | 🟠 模拟 | 二区 | 需授权 |
| ... | ... | ... | ... | ... | ... | ... |
## 数据需求汇总
### 🟢 可直接使用
- [数据源]: [描述]
### 🟡 需补充
- [数据源]: [描述] → [如何获取]
### 🔴 需获取
- [数据源]: [描述] → [获取方式]
## 下一步
1. 选择一个想法进入新颖性验证(fin-novelty-check)
2. 或选择多个想法进入实验设计(fin-experiment-design)
3. 或返回补充数据后再评估
## 方法论提示
[针对本领域的常用识别策略建议]
```
## IdeaDataValidator 快速参考
### 一行调用
```python
from scripts.idea_data_checker import quick_check
ideas = [
{"id": "1", "title": "想法1", "description": "描述", "keywords": ["关键词"]},
# ...
]
report = quick_check(ideas)
```
### 逐个验证
```python
from scripts.idea_data_checker import IdeaDataValidator
validator = IdeaDataValidator(ideas)
report = validator.validate_all()
validator.print_report(report)
# 访问结果
for result in report.idea_results:
print(f"{result.idea['title']}: {result.feasibility.value}")
print(f" Score: {result.feasibility_score:.1f}")
print(f" Recommendation: {result.recommendation}")
```
### 解读可行性状态
| Feasibility | 含义 | 颜色 | 建议操作 |
|-------------|-----|-----|---------|
| `AVAILABLE` | 数据完全可行 | 🟢 | 可立即推荐 |
| `PARTIALLY_AVAILABLE` | 部分数据缺失 | 🟡 | 可推进但需补充 |
| `DATA_GAP` | 数据缺口严重 | 🔴 | 需先获取数据 |
| `REQUIRES_AUTH` | 需授权模拟 | 🟠 | 需用户明确授权 |
## MCP 工具快速索引
| 需求 | MCP Server | 工具 | 优先级 |
|------|------------|------|--------|
| NBER 工作论文 | `user-nber-wp` | `search_nber_papers` | 高 |
| OpenAlex 论文 | `user-openalex` | `get_openalex_works` | 高 |
| ArXiv 论文 | `user-arxiv` | `semantic_search` | 中 |
| 中文文献 | `user-brave-search` | `brave_web_search` | 高 |
| 论文全文 | `user-context7` | `get_context7_by_query` | 中 |
| 研报 | `user-eastmoney-reports` | `get_research_report` | 低 |
## 关键约束
1. **每个想法必须基于文献**:不能凭空生成想法
2. **数据可行性是硬过滤**:无数据路径的想法不进推荐名单
3. **模拟数据需要授权**:未授权的模拟想法必须标记
4. **评分必须透明**:展示所有维度的评分和权重
5. **中文顶刊不可忽视**:A股研究中中文文献是重要先例来源
6. **新颖性评估必须具体**:不能只说"新颖",要指出具体增量贡献
## 快速命令
```bash
# 完整流程
python scripts/research_framework/pipeline.py \
--topic "研究方向" \
--mode generate_idea \
--output output/fin-ideas/
# 仅想法生成
python scripts/research_framework/pipeline.py \
--topic "研究方向" \
--mode generate_idea \
--skip_validation
# 仅数据验证
python scripts/idea_data_checker.py \
--ideas-file output/fin-ideas/IDEA_REPORT.md
```