Skip to content
Back to skills

Stock Picks

ASecurity

每日复盘后的股票推荐(多维度选股)— 综合 A股每日复盘(市场方向/板块/资金/新闻情绪)+ 个股深度分析(9层),用多维度筛选条件(L2微观结构为主/模型融合分/仓位信号/板块强度/新闻情绪)从全市场挑出未来几天大概率走强的股票,支持跨多日聚合(--window),输出候选榜 + 综合复盘 + Top 个股深度分析,落盘 PDF 到股票报告目录。用户说「选股」「推荐股票」「每日推荐」「明日看好」「选股推荐」「复盘后选股」时使用:跑复盘取数 → pick_candidates 多维打分 → Top N 深分 → 综合报告 → PDF。触发词:选股、股票推荐、每日推荐、明日看好、推荐股票、今日选股

  • 1,703 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 5, 2026
developmentpythonbashdockerbackend

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned October 5, 2026

npx -y skills add qusong0627/QuantMind --skill stock-picks --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Stock Picks?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Stock Picks
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/qusong0627-stock-picks/badge)](https://www.skillsdirectory.com/skills/qusong0627-stock-picks)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: stock-picks
description: "每日复盘后的股票推荐(多维度选股)— 综合 A股每日复盘(市场方向/板块/资金/新闻情绪)+ 个股深度分析(9层),用多维度筛选条件(L2微观结构为主/模型融合分/仓位信号/板块强度/新闻情绪)从全市场挑出未来几天大概率走强的股票,支持跨多日聚合(--window),输出候选榜 + 综合复盘 + Top 个股深度分析,落盘 PDF 到股票报告目录。用户说「选股」「推荐股票」「每日推荐」「明日看好」「选股推荐」「复盘后选股」时使用:跑复盘取数 → pick_candidates 多维打分 → Top N 深分 → 综合报告 → PDF。触发词:选股、股票推荐、每日推荐、明日看好、推荐股票、今日选股"
---

> ⚙️ 本技能遵循公共运行环境契约(最高优先级,先于本文其余内容执行):
> 详见 [_shared/env-contract.md](../_shared/env-contract.md),执行前先读它。

# stock-picks — 每日复盘后的股票推荐(多维度选股)

把「每日复盘」(市场广度)和「个股深度分析」(个股深度)两张皮缝起来:先用复盘产物定市场环境(该不该进场、主线在哪、资金方向),再用多维度筛选条件从全市场挑候选,对 Top N 做 9 层深分,最后输出**一份报告**:综合复盘 + 候选榜 + Top 个股深分。报告 Markdown + PDF,落盘前端「股票报告」页可见目录,聊天回复速览。

**定位**:`[[daily-review]]` 是广度(今天市场发生了什么),`[[stock-market-analysis]]` 是深度(某只股票值不值得看),本 skill 是**两者合一的推荐**——先选再深挖,产出可执行的候选池,不是复盘报告。

## ⚠️ 铁律(先读,最高优先级)

| 陷阱 | 正确口径 |
|---|---|
| **推荐不是承诺** | 所有候选是「多维信号合成的相对强势」,不是「明天必涨」。报告必须带风险声明 + 数据滞后声明 |
| **ST 股默认排除** | ST/*ST/退 有 5% 涨跌幅限制 + 退市风险,`pick_candidates.py` 默认排除(`--keep-st` 才保留) |
| **信号日取最近「全量」推理日** | 默认 = distinct symbol ≥ 1000 的那天(`engine_signal_scores`),避免最近只推理了几十只的残日;`--date` 可显式指定 |
| **分数单位** | fusion_score 是模型预测分(非涨跌幅);position_score 0~1 是半凯利仓位;pct_industry 是行业截面百分位 |
| **L2 是 T+5/T+10 信号** | VPIN 族正 IC(高分偏多)、vol_persistence 等负 IC(高分偏空)——看状态分位,别当单日信号 |
| **趋势不纳入** | 模型分数趋势维度按需求移除——打分只用 L2/融合/仓位/板块/新闻,不参与排名 |
| **L2 主导** | L2 权重(40%) > 融合分(30%):L2 是 T+5/T+10 信号,先看订单簿微结构,再看模型预测 |

## 执行流程(固定 6 步)

### 第 1 步:跑每日复盘取数(复用 [[daily-review]])

```bash
# ① 宿主机:daily_review.py 出 指数/广度/板块/资金/L1/L2 + 模型推理信号 + 次日方向
cd <repo>/skills/daily-review/scripts
python3 daily_review.py --date 20260821              # 不带 --date 取最新交易日

# ② 容器内:news_review.py 聚合当日新闻情绪(先跑这个,新闻维度才能加权)
docker cp <repo>/skills/daily-review/scripts/news_review.py quantmind:/tmp/
docker exec quantmind python3 /tmp/news_review.py --date 20260821
```

产出:`data/reports/daily_review/{YYYY-MM-DD}_stats.json` + `{YYYY-MM-DD}_facts.md` + `{YYYY-MM-DD}_news.json`。
这一步给推荐提供:市场方向(六维)、主线板块、资金流向、新闻聚焦板块、L2 微观结构状态——**推荐必须和市场环境自洽**(大盘空仓日不该推满仓,杀跌板块的个股即使分数高也要警惕)。

### 第 2 步:多维度选股(本 skill 脚本)

```bash
python3 <repo>/skills/stock-picks/scripts/pick_candidates.py --data-date 20260821 --window 3 --top 30 --json   # 跨3日聚合
python3 <repo>/skills/stock-picks/scripts/pick_candidates.py --data-date 20260821 --window 1 --top 30 --json   # 严格单日(无未来视觉)
python3 <repo>/skills/stock-picks/scripts/pick_candidates.py --top 30 --json   # 默认最近全量推理日
python3 <repo>/skills/stock-picks/scripts/pick_candidates.py --top 30 --json --no-l2  # 跳过 L2(更快)
```

产出:`data/reports/stock_picks/{YYYYMMDD}_picks.json`(全量候选 + 每维分解)+ `{YYYYMMDD}_picks.md`(排名表骨架)。
**多维度打分 = 六维加权**(满分 1.0,L2 主导):L2 40% / 融合 25% / L1动量 15% / 仓位 10% / 板块 5% / 新闻 5%。趋势不纳入。**单模型铁律**:只用默认日推模型(5eea5418)的单一 run 分数,杜绝多模型融合。**默认精选 5 只**。
**跨日聚合**:`--window N` 从数据日起往前 N 个推理日,每股取跨日复合分均值后排名(`--window 1` = 严格单日无未来视觉)。
**硬过滤**:① 无融合分数剔除;② 仓位门 `position_score>0 或 行业百分位≥80%`(避免大盘空仓日推满仓);③ 默认排除 ST。
未含维度(如当日无 news.json、L2 分区缺失)时该维中性 0.5,`picks.md` 头部会标注「未含:L2, 新闻」——报告里要声明,不能假装都有。

### 第 3 步:Top N 深分(复用 [[stock-market-analysis]])

对候选榜前 5~10 只跑 9 层深分,取 `--json` 输出供报告引用:

```bash
python3 <repo>/scripts/stock_9layer_fetch.py 001237.SZ --json   # 宿主机
# 输出 /tmp/001237_9layer.json(23 因子 vs 全市场截面分位 + IC 方向)
```

深分重点核对(和候选维度互相印证,**发现矛盾要写进报告**):
- **L3 技术位**:候选时点 vs MA20/前高——分数高但跌破 MA20 的是矛盾项
- **L4b 微观结构**:正 IC 因子(VPIN 族)是否处于健康分位
- **L6 模型**:该股历史推理信号 vs 当日融合分,是否一致
- **L7 新闻**:有没有个股直接消息/相关行业消息,和三步纵深结论

### 第 4 步:综合报告写作(Markdown,模板见下)

**报告 = facts.md 的事实 + picks 骨架的数字 + 深分的数值 + 你的解读。facts/picks/深分没有的数字禁止出现。** 推荐榜数字必须照抄 `picks.json`,深分数字必须照抄 `/tmp/{code}_9layer.json`,禁止臆造。

### 第 5 步:Markdown → PDF + 落盘(必做,只发 /tmp = 未交付)

```bash
# Markdown → PDF(研报风,复用 md_to_pdf_report.py)
docker cp 选股推荐.md quantmind:/tmp/picks.md
docker exec quantmind bash -lc "cd /app && python3 backend/scripts/md_to_pdf_report.py /tmp/picks.md /tmp/picks.pdf"
docker cp quantmind:/tmp/picks.pdf 选股推荐.pdf

# 落盘股票报告目录(宿主机必须 docker cp,目录 owner 是容器 root)
docker cp 选股推荐.md quantmind:/data/reports/stock_reports/每日选股/每日选股推荐_2026-08-21.md
docker cp 选股推荐.pdf quantmind:/data/reports/stock_reports/每日选股/每日选股推荐_2026-08-21.pdf
```

落盘后 `ls` 确认 md + pdf 都在(前端「股票报告」页 → 每日选股 文件夹)。

### 第 6 步:聊天回复速览

```markdown
**每日选股推荐 2026-08-21(周五)**

一句话:…(市场环境 → 推荐逻辑 → 候选池特征)

市场:上证 +0.01% / 深成 +0.45%;涨停 64 / 跌停 14;主线 …;资金 …;次日方向 看多/看空(xx/11,★★★)

Top5 候选(五维综合,L2 主导):
1. 惠康科技 001237 — L2 0.80 / 融合 0.0365 / 仓位 84% / 行业分位 100%
2. 今天国际 300532 — …(每只 1 行,标注最强维度 + 该股风险点)
3. …

深分亮点:Top3 中 X 只技术位健康、L2 VPIN 分位 >70%……(哪些候选通过了深分、哪些有矛盾)

⚠️ 以上为模型信号合成的相对强势候选,非投资建议;数据截至 2026-08-21(两融/北向滞后见数据说明)

→ 完整报告已落盘「股票报告 → 每日选股」目录
```

## 多维度筛选条件详解(写报告时逐维引用)

| 维度 | 权重 | 数据源 | 怎么判读 |
|---|---|---|---|
| L2 微观结构 | **40%** | `l2_factors` 正 IC 因子 + 负 IC 因子(负 IC 反转) | 正 IC 高=知情资金活跃;负 IC 低=毒性/波动小;健康分 = 0.5×正IC分位 + 0.5×(1−负IC分位) |
| 模型融合分数 | 30% | `engine_signal_scores.fusion_score` 幅度归一 | 融合分越高=模型预测收益越强;用默认单模型(日推模型) |
| 仓位信号 | 15% | `quality.position.position_score` | 0.8+ = 强行业地位 + 半凯利高仓位;<0.3 弱;数据缺失不拦 |
| 板块强度 | 10% | `industry_top10_avg` 截面分位 + 板块超级大单净额 | 行业头部强度 + 当日板块大单净流入(跌市抄底方向反推) |
| 新闻情绪 | 5% | `news_review.py` 产物 `news.json` | net_ratio>0 偏多;有直接个股新闻的优先 |

**报告里每只候选必须能说清「它强在哪几个维度」+「弱在哪」**,禁止只贴数字不解读。候选若和市场主线、次日方向冲突,必须明说。

## 报告模板

```markdown
# 每日选股推荐 2026-08-21(周五)

> **报告日期**:2026-08-21
> **数据截至**:2026-08-21(信号日)
> **口径**:候选来自最近全量推理日 engine_signal_scores + l2_factors + 当日新闻情绪;五维加权(L2 40/融合 30/仓位 15/板块 10/新闻 5,趋势不纳入)

## 一、市场环境(综合复盘,从 facts.md 提炼)
指数/广度/量能/主线/资金 2-4 句 + 次日方向(六维合成)+ 一句话「该不该进场/什么风格占优」。
**这里定推荐基调**:市场偏强推进攻型,震荡降仓位,弱势只列观察不推荐。

## 二、候选榜(Top10,照抄 picks.md)
表格:# / 代码 / 名称 / 综合分 / L2 / 融合 / 仓位 / 行业分位 / 覆盖日 / 行业 / 板块大单
每只标注最强维度 + 一句话依据。

## 三、Top 个股深度分析(前 3-5 只,用 stock_9layer_fetch --json 结果)
每只分节:
### {名称}({代码})
- **候选维度**:最强维度 + 分数
- **9层核对**:L3 技术位(vs MA20)、L4b 微观结构(VPIN 分位)、L6 模型一致性、L7 新闻(三步纵深结论)
- **风险点**:弱维度 / 技术矛盾 / 板块杀跌风险
- **综合判断**:推荐 / 观察 / 剔除(剔除要写原因)

## 四、推荐逻辑与风险声明
- 候选池与市场主线一致性:命中/偏离
- 数据滞后声明(从 facts.md 复制)
- ⚠️ 本报告为模型信号合成的相对强势候选,非投资建议。股市有风险,投资需谨慎。

## 五、明日验证清单
2-4 条可验证预期(明天能判断对错的):如「Top5 平均跑赢全市场」「候选集中板块继续走强」等
```

## 维护

- 核心脚本:`scripts/pick_candidates.py`(宿主机跑;PG `engine_signal_scores` + `stock_aliases`,QuantDB `l2_factors`,`news_review.py` 产物)
- 依赖技能:`[[daily-review]]`(复盘取数)、`[[stock-market-analysis]]`(深分)、`[[quantdb-fields]]`(单位口径)
- 权重/阈值改 `pick_candidates.py` 顶部常量(`W_*`、`_POSITION_GATE`、`_MIN_SIGNAL_COVERAGE`)
- 单测:`cd scripts && python3 -m pytest tests/ -q`(覆盖打分/过滤/趋势/单位)

Files in this skill

  • SKILL.md11.2 KB
  • scripts/backtest_picks.py14.8 KB
  • scripts/pick_candidates.py38.5 KB
  • scripts/tests/pytest.ini128 B
  • scripts/tests/test_pick_candidates.py4.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…