Files
MoFin/docs/market-data-requirements.md
T
知微 fa45d8aa5f fix: 小果地址统一node122(兼容LAN+EasyTier)
- health_checklist.json: 192.168.1.122→node122
- ocr_client.py: docstring IP→node122
- docs/market-data-requirements.md: IP→node122
- 所有API调用通过ProxyHandler({})绕过系统代理
  Privoxy对node122:18003返回500,直连正常
2026-06-30 02:56:35 +08:00

388 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 市场数据体系 + 小果情报分析需求文档
tags: [需求文档, 知微, 市场数据, 小果, 行业热点]
created: 2026-06-18
status: 活跃
priority: 高
---
# 市场数据体系 + 小果情报分析需求文档
## 一、痛点现状
### 1.1 MoFin 市场模块三个子页面全部失效
| 页面 | 状态 | 问题 |
|------|------|------|
| 行业热点 | 数据虚假 | 行业涨幅为编造(如塑料+389%),数据源是 LLM cron 凭空生成,不是真实API |
| 知微洞察 | 空白 | "暂无洞察",没有分析流程 |
| 潜力股挖掘 | 空白 | "暂无挖掘",没有挖掘流程 |
根因:原 cron `b818e2bfd8d1`(市场数据采集)是 LLM 驱动的,不是真正的数据采集脚本。LLM 没有真实数据源,只能编造。该 cron 已失效,但 market.json 中的假数据还在。
### 1.2 行业数据割裂
- `stock_profiles.json` 中 16/38 只有行业数据(仅覆盖持仓股),22只自选股行业为空
- 行业分类无标准化体系(各行业中文名不一致)
- 无自动化行业补全流程
- `market_watch.py`(东方财富API行业采集脚本)已开发但未接入 Dashboard
### 1.3 小果本地 LLM 可用但未被利用
- 小果(node122:18003, MLX Qwen3.6-27B, API port 8645
- 免费(本地运行),适合做不需要高推理能力但费 token 的重复活
- 当前未被整合到知微的情报分析流程中
---
## 二、总体设计原则
### 2.1 数据来源唯一铁律
**所有 MoFin Dashboard 展示的数据,必须来自真实API,禁止 LLM 编造。**
LLM 只能分析真实数据,不能生成伪数据。
### 2.2 分类规范
- **市场模块展示内容 = 真实API数据 + 知微(智)分析 + 小果情报**
- 数据层(纯脚本)→ 分析层(LLM/知微)→ 展示层(Dashboard
- 每条展示数据的来源必须可追溯
### 2.3 小果定位
- **不是用来替代知微的**,是辅助工具
- 跑在本地 Mac Mini,免费,但慢且推理能力弱
- 适合:分类/标注/情感分析/简单判断
- 不适合:复杂推理/多步决策/需要深度分析
- 输出给知微参考,知微做最终判断
---
## 三、模块一:行业热点(行业数据采集体系)
### 3.1 核心流程
```
东方财富 push2 API
↓ (market_watch.py, no_agent 纯脚本, 每30分钟)
行业原始数据 (涨跌/成交量/资金流向/上涨家数/下跌家数)
↓ (清洗+标准化)
market.json (标准化数据,写入 Dashboard data/)
↓ (供各模块使用)
MoFin 行业热点 | 知微D2行业分析 | 小果情报参考
```
### 3.2 API 规范
**首选:东方财富 push2 API**
行业板块:
```
GET https://push2.eastmoney.com/api/qt/clist/get
?pn=1&pz=15&po=1&np=1
&fields=f2,f3,f4,f12,f14
&fs=m:90+t:2
```
返回字段:f2(最新价), f3(涨跌幅%), f4(涨跌额), f12(代码), f14(名称)
概念板块:
```
GET https://push2.eastmoney.com/api/qt/clist/get
?pn=1&pz=10&po=1&np=1
&fields=f2,f3,f4,f12,f14
&fs=m:90+t:3
```
**降级:akshare(同花顺数据)**
```
ak.stock_board_industry_summary_ths()
→ 涨跌幅, 上涨家数, 下跌家数, 净流入资金
```
**三级降级:web_search 兜底**
当前两个API都失败时,web_search 搜索当日行业涨跌排行补充
### 3.3 行业分类标准化
建立一级/二级行业分类体系(参考申万/Swift行业分类):
| 一级 | 二级 | 对应持仓/自选 |
|------|------|-------------|
| TMT/科技 | 半导体/消费电子/互联网/通信设备 | 中芯/德明利/丘钛/腾讯/阿里/博创/长飞 |
| 新能源 | 新能源汽车/储能/新能源材料 | 比亚迪/宁德/海博思创/中科电气/信义光能 |
| 金融地产 | 银行/保险/房地产 | 招商银行/中银香港/中国平安/万科/人寿 |
| 医药 | 创新药/医药流通 | 百济神州/辽宁成大 |
| 工业材料 | 有色金属/复合材料/电子元器件/新材料 | 紫金矿/法拉电子/中科/诺德 |
| 资源 | 黄金/贵金属 | 黄金ETF |
| 消费 | 汽车/消费电子 | 小鹏/TCL |
| ... | ... | ... |
**存量补全规则**
- 持仓股:补全行业 + 业务描述(优先级高)
- 自选股:补全行业(优先级中)
- 新入自选:创建时即补全行业(规范)
补全方法:优先查腾讯 API 的行业字段,次选 akshare,最后 web_search
### 3.4 market.json 输出结构
```json
{
"timestamp": "2026-06-18 14:30",
"total_sectors": 56,
"up_ratio": 45.2,
"mood": "neutral",
"sectors": [
{
"name": "半导体",
"code": "BK0477",
"price": 5287.63,
"change_pct": 2.35,
"volume": 325.6,
"turnover": 528.4,
"up_count": 68,
"down_count": 12,
"net_inflow": 12.5
}
],
"concepts": [...],
"top_gainers": [5],
"top_losers": [3],
"source": "eastmoney"
}
```
字段规范:
- `change_pct`: **百分数**(如+2.35表示涨2.35%),不是绝对点数
- `price`: 板块指数点,不是股票价格
- `up_count/down_count`: 板块内上涨/下跌家数(仅 ak 降级时才有)
- `net_inflow`: 资金净流入(亿元,仅 ak 降级时才有)
- `source`: 数据来源标识(eastmoney/ths/web
### 3.5 stock_profiles.json 行业数据维护
**自动补全流程**(每周/每月):
```
第1步:筛选 stock_profiles.json 中 sector 为空的条目
第2步:查腾讯 API 的行业分类字段(港股/A股)→ 匹配申万行业
第3步:腾讯没有 → 查 akshare 股票基本信息
第4步:都不行 → web_search 查公司主营业务,提取行业关键词
第5步:写入 stock_profiles.json
第6步:记录补全日志(谁补的、依据来源、置信度)
```
**人工审核流程**
- 自动补全的行业标记为"待审核"
- 知微在分析中遇到缺失/错误时手动修正
- 老爸也可以直接编辑
---
## 四、模块二:知微洞察 + 潜力股挖掘
### 4.1 知微洞察
定义:基于行业数据和持仓分析,每日输出 1-3 条有操作价值的洞察。
**数据来源**
- market.json 行业热点(当日涨跌幅+资金流向)
- decisions.json 策略评估结果
- 小果情报分析(见第五部分)
- web_search 新闻
**洞察类型**
| 类型 | 触发条件 | 示例 |
|------|---------|------|
| 行业轮动预警 | 持仓行业连续3天跑输大盘>2% | 新能源材料连续3天跑输,需关注 |
| 资金异动提醒 | 行业资金净流入/出异常>5亿 | 半导体单日净流入12亿,板块转强 |
| 策略调整建议 | 某行业趋势反转,影响持仓策略 | 银行板块跌破MA60,万科止损需收紧 |
| 新机会发现 | 非持仓行业连续强势>3天 | 军工板块连涨3天,值得关注 |
| 风险预警 | 行业政策突变/突发事件 | 美国关税政策影响光伏行业 |
**输出位置**
- MoFin Dashboard → 知微洞察
- XMPP 推送(有实质内容才推)
- 关联到策略评估的 D5 消息面
### 4.2 潜力股挖掘
定义:从行业热点中筛选出与现有持仓/自选相关的潜力标的。
**挖掘流程**
1. 每日从行业热点中找出最强势的 1-3 个行业
2. 从强势行业中筛选出:基本面+技术面+估值 都符合标准的个股
3. 对比现有持仓/自选,去重
4. 写入 watchlist.json(如果符合买入条件)
5. 输出到 MoFin 潜力股挖掘
**筛选标准**
- 所属行业排名前20%(当日涨幅)
- PE/估值合理(非亏损股)
- 技术形态向好(近期有放量突破)
- 与现有持仓/自选不重复
**输出形式**
- 每只标的名 + 行业 + 选取理由(一句话)
- 建议关注级别(高/中/低)
- 建议买入区间(可选)
---
## 五、模块三:小果情报分析
### 5.1 小果能力概述
| 能力 | 适用场景 | 精度要求 | 频率 |
|------|---------|---------|------|
| 新闻情感分类 | 个股新闻/行业新闻 → 正面/负面/中性 | 70%+ 即可 | 每日 |
| 量价异常标注 | 当日成交量/换手率/量比异常识别 | 80%+ | 每日20:00 |
| 行业热词提取 | 行业新闻关键词提取 | 可接受 | 每日 |
| 简单问答 | 替代知微做低精度任务 | 看情况 | 按需 |
**调用方式**
- 知微通过 Hermes delegate_task 向 xiaoguo profile 派发任务
- 或通过 API 直调(http://node122:8645
- 小果的结果作为知微分析的输入参考
### 5.2 新闻情感分析
**输入**:从 web_search 搜索到的个股/行业新闻标题+摘要
**输出**JSON):
```json
{
"code": "00700",
"name": "腾讯控股",
"news": [
{
"title": "腾讯游戏业务Q2增长超预期",
"source": "新浪财经",
"sentiment": "positive",
"confidence": 0.85,
"keywords": ["游戏", "超预期", "增长"]
}
],
"overall_sentiment": "positive"
}
```
**实现方式**
- 知微在评估 cron 中,web_search 拉取新闻后,将新闻文本发给小果分类
- 小果返回情感标签 + 置信度
- 知微汇总到 D5 消息面分析
### 5.3 量价异常标注
**输入**:当日行情数据(收评)——价格/成交量/换手率/量比
**输出**JSON):
```json
{
"code": "300750",
"name": "宁德时代",
"anomalies": [
{
"type": "volume_surge",
"detail": "今日成交量3.2倍于20日均量",
"assessment": "放量下跌,警惕"
}
]
}
```
**异常类型**
- `volume_surge`: 量比>2 的异常放量
- `volume_shrink`: 量比<0.5 的异常缩量
- `price_volume_divergence`: 价量背离(价涨量缩或价跌量放)
- `turnover_spike`: 换手率异常高(>20只日均换手3倍)
- `amplitude_surge`: 振幅异常大
**实现方式**
- 数据收集脚本(collect_evaluation_data.py)收评后,将当日数据发给小果
- 小果标注异常点
- 标注结果写入 evaluation_input.json 的 anomaly 字段
### 5.4 持续情报监控(新增)
让**小果持续跑**,不只在收评时分析:
```
小果持续运行(每15-30分钟)
扫描行业热点数据(market.json
发现异常 → 写入 小果情报日志
知微评估 cron 读取情报日志,判断是否有价值 → 整合到分析报告
```
**持续监控内容**
- 行业排行榜变化:前3名/末3名的行业
- 涨跌比变化:上涨/下跌比例突变
- 资金流向变化:突然转向的行业
- 新闻突发:web_search 发现的重大新闻
---
## 六、废弃清单
### 立即废弃
| 组件 | 原因 | 替代 |
|------|------|------|
| `strategy_evaluator.py` 中的评估逻辑(R/R、评分、阶段一/二) | LLM cron 做六维评估,脚本不做判断 | 保留脚本做数据采集/统计部分 |
| 旧 cron `b818e2bfd8d1`(市场数据采集 LLM 版) | 不可靠、数据虚假 | 新建 no_agent market_watch cron |
| `market.json` 旧数据 | 虚假数据 | 新 market_watch 覆盖 |
### 逐步废弃
| 组件 | 原因 | 替代 |
|------|------|------|
| 旧 `EXPERT_SYSTEM_DESIGN.md`(项目目录和 Dashboard 目录各一份) | 过时,与新系统不一致 | 新需求文档统一管理 |
| `stock_profiles.json` 中空字段 | 无数据占位 | 自动补全脚本 |
---
## 七、实施优先级
### P0(当前可做)
1. 修复 market_watch 脚本:输出目录改为 Dashboard data/
2. 创建 market_watch cronno_agent,每30分钟)
3. 小果 API 调用验证(发一条简单测试)
4. 废弃旧 market.json + 旧 cron
### P1(本周)
5. stock_profiles.json 行业自动补全脚本
6. 知微洞察 MVP(每日1条有价值洞察)
7. 小果新闻情感分析接入
### P2(下周)
8. 潜力股挖掘 MVP
9. 小果持续情报监控
10. 行业数据刷新 Dashboard 展示
### P3(远期)
11. 行业资金流向可视化
12. 行业轮动预警系统
13. 小果自主情报Bot(主动推送)
---
## 八、关联文件规范
所有本需求涉及的组件,必须在以下文件中标注链接:
- `strategy-evaluation` skill 中标注 D2/D5 数据源为 market.json + 小果
- `mofin-system-arch` skill(如有)中标注新模块
- `collect_evaluation_data.py` 中标注加入行业数据合并
- 本需求文档链接进所有相关 skill 的 references 部分
---
*本需求文档为权威需求,高于任何 skill/记忆/脚本中的描述。如有不一致,以本文档为准。*