MoFin 初始提交

完整数据采集+分析管道:
- market_watch.py:90行业板块采集(同花顺/东方财富)
- 市场精选推荐 cron:全市场分析+候选池+星级推荐
- price_monitor.py:持仓/自选高频价格监控
- refresh_mtf_cache.py:多周期K线缓存
- 策略评估/知识萃取管道

文档:docs/ 含完整需求+架构设计
注意:尚未配置 git remote,笑笑接手后自行配置
This commit is contained in:
知微 (MoFin)
2026-06-20 12:04:21 +08:00
commit aa0f740381
950 changed files with 189006 additions and 0 deletions
+387
View File
@@ -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 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/记忆/脚本中的描述。如有不一致,以本文档为准。*