--- name: daily-review description: "A股每日复盘(专业版)— 基于 QuantDB 本地数据 + 当日新闻情绪 + 模型推理信号 + L1/L2 因子截面 + 板块资金流的盘后复盘:指数、涨跌结构与涨停梯队、量能、行业/概念轮动、资金面、L2 微观结构、当日有新闻股票匹配、模型推理信号复盘(昨日推理命中率 + 明日信号Top5)、次日走势方向研判(六维信号加权 → 明确方向+置信度)。用户说「复盘」「每日复盘」「复盘某天」时使用:跑取数脚本(daily_review + news_review)→ 按模板写复盘报告 → 转 PDF → 落盘股票报告目录 → 聊天回复速览。触发词:复盘、每日复盘、今日复盘、盘后复盘、复盘20260814" --- > ⚙️ 本技能遵循公共运行环境契约(最高优先级,先于本文其余内容执行): > 详见 [_shared/env-contract.md](../_shared/env-contract.md),执行前先读它。 # daily-review — A股每日复盘(专业版) 盘后固定动作:把 QuantDB 当天数据 + 当日新闻情绪 + L1/L2 因子截面变成一份结构固定的复盘报告(Markdown + PDF),落盘到前端「股票报告」页可见目录,并在聊天里回复速览。**报告末必含「次日走势研判」——给出明确方向(强烈看多/看多/震荡/看空/强烈看空)+ 置信度星级 + 每维依据。** ## ⚠️ 单位铁律(先查 [[quantdb-fields]],最高优先级) | 陷阱 | 正确口径 | |---|---| | 个股 volume=**股**、amount=**万元** | 指数 volume=**手**、amount=万元 | | 复盘报告里金额一律换算为**亿元**(万元÷1e4) | 脚本输出的 `*_yi` 字段单位已是亿元 | | `technical_indicators.pct_change` = **%**;未来收益用 `future_return_*`(标签,勿当历史动量);历史动量用 pct_change / mom_ret | 涨跌家数/涨停/连板全用它 | | `index_daily.preClose` **全 NULL** | 指数涨跌幅用 close 序列自算(脚本已处理) | | l2_factors 已恢复日更(202608+ 当日有数据,L1 主力资金可用);两融通常滞后 1 日(偶与当日对齐,以 facts 为准);北向只有季度快照 | 必须带「数据滞后声明」,滞后数据集禁止当当日数据写 | ## 执行流程(每次复盘固定 5 步) ### 第 1 步:跑取数脚本(两条:daily_review 取 L1/L2/方向 + 模型推理信号,news_review 取当日新闻情绪) ```bash # ① 宿主机:daily_review.py 出 指数/广度/板块/资金面 + L1/L2 因子透视 + 板块资金流 + 模型推理信号 + 次日方向 cd /skills/daily-review/scripts python3 daily_review.py --date 20260814 # 指定日;不带 --date 则取最新交易日 python3 daily_review.py --watch 601138.SH,600519.SH # 可选:自选/持仓股必带 python3 daily_review.py --model mdl_cn_train_xxx # 可选:指定推理模型,默认每日推理模型(5eea5418) # ↑ 模型推理信号自动查询 PG:昨日推理→今日信号命中率复盘 + 今日推理→明日信号 Top5; # 无推理 run 时脚本**自动补跑**(docker exec trigger_inference.py,10-30 秒), # 补跑失败原因如实写入 facts(常见:特征 parquet 滞后——先跑 # `docker exec quantmind python3 /app/backend/scripts/update_feature_parquet.py` 补特征再复盘) # 无 PG / PG 挂时该章节降级为缺失(facts 无「十一、模型推理信号」) # ② 容器内:news_review.py 聚合当日新闻情绪(有新闻股票匹配 + 板块聚焦 + 来源/时段质量) # .claude 目录未挂载进容器,须先 docker cp 到容器 /tmp 再跑 docker cp /skills/daily-review/scripts/news_review.py quantmind:/tmp/ docker exec quantmind python3 /tmp/news_review.py --date 20260814 ``` **顺序:先跑 ② 再跑 ①** —— daily_review.py 读到 `data/reports/daily_review/{YYYY-MM-DD}_news.json` 后,「新闻情绪」维度才加权、方向置信度提到 **★★★★★**;只跑 ① 时新闻维度中性、置信度降到 ★★★(facts「六、新闻情绪」会提示补跑 news_review)。 输出 `data/reports/daily_review/{YYYY-MM-DD}_stats.json` + `{YYYY-MM-DD}_facts.md`(宿主机 ①);`{YYYY-MM-DD}_news.json`(容器 ②,写同一共享目录)。 脚本兼容宿主机与容器内(数据目录自动探测;容器内 QuantDB 路径 `/data/quantdb`、报告路径 `/data/reports/daily_review`,宿主机 `data/quantdb`、`data/reports/daily_review`)。 ### 第 2 步:读 facts.md 写复盘报告(Markdown 模板) **报告 = facts.md 的事实 + 你的解读。facts.md 没有的数字禁止出现在报告里。** ```markdown # A股每日复盘 2026-08-14(周五) > **报告日期**:2026-08-14 > **数据截至**:2026-08-14 ## 一、盘面速览(结论先行) 2-4 句:指数表现 → 涨跌结构 → 量能 → 主线板块 → 一句话定性(强势/震荡/弱势 + 依据)→ **一句话次日方向**(引自 facts 十,如「六维合成:强烈看空 -4.6/11,置信 ★★★★★」) ## 二、指数与量能 指数表(facts 一、)+ 两市成交额解读(环比/5 日均对照,放量 or 缩量) ## 三、涨跌结构与情绪 涨停/跌停/炸板数量、最高连板与连板梯队、涨跌分布表(facts 二、四) 情绪读数 + 解读:买压/卖压对比、早盘上涨占比 → 追高意愿强还是弱 ## 四、板块与主线 行业一级 Top/Bottom(facts 三)、概念 Top;指出当日主线与杀跌方向; 涨停个股聚集在哪些板块(从涨幅榜的 industry 列归纳) ## 五、资金面 两融(注明截至日与滞后天数)、北向季度快照(注明季度口径);L2 主力净额见七 ## 六、新闻情绪(当日有新闻的股票匹配) 当日新闻总数/涉及股票数、利好/利空/中性、净情绪;来源质量(高质量源 vs 反向源); 黄金时段利好占比;新闻聚焦板块(哪些行业消息面热);有新闻个股 Top(篇数/净情绪/事件标签)。 结论:今日消息面是偏多/偏空/中性 + 焦点板块。 ## 七、L1/L2 因子透视(facts 七) L1 换手/动量/波动均值对照前日;L2 微观结构:正向因子强信号股占比(越高=知情资金越扩散)、 VPIN 家族分位、量价背离、超级大单净额及前日对比;板块超级大单净额表(净流入 vs 净流出)。 结论:微观结构是扩散/收敛 + 资金流入/流出方向。 ## 八、模型推理信号(对应 facts 十一,模型预测复盘) 两块: 1. **昨日推理 → 今日验证**:昨日模型推理(推理{data}→信号{pred})对今日的 Top10 信号对照今日实际涨跌—— 命中率/平均涨幅/相对全市场超额/涨停跌停数。写清信号平均涨幅跑赢还是跑输市场。 2. **明日信号 Top5**:今日推理(基于{data})预测明日最强 5 只(名称/代码/信号分/方向);若今日推理未跑,标注「取最近一次推理」。 结论句点明模型风格:信号股是否集中强势板块、与当日主线是否一致、与次日方向研判是否呼应。 推理信号来自 PG(`engine_signal_scores` fusion_score 降序),数字必须照抄 facts 十一,禁止臆造。 ## 九、个股榜 涨幅/跌幅/成交额/换手榜解读(facts 八),挑 3-5 只有代表性的说原因判断(无新闻佐证时只描述数据,不编原因) ## 十、自选/持仓复盘(自带 --watch 时才有) 逐只:涨跌幅、量能、技术位(MA20 上下)、当日状态(涨停/炸板/大涨/异动) ## 十一、昨日复盘回顾(复盘闭环,连续性的核心) 读上一份复盘(同目录 {上一交易日}.md 或 PDF 前的 md)的「要点与明日关注」, 逐条对照今日实际:命中几条 / 未命中几条 / 打脸的原因是什么(禁止含糊带过) **若上一份复盘有「次日走势研判」,先对照它给出的方向是否兑现**,再对照要点。 ## 十二、次日走势研判(六维方向表,直接引用 facts 十) 方向(强烈看多/看多/震荡/看空/强烈看空)+ 得分 + 置信度星级 = 六维(趋势/量能、情绪/结构、L2 微观、新闻情绪、板块/资金流)评分。 逐维解读:哪些维度在看多/看空/中性;多空矛盾点在哪;结合「有新闻股票 + L2 强信号股」交集给 2-4 条可验证的次日明确预期。 **禁止把方向当承诺**——沿 facts 口径:方向只是六维信号的可解释合成,明日以指数/广度/涨停数验证。 ## 十三、要点与明日关注 - 要点:今日市场最重要的 3 条事实 - 明日关注:从「次日走势研判」的可验证预期里挑 2-4 条(明天能判断对错的才算,禁止「关注成交量变化」这类废话) ## 数据说明 滞后数据集声明 + 单位说明(从 facts 的数据说明复制) ``` **写作铁律**:每个数字带单位;涨停梯队/连板高度以脚本 stats 的 `market.streaks` 为准;涨跌停判定规则见 REFERENCES/review-methods.md;ST 涨跌幅与新股规则别记错(主板 ST 2026-07-06 起 ±10%)。 ### 第 3 步:Markdown → PDF(研报风,复用 stock-market-analysis §7.4 管线) 转换脚本 `backend/scripts/md_to_pdf_report.py`(reportlab,封面/红涨绿跌语义着色/斑马纹表格自动生效)。 **环境分支**(先探测:容器内 `test -d /app/backend` 为真): ```bash # —— 宿主机(Claude Code)—— docker cp /tmp/复盘.md quantmind:/tmp/review.md docker exec quantmind bash -lc "cd /app && python3 backend/scripts/md_to_pdf_report.py /tmp/review.md /tmp/review.pdf" docker cp quantmind:/tmp/review.pdf /tmp/复盘.pdf # —— 容器内(QuantBot / QwenPaw)—— python3 /app/backend/scripts/md_to_pdf_report.py /tmp/review.md /tmp/review.pdf ``` ### 第 4 步:落盘股票报告目录(必做,只发 /tmp = 未交付) 文件名固定:`每日复盘_{YYYY-MM-DD}.md` / `.pdf`,放 `data/reports/stock_reports/每日复盘/`。 ```bash # —— 宿主机:宿主机直接 cp 会 EACCES(目录 owner 是容器 root),必须 docker cp —— docker cp 复盘.md quantmind:/data/reports/stock_reports/每日复盘/每日复盘_2026-08-14.md docker cp 复盘.pdf quantmind:/data/reports/stock_reports/每日复盘/每日复盘_2026-08-14.pdf # —— 容器内:直接 cp —— cp 复盘.md /data/reports/stock_reports/每日复盘/每日复盘_2026-08-14.md cp 复盘.pdf /data/reports/stock_reports/每日复盘/每日复盘_2026-08-14.pdf ``` 落盘后 `ls` 确认 md + pdf 都在(前端「股票报告」页 → 每日复盘 文件夹)。 ### 第 5 步:聊天回复速览(QuantBot/Claude 直接回答用户用这个格式) ```markdown **A股复盘 2026-08-14(周五)** 一句话总结:… 指数:上证 +0.01% / 深成 +0.45% / 创业板 +1.12% / 科创50 -0.00% / 北证50 -0.94% 广度:涨 2400 / 跌 2970(涨跌比 0.81);涨停 64 / 跌停 14 / 炸板 22;最高 5 连板 量能:两市成交额 21,565.76 亿元(环比上一交易日 1.04x;5 日均 21,xxx 亿,量比 x.xx) 主线:行业 Top3 …;概念 Top3 … 资金:两融 xxx 亿(截至 08-13,+xx 亿);北向 2026Q2 持仓市值 30,685.68 亿元;超级大单 ±xx 亿 情绪:买压 0.49 / 卖压 0.51;早盘上涨占比 40.68% 新闻:命中 xxx 篇 / 有新闻股票 xxx 只;净情绪 ±xx%;聚焦板块 … L2:强信号股占比 xx%;VPIN 分位 xx;超级大单 ±xx 亿 模型推理:昨日 TopN 信号今日命中率 xx%(平均 ±xx%,超额 ±xx%);明日信号 Top5:新易盛/兆易创新/… 自选:…(有 --watch 才有) **次日方向:看空/看多…(得分 xx/11.0,置信 ★★☆)** → 完整复盘报告已落盘「股票报告 → 每日复盘」目录 ``` ## 复盘日期标注规则 - 用户说「复盘」不带日期 → 最新交易日(脚本默认行为) - 「复盘 20260814」/「复盘 8月14日」 → `--date 20260814`;非交易日脚本自动取 ≤ 该日期的最近交易日并在报告封面注明**实际复盘日** - 报告文件名、封面`报告日期/数据截至`、聊天速览标题三处日期必须一致 ## 维护 - 单测:`cd scripts && python3 -m pytest tests/ -q -c tests/pytest.ini`(覆盖涨跌停判定/连板/分布/板块加权/单位换算/除权检测/方向引擎/模型推理命中率与 run 选择) - 核心脚本: - `daily_review.py` — 攻全市场基本面/技术/资金/L1/L2/方向 + 模型推理信号(含 `direction_engine.py` 六维评分) - `news_review.py` — 当日新闻情绪聚合(**须在容器内跑**:`.claude` 未挂载进容器,先 `docker cp` 脚本到 `/tmp`;输出写到共享的 `/data/reports/daily_review/`);PG 富集表是活数据,同一日重跑结果可能因 enrichment 继续更新而略有变化 - `inference_signals.py` — 模型推理信号 PG 查询(`engine_signal_scores` + `qm_model_inference_runs`):昨日推理→今日验证 / 今日推理→明日 Top5;默认每日推理模型 `5eea5418`,可用 `--model` 覆盖;PG 挂则降级缺失 - `direction_engine.py` — 纯函数六维评分器,无 I/O;方向只是信号的可解释合成,**不是预测承诺** - 涨跌停规则**复用** `backend/services/trade/simulation/services/local_market_data.py`(经 ZTPrice/DTPrice 交叉验证 99.71%),禁止在本 skill 里另写一套 ## 相关技能 - **[[quantdb-fields]]** — 必读:单位/口径速查(本 skill 计算正确性前提) - **[[news-sentiment-research]]** — 新闻情绪研究方法论(来源白/黑名单、时段质量、事件标签的来源;六维里的「新闻情绪」维度据此加权) - **[[stock-market-analysis]]** — 盘后想对某只股票深挖时用(复盘是广度,它是深度) - **[[quantdb-sdk]]** — QuantDB 数据源背景