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

文档:docs/ 含完整需求+架构设计
注意:尚未配置 git remote,笑笑接手后自行配置
2026-06-20 12:04:21 +08:00

226 lines
8.8 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.
# 全市场潜力股筛选 - LLM调用流程与提示词文档
## 概述
本流程在收盘后(16:00)通过一个 LLM cron(市场精选推荐-每日)一次性完成。全程只有一个 LLM 入口:**我(知微,deepseek-v4-flash** 根据 cron prompt 的指令逐步执行。
数据采集层(market_watch.py)为 no_agent 脚本,不调 LLM,只拉 API 写文件。
---
## 一、数据源准备(15:30no_agent,不调LLM
### market_watch.py
对 A 股 90 个行业板块逐个拉取同花顺(akshare)数据,写入 `market.json`
```json
{
"timestamp": "2026-06-19 15:30",
"source": "ths", // 数据来源:ths/eastmoney
"total_sectors": 90,
"up_ratio": 27.8, // 上涨板块占比(%)
"mood": "bearish", // bullish/neutral/bearish
"top_gainers": [...], // 涨幅前5
"top_losers": [...], // 跌幅前3
"sectors": [
{
"name": "半导体", // 板块名称
"change": 2.29, // 涨跌幅(%)
"up_count": 131, // 上涨家数
"down_count": 46, // 下跌家数
"net_inflow": 120.97, // 资金净流入(亿)
"lead_stock": "晶升股份", // 领涨股名
"lead_stock_change": 20.01 // 领涨股涨跌幅(%)
},
...
],
"insights": [...] // 旧管道残留,可忽略
}
```
注意:`source``eastmoney` 时,`change` 单位是万分比(如 596 = 5.96%),需除以 100`source``ths` 时已是百分比。
---
## 二、LLM 入口
### 2.1 定时触发
```
cron 任务: 市场精选推荐-每日
job_id: 759064f56c03
时间: 0 16 * * 1-5(交易日16:00
模型: deepseek-v4-flash(通过 Hermes gatewayhermes-agent model name
Tools: terminal, file, web, search
```
### 2.2 完整 Prompt
以下为 cron prompt 的完整内容。LLM(即我)按照这个提示一步步执行,每一步的思考过程不对外输出,最终产出是写入数据文件 + 返回报告文本。
```
## 任务:每日全市场潜力股精选 + 星级推荐
收盘后执行。分三步,每一步都要出具体结果,不能输出模板示例。
### 第1步:读数据
读 /home/hmo/web-dashboard/data/market.json
- sectors[] — 全行业板块数据(名称、涨跌幅、涨跌家数、资金流入、领涨股)
- source — 数据来源(ths 或 eastmoney,影响涨跌幅单位:ths已是百分比,EM需除以100)
读 /home/hmo/web-dashboard/data/candidate_pool.json — 历史候选池
### 第2步:全市场筛选
用 market.json 的板块数据做分析:
**2a 市场判断**
分析涨跌比、领涨板块特征,输出一句话判断:强势/中性/弱势 + 理由。
写入 market.json 的 market_verdict 和 verdict_reason 字段。
**2b 选热门行业**
从涨幅前10板块中选出2-3个你最看好的行业。
标准:不只看出涨幅,还要看涨跌家数比(上涨家数远大于下跌家数)、资金流入为正、不是一日游。
每个行业给一句话理由。
写入 market.json 的 hot_sectors 字段。
**2c 选危险行业**
从跌幅前5板块中选出1-2个需回避的行业。
写入 market.json 的 danger_sectors 字段。
**2d 查个股**
对每个热门行业,用腾讯API查该行业知名龙头股的当前价格:
`curl -s --noproxy '*' "http://qt.gtimg.cn/q=sh{代码}"` 或 `sz{代码}`
解析格式:vt_sh代码="1~名称~...~第4字段=当前价~...~第32字段=涨跌幅"
用真实价格辅助判断。
选2-3只候选股,每只给出:
- 评分 1-10(9-10强趋势+最佳时机;7-8板块向好+安全边际;5-6有逻辑但需等入场)
- 推荐理由一句话
- 入场区间(具体数字)
- 止损价(具体数字)
- 目标价(具体数字)
### 第3步:更新候选池 + 出推荐
将上述结果与 candidate_pool.json 合并:
- 新的候选股 → 新增(xiaoguo_score填评分,num_observations=1
- 已有候选 → 更新评分,追加评分历史,num_observations+1
- 连续3次评分下降 → trend_warning=true
- 平均分<5或7天未更新 → dropped=true
从候选池中选出最佳推荐(满足:未淘汰、未推荐过、评分>=7):
- 用你的知识做最终验证
- 给星级:5.0/4.5/4.0/3.5/3.0
- 写入 zhiwei_star、zhiwei_reviewed=true
- promoted=true
### 输出格式
最终回复必须包含以下内容,直接发给老爸:
【📊 今日市场】
判断:强势/中性/弱 — 一句话理由
热门行业:xxx(理由)、xxx(理由)
风险行业:xxx(理由)
【⚡ 潜力股推荐】
按星级排序,每只格式:
股票名(代码) ★星级 | 所属板块
入场区间 X~X | 止损 X | 目标 X
理由:一句话
【📋 候选池状态】
活跃X只,今日新增X只,已推荐X只,淘汰X只
没有符合条件的就说"今日无符合条件的新标的"。
禁止使用:可关注、可考虑、建议观察、试试、谨慎关注、择机
```
---
## 三、执行细节
### 3.1 LLM 工具调用序列
在实际执行中,LLM 会依次调用以下工具:
| 顺序 | 工具 | 用途 |
|------|------|------|
| 1 | read_file market.json | 读板块数据 |
| 2 | read_file candidate_pool.json | 读历史候选池 |
| 3 | read_file xiaoguo_insights.json | 读当日情感(可选) |
| 4 | terminal curl 腾讯API | 验证候选股实时价格(每只一次) |
| 5 | write_file candidate_pool.json | 写回更新后的候选池 |
| 6 | write_file market.json | 写回 market_verdict/hot_sectors 等 |
| 7 | 最终回复 | 输出报告文本 |
### 3.2 腾讯API调用示例
```bash
# 沪市股票
curl -s --noproxy '*' "http://qt.gtimg.cn/q=sh688981"
# 返回: v_sh688981="1~中芯国际~688981~140.50~..."
# 字段[3]=当前价, 字段[32]=涨跌幅
# 深市股票
curl -s --noproxy '*' "http://qt.gtimg.cn/q=sz002371"
```
### 3.3 候选池治理规则(硬编码在 LLM 指令中)
由 LLM 在执行第3步时自行判断:
- 候选评分连续 3 次下降 → trend_warning=true
- 近 3 次平均分 < 5 → dropped=true
- 距上次更新超过 7 天 → dropped=true
- dropped 的候选保留在池中供追溯,不再参与推荐
---
## 四、完整数据流
```
┌────────────────────────────────────────────────────────┐
│ 15:30 数据采集层(no_agent
│ │
│ market_watch.py │
│ → akshare 拉取同花顺90个行业板块 │
│ → 写入 /data/market.json │
└──────────────────────┬─────────────────────────────────┘
┌────────────────────────────────────────────────────────┐
│ 16:00 LLM层(deepseek-v4-flash,单次cron调用) │
│ │
│ 读 market.json │
│ → 分析涨跌比 → market_verdict │
│ → 选热门行业 → hot_sectors │
│ → 选危险行业 → danger_sectors │
│ → 写回 market.json │
│ │
│ 读 candidate_pool.json │
│ → 腾讯API查实时价 → 验证候选 │
│ → 合并新候选、更新评分、淘汰劣质 │
│ → 写回 candidate_pool.json │
│ → 给最终星级 → 输出报告 │
└──────────────────────┬─────────────────────────────────┘
老爸收到三段式报告
```
---
## 五、与其他管道的关系
| 管道 | 时间 | 关系 |
|------|------|------|
| 市场数据采集 (market_watch) | 每30分 | 本管道的唯一数据源 |
| 市场精选推荐 (本管道) | 16:00 | 依赖 market_watch 的最新一次写入 |
| 小果情感分析 | 16:00 | 独立管道,结果写入 xiaoguo_insights.json,本管道可选读取 |
| 策略评估-每日 | 21:00 | 与本管道无关,独立评估持仓策略 |
| 知识萃取 | 16:30 | 本管道的输出可作为知识萃取的输入 |