Files
MoFin/docs/market-screening-pipeline.md
T

252 lines
7.9 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.
# 全市场潜力股挖掘系统
## 概述
全自动管道:盘中每15分钟采集全市场数据 → 检测异动 → 搜新闻分析 → 我判断 → 出推荐。
所有数据存入 `mofin.db`SQLite),统一供 Dashboard 市场模块展示。
---
## 一、时序总览
```
交易日,每15分钟一轮,覆盖沪深A股+港股
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
上午:
9:25 采集链(75秒)+ 我判断 + 推报告 ← A股集合竞价完毕+港股已交易1.5h
9:40
9:55
10:10
10:25
10:40
10:55
11:10
11:25
11:40 ⚡ A股休市,港股交易中
11:55 ⚡ 同上
下午:
13:05
13:20
13:35
13:50
14:05
14:20
14:35
14:50
15:05
15:20
15:35
15:50 ← 最后一轮(港股收市前10分钟)
每天21轮。12:10-12:55午休跳过。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
每轮流程(全部在一个cron内完成,~2-3分钟):
① market_watch → 拉90个行业板块数据
② trend_detector → SQL检测17种信号
③ mofin_news → 搜新闻(原文入库)
④ 我(知微)→ 判断信号 → 更新候选池 → 推报告/紧急消息
```
---
## 二、数据采集(:43no_agent
### market_watch.py
拉同花顺90个行业板块,写入 `mofin.db`
**market_snapshots**(每次一条):
| 字段 | 说明 |
|------|------|
| timestamp | 采集时间 |
| source | ths / eastmoney |
| up_ratio | 上涨板块占比(%) |
| mood | bullish / neutral / bearish |
**sector_snapshots**(每条一个板块,关联 snapshot_id):
| 字段 | 说明 |
|------|------|
| name | 板块名,如"半导体" |
| change_pct | 涨跌幅(%) |
| up_count / down_count | 上涨/下跌家数 |
| net_inflow | 资金净流入(亿) |
| lead_stock | 领涨股名 |
| lead_stock_change | 领涨股涨跌幅 |
---
## 三、趋势检测(:45no_agent
### trend_detector.py
读取最新 snapshot,检测17种信号,写入 `sector_signals` 表。
按5类维度划分:
**A. 资金流信号**
| 信号 | 逻辑 | 严重性 |
|------|------|--------|
| A1 资金异动 | 单次净流入/出 > 近10次均值 + 3σ | high(>5σ) / medium(3-5σ) |
| A2 持续资金流入 | 连续≥3次净流入且逐次递增 | low |
| A3 持续资金流出 | 连续≥3次净流出且逐次扩大 | low |
| A4 资金转向 | 净流入从正转负或负转正 | medium |
**B. 涨跌结构信号**
| 信号 | 逻辑 | 严重性 |
|------|------|--------|
| B1 涨跌比反转 | 上涨占比变化 > 30个百分点 | medium |
| B2 持续走强 | 连续≥3次涨幅排全市场前10 | low |
| B3 持续走弱 | 连续≥3次跌幅排全市场前10 | low |
| B4 普涨背离 | 涨 > 3% 但上涨家数 < 50% | medium |
| B5 极端分化 | 涨跌家数比 > 5:1 或 < 1:5 | medium |
**C. 领涨/成分股信号**
| 信号 | 逻辑 | 严重性 |
|------|------|--------|
| C1 领涨股更替 | 领涨股与前2次采集不同 | medium |
| C2 领涨股极端涨幅 | 领涨股单次涨跌幅 > 15% | medium |
**D. 趋势拐点信号**
| 信号 | 逻辑 | 严重性 |
|------|------|--------|
| D1 趋势反转(多→空) | 连续≥3次净流入后突然转流出 | high |
| D2 趋势反转(空→多) | 连续≥3次净流出后突然转入流 | high |
| D3 量价背离(涨) | 涨 > 2% 且资金净流出 > 均值2倍 | medium |
| D4 量价背离(跌) | 跌 > 2% 且资金净流入 > 均值2倍 | medium |
**E. 关联信号**
| 信号 | 逻辑 | 严重性 |
|------|------|--------|
| E1 板块轮动 | 前次TOP3全部跌出前10 | medium |
| E2 产业链联动 | 同产业链多板块同时触发A/B/D类 | low |
| E3 持仓关联 | 持仓股所在板块触发任何high信号 | high |
写入 `sector_signals` 时附带:
- related_stocks — 该板块的领涨股 + 成分股(从 stock_sectors 查)
- holdings_in_sector — 该板块中的持仓股(查 holdings 表)
- watchlist_in_sector — 该板块中的自选股(查 watchlist_stocks 表)
---
## 四、新闻采集(:48no_agent
### mofin_news.py
读取未处理 signal(每次1条),用 akshare 搜新闻:
- 搜索范围:领涨股 + 成分股 + 持仓股 + 自选股
- 去重后取前5篇,含标题 + 正文全文
- 写入 signal_news,标记「待知微判断」
**不做情感分析,不调LLM。** 新闻分析由知微在下一轮cron中完成。
| 字段 | 说明 |
|------|------|
| signal_id | 关联 sector_signals |
| overall_sentiment | 总体情感(利好/利空/中性) |
| summary | 汇总摘要 |
| key_articles | JSON [{title, sentiment, summary}] |
| searched_stocks | 本次搜了哪些股票 |
**节流规则:** 同一板块同一signal类型24小时内已有 → 跳过。无未处理 signals → 本轮跳过。
---
## 五、知微判断与决策(:00/:15/:30/:45LLM cron
盯盘 cron prompt 中包含信号处理逻辑。
### 5.1 处理流程
```
进入盯盘 cron 后:
────────────────────────────────────────
1. 读最近15分钟的 signal_news(高严重性优先)
2. 逐条判断:
├── severity=high 且 sentiment=利空
│ → 检查持仓中是否有该板块个股
│ → 有 → 推老爸(风险预警)
│ → 无 → 记入待观察
├── severity=high 且 sentiment=利好 且置信
│ → 查腾讯API实时价
│ → 判断入场条件是否成熟(现价在合理区间)
│ ├── 可操作 → 给星级+策略 → 插入candidates
│ │ → 同时加入 watchlist_stocks 表(自动入自选)
│ │ → 推老爸(今日推荐)
│ └── 需等待 → 标记待观察,记录入场条件
└── severity=medium/low
→ 累积,收盘汇总
3. 照常做持仓/自选盯盘输出
如果本轮有紧急推荐,单独推一条消息;盯盘报告里不加额外篇幅
```
### 5.2 推送给老爸的规则
只在以下情况才推:
| 情况 | 推送内容 | 渠道 |
|------|---------|------|
| 持仓股板块出现利空 | 风险预警+建议操作 | 立即推 |
| 发现高置信潜力股,现价在买入区内 | 推荐+星级+入场策略 | 立即推 |
| 常规盯盘报告 | 三段式600字以内 | 定时走cron |
### 5.3 自动加入自选
当确认一只新的潜力股(不在持仓且不在自选)时:
- 写入 candidates 表
- 同时 INSERT INTO watchlist_stocks
- 这样 Dashboard 自选模块和策略引擎都能看到
---
## 六、收盘后处理(16:00LLM cron
盘中每轮已经完成了判断和推送。16:00额外一轮主要是做**知识萃取**:
- 回顾当日所有 signals + 判断记录
- 提炼可复用的判断经验 → 写入 analyst-knowledge-log.md
- 供后续分析参考
---
## 七、数据库表
### 市场信号相关表
| 表 | 用途 | 关键字段 |
|----|------|---------|
| market_snapshots | 每次采集元信息 | id, timestamp, up_ratio, mood |
| sector_snapshots | 板块快照 | snapshot_id, name, change_pct, net_inflow |
| sector_signals | 检测到的异常信号 | type, sector, severity, related_stocks, processed |
| signal_news | 小果情报分析 | signal_id, overall_sentiment, summary, key_articles |
| candidates | 候选池 | code, zhiwei_star, promoted, dropped |
| candidate_score_history | 评分变更历史 | code, score, source, created_at |
### 自选自动写入
新确认的潜力股自动写入 `watchlist_stocks` 表,Dashboard 自选模块即时可见。
---
## 八、Dashboard 市场模块展示
mofin.db 中的所有数据直接在 Dashboard 上展示:
| Dashboard 页面 | 数据源 | 刷新频率 |
|---------------|--------|---------|
| 行业热点 | market_snapshots + sector_snapshots 最新一次 | 每15分 |
| 知微洞察 | signal_news(当日汇总) | 每15分 |
| 潜力股挖掘 | candidateszhiwei_star 非空) | 实时 |
| 自选股 | watchlist_stocks | 实时 |