A Stock Daily Market Sense
目标与边界
基于 Tushare 历史交易数据,生成 A 股盘后市场感知报告,回答四个问题:
- 盘面温度如何:普涨、普跌、局部主线、情绪退潮,还是指数掩盖结构分化。
- 赚钱效应在哪里:哪些股票真的涨了,且成交额足以证明资金参与。
- 风险在哪里:哪些股票在爆量下跌,可能对应高位筹码松动、主线分歧、事件冲击或弱势出清。
- 结构性机会在哪里:哪些个股出现低位放量异动;指数弱时哪些股票“该弱不弱就是强”。
不用于单股深度基本面、港股/美股/基金/期货/加密资产、分钟级实时交易、自动下单、组合优化或任何买卖建议。
核心原则
成交额优先。 强弱判断必须用成交额支撑,不能只看涨跌幅。涨跌幅是结果,成交额变化才是资金行为痕迹。
主题主线由模型临时归纳,不套现成行业/概念口径。先读候选池,再根据业务事实、产品环节、产业链位置、事件催化、量价同步性分组。少于 3 只股票或共同性不足的方向,归入“其他/孤立强势股”。
不要把单日上涨说成趋势。持续性至少看 3-5 个交易日;不确定时直接写不确定,不硬凑主线。
固定数据流程
- 确定交易日 D:解析用户日期;若给的是非交易日,用
trade_cal 取 D 日及以前最近交易日。默认只用 <= D 数据;只有用户明确要求后验时才允许 D+N。
- 生成证据包:运行
scripts/market_panel.py panel,拿到盘面温度、成交额集中度、赚钱效应候选池、爆量下跌候选池、低位放量异动候选池、抗跌股候选池。
- 判断盘面状态:优先看涨跌家数、涨跌幅中位数、大涨/大跌数量、上涨/下跌成交额占比、总成交额、主要指数表现。
- 归纳赚钱效应与主线:读
money_effect_samples,先看候选总数和合计成交额,再分组,最后按 ★★★/★★/★ 评级。
- 识别爆量下跌风险:读
volume_decline_samples,归纳风险类型,列高强度样本;若 ★★★ 主线代表股进入爆量池,必须写风险传导提示。
- 识别低位异动:读
low_position_volume_anomaly_samples,按 starter / sustain / quiet / undetermined 四类呈现。
- 识别抗跌股:读
resilient_against_index_samples。只有指数触发弱环境时才列候选;指数不弱时直接说明本模块无输出。
- 按模板成稿:读取
reference/report_template.md,按六个固定模块填空,数字优先放表格,结论短句化。
数据获取
依赖:Python 3.9+、tushare、pandas。敏感信息只从环境变量或当前工作目录 .env 读取:
TUSHARE_TOKEN=your_token
基础命令:
cd C:\Users\chenh\OneDrive\skills\a-stock-daily-market-sense
python scripts/market_panel.py panel --asof 20260424 --lookback 120 --index 000300.SH
查看完整参数:
python scripts/market_panel.py panel --help
常用阈值默认值:
| 模块 | 核心筛选规则 |
|---|
| 赚钱效应 | pct_chg >= 7% 且成交额 >= 2 亿元,按成交额降序 |
| 爆量下跌 | pct_chg <= -3%、20 日放量倍数 >= 2.0x、成交额 >= 1 亿元 |
| 低位异动 | A 轨底部区域或 B 轨深回撤走平,且触发日 15 日放量倍数 >= 3.0x、涨幅 >= 7% |
| 抗跌股 | 仅在沪深 300 等基准指数 5 日 <= -2% 或 10 日 <= -3% 时输出;个股 5 日相对超额 >= 5pct、绝对收益 >= 0、成交额 >= 1 亿元 |
降级规则:
daily_basic 不可用:仍分析涨跌、成交额、相对强弱,但标注缺少换手率、量比、市值。
limit_list_d 不可用:使用 pct_chg >= 9.8% / pct_chg <= -9.8% 的近似涨跌停口径并标注。
- 指数数据不可用:第 6 模块跳过并说明无法判断指数弱环境。
- 候选池为空或过少:不要硬凑结论,直接说明“无清晰赚钱效应”或“无大面积爆量下跌”。
主线判定
赚钱效应候选池只负责“哪些票有资金参与”,主题和主线必须由模型基于业务事实归纳。
每个主题至少写:
- 主题名
- 代表股,按组内成交额取前 3-5 只
- 共同业务事实
- 入选数
- 组合计成交额
- 占赚钱效应总成交额比
主线确认度严格按以下规则:
| 评级 | 判定规则 |
|---|
| ★★★ 主线 | 组成交额占赚钱效应总成交额比 >= 30%,且 5 日涨幅中位 > 0,且 5 日相对指数超额中位 > 0,且连续放量天数中位 >= 2 |
| ★★ 潜在主线 | 上述四条满足 3 条 |
| ★ 局部异动/资金轮动 | 满足不超过 2 条,或候选股票数少于 3 只 |
若全市场上涨占比低,即便有 ★★★ 主线,也要写成“局部主线行情”,不要写成全面扩散。
风险归纳
爆量下跌不是跌幅榜复述。优先按 decline_intensity = 放量倍数 × |跌幅| 看异常程度,再按共同事实归纳风险类型。
常见风险类型:
- 高位抱团瓦解:前期涨幅大、距 120 日高点回撤浅、当日放量崩塌。
- 主线内部分歧:与第 3 模块强方向存在交叉,但出现高成交额放量杀跌。
- 业绩雷/事件冲击:单日重挫且成交额跳升明显。
- 退潮补跌:5 日已累计下跌,今日继续放量。
- ST/风险股出清:名称含 ST/退或风险标签明显。
- 流动性杀跌:无清晰业务叙事但放量下跌。
风险定性必须具体,例如“主线内部分歧加剧”“高位筹码松动”“弱势股出清”,不要写“加速恶化/趋稳/局部”这类空泛词。
低位异动分类
使用新版四类术语,不使用旧版“启动型/确认型/分歧型”:
| 类型 | 含义 |
|---|
| starter | 今日触发,后续行为尚未验证 |
| sustain | 触发后成交额维持在触发日的 70% 以上,资金仍在换手 |
| quiet | 触发后最近 3 日成交额缩至触发日 50% 以下,且价格未明显破位 |
| undetermined | 触发过,但既未维持高换手,也未清晰缩量企稳 |
解读时把 sustain 和 quiet 放在重点位置;undetermined 数量高时,写“触发后资金分歧大”,不要解读成新主线。
输出规范
固定模块顺序:
- 盘面温度
- 成交额集中度与拥挤度
- 赚钱效应与上涨主线
- 亏钱效应(爆量下跌)
- 低位放量异动
- 抗跌股(该弱不弱就是强)
写作纪律:
- 写清楚数据日期、窗口和基准指数。
- 所有强弱判断都给成交额数字支撑。
- 基准指数只保留关键涨跌幅,不堆数据。
- 数字优先表格,表格后文字只解释结论。
- 第 3 模块必须给“主线行情”或“资金轮动”明确定性。
- 第 4 模块必须互查 ★★★ 主线代表股是否进入爆量下跌池。
- 第 6 模块指数不弱时直接写“今日指数环境不弱,本模块无输出”,并附指数 5 日/10 日涨跌幅和门槛。
- 不写“次日观察点”,不写买入/卖出/持有。
示例
用户输入:
使用 a stock daily market sense 生成 2026-04-24 的完整盘后报告
执行:
python scripts/market_panel.py panel --asof 20260424 --lookback 120 --index 000300.SH
输出:按 reference/report_template.md 的六模块结构生成 Markdown 研报,并在末尾标注数据口径、接口降级和“不构成投资建议”。