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

7.8 KiB
Raw Blame History

全市场潜力股挖掘系统

概述

全自动管道:盘中每15分钟采集全市场数据 → 检测异动 → 搜新闻分析 → 我判断 → 出推荐。

所有数据存入 mofin.dbSQLite),统一供 Dashboard 市场模块展示。


一、时序总览

交易日 9:00-15:00,每15分钟一轮
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
:43  → 数据采集(no_agent~40秒)
:45  → 趋势检测(no_agent,~5秒)
:48  → 小果情报处理(no_agent~30秒)
      ↓
:00/:15/:30/:45 → 盯盘 cron(我,LLM
      读 signal_news → 判断 → 更新候选池 → 推老爸
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16:00 → 市场精选推荐(我,收盘汇总)

二、数据采集(: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 表)

四、小果情报处理(:48,no_agent

xiaoguo_news_processor.py

读取未处理 signal(每次1条),做3件事:

第1步:搜新闻 用 akshare 搜 signal 涉及的每只股票的最新新闻。 搜索范围:领涨股 + 成分股 + 持仓股 + 自选股 去重后取前5篇,含标题 + 正文全文。

第2步:小果 LLM 分析 模型:Qwen3.6-27B-MTPLX-Optimized-Speed192.168.1.122:18003 每次送5篇,逐篇给完整摘要 + 情感(positive/negative/neutral)。 单次调用约 10-15 秒,直接输出 JSON。

第3步:写入 signal_news

字段 说明
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

市场精选推荐-每日

读当日所有 signals + news + candidates,做:

  1. 综合当日信号 → 市场判断
  2. 从 candidates 中选出未推荐过且评分 >= 7 的
  3. 给最终星级(5.0/4.5/4.0/3.5/3.0
  4. 输出三段式报告

报告格式同前。


七、数据库表

市场信号相关表

用途 关键字段
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 实时