Files
MoFin/docs/market-screening-system-design.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

188 lines
6.3 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.
# 全市场潜力股挖掘系统设计
## 目标
打破持仓和自选的局限,从全 A 股市场挖掘新投资标的,附带入场策略和动态星级评分。
## 整体架构(两层式)
```
市场数据(market.json)
│ 每30分更新
┌──────────────────────────────────────┐
│ 第一层:小果本地LLM · 高频低耗 │
│ │
│ 每轮1-2个板块,积少成多覆盖全市场 │
│ → 分析板块趋势 │
│ → 筛选成分股 │
│ → 给出初步评分+策略 │
│ → 写入候选池(candidate_pool.json) │
└──────────────────┬───────────────────┘
┌──────────────────────────────────────┐
│ 第二层:知微(主模型)· 低频高质 │
│ │
│ 每日收盘后 │
│ → 读候选池 │
│ → 用技术分析+策略引擎验证 │
│ → 确认星级(5/4.5/4/3.5/3) │
│ → 输出最终推荐+推送 │
│ → 已推荐的标记 promoted │
└──────────────────────────────────────┘
```
## 候选池设计
### candidate_pool.json 结构
```json
{
"last_updated": "2026-06-19 15:30",
"total_candidates": 12,
"sectors_analyzed_today": ["半导体", "消费电子", "汽车零部件"],
"candidates": [
{
"code": "600000",
"name": "XX股份",
"sector": "半导体",
"added_at": "2026-06-19 10:30",
"last_updated": "2026-06-19 15:30",
"num_observations": 3,
"xiaoguo_score": 8.2,
"xiaoguo_reason": "放量突破前高,板块龙头",
"xiaoguo_strategy": {
"entry_range": "18.5~19.2",
"stop_loss": "17.5",
"target": "22.0"
},
"score_history": [
{"date": "2026-06-19 10:30", "score": 7.5},
{"date": "2026-06-19 11:00", "score": 8.0},
{"date": "2026-06-19 15:30", "score": 8.2}
],
"zhiwei_star": null,
"zhiwei_reviewed": false,
"zhiwei_reviewed_at": null,
"promoted": false,
"promoted_at": null,
"dropped": false,
"drop_reason": null
}
]
}
```
### 候选池治理规则
- 评分历程 >= 3 次且均分 < 5 → 自动淘汰
- 连续 3 次评分下降 → 标记预警,下轮淘汰
- 超过 7 天未评分 → 标记过期待重评
- 已 promoted(确认推荐)→ 保留供回顾,不重复推
## 第一层:小果筛选(no_agent 脚本)
### 文件:market_screener.py
**触发频率:** 每 60 分钟(跟随 market_watch 节奏,间隔一次执行)
**每轮流程:**
1. 读 market.json → 取行业板块涨幅排名
2. 选择本轮分析的板块:
- 优先级:涨幅前 10 中「累计分析次数最少」的板块
- 确保一周内覆盖所有活跃板块
- 每轮分析 2 个板块
3. 对每个板块:
a. `ak.stock_board_industry_cons_ths()` → 取成分股
b. 基础过滤:涨幅 > 0、价格 3~100 元、有成交量
c. 取前 5~8 只候选
d. 调小果 LLM API 分析 → 返回评分+策略
4. 更新 candidate_pool.json(新增候选 + 刷新已有候选的评分)
**小果 LLM Prompt**
```
你是一位A股市场分析助手。分析以下板块和个股,筛选潜力候选股。
板块:{sector_name}
板块涨幅:{change}%
上涨/总家数:{up_count}/{total_count}
资金净流入:{net_inflow}亿
领涨股:{lead_stock} +{lead_stock_change}%
成分股(涨幅前8):
代码 | 名称 | 现价 | 涨跌幅 | 换手率
{a} | {b} | {c} | {d} | {e}
判断标准:
1. 板块是真强势还是短期反弹?看量价配合和领涨股持续性
2. 个股:量价配合好、趋势健康、不是单纯跟涨
3. 给出 1-10 分(7分以上才值得关注)
输出JSON
{
"sector_judgment": "强势|中性|弱势",
"sector_reason": "一句话理由",
"candidates": [
{
"code": "600xxx",
"name": "名称",
"score": 8.5,
"reason": "选股理由含技术面特征",
"entry_range": "18.5~19.2",
"stop_loss": "17.5",
"target": "22.0"
}
]
}
```
**代码注意事项:**
- 小果 API 调用超时设 120s(27B 模型较慢)
- 调用失败时跳过该板块,下次重试
- 输出只写文件,不输出到 stdout(no_agent 静默模式)
## 第二层:知微精选(LLM cron)
**触发时间:** 每日 16:00(收盘后)
**流程:**
1. 读 candidate_pool.json → 取未 reviewed 且评分 >= 7 的候选
2. 对每个候选用我的技术分析工具验证
3. 综合打分 → 星级(5/4.5/4/3.5/3
4. 输出最终 2-3 只推荐(含完整策略)
5. 写入 market.json 的 potential_stocks 字段
6. 标记 promoted
**星级标准:**
- 5.0:强趋势+板块强势+技术面完美+入场时机佳
- 4.5:趋势健康+板块向好+技术面良好+有安全边际
- 4.0:板块和个股都OK,但缺明确催化剂
- 3.5:有逻辑但需要等待更好入场点
- 3.0以下:不推荐
## 时序与 cron 设计
| 时间 | 组件 | 类型 | 频率 | 说明 |
|------|------|------|------|------|
| 9:00~15:30 | market_watch | no_agent | 每30分 | 已有,采集板块数据 |
| 9:30~15:30 | market_screener | no_agent | 每60分 | 新脚本,小果筛股 |
| 16:00 | 市场精选推荐 | LLM | 每日 | 新cron,我出最终推荐 |
## 文件清单
| 文件 | 类型 | 说明 |
|------|------|------|
| /home/hmo/web-dashboard/market_screener.py | 新脚本 | 小果筛选引擎 |
| /home/hmo/web-dashboard/data/candidate_pool.json | 新数据 | 候选池 |
| /home/hmo/web-dashboard/market_insight.py | 废弃 | 被替换 |
| /home/hmo/web-dashboard/inject_xiaoguo_insight.py | 保留 | 仍需要注入情感到market.json |
## 关联修改
1. market_insight.py 停用(cron 改为新脚本)
2. 新 cron job:市场精选推荐(LLM16:00
3. 小果筛选 cronmarket_screener.pyno_agent,每60分)