MoFin 初始提交
完整数据采集+分析管道: - market_watch.py:90行业板块采集(同花顺/东方财富) - 市场精选推荐 cron:全市场分析+候选池+星级推荐 - price_monitor.py:持仓/自选高频价格监控 - refresh_mtf_cache.py:多周期K线缓存 - 策略评估/知识萃取管道 文档:docs/ 含完整需求+架构设计 注意:尚未配置 git remote,笑笑接手后自行配置
This commit is contained in:
@@ -0,0 +1,387 @@
|
||||
---
|
||||
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 可用但未被利用
|
||||
|
||||
- 小果(192.168.1.122: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://192.168.1.122: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 cron(no_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/记忆/脚本中的描述。如有不一致,以本文档为准。*
|
||||
Reference in New Issue
Block a user