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

8.8 KiB
Raw Blame History

全市场潜力股筛选 - 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

{
  "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": [...]                             // 旧管道残留,可忽略
}

注意:sourceeastmoney 时,change 单位是万分比(如 596 = 5.96%),需除以 100sourceths 时已是百分比。


二、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调用示例

# 沪市股票
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 本管道的输出可作为知识萃取的输入