{"id":"ad39e6ce-1baf-4696-9c2f-2a15b96506bc","entityType":"agent","slug":"clawhub-chinfi-codex-a-stock-daily-market-sense","name":"A Stock Daily Market Sense","canonicalUrl":"https://www.xpersona.co/agent/clawhub-chinfi-codex-a-stock-daily-market-sense","canonicalPath":"/agent/clawhub-chinfi-codex-a-stock-daily-market-sense","generatedAt":"2026-10-10T21:57:30.377Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T16:35:47.950Z","emptyReason":null},"description":"基于 Tushare Pro A 股日线与 Baostock 风格指数生成盘后市场研报。当用户要求分析每日或历史盘面、指数与市场风格、情绪和成交额集中度、赚钱效应与上涨主线、即时及短中期催化、主线细分线路、爆量下跌，或容量上涨、全市场月线平台突破、10:30 前涨停、折扣启动等特征分组时使用；也用于特征分组量化回... Skill: A Stock Daily Market Sense Owner: chinfi-codex Summary: 基于 Tushare Pro A 股日线与 Baostock 风格指数生成盘后市场研报。当用户要求分析每日或历史盘面、指数与市场风格、情绪和成交额集中度、赚钱效应与上涨主线、即时及短中期催化、主线细分线路、爆量下跌，或容量上涨、全市场月线平台突破、10:30 前涨停、折扣启动等特征分组时使用；也用于特征分组量化回... Tags: latest:2.0.2 Version history: v2.0.2 | 2026-07-14T02:23:00.100Z | user Add PostgreSQL-backed market workflows, catalyst and subline mining, lifecycle and factor analysis, and updated HTML re","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.3K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s175ywf2hg7sy9p90712m993ah83g0p6:a-stock-daily-market-sense","sourceUrl":"https://clawhub.ai/chinfi-codex/a-stock-daily-market-sense","homepage":"https://clawhub.ai/chinfi-codex/skills/a-stock-daily-market-sense","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/chinfi-codex/a-stock-daily-market-sense","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/chinfi-codex/skills/a-stock-daily-market-sense","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":63,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"基于 Tushare Pro A 股日线与 Baostock 风格指数生成盘后市场研报。当用户要求分析每日或历史盘面、指数与市场风格、情绪和成交额集中度、赚钱效应与上涨主线、即时及短中期催化、主线细分线路、爆量下跌，或容量上涨、全市场月线平台突破、10:30 前涨停、折扣启动等特征分组时使用；也用于特征分组量化回..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T16:35:47.950Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T16:35:47.950Z","emptyReason":null},"stars":null,"forks":null,"downloads":1337,"packageName":null,"latestVersion":"2.0.2","tractionLabel":"1.3K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T16:35:47.950Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T16:35:47.950Z","lastCrawledAt":"2026-10-10T16:35:47.950Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T16:35:47.950Z","lastVerifiedAt":null,"highlights":[{"version":"2.0.2","createdAt":"2026-07-14T02:23:00.100Z","changelog":"Add PostgreSQL-backed market workflows, catalyst and subline mining, lifecycle and factor analysis, and updated HTML rendering.","fileCount":52,"zipByteSize":245089},{"version":"2.0.1","createdAt":"2026-05-11T11:24:28.143Z","changelog":"Clean runtime package and update Daily Market Sense skill metadata","fileCount":21,"zipByteSize":62434},{"version":"2.0.0","createdAt":"2026-05-01T02:42:47.669Z","changelog":"Bump skill metadata to 2.0.0 and publish runtime-only package.","fileCount":19,"zipByteSize":49137},{"version":"1.6.2","createdAt":"2026-04-25T15:02:15.671Z","changelog":"Rename skill from tushare-daily-market-sense to a-stock-daily-market-sense and compact SKILL.md for ClawHub publishing.","fileCount":4,"zipByteSize":23260}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s175ywf2hg7sy9p90712m993ah83g0p6:a-stock-daily-market-sense","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chinfi-codex-a-stock-daily-market-sense/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chinfi-codex-a-stock-daily-market-sense/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chinfi-codex-a-stock-daily-market-sense/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-chinfi-codex-a-stock-daily-market-sense/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-chinfi-codex-a-stock-daily-market-sense/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-chinfi-codex-a-stock-daily-market-sense/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T21:57:30.373Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chinfi-codex-a-stock-daily-market-sense/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chinfi-codex-a-stock-daily-market-sense/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chinfi-codex-a-stock-daily-market-sense/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chinfi-codex-a-stock-daily-market-sense/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T16:35:47.950Z","emptyReason":null},"readme":"Skill: A Stock Daily Market Sense\n\nOwner: chinfi-codex\n\nSummary: 基于 Tushare Pro A 股日线与 Baostock 风格指数生成盘后市场研报。当用户要求分析每日或历史盘面、指数与市场风格、情绪和成交额集中度、赚钱效应与上涨主线、即时及短中期催化、主线细分线路、爆量下跌，或容量上涨、全市场月线平台突破、10:30 前涨停、折扣启动等特征分组时使用；也用于特征分组量化回...\n\nTags: latest:2.0.2\n\nVersion history:\n\nv2.0.2 | 2026-07-14T02:23:00.100Z | user\n\nAdd PostgreSQL-backed market workflows, catalyst and subline mining, lifecycle and factor analysis, and updated HTML rendering.\n\nv2.0.1 | 2026-05-11T11:24:28.143Z | user\n\nClean runtime package and update Daily Market Sense skill metadata\n\nv2.0.0 | 2026-05-01T02:42:47.669Z | user\n\nBump skill metadata to 2.0.0 and publish runtime-only package.\n\nv1.6.2 | 2026-04-25T15:02:15.671Z | user\n\nRename skill from tushare-daily-market-sense to a-stock-daily-market-sense and compact SKILL.md for ClawHub publishing.\n\nArchive index:\n\nArchive v2.0.2: 52 files, 245089 bytes\n\nFiles: references/cli_reference.md (3149b), references/market_data.csv (10122b), references/market_data.json (200084b), references/methodology/catalyst_subline_mining.md (8242b), references/methodology/factor_mining.md (9986b), references/methodology/module1_trend.md (2117b), references/methodology/module2_concentration.md (613b), references/methodology/module3_money_effect.md (5059b), references/methodology/module4_decline.md (960b), references/methodology/module5_feature_groups.md (6019b), references/methodology/output_discipline.md (2417b), references/report_template.md (14006b), references/template/section1.md (2019b), references/template/section2.md (526b), references/template/section3.md (3814b), references/template/section4.md (894b), references/template/section5.md (2991b), references/theme_lifecycle.md (5671b), scripts/_shared/db_core.py (10168b), scripts/_shared/db_ping.py (2706b), scripts/_shared/html_report/__init__.py (1361b), scripts/_shared/html_report/builder.py (8264b), scripts/_shared/html_report/chart_hook.py (647b), scripts/_shared/html_report/chartkit.js (8022b), scripts/_shared/html_report/chartkit.py (578b), scripts/_shared/html_report/cli.py (4669b), scripts/_shared/html_report/decorations.py (22374b), scripts/_shared/html_report/markdown_engine.py (12763b), scripts/_shared/html_report/README.md (6847b), scripts/_shared/html_report/safe_json.py (589b), scripts/_shared/html_report/text_validator.py (2995b), scripts/_shared/html_report/themes/claude.css (14631b), scripts/_shared/html_report/themes/default.css (14832b), scripts/_shared/html_report/themes/print.css (11985b), scripts/_shared/init_alpha_data.sql (16630b), scripts/_shared/POSTGRESQL.md (3063b), scripts/_shared/web_search/tavily_search.py (8886b), scripts/db_adapter.py (10909b), scripts/factor_backtest.py (40880b), scripts/factor_experiment.py (9977b), scripts/factor_lab.py (2650b), scripts/factor_providers.py (7403b), scripts/market_panel.py (234882b), scripts/render_report_html.py (55675b), scripts/returns_core.py (9526b), scripts/run_daily_panel.py (11270b), scripts/theme_group_stats.py (11642b), scripts/theme_lifecycle.py (37380b), scripts/web_search.py (1152b), skill-card.md (3285b), SKILL.md (19491b), _meta.json (145b)\n\nFile v2.0.2:SKILL.md\n\n---\nname: a-stock-daily-market-sense\ndescription: 基于 Tushare Pro A 股日线与 Baostock 风格指数生成盘后市场研报。当用户要求分析每日或历史盘面、指数与市场风格、情绪和成交额集中度、赚钱效应与上涨主线、即时及短中期催化、主线细分线路、爆量下跌，或容量上涨、全市场月线平台突破、10:30 前涨停、折扣启动等特征分组时使用；也用于特征分组量化回溯与相对收益因子挖掘。本 skill 先生成确定性证据包，再由模型按模块判断与写作；脚本不调用 LLM，外部消息不得改变量价确定的主线星级，不套用现成行业/概念分类，不提供买卖建议。\n---\n\n# Tushare Daily Market Sense\n\n## 目标\n\n基于 Tushare 日线、指数、成交额与本地情绪历史，为 A 股盘后复盘生成结构化研报：盘面趋势、成交额集中度、赚钱效应与上涨主线、爆量下跌风险、特征分组分析。\n\n不做单股基本面深度研究、港股/美股/基金/期货/加密分析、超短线交易决策、自动下单、组合优化或买卖建议。脚本只负责取数、计算、筛选、切分 JSON；主题归纳、风险措辞和研报写作由模型完成。\n\n## 核心理念\n\n成交额优先。所有强弱判断都要有成交额证据：上涨主线按成交额厚度确认，爆量下跌按放量异常与跌幅强度识别，特征分组按命中规则与成交额证据分开呈现。\n\n主题主线由模型基于业务事实临时归纳，不套现成行业或概念标签。共同性不足时明确写“暂不构成主线”或“资金轮动”。\n\n## 工作流程\n\n1. 确定交易日：解析“今天/最近”或具体日期，默认只使用 `D` 及以前数据；只有用户明确要求后验时才允许 `--allow-future`。\n2. 生成证据包：运行 `scripts/run_daily_panel.py`。脚本会直接调用数据管线，写出完整 evidence、个股 K 线展示数据（`kline_YYYYMMDD.json`）和模块级 JSON。\n3. 生成首轮模块产物：模块 1、2、4、5 继续各自只读自己的 JSON、方法论与模板。模块 3 首轮只根据 `module3_money_effect.json` 归纳临时主题、父主题成员与候选细分成员，先写 `stars: null` 的 `module3_theme_map.json`；不要搜索，也不要在统计前凭手算锁星。有 subagent 时分发最小上下文，没有时按相同边界顺序执行。\n4. 统计并锁定模块 3 星级：运行 `theme_group_stats.py` 生成 `module3_theme_stats.json`，再由模型严格按 Market Evidence Pack 与统计结果写回 `stars: 1/2/3`。星级锁定后，只对当日 ★★/★★★ 主线强制尝试搜索，并按宿主能力选读知识库或产业链资料；★ 级方向不搜索、不做产业推演、不进入 3.2。主 agent 将 Web 结果、可选的宿主知识证据与查询错误压缩成 `module3_enrichment_pack.json`。外部资料只用于解释催化、推演产业变量与挖掘细分线路，绝不回写或上调 3.1 星级。详细搜索、证据和评级纪律见 `references/methodology/catalyst_subline_mining.md`。\n5. 聚合成稿：模块 3 第二阶段只读取 theme map、统计结果、enrichment pack、方法论与模板，完成 3.1 主线判定、3.2 催化与细分线路推演、3.3 领导股与弹性股。主 agent 再读取模块 1-5 输出、`assembled_checks.json` 与 `references/methodology/output_discipline.md`，补一句话盘面判断、风险传导提示和最终语气校准。搜索或知识查询失败不阻断日报，但要披露证据缺口并降低产业推演确定性。\n6. 主线生命周期落库：报告定稿后，把当日 3.1 主线判定沉淀进 PG 生命周期台账。先运行 `python3 scripts/theme_lifecycle.py context --asof YYYYMMDD` 取注册表、各主线近期状态与 watchlist；模型完成别名归一（当日临时主题名 → canonical theme_id）和生命周期状态判定（低位启动/在场候选/主线确认/高位分歧/退潮/修复/再聚焦/沉寂），写出 `reports/lifecycle_YYYYMMDD.json` 后运行 `python3 scripts/theme_lifecycle.py record --input reports/lifecycle_YYYYMMDD.json` 落库。脚本只做确定性校验（枚举、状态机转移合法性、theme_id 存在性），判断留给模型；输入格式、状态机与判定基准见 `references/theme_lifecycle.md`。\n7. 按需生成 HTML：当用户要求 HTML、网页、可视化报告或截图风格输出时，先完成并核对 `reports/report_YYYYMMDD.md`，再运行 `scripts/render_report_html.py` 生成同日期 HTML。HTML 是展示层产物，不新增研报判断、不删减 Markdown 正文；若同目录存在 `evidence_YYYYMMDD_utf8.json` 与 `kline_YYYYMMDD.json`，HTML 会自动读取指数 120 日 K 线与个股 K 线并插入对应正文附近；其中 5.2 全市场月线平台突破组改画**月线 K 线图**（多年底部箱体阴影 + 箱体上沿 pivot 水平线 + 突破月标记，数据来自 `kline_YYYYMMDD.json` 的 `monthly` 段），其余分组仍为 120 日日线。若 `theme_daily_state` 已有该日数据，HTML 还会在主线判定小节下方自动注入主线生命周期泳道图区块（近 22 个交易日，红 = 强势在场、绿 = 退潮、闪电 = 低位启动；`--lifecycle-days` 调窗口、`--no-lifecycle` 关闭）；区块只展示台账已落库数据，不新增判断。若 evidence 含风格序列，HTML 会在「市场风格」小节表格下方自动注入两张 60 日归一化对比图（规模轴五线 / 成长价值红利三线，起点=100），区块只展示 evidence 已有数据、不新增判断。\n8. 证据包边界：`reports/evidence_YYYYMMDD_utf8.json` 是本 skill 的 Market Evidence Pack，只属于 skill 输出目录。即使宿主把最终趋势复盘写入其他知识系统，也不要把该证据包复制或登记成宿主原始来源；宿主知识查询只以可选 evidence pack 输入，不成为 core skill 的路径依赖。生命周期台账同理：它是 skill 域运行时数据，归 PG 管。\n9. 清理临时产物：确认 `reports/report_YYYYMMDD.md`（及按需生成的 HTML）已写入并可读后，运行一条确定性清理命令，不要手工逐个删文件：\n\n   ```bash\n   python3 scripts/run_daily_panel.py --cleanup YYYYMMDD\n   ```\n\n   该命令删除同日期的 evidence、kline、stderr 日志、lifecycle 输入、report_context 与 module_context 目录，永远不会碰 `report_YYYYMMDD.md` / `report_YYYYMMDD.html`（生命周期数据已持久化在 PG，不受清理影响）。不要跨日期批量清理，除非用户明确要求。\n\n## 特征因子挖掘（量化回溯 · 按需研究流程）\n\n这是独立于每日日报的一条研究线：**你提一个特征分组，skill 在分组之上做额外因子挖掘，给出分组内的\"叠加条件最优解\"**。不进日报，想挖时才跑。完整方法论、基准表、spec 格式、最优解选择 rubric 见 `references/methodology/factor_mining.md`。\n\n脑/手边界照旧：脚本 `scripts/factor_backtest.py` 只铺确定性证据（历史回放命中、6 格前向相对收益、因子分层、单/配对候选叠加条件 + 过拟合护栏标记），**不挑\"最优解\"、不下结论**；读证据、选叠加条件、写归因与 caveat 是模型的活。\n\n流程（两处人工，其余自动）：\n\n1. **你提分组**：内置组直接点名（如折扣启动）；新组用大白话给硬条件，模型译成 filter spec 给你确认。\n2. **脚本回放 + 回测 + 铺网格**：\n   ```bash\n   # 内置折扣启动（多日序列组，复用生产函数，语义同线上）\n   python3 scripts/factor_backtest.py --group discount_relaunch --min-n 15\n   # 自定义单日特征阈值组（含容量上涨式），用 spec\n   python3 scripts/factor_backtest.py --group custom --spec my_group.json\n   ```\n   产物：`reports/factor_mining_<group>_<asof>.json`（证据包，gitignore，跑完即临时）。\n3. **模型选最优叠加解**：读 JSON，按 reference §四 rubric（稳健优先于大 Δ、看 `oos_balance` 与中位数胜率、深度≤2、经济逻辑）选定叠加条件，写 `reports/factor_mining_<group>_<asof>.md`。\n4. **你决定要不要用**：把结果作为研究参考，或手动把叠加条件提级成分组生产阈值；脚本不替你改生产。\n\n口径要点：进场 T+1 开盘/尾盘 × 持有 T+3/T+5/T+10，后复权；相对收益挂**板块/市值匹配基准**（科创→科创50、创业→创业板指、主板按市值→沪深300/中证500/中证1000），沪深300 作宽基对照。脚本默认会把信号窗口缺失的 `daily_basic` 从 Tushare 回补入库（需 `TUSHARE_TOKEN`）。折扣启动要完整 200 日历史，信号只落在数据最近端、样本偏小——所以护栏与诚实 caveat 是骨架，结论按\"单一环境证据扫描、非统计定论\"来写。挖矿证据分**决策包**（≤150KB，模型读：结论 + 每条过闸条件 ≤3 例证）与 `_detail.json`（整列 signals，按需读）；每次挖矿自动登记进 PG `factor_experiment_log`（可查、可判分，见下）。\n\n需要回看已跑过的实验或补人工判定时，使用 `factor_lab.py experiments` 查询 PG `factor_experiment_log`。实验台账只记录挖矿参数、样本数、过闸数量、证据路径与人工 verdict，不进入每日日报。\n\n## 数据获取\n\n环境变量：\n\n```bash\nTUSHARE_TOKEN=your_token\nALPHA_DB_BACKEND=postgresql\nALPHA_PG_URL=postgresql://alpha_user:alpha_pass@/alpha_data?host=/tmp\nTAVILY_API_KEY=your_token  # 催化搜索主路径；缺失时可由宿主 Web Search 降级\n```\n\n数据库连接统一走 `scripts/_shared/db_core.py`（开发仓库中为 `shared/data/db_core.py`）。首次进入任意 Agent 环境时先运行 `python3 scripts/_shared/db_ping.py --alpha-schema`；源仓库开发态用 `python3 ../../shared/data/db_ping.py --alpha-schema`。如果不能使用 Unix socket，再把 `ALPHA_PG_URL` 改为 `postgresql://alpha_user:alpha_pass@localhost:5432/alpha_data`。\n\n运行脚本会先更新 `references/market_data.csv`，并同步维护派生文件 `references/market_data.json`，再生成情绪趋势：盘面情绪计数默认由 Tushare `daily` 直接计算，其中涨跌停数按**板制规则精确判定**——未复权前收盘 ×(1±板块限幅) 四舍五入到分后与收盘价比对（主板 10%、主板 ST 5%、创业/科创 20%、北交所 30%），口径为收盘封板、不含盘中炸板，`limit_detection` 字段标注判定方式；搜狐涨跌停历史页仅在主路径不可用时作为 fallback；Tushare `margin` 汇总 T-1 交易日融资净买入，Tushare `daily` 与 `daily_basic.circ_mv` 计算流通市值加权的全市场换手率。市场风格代理指数使用 Baostock `query_history_k_data_plus`，默认覆盖超大盘、沪深300、中证500、中证1000、国证2000、中证红利、300成长、300价值；历史数据缓存在 PG 的 `stock_index_daily` 表（以 bs_code 为 ts_code），每次运行只向 Baostock 增量取缺口，Baostock 不可用时直接用缓存窗口出摘要。个股日线、复权因子（`stock_adj_factor`）、daily_basic、交易日历同样全部缓存在 PG。因此环境中还需安装 `baostock`（`akshare` 为历史遗留可选依赖）。\n\n基础命令（在 skill 根目录下执行）：\n\n```bash\npython3 scripts/run_daily_panel.py --asof 20260429 --lookback 120 --market-trend-days 90 --index 000300.SH\n```\n\n模块 3 首轮完成临时主题映射后，先用下列原子命令补充确定性统计；模型据此锁星后才运行搜索：\n\n```bash\npython3 scripts/theme_group_stats.py \\\n  --context reports/module_context_YYYYMMDD/module3_money_effect.json \\\n  --mapping reports/module_context_YYYYMMDD/module3_theme_map.json \\\n  --output reports/module_context_YYYYMMDD/module3_theme_stats.json\npython3 scripts/web_search.py \"主题 事件 YYYY-MM-DD\" --topic news \\\n  --start-date YYYY-MM-DD --end-date YYYY-MM-DD --max-results 6\n```\n\n`theme_group_stats.py` 只统计模型已分组的成员；`web_search.py` 只返回结构化搜索结果。两者都不做主题、催化或产业强弱判断。\n\n主要输出：\n\n- `reports/evidence_YYYYMMDD_utf8.json`：完整证据包（紧凑 JSON，metadata 含 `stage_timings_seconds` 各阶段耗时与 `fetch_gaps` 各端点缺失交易日清单；任一端点缺日非空时必须在报告中显式说明）。\n- `reports/kline_YYYYMMDD.json`：个股 K 线展示层数据，只供 HTML 渲染使用，模型撰写不读取。\n- `reports/module_context_YYYYMMDD/`：供 subagent 分工的模块级 JSON。\n- `references/market_data.json`：`market_data.csv` 的全量派生 JSON，按交易日升序保留所有列、清洗数值并提供 `series` 给 HTML 趋势图使用。\n\n这些文件中，evidence、kline、lifecycle 输入和 module_context 是研报撰写过程中的临时产物。最终报告生成并核对后，按工作流程第 9 步用 `--cleanup` 一键删除，只保留 `reports/report_YYYYMMDD.md`、按需生成的 `reports/report_YYYYMMDD.html`，以及长期维护的 `references/market_data.csv` / `references/market_data.json`。\n\nHTML 输出命令：\n\n```bash\npython3 scripts/render_report_html.py --input reports/report_20260429.md [--theme default|claude|print]\n```\n\n默认输出 `reports/report_20260429.html`，并将 `references/market_data.json` 内嵌到 HTML 中。本地浏览器可直接打开，图表不依赖外部 CDN。`--theme` 默认 `default`（AlphaVault 站点 / Google Material）；`--theme claude` 为 Claude.ai 暖色风格；`--theme print` 为黑白衬线、A4 友好，适合导出 PDF 或邮件附件。样式模板由仓库通用 `shared/html_report`（同步到 `scripts/_shared/html_report/`）提供，与 `a-stock-analyzer` 共用。\n\n常用参数（赚钱效应/爆量/容量/折扣阈值、`--fetch-workers`、`--cleanup` 等）与\n`factor_backtest.py` / `factor_lab.py` / `render_report_html.py` 的参数集中在 `references/cli_reference.md`。\n\n## Subagent 编排契约\n\n主 agent 先生成模块级 JSON，然后按下列最小上下文分发。每个 subagent 只看自己的模块数据，不读取其他模块数据。\n\n| 模块 | JSON | 方法论 | 模板 |\n|---|---|---|---|\n| 1 盘面趋势 | `module1_market_trend.json` | `references/methodology/module1_trend.md` | `references/template/section1.md` |\n| 2 集中度 | `module2_concentration.json` | `references/methodology/module2_concentration.md` | `references/template/section2.md` |\n| 3 赚钱效应（首轮） | `module3_money_effect.json` | `references/methodology/module3_money_effect.md` | 先输出临时主题短名单与 `stars: null` 的 `module3_theme_map.json` |\n| 4 爆量下跌 | `module4_decline.json` | `references/methodology/module4_decline.md` | `references/template/section4.md` |\n| 5 特征分组 | `module5_feature_groups.json` | `references/methodology/module5_feature_groups.md` | `references/template/section5.md` |\n\n模块 1、2、4、5 互不读取。模块 3 使用两阶段契约：首轮只做临时主题与成员映射；统计脚本完成后，由模型按量价 rubric 写回并锁定星级；第二阶段只读取已锁星的 `module3_theme_map.json`、`module3_theme_stats.json`、`module3_enrichment_pack.json`、模块 3 方法论和 `references/template/section3.md`，不回读其他模块的完整 JSON。Skill 只规定最小上下文边界，不规定 subagent 数量、并发槽位或模型。\n\n聚合 agent 额外读取：\n\n- `assembled_checks.json`：M3 赚钱效应池与 M4 爆量下跌池的确定性交叉检查。\n- `references/methodology/output_discipline.md`：最终成稿纪律。\n\nPython 不调用 Anthropic API、不调用任何 LLM、不硬编码模型名。Codex、Claude Code 或其他通用 agent 的 subagent 编排能力负责撰写；知识 evidence pack 是宿主可选输入，不在 core skill 中硬编码知识库路径或图谱实现。\n\n## 输出规范\n\n完整研报按五个模块输出。每个判断段先给自然语言结论，再选择少量关键证据支撑；表格承载细项数据，段落解释这些数据意味着进攻、分歧、退潮、修复、拥挤还是扩散。所有强弱判断都要能回到成交额、放量倍数、涨跌幅、相对收益或回撤证据，但不要把所有可用指标塞进同一段。模块 3 的主题分组只作为内部推理步骤，不输出单独的主题分组陈列表，赚钱效应总览后直接进入主线判定。\n\n**文风默认（项目级硬性要求）：**\n\n- **文风讲人话，减少机械与僵硬。** 像跟懂行的人当面把一件事讲清楚那样写，句子通顺、有逻辑衔接，该解释因果和给判断时把话说透。避免模板腔、翻译腔和套话——别成段堆砌\"综上所述\"\"值得注意的是\"\"总体来看\"，别把每条都写成生硬的\"主语+动词+宾语\"公式句，也别为了凑结构把话说断、只丢关键词。\n- **同项罗列优先用 list，但每条要说人话。** 同一维度的多个条目（多个信号、多只个股观察点、多项风险传导）拆成 bullet 或编号，一条一项，别塞进一个长段落；但每条用完整通顺的话写，不要退化成\"字段A - 字段B - 字段C\"式的横杠拼接。结构化对照（指标 × 数值、分组 × 判定）才用表格。\n\n文风目标：僵硬度约 5/10。报告应像一位有经验的盘后研究员在做复盘：先给人能立刻理解的盘面状态，再用少量关键数字支撑，最后给出下一交易日需要验证的条件。避免把所有可用指标都塞进段落；同一自然段最多放 2-3 个核心数字，其余数字放表格。\n\n每个一级大章节（1-5）里已有的总结/定性段落必须使用 Markdown 高亮样式 `==...==` 包裹，例如“指数趋势判断”“市场风格判断”“盘面定性”“拥挤度判断”“主线 vs 资金轮动结论”“风险传导提示”“特征分组一句话判断”。不要为了高亮额外新增“本节总结”段落；高亮的是原本就承担总结作用的段落。\n\n禁止输出买卖建议。可以写“风险传导”“持续性待验证”“主线确认度”，不要写“买入/卖出/止损/目标价”。\n\nHTML 输出只改变呈现方式：必须保留 Markdown 研报中的所有文字、表格、引用和免责声明。`==...==` 高亮段落在 HTML 中渲染为浅蓝提示块；正文前可以增加 `market_data.json` 驱动的趋势图区域。若可读取同日期 evidence，HTML 可以在“指数趋势”正文附近插入上证指数、创业板指数、科创50 的 120 日 K 线图，并在图中展示成交金额柱；也可以在 3.3、5.2、5.3、5.4 股票明细表下方插入表内股票的 120 日 K 线图；若 evidence 含风格序列，还可以在“市场风格”表格下方插入两张 60 日归一化对比图（规模轴五线 / 成长价值红利三线，起点=100）。这些图表只展示 evidence 中已有的 OHLC、成交金额与风格指数收盘序列数据，不得新增与 Markdown 不一致的分析结论。\n\n## 示例\n\n用户：`复盘 2026-04-29 的 A 股盘面，重点看赚钱效应和容量上涨。`\n\n执行：\n\n```bash\npython3 scripts/run_daily_panel.py --asof 20260429\n```\n\n然后按 subagent 契约加载 `reports/module_context_20260429/` 下的模块 JSON。若没有 subagent，就顺序加载每个模块的 JSON + 方法论 + 模板段，最后聚合为完整研报。\n\nFile v2.0.2:scripts/_shared/html_report/README.md\n\n# shared/html_report\n\n仓库级 HTML 报告渲染框架。各报告型 skill 把 Markdown 研报 + JSON 证据包套成一份自包含的单页 HTML(图表不依赖外部 CDN)。\n\n设计目标:**新 skill 出 HTML 只写一张\"薄清单\"**——怎么读自己的数据、画哪几张图——其余(命令行、Markdown→HTML、主题、校验、图表工具、染色/hero 装饰)全部由本包提供。\n\n## 一张薄清单长什么样\n\n```python\nimport sys\nfrom pathlib import Path\nsys.path.insert(0, str(Path(__file__).parent / \"_shared\"))\n\nfrom html_report import (\n    HtmlReportBuilder, ChartHook, RenderJob,\n    render_report, PillDecoration, HeroDecoration,\n)\n\ndef add_arguments(parser):                 # 可选:本 skill 额外的命令行参数\n    parser.add_argument(\"--evidence\", default=None)\n\ndef build_job(args) -> RenderJob:          # 唯一要写的:读数据 + 选图表\n    md = Path(args.input).read_text(encoding=\"utf-8\")\n    evidence = load_my_evidence(args.evidence)        # 域:自己的 evidence schema\n    charts = extract_my_payload(evidence)             # 域:整形成 JS 好用的 payload\n    builder = HtmlReportBuilder(title=args.title or Path(args.input).stem,\n                                theme=args.theme, meta_text=\"…\")\n    builder.add_decoration(PillDecoration(MY_PILL_RULES))   # 词表是数据\n    builder.add_decoration(HeroDecoration(heading_prefix=\"核心判断\"))\n    builder.add_chart_hook(ChartHook(name=\"my-charts\", payload=charts, js=MY_CHARTS_JS))\n    out = Path(args.output) if args.output else Path(args.input).with_suffix(\".html\")\n    return RenderJob(markdown_text=md, builder=builder, output_path=out,\n                     summary={\"…\": \"打印到 stdout 的诊断字段\"})\n\nif __name__ == \"__main__\":\n    raise SystemExit(render_report(\n        description=\"Render … to static HTML.\",\n        build_job=build_job, add_arguments=add_arguments))\n```\n\n`render_report` 统一负责:解析 `--input/--output/--title/--theme/--no-validate/--strict`、读 Markdown、跑 `build_job`、以\"校验失败转 warning 不阻断\"的策略渲染(`--strict` 才硬失败)、写文件、打印 JSON 摘要、把异常收成 `error: …` + 退出码 1。\n\n## 四层结构\n\n| 层 | 模块 | 职责 |\n|---|---|---|\n| CLI | `cli.py` | `render_report` / `RenderJob`,吃掉每个 skill 重复的 argparse + main 编排 |\n| 装饰 | `decorations.py` | `PillDecoration` / `HeroDecoration` / `CollapsibleUpdatesDecoration` / `TimelineDecoration`,数据驱动,机制只一份 |\n| 图表 | `chartkit.js` (`window.CK`) + `ChartHook` | 共享 SVG/DOM 工具 + 各 skill 自带的画图 JS |\n| 外壳 | `builder.py` `markdown_engine.py` `text_validator.py` `themes/` | HTML 骨架、Markdown→HTML、文本保全校验、CSS 主题 |\n\n## 装饰:换词表不换代码\n\n```python\nPillDecoration(rules=[(r\"^(成长股|成熟龙头)$\", \"pill\"),\n                      (r\"^(强|高)$\", \"pill neg\")])          # 表格单元格按正则染成 pill\nHeroDecoration(heading_prefix=\"一句话盘面判断\",\n               collect_tags=(\"P\",), max_blocks=3,\n               stop_at_numbered=True, number_units=\"%|pct|倍\",\n               keyword_pattern=\"上证|创业板|科创50\")          # 把摘要标题升格成 hero 卡\nCollapsibleUpdatesDecoration()      # ## 更新 YYYY-MM-DD：摘要 → 折叠卡(默认最新展开)\nTimelineDecoration()                # 顶部 日期|版本号 表 + 文末 版本变更记录 表 → 可点版本时间轴\n```\n\n活报告(同一报告随时间多轮更新)用后两个装饰:更新章节折叠成带日期徽标 + 一句话摘要的卡片(id 为 `upd-<date>`,供其它组件跳转),两张版本表合成一条时间轴(节点弹出该版本主要变更/关键数字,可跳转对应更新卡;时间轴挂上后隐藏顶部两列表,不足 2 个版本不动作)。**添加顺序**:CollapsibleUpdates 在 Hero 之前(hero 收集遇 section/aside/blockquote 停止,不会吞卡),Timeline 在两者之后。带 `.css` 的装饰由 `add_decoration` 自动合并样式。\n\n裸 JS 逃生舱仍在:`builder.add_ui_decoration(js_string)`。\n\n## 结构化 callout 块\n\n`markdown_engine` 认识注册在 `_STRUCTURED_BLOCKS` 的多行块——`==深度调研发现｜徽标A｜徽标B` 与 `==跟踪事项｜ID｜类型｜状态：…`(以 `==` 行收尾),渲染成 `<aside class=\"<prefix>-card\">`(头部徽标 + `标签：值` 行)。卡片 CSS 由使用该块的 skill 随 `extra_css` 提供;行内 `==文字==` 渲染成 `<mark>`。\n\n## 图表工具 `window.CK`\n\nbuilder 在有 ChartHook 时,自动在 base-UI 脚本之后、各 hook IIFE 之前注入一次 `chartkit.js`,暴露 `window.CK`。hook JS 不再各自重定义 `svgEl`,直接用:\n\n- `CK.svgEl(name, attrs)` / `CK.svgText(x, y, text, anchor, color, size)`\n- `CK.fmt.date(v)` / `CK.fmt.num(v, d)` / `CK.fmt.signedPct(v)` / `CK.num(v)`\n- `CK.tooltip(card)` / `CK.moveTip(tip, card, e)`\n- `CK.card(cls, title, sub)` / `CK.legend([[label, color], …])` / `CK.grid(cls)`\n- `CK.metricGrid([{title, value, subtitle, signValue}, …])` / `CK.metricCard(spec)` —— KPI / 指标卡,样式在 theme 里\n- `CK.horizontalBarCard({title, subtitle, rows:[{label, value, meta}], maxRows})` —— 通用横向涨跌条,样式在 theme 里\n- `CK.findHeading(root, texts[, sel])` / `CK.findNextTable(heading)` / `CK.insertAfter(root, texts, node)`\n\n通用图表类型和 CSS 放在 shared；skill 独有的格式化(价格精度、亿/万亿 除数)、字段映射和\"画哪些行\"仍留在各自 hook 里,因为这些是领域判断。\n\n### ChartHook JS 协议\n\n每个 hook 的 JS 在专属 IIFE 中执行,渲染器自动注入:\n\n- `__payload` — 当前 hook 的 payload(已经 JSON.parse)\n- `window.__chartData` — 整个 envelope `{ hookName: payload, … }`,供跨 hook 取数\n\n## 主题\n\n- `default`:AlphaVault 站点风格(Google Material)——冷白底 + Google 蓝 + 红绿涨跌,默认值。CSS 与 AlphaVault Site 的 `siteCss()` 同源(Google Sans、g-palette、Material 卡片/阴影、4 色 logo 点)\n- `claude`:Claude.ai 暖色风格——奶油底 + 黏土橙(clay)强调 + 衬线(serif)标题,编辑器质感\n- `print`:黑白衬线、A4 友好,适合导出 PDF 或邮件附件\n\n新增主题:在 `themes/` 下放 `<name>.css`,`list_themes()` 自动发现。\n\n## 同步路径\n\n源码在 `shared/html_report/`。通过 `skill-sync.yaml` 的 `shared.bundles` 同步到目标 skill 的 `scripts/_shared/html_report/`(纯渲染型 skill),或随整个 `shared/` 进 `scripts/_shared/`(同时需要 `db_core` 的 skill)。各 skill 用文件头的 `sys.path` 片段引导导入:\n\n```python\n_BUNDLED = Path(__file__).resolve().parent / \"_shared\"\n_DEV = Path(__file__).resolve().parents[2] / \"shared\"\nsys.path.insert(0, str(_BUNDLED if _BUNDLED.exists() else _DEV))   # 装包后用 _shared,开发时回落仓库 shared/\n```\n\nFile v2.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn7450t2xk0c4fzwzv90194pgd82q8yk\",\n  \"slug\": \"a-stock-daily-market-sense\",\n  \"version\": \"2.0.2\",\n  \"publishedAt\": 1783995780100\n}\n\nFile v2.0.2:references/cli_reference.md\n\n# CLI 参数参考\n\n本 skill 各脚本的常用参数集中在这里，SKILL.md 正文只留指引。\n\n## `run_daily_panel.py`（每日复盘证据）\n\n| 参数 | 含义 | 默认 |\n|---|---|---:|\n| `--fetch-workers` | cache/API 获取线程数；排查限流时设为 1 | 6 |\n| `--index-kline-days` | HTML 上证/创业板/科创50 K 线展示窗口，独立于 `--market-trend-days` | 120 |\n| `--money-pct-threshold` | 赚钱效应最低当日涨幅 | 7.0 |\n| `--money-amount-threshold` | 赚钱效应最低成交额，单位亿元 | 2.0 |\n| `--decline-pct-max` | 爆量下跌最大当日涨幅 | -3.0 |\n| `--decline-volume-ratio` | 爆量下跌最低 20 日放量倍数 | 2.0 |\n| `--capacity-market-cap-threshold` | 容量上涨最低总市值，单位亿元，严格大于 | 70.0 |\n| `--capacity-amount-threshold` | 容量上涨最低成交额，单位亿元，严格大于 | 5.0 |\n| `--capacity-pct-threshold` | 容量上涨最低当日涨幅，严格大于 | 8.0 |\n| `--feature-sample-limit` | 模块 5 每组最大样本数 | 60 |\n| `--discount-market-cap-threshold` | 折扣启动最低总市值，单位亿元，严格大于 | 80.0 |\n| `--discount-amount-threshold` | 折扣启动最低成交额，单位亿元，严格大于 | 5.0 |\n| `--discount-pct-threshold` | 折扣启动最低当日涨幅，严格大于 | 7.0 |\n| `--discount-min` | 折扣启动前高折扣下界（前高之后最低价/前高收盘价），严格大于 | 0.6 |\n| `--discount-max` | 折扣启动前高折扣上界，严格小于 | 0.85 |\n| `--discount-high-lookback` | 折扣启动\"前高\"回看交易日数（取该窗口内收盘价最高日） | 200 |\n| `--discount-low-recency-days` | 折扣启动回撤最低点须落在大涨日前几个交易日内（最低点新鲜度） | 5 |\n| `--discount-pre-contraction-max` | 折扣启动调整缩量上限（前5日均额/前20日均额） | 0.9 |\n| `--discount-volume-expansion-min` | 折扣启动当日重新放量下限（amount_vs_prev5_ratio，相对前5日缩量期） | 2.0 |\n| `--cleanup YYYYMMDD` | 删除该日期临时产物（evidence/kline/context/module_context + 因子挖掘临时包），保留 report md/html | — |\n\n## `factor_backtest.py`（特征因子挖掘）\n\n见 `references/methodology/factor_mining.md` §五。要点：`--group discount_relaunch|custom`、`--spec FILE`、\n`--min-n`、`--entry/--horizon` 选目标格、`--skip-backfill` 快速冒烟、`--refresh-basic` 修脏缓存。\n产物：决策包 `factor_mining_<group>_<asof>.json`（≤150KB）+ `_detail.json`（整列 signals）。\n\n## `factor_lab.py`（因子实验台账）\n\n每次 `factor_backtest.py` 挖矿会把确定性摘要写入 PG `factor_experiment_log`。`factor_lab.py` 只负责查询实验和补人工 verdict：\n\n| 命令 | 作用 |\n|---|---|\n| `experiments --recent N` | 列最近挖矿实验 |\n| `experiments --set-verdict <g>@<w>@<hash前缀> --verdict adopted\\|rejected\\|observing [--note ..]` | 人工判分（只改 verdict 与说明） |\n\n## `render_report_html.py`（HTML 展示层）\n\n`--input reports/report_YYYYMMDD.md`、`--theme default|claude|print`。见 SKILL.md「数据获取」HTML 段。\n\nFile v2.0.2:references/market_data.json\n\n{\n  \"metadata\": {\n    \"source_csv\": \"references/market_data.csv\",\n    \"generated_at\": \"2026-06-28 18:23:21\",\n    \"sort\": \"trade_date_ascending\",\n    \"window_start\": \"20251114\",\n    \"window_end\": \"20260626\"\n  },\n  \"columns\": [\n    \"日期\",\n    \"上涨\",\n    \"涨停\",\n    \"下跌\",\n    \"跌停\",\n    \"平盘\",\n    \"活跃度\",\n    \"情绪值\",\n    \"成交额\",\n    \"融资净买入\",\n    \"全市场换手率\"\n  ],\n  \"records\": [\n    {\n      \"日期\": \"20251114\",\n      \"trade_date\": \"20251114\",\n      \"上涨\": 1961.0,\n      \"涨停\": 89.0,\n      \"下跌\": 3323.0,\n      \"跌停\": 9.0,\n      \"平盘\": 154.0,\n      \"活跃度\": 36.46,\n      \"情绪值\": 36.46,\n      \"成交额\": 1980381884.0,\n      \"融资净买入\": -14818381779.0,\n      \"全市场换手率\": 2.0216\n    },\n    {\n      \"日期\": \"20251117\",\n      \"trade_date\": \"20251117\",\n      \"上涨\": 2584.0,\n      \"涨停\": 100.0,\n      \"下跌\": 2726.0,\n      \"跌停\": 12.0,\n      \"平盘\": 127.0,\n      \"活跃度\": 47.8,\n      \"情绪值\": 47.8,\n      \"成交额\": 1930321103.0,\n      \"融资净买入\": 6203695015.0,\n      \"全市场换手率\": 1.9755\n    },\n    {\n      \"日期\": \"20251118\",\n      \"trade_date\": \"20251118\",\n      \"上涨\": 1278.0,\n      \"涨停\": 62.0,\n      \"下跌\": 4106.0,\n      \"跌停\": 38.0,\n      \"平盘\": 56.0,\n      \"活跃度\": 23.6,\n      \"情绪值\": 23.6,\n      \"成交额\": 1945958605.0,\n      \"融资净买入\": 1076793187.0,\n      \"全市场换手率\": 2.0099\n    },\n    {\n      \"日期\": \"20251119\",\n      \"trade_date\": \"20251119\",\n      \"上涨\": 1200.0,\n      \"涨停\": 62.0,\n      \"下跌\": 4175.0,\n      \"跌停\": 33.0,\n      \"平盘\": 67.0,\n      \"活跃度\": 22.22,\n      \"情绪值\": 22.22,\n      \"成交额\": 1742665765.0,\n      \"融资净买入\": -6009363856.0,\n      \"全市场换手率\": 1.801\n    },\n    {\n      \"日期\": \"20251120\",\n      \"trade_date\": \"20251120\",\n      \"上涨\": 1453.0,\n      \"涨停\": 49.0,\n      \"下跌\": 3850.0,\n      \"跌停\": 23.0,\n      \"平盘\": 138.0,\n      \"活跃度\": 26.81,\n      \"情绪值\": 26.81,\n      \"成交额\": 1722634730.0,\n      \"融资净买入\": -7262266892.0,\n      \"全市场换手率\": 1.7927\n    },\n    {\n      \"日期\": \"20251121\",\n      \"trade_date\": \"20251121\",\n      \"上涨\": 354.0,\n      \"涨停\": 32.0,\n      \"下跌\": 5072.0,\n      \"跌停\": 105.0,\n      \"平盘\": 18.0,\n      \"活跃度\": 6.53,\n      \"情绪值\": 6.53,\n      \"成交额\": 1983599376.0,\n      \"融资净买入\": -30505273536.0,\n      \"全市场换手率\": 2.1224\n    },\n    {\n      \"日期\": \"20251124\",\n      \"trade_date\": \"20251124\",\n      \"上涨\": 4228.0,\n      \"涨停\": 77.0,\n      \"下跌\": 1104.0,\n      \"跌停\": 34.0,\n      \"平盘\": 108.0,\n      \"活跃度\": 76.92,\n      \"情绪值\": 76.92,\n      \"成交额\": 1740350183.0,\n      \"融资净买入\": -4258451204.0,\n      \"全市场换手率\": 1.8562\n    },\n    {\n      \"日期\": \"20251125\",\n      \"trade_date\": \"20251125\",\n      \"上涨\": 4300.0,\n      \"涨停\": 92.0,\n      \"下跌\": 993.0,\n      \"跌停\": 8.0,\n      \"平盘\": 145.0,\n      \"活跃度\": 79.02,\n      \"情绪值\": 79.02,\n      \"成交额\": 1826169390.0,\n      \"融资净买入\": 2529287846.0,\n      \"全市场换手率\": 1.9274\n    },\n    {\n      \"日期\": \"20251126\",\n      \"trade_date\": \"20251126\",\n      \"上涨\": 1692.0,\n      \"涨停\": 76.0,\n      \"下跌\": 3593.0,\n      \"跌停\": 9.0,\n      \"平盘\": 149.0,\n      \"活跃度\": 31.51,\n      \"情绪值\": 31.51,\n      \"成交额\": 1797190474.0,\n      \"融资净买入\": 4587527473.0,\n      \"全市场换手率\": 1.8961\n    },\n    {\n      \"日期\": \"20251127\",\n      \"trade_date\": \"20251127\",\n      \"上涨\": 2790.0,\n      \"涨停\": 63.0,\n      \"下跌\": 2447.0,\n      \"跌停\": 14.0,\n      \"平盘\": 197.0,\n      \"活跃度\": 51.36,\n      \"情绪值\": 51.36,\n      \"成交额\": 1723172380.0,\n      \"融资净买入\": 1307218597.0,\n      \"全市场换手率\": 1.8158\n    },\n    {\n      \"日期\": \"20251128\",\n      \"trade_date\": \"20251128\",\n      \"上涨\": 4122.0,\n      \"涨停\": 80.0,\n      \"下跌\": 1193.0,\n      \"跌停\": 5.0,\n      \"平盘\": 118.0,\n      \"活跃度\": 75.91,\n      \"情绪值\": 75.91,\n      \"成交额\": 1597730794.0,\n      \"融资净买入\": -1373054.0,\n      \"全市场换手率\": 1.6745\n    },\n    {\n      \"日期\": \"20251201\",\n      \"trade_date\": \"20251201\",\n      \"上涨\": 3398.0,\n      \"涨停\": 74.0,\n      \"下跌\": 1872.0,\n      \"跌停\": 8.0,\n      \"平盘\": 162.0,\n      \"活跃度\": 62.63,\n      \"情绪值\": 62.63,\n      \"成交额\": 1889449234.0,\n      \"融资净买入\": 8741894788.0,\n      \"全市场换手率\": 1.9641\n    },\n    {\n      \"日期\": \"20251202\",\n      \"trade_date\": \"20251202\",\n      \"上涨\": 1544.0,\n      \"涨停\": 55.0,\n      \"下跌\": 3740.0,\n      \"跌停\": 9.0,\n      \"平盘\": 152.0,\n      \"活跃度\": 28.67,\n      \"情绪值\": 28.67,\n      \"成交额\": 1607266720.0,\n      \"融资净买入\": 790593951.0,\n      \"全市场换手率\": 1.6788\n    },\n    {\n      \"日期\": \"20251203\",\n      \"trade_date\": \"20251203\",\n      \"上涨\": 1443.0,\n      \"涨停\": 53.0,\n      \"下跌\": 3876.0,\n      \"跌停\": 16.0,\n      \"平盘\": 123.0,\n      \"活跃度\": 26.72,\n      \"情绪值\": 26.72,\n      \"成交额\": 1683556162.0,\n      \"融资净买入\": -5225915852.0,\n      \"全市场换手率\": 1.7686\n    },\n    {\n      \"日期\": \"20251204\",\n      \"trade_date\": \"20251204\",\n      \"上涨\": 1455.0,\n      \"涨停\": 40.0,\n      \"下跌\": 3878.0,\n      \"跌停\": 27.0,\n      \"平盘\": 107.0,\n      \"活跃度\": 26.75,\n      \"情绪值\": 26.75,\n      \"成交额\": 1561665471.0,\n      \"融资净买入\": -140116131.0,\n      \"全市场换手率\": 1.6417\n    },\n    {\n      \"日期\": \"20251205\",\n      \"trade_date\": \"20251205\",\n      \"上涨\": 4387.0,\n      \"涨停\": 80.0,\n      \"下跌\": 975.0,\n      \"跌停\": 11.0,\n      \"平盘\": 76.0,\n      \"活跃度\": 80.49,\n      \"情绪值\": 80.49,\n      \"成交额\": 1738952859.0,\n      \"融资净买入\": -3842882130.0,\n      \"全市场换手率\": 1.8114\n    },\n    {\n      \"日期\": \"20251208\",\n      \"trade_date\": \"20251208\",\n      \"上涨\": 3409.0,\n      \"涨停\": 78.0,\n      \"下跌\": 1866.0,\n      \"跌停\": 7.0,\n      \"平盘\": 165.0,\n      \"活跃度\": 62.77,\n      \"情绪值\": 62.77,\n      \"成交额\": 2051611872.0,\n      \"融资净买入\": 17106248173.0,\n      \"全市场换手率\": 2.1196\n    },\n    {\n      \"日期\": \"20251209\",\n      \"trade_date\": \"20251209\",\n      \"上涨\": 1308.0,\n      \"涨停\": 54.0,\n      \"下跌\": 4058.0,\n      \"跌停\": 12.0,\n      \"平盘\": 75.0,\n      \"活跃度\": 24.31,\n      \"情绪值\": 24.31,\n      \"成交额\": 1917689372.0,\n      \"融资净买入\": 8784273094.0,\n      \"全市场换手率\": 1.9891\n    },\n    {\n      \"日期\": \"20251210\",\n      \"trade_date\": \"20251210\",\n      \"上涨\": 2435.0,\n      \"涨停\": 60.0,\n      \"下跌\": 2844.0,\n      \"跌停\": 11.0,\n      \"平盘\": 159.0,\n      \"活跃度\": 44.9,\n      \"情绪值\": 44.9,\n      \"成交额\": 1791634158.0,\n      \"融资净买入\": 2167511535.0,\n      \"全市场换手率\": 1.8592\n    },\n    {\n      \"日期\": \"20251211\",\n      \"trade_date\": \"20251211\",\n      \"上涨\": 1033.0,\n      \"涨停\": 37.0,\n      \"下跌\": 4378.0,\n      \"跌停\": 29.0,\n      \"平盘\": 31.0,\n      \"活跃度\": 19.05,\n      \"情绪值\": 19.05,\n      \"成交额\": 1885275976.0,\n      \"融资净买入\": -7713735599.0,\n      \"全市场换手率\": 1.9746\n    },\n    {\n      \"日期\": \"20251212\",\n      \"trade_date\": \"20251212\",\n      \"上涨\": 2683.0,\n      \"涨停\": 83.0,\n      \"下跌\": 2612.0,\n      \"跌停\": 27.0,\n      \"平盘\": 149.0,\n      \"活跃度\": 49.18,\n      \"情绪值\": 49.18,\n      \"成交额\": 2119009686.0,\n      \"融资净买入\": -7770547691.0,\n      \"全市场换手率\": 2.2088\n    },\n    {\n      \"日期\": \"20251215\",\n      \"trade_date\": \"20251215\",\n      \"上涨\": 2314.0,\n      \"涨停\": 64.0,\n      \"下跌\": 2968.0,\n      \"跌停\": 25.0,\n      \"平盘\": 161.0,\n      \"活跃度\": 42.46,\n      \"情绪值\": 42.46,\n      \"成交额\": 1794419910.0,\n      \"融资净买入\": 3431684954.0,\n      \"全市场换手率\": 1.8819\n    },\n    {\n      \"日期\": \"20251216\",\n      \"trade_date\": \"20251216\",\n      \"上涨\": 1091.0,\n      \"涨停\": 45.0,\n      \"下跌\": 4302.0,\n      \"跌停\": 35.0,\n      \"平盘\": 52.0,\n      \"活跃度\": 20.11,\n      \"情绪值\": 20.11,\n      \"成交额\": 1748090891.0,\n      \"融资净买入\": -1895345137.0,\n      \"全市场换手率\": 1.856\n    },\n    {\n      \"日期\": \"20251217\",\n      \"trade_date\": \"20251217\",\n      \"上涨\": 3626.0,\n      \"涨停\": 58.0,\n      \"下跌\": 1635.0,\n      \"跌停\": 25.0,\n      \"平盘\": 185.0,\n      \"活跃度\": 66.15,\n      \"情绪值\": 66.15,\n      \"成交额\": 1834364912.0,\n      \"融资净买入\": -3565458860.0,\n      \"全市场换手率\": 1.9207\n    },\n    {\n      \"日期\": \"20251218\",\n      \"trade_date\": \"20251218\",\n      \"上涨\": 2845.0,\n      \"涨停\": 73.0,\n      \"下跌\": 2416.0,\n      \"跌停\": 7.0,\n      \"平盘\": 188.0,\n      \"活跃度\": 52.4,\n      \"情绪值\": 52.4,\n      \"成交额\": 1676800697.0,\n      \"融资净买入\": -4817965453.0,\n      \"全市场换手率\": 1.7563\n    },\n    {\n      \"日期\": \"20251219\",\n      \"trade_date\": \"20251219\",\n      \"上涨\": 4477.0,\n      \"涨停\": 84.0,\n      \"下跌\": 905.0,\n      \"跌停\": 5.0,\n      \"平盘\": 66.0,\n      \"活跃度\": 82.16,\n      \"情绪值\": 82.16,\n      \"成交额\": 1748741854.0,\n      \"融资净买入\": 3151021338.0,\n      \"全市场换手率\": 1.824\n    },\n    {\n      \"日期\": \"20251222\",\n      \"trade_date\": \"20251222\",\n      \"上涨\": 2984.0,\n      \"涨停\": 102.0,\n      \"下跌\": 2265.0,\n      \"跌停\": 8.0,\n      \"平盘\": 195.0,\n      \"活跃度\": 55.07,\n      \"情绪值\": 55.07,\n      \"成交额\": 1882193941.0,\n      \"融资净买入\": 11161628562.0,\n      \"全市场换手率\": 1.9453\n    },\n    {\n      \"日期\": \"20251223\",\n      \"trade_date\": \"20251223\",\n      \"上涨\": 1512.0,\n      \"涨停\": 65.0,\n      \"下跌\": 3856.0,\n      \"跌停\": 16.0,\n      \"平盘\": 81.0,\n      \"活跃度\": 28.01,\n      \"情绪值\": 28.01,\n      \"成交额\": 1921373041.0,\n      \"融资净买入\": 13231794145.0,\n      \"全市场换手率\": 1.9832\n    },\n    {\n      \"日期\": \"20251224\",\n      \"trade_date\": \"20251224\",\n      \"上涨\": 4128.0,\n      \"涨停\": 85.0,\n      \"下跌\": 1137.0,\n      \"跌停\": 6.0,\n      \"平盘\": 186.0,\n      \"活跃度\": 75.75,\n      \"情绪值\": 75.75,\n      \"成交额\": 1897241756.0,\n      \"融资净买入\": 8681766060.0,\n      \"全市场换手率\": 1.9438\n    },\n    {\n      \"日期\": \"20251226\",\n      \"trade_date\": \"20251226\",\n      \"上涨\": 1866.0,\n      \"涨停\": 91.0,\n      \"下跌\": 3414.0,\n      \"跌停\": 3.0,\n      \"平盘\": 173.0,\n      \"活跃度\": 34.73,\n      \"情绪值\": 34.73,\n      \"成交额\": 2181103642.0,\n      \"融资净买入\": -3418450399.0,\n      \"全市场换手率\": 2.2179\n    },\n    {\n      \"日期\": \"20251229\",\n      \"trade_date\": \"20251229\",\n      \"上涨\": 1995.0,\n      \"涨停\": 87.0,\n      \"下跌\": 3332.0,\n      \"跌停\": 25.0,\n      \"平盘\": 128.0,\n      \"活跃度\": 36.74,\n      \"情绪值\": 36.74,\n      \"成交额\": 2157686377.0,\n      \"融资净买入\": 7064592062.0,\n      \"全市场换手率\": 2.1964\n    },\n    {\n      \"日期\": \"20251230\",\n      \"trade_date\": \"20251230\",\n      \"上涨\": 1840.0,\n      \"涨停\": 66.0,\n      \"下跌\": 3481.0,\n      \"跌停\": 18.0,\n      \"平盘\": 136.0,\n      \"活跃度\": 33.89,\n      \"情绪值\": 33.89,\n      \"成交额\": 2161531644.0,\n      \"融资净买入\": 2198174204.0,\n      \"全市场换手率\": 2.1993\n    },\n    {\n      \"日期\": \"20251231\",\n      \"trade_date\": \"20251231\",\n      \"上涨\": 2474.0,\n      \"涨停\": 62.0,\n      \"下跌\": 2776.0,\n      \"跌停\": 13.0,\n      \"平盘\": 208.0,\n      \"活跃度\": 45.42,\n      \"情绪值\": 45.42,\n      \"成交额\": 2065788014.0,\n      \"融资净买入\": -15966389873.0,\n      \"全市场换手率\": 2.1035\n    },\n    {\n      \"日期\": \"20260105\",\n      \"trade_date\": \"20260105\",\n      \"上涨\": 4185.0,\n      \"涨停\": 126.0,\n      \"下跌\": 1168.0,\n      \"跌停\": 11.0,\n      \"平盘\": 104.0,\n      \"活跃度\": 76.65,\n      \"情绪值\": 76.65,\n      \"成交额\": 2567239812.0,\n      \"融资净买入\": 17780252297.0,\n      \"全市场换手率\": 2.5674\n    },\n    {\n      \"日期\": \"20260106\",\n      \"trade_date\": \"20260106\",\n      \"上涨\": 4108.0,\n      \"涨停\": 138.0,\n      \"下跌\": 1222.0,\n      \"跌停\": 2.0,\n      \"平盘\": 129.0,\n      \"活跃度\": 75.51,\n      \"情绪值\": 75.51,\n      \"成交额\": 2832277969.0,\n      \"融资净买入\": 17472038255.0,\n      \"全市场换手率\": 2.7881\n    },\n    {\n      \"日期\": \"20260107\",\n      \"trade_date\": \"20260107\",\n      \"上涨\": 2173.0,\n      \"涨停\": 96.0,\n      \"下跌\": 3190.0,\n      \"跌停\": 6.0,\n      \"平盘\": 97.0,\n      \"活跃度\": 40.24,\n      \"情绪值\": 40.24,\n      \"成交额\": 2881565961.0,\n      \"融资净买入\": 23590991274.0,\n      \"全市场换手率\": 2.835\n    },\n    {\n      \"日期\": \"20260108\",\n      \"trade_date\": \"20260108\",\n      \"上涨\": 3731.0,\n      \"涨停\": 111.0,\n      \"下跌\": 1595.0,\n      \"跌停\": 7.0,\n      \"平盘\": 133.0,\n      \"活跃度\": 68.49,\n      \"情绪值\": 68.49,\n      \"成交额\": 2826302443.0,\n      \"融资净买入\": 14439786463.0,\n      \"全市场换手率\": 2.7803\n    },\n    {\n      \"日期\": \"20260109\",\n      \"trade_date\": \"20260109\",\n      \"上涨\": 3920.0,\n      \"涨停\": 112.0,\n      \"下跌\": 1349.0,\n      \"跌停\": 2.0,\n      \"平盘\": 190.0,\n      \"活跃度\": 72.04,\n      \"情绪值\": 72.04,\n      \"成交额\": 3152368298.0,\n      \"融资净买入\": 5407184559.0,\n      \"全市场换手率\": 3.0682\n    },\n    {\n      \"日期\": \"20260112\",\n      \"trade_date\": \"20260112\",\n      \"上涨\": 4144.0,\n      \"涨停\": 199.0,\n      \"下跌\": 1182.0,\n      \"跌停\": 8.0,\n      \"平盘\": 133.0,\n      \"活跃度\": 76.12,\n      \"情绪值\": 76.12,\n      \"成交额\": 3644614289.0,\n      \"融资净买入\": 37991613749.0,\n      \"全市场换手率\": 3.4954\n    },\n    {\n      \"日期\": \"20260113\",\n      \"trade_date\": \"20260113\",\n      \"上涨\": 1622.0,\n      \"涨停\": 76.0,\n      \"下跌\": 3729.0,\n      \"跌停\": 57.0,\n      \"平盘\": 101.0,\n      \"活跃度\": 29.62,\n      \"情绪值\": 29.62,\n      \"成交额\": 3698811084.0,\n      \"融资净买入\": 7720751901.0,\n      \"全市场换手率\": 3.5843\n    },\n    {\n      \"日期\": \"20260114\",\n      \"trade_date\": \"20260114\",\n      \"上涨\": 2747.0,\n      \"涨停\": 109.0,\n      \"下跌\": 2592.0,\n      \"跌停\": 19.0,\n      \"平盘\": 115.0,\n      \"活跃度\": 50.51,\n      \"情绪值\": 50.51,\n      \"成交额\": 3986861534.0,\n      \"融资净买入\": 13604111986.0,\n      \"全市场换手率\": 3.8617\n    },\n    {\n      \"日期\": \"20260115\",\n      \"trade_date\": \"20260115\",\n      \"上涨\": 2230.0,\n      \"涨停\": 64.0,\n      \"下跌\": 3121.0,\n      \"跌停\": 72.0,\n      \"平盘\": 106.0,\n      \"活跃度\": 40.16,\n      \"情绪值\": 40.16,\n      \"成交额\": 2938493794.0,\n      \"融资净买入\": 19363573854.0,\n      \"全市场换手率\": 2.8529\n    },\n    {\n      \"日期\": \"20260116\",\n      \"trade_date\": \"20260116\",\n      \"上涨\": 2371.0,\n      \"涨停\": 66.0,\n      \"下跌\": 2973.0,\n      \"跌停\": 59.0,\n      \"平盘\": 116.0,\n      \"活跃度\": 42.84,\n      \"情绪值\": 42.84,\n      \"成交额\": 3056523974.0,\n      \"融资净买入\": 11906967859.0,\n      \"全市场换手率\": 2.9764\n    },\n    {\n      \"日期\": \"20260119\",\n      \"trade_date\": \"20260119\",\n      \"上涨\": 3527.0,\n      \"涨停\": 104.0,\n      \"下跌\": 1828.0,\n      \"跌停\": 30.0,\n      \"平盘\": 106.0,\n      \"活跃度\": 64.22,\n      \"情绪值\": 64.22,\n      \"成交额\": 2732216214.0,\n      \"融资净买入\": -10013279800.0,\n      \"全市场换手率\": 2.6497\n    },\n    {\n      \"日期\": \"20260120\",\n      \"trade_date\": \"20260120\",\n      \"上涨\": 2233.0,\n      \"涨停\": 62.0,\n      \"下跌\": 3102.0,\n      \"跌停\": 23.0,\n      \"平盘\": 132.0,\n      \"活跃度\": 40.84,\n      \"情绪值\": 40.84,\n      \"成交额\": 2804235216.0,\n      \"融资净买入\": -15153603076.0,\n      \"全市场换手率\": 2.7264\n    },\n    {\n      \"日期\": \"20260121\",\n      \"trade_date\": \"20260121\",\n      \"上涨\": 3096.0,\n      \"涨停\": 90.0,\n      \"下跌\": 2197.0,\n      \"跌停\": 10.0,\n      \"平盘\": 172.0,\n      \"活跃度\": 56.8,\n      \"情绪值\": 56.8,\n      \"成交额\": 2623747053.0,\n      \"融资净买入\": 10080167135.0,\n      \"全市场换手率\": 2.5425\n    },\n    {\n      \"日期\": \"20260122\",\n      \"trade_date\": \"20260122\",\n      \"上涨\": 3577.0,\n      \"涨停\": 94.0,\n      \"下跌\": 1777.0,\n      \"跌停\": 4.0,\n      \"平盘\": 112.0,\n      \"活跃度\": 65.64,\n      \"情绪值\": 65.64,\n      \"成交额\": 2716404578.0,\n      \"融资净买入\": 2476114038.0,\n      \"全市场换手率\": 2.6221\n    },\n    {\n      \"日期\": \"20260123\",\n      \"trade_date\": \"20260123\",\n      \"上涨\": 3941.0,\n      \"涨停\": 123.0,\n      \"下跌\": 1390.0,\n      \"跌停\": 1.0,\n      \"平盘\": 136.0,\n      \"活跃度\": 72.37,\n      \"情绪值\": 72.37,\n      \"成交额\": 3118107723.0,\n      \"融资净买入\": -2760479069.0,\n      \"全市场换手率\": 2.9891\n    },\n    {\n      \"日期\": \"20260126\",\n      \"trade_date\": \"20260126\",\n      \"上涨\": 1604.0,\n      \"涨停\": 78.0,\n      \"下跌\": 3771.0,\n      \"跌停\": 41.0,\n      \"平盘\": 88.0,\n      \"活跃度\": 29.42,\n      \"情绪值\": 29.42,\n      \"成交额\": 3280644398.0,\n      \"融资净买入\": 620555924.0,\n      \"全市场换手率\": 3.158\n    },\n    {\n      \"日期\": \"20260127\",\n      \"trade_date\": \"20260127\",\n      \"上涨\": 1928.0,\n      \"涨停\": 59.0,\n      \"下跌\": 3454.0,\n      \"跌停\": 12.0,\n      \"平盘\": 81.0,\n      \"活跃度\": 35.48,\n      \"情绪值\": 35.48,\n      \"成交额\": 2921453672.0,\n      \"融资净买入\": -3493987809.0,\n      \"全市场换手率\": 2.8102\n    },\n    {\n      \"日期\": \"20260128\",\n      \"trade_date\": \"20260128\",\n      \"上涨\": 1739.0,\n      \"涨停\": 85.0,\n      \"下跌\": 3640.0,\n      \"跌停\": 28.0,\n      \"平盘\": 85.0,\n      \"活跃度\": 32.03,\n      \"情绪值\": 32.03,\n      \"成交额\": 2992289486.0,\n      \"融资净买入\": 18030452803.0,\n      \"全市场换手率\": 2.8737\n    },\n    {\n      \"日期\": \"20260129\",\n      \"trade_date\": \"20260129\",\n      \"上涨\": 1803.0,\n      \"涨停\": 88.0,\n      \"下跌\": 3566.0,\n      \"跌停\": 34.0,\n      \"平盘\": 96.0,\n      \"活跃度\": 33.12,\n      \"情绪值\": 33.12,\n      \"成交额\": 3259417550.0,\n      \"融资净买入\": -4368879076.0,\n      \"全市场换手率\": 3.1316\n    },\n    {\n      \"日期\": \"20260130\",\n      \"trade_date\": \"20260130\",\n      \"上涨\": 2453.0,\n      \"涨停\": 59.0,\n      \"下跌\": 2896.0,\n      \"跌停\": 60.0,\n      \"平盘\": 113.0,\n      \"活跃度\": 44.24,\n      \"情绪值\": 44.24,\n      \"成交额\": 2862425410.0,\n      \"融资净买入\": -24790600073.0,\n      \"全市场换手率\": 2.7755\n    },\n    {\n      \"日期\": \"20260202\",\n      \"trade_date\": \"20260202\",\n      \"上涨\": 771.0,\n      \"涨停\": 44.0,\n      \"下跌\": 4652.0,\n      \"跌停\": 128.0,\n      \"平盘\": 41.0,\n      \"活跃度\": 13.81,\n      \"情绪值\": 13.81,\n      \"成交额\": 2606637985.0,\n      \"融资净买入\": -7299317689.0,\n      \"全市场换手率\": 2.5894\n    },\n    {\n      \"日期\": \"20260203\",\n      \"trade_date\": \"20260203\",\n      \"上涨\": 4856.0,\n      \"涨停\": 83.0,\n      \"下跌\": 532.0,\n      \"跌停\": 23.0,\n      \"平盘\": 77.0,\n      \"活跃度\": 88.2,\n      \"情绪值\": 88.2,\n      \"成交额\": 2565612992.0,\n      \"融资净买入\": -4826924893.0,\n      \"全市场换手率\": 2.5061\n    },\n    {\n      \"日期\": \"20260204\",\n      \"trade_date\": \"20260204\",\n      \"上涨\": 3254.0,\n      \"涨停\": 78.0,\n      \"下跌\": 2130.0,\n      \"跌停\": 15.0,\n      \"平盘\": 84.0,\n      \"活跃度\": 59.47,\n      \"情绪值\": 59.47,\n      \"成交额\": 2503262866.0,\n      \"融资净买入\": -15255636614.0,\n      \"全市场换手率\": 2.429\n    },\n    {\n      \"日期\": \"20260205\",\n      \"trade_date\": \"20260205\",\n      \"上涨\": 1618.0,\n      \"涨停\": 56.0,\n      \"下跌\": 3719.0,\n      \"跌停\": 22.0,\n      \"平盘\": 130.0,\n      \"活跃度\": 29.72,\n      \"情绪值\": 29.72,\n      \"成交额\": 2194279690.0,\n      \"融资净买入\": -13039120943.0,\n      \"全市场换手率\": 2.1482\n    },\n    {\n      \"日期\": \"20260206\",\n      \"trade_date\": \"20260206\",\n      \"上涨\": 2749.0,\n      \"涨停\": 63.0,\n      \"下跌\": 2550.0,\n      \"跌停\": 9.0,\n      \"平盘\": 167.0,\n      \"活跃度\": 50.41,\n      \"情绪值\": 50.41,\n      \"成交额\": 2163475056.0,\n      \"融资净买入\": -18318412225.0,\n      \"全市场换手率\": 2.1239\n    },\n    {\n      \"日期\": \"20260209\",\n      \"trade_date\": \"20260209\",\n      \"上涨\": 4612.0,\n      \"涨停\": 99.0,\n      \"下跌\": 759.0,\n      \"跌停\": 7.0,\n      \"平盘\": 94.0,\n      \"活跃度\": 84.32,\n      \"情绪值\": 84.32,\n      \"成交额\": 2270179145.0,\n      \"融资净买入\": -897309156.0,\n      \"全市场换手率\": 2.1933\n    },\n    {\n      \"日期\": \"20260210\",\n      \"trade_date\": \"20260210\",\n      \"上涨\": 2195.0,\n      \"涨停\": 70.0,\n      \"下跌\": 3128.0,\n      \"跌停\": 11.0,\n      \"平盘\": 147.0,\n      \"活跃度\": 40.35,\n      \"情绪值\": 40.35,\n      \"成交额\": 2124744548.0,\n      \"融资净买入\": -5029365145.0,\n      \"全市场换手率\": 2.0502\n    },\n    {\n      \"日期\": \"20260211\",\n      \"trade_date\": \"20260211\",\n      \"上涨\": 2050.0,\n      \"涨停\": 60.0,\n      \"下跌\": 3241.0,\n      \"跌停\": 14.0,\n      \"平盘\": 179.0,\n      \"活跃度\": 37.63,\n      \"情绪值\": 37.63,\n      \"成交额\": 2001043434.0,\n      \"融资净买入\": -17172060534.0,\n      \"全市场换手率\": 1.9318\n    },\n    {\n      \"日期\": \"20260212\",\n      \"trade_date\": \"20260212\",\n      \"上涨\": 2108.0,\n      \"涨停\": 69.0,\n      \"下跌\": 3280.0,\n      \"跌停\": 22.0,\n      \"平盘\": 88.0,\n      \"活跃度\": 38.57,\n      \"情绪值\": 38.57,\n      \"成交额\": 2160770687.0,\n      \"融资净买入\": 147072742.0,\n      \"全市场换手率\": 2.0811\n    },\n    {\n      \"日期\": \"20260213\",\n      \"trade_date\": \"20260213\",\n      \"上涨\": 1540.0,\n      \"涨停\": 45.0,\n      \"下跌\": 3829.0,\n      \"跌停\": 16.0,\n      \"平盘\": 105.0,\n      \"活跃度\": 28.26,\n      \"情绪值\": 28.26,\n      \"成交额\": 1998941693.0,\n      \"融资净买入\": -57806369357.0,\n      \"全市场换手率\": 1.9487\n    },\n    {\n      \"日期\": \"20260224\",\n      \"trade_date\": \"20260224\",\n      \"上涨\": 4006.0,\n      \"涨停\": 110.0,\n      \"下跌\": 1392.0,\n      \"跌停\": 21.0,\n      \"平盘\": 76.0,\n      \"活跃度\": 72.9,\n      \"情绪值\": 72.9,\n      \"成交额\": 2218160722.0,\n      \"融资净买入\": 32476769522.0,\n      \"全市场换手率\": 2.1385\n    },\n    {\n      \"日期\": \"20260225\",\n      \"trade_date\": \"20260225\",\n      \"上涨\": 3748.0,\n      \"涨停\": 100.0,\n      \"下跌\": 1609.0,\n      \"跌停\": 4.0,\n      \"平盘\": 114.0,\n      \"活跃度\": 68.69,\n      \"情绪值\": 68.69,\n      \"成交额\": 2480891983.0,\n      \"融资净买入\": 22329556507.0,\n      \"全市场换手率\": 2.3724\n    },\n    {\n      \"日期\": \"20260226\",\n      \"trade_date\": \"20260226\",\n      \"上涨\": 2485.0,\n      \"涨停\": 77.0,\n      \"下跌\": 2870.0,\n      \"跌停\": 8.0,\n      \"平盘\": 116.0,\n      \"活跃度\": 45.67,\n      \"情绪值\": 45.67,\n      \"成交额\": 2556639456.0,\n      \"融资净买入\": 18967271546.0,\n      \"全市场换手率\": 2.4422\n    },\n    {\n      \"日期\": \"20260227\",\n      \"trade_date\": \"20260227\",\n      \"上涨\": 3271.0,\n      \"涨停\": 90.0,\n      \"下跌\": 2068.0,\n      \"跌停\": 1.0,\n      \"平盘\": 132.0,\n      \"活跃度\": 60.09,\n      \"情绪值\": 60.09,\n      \"成交额\": 2505480227.0,\n      \"融资净买入\": 616485687.0,\n      \"全市场换手率\": 2.3849\n    },\n    {\n      \"日期\": \"20260302\",\n      \"trade_date\": \"20260302\",\n      \"上涨\": 1142.0,\n      \"涨停\": 98.0,\n      \"下跌\": 4282.0,\n      \"跌停\": 27.0,\n      \"平盘\": 46.0,\n      \"活跃度\": 21.37,\n      \"情绪值\": 21.37,\n      \"成交额\": 3045764687.0,\n      \"融资净买入\": 3314024609.0,\n      \"全市场换手率\": 2.8999\n    },\n    {\n      \"日期\": \"20260303\",\n      \"trade_date\": \"20260303\",\n      \"上涨\": 643.0,\n      \"涨停\": 83.0,\n      \"下跌\": 4807.0,\n      \"跌停\": 88.0,\n      \"平盘\": 22.0,\n      \"活跃度\": 12.03,\n      \"情绪值\": 12.03,\n      \"成交额\": 3157557744.0,\n      \"融资净买入\": -23762511365.0,\n      \"全市场换手率\": 3.0712\n    },\n    {\n      \"日期\": \"20260304\",\n      \"trade_date\": \"20260304\",\n      \"上涨\": 1745.0,\n      \"涨停\": 45.0,\n      \"下跌\": 3640.0,\n      \"跌停\": 27.0,\n      \"平盘\": 89.0,\n      \"活跃度\": 31.84,\n      \"情绪值\": 31.84,\n      \"成交额\": 2387941675.0,\n      \"融资净买入\": -9525390280.0,\n      \"全市场换手率\": 2.3417\n    },\n    {\n      \"日期\": \"20260305\",\n      \"trade_date\": \"20260305\",\n      \"上涨\": 4079.0,\n      \"涨停\": 78.0,\n      \"下跌\": 1306.0,\n      \"跌停\": 7.0,\n      \"平盘\": 91.0,\n      \"活跃度\": 74.48,\n      \"情绪值\": 74.48,\n      \"成交额\": 2412590767.0,\n      \"融资净买入\": 7040156293.0,\n      \"全市场换手率\": 2.3457\n    },\n    {\n      \"日期\": \"20260306\",\n      \"trade_date\": \"20260306\",\n      \"上涨\": 4260.0,\n      \"涨停\": 89.0,\n      \"下跌\": 1154.0,\n      \"跌停\": 4.0,\n      \"平盘\": 63.0,\n      \"活跃度\": 77.85,\n      \"情绪值\": 77.85,\n      \"成交额\": 2219238855.0,\n      \"融资净买入\": -7686468535.0,\n      \"全市场换手率\": 2.145\n    },\n    {\n      \"日期\": \"20260309\",\n      \"trade_date\": \"20260309\",\n      \"上涨\": 1423.0,\n      \"涨停\": 50.0,\n      \"下跌\": 3964.0,\n      \"跌停\": 8.0,\n      \"平盘\": 94.0,\n      \"活跃度\": 26.22,\n      \"情绪值\": 26.22,\n      \"成交额\": 2670581823.0,\n      \"融资净买入\": -1501434528.0,\n      \"全市场换手率\": 2.5956\n    },\n    {\n      \"日期\": \"20260310\",\n      \"trade_date\": \"20260310\",\n      \"上涨\": 4536.0,\n      \"涨停\": 72.0,\n      \"下跌\": 850.0,\n      \"跌停\": 6.0,\n      \"平盘\": 93.0,\n      \"活跃度\": 82.72,\n      \"情绪值\": 82.72,\n      \"成交额\": 2416829507.0,\n      \"融资净买入\": 8444758797.0,\n      \"全市场换手率\": 2.3235\n    },\n    {\n      \"日期\": \"20260311\",\n      \"trade_date\": \"20260311\",\n      \"上涨\": 2060.0,\n      \"涨停\": 66.0,\n      \"下跌\": 3284.0,\n      \"跌停\": 2.0,\n      \"平盘\": 138.0,\n      \"活跃度\": 37.92,\n      \"情绪值\": 37.92,\n      \"成交额\": 2528293901.0,\n      \"融资净买入\": 4150848580.0,\n      \"全市场换手率\": 2.4191\n    },\n    {\n      \"日期\": \"20260312\",\n      \"trade_date\": \"20260312\",\n      \"上涨\": 1494.0,\n      \"涨停\": 63.0,\n      \"下跌\": 3893.0,\n      \"跌停\": 6.0,\n      \"平盘\": 95.0,\n      \"活跃度\": 27.61,\n      \"情绪值\": 27.61,\n      \"成交额\": 2460555249.0,\n      \"融资净买入\": 1970779974.0,\n      \"全市场换手率\": 2.3618\n    },\n    {\n      \"日期\": \"20260313\",\n      \"trade_date\": \"20260313\",\n      \"上涨\": 1502.0,\n      \"涨停\": 69.0,\n      \"下跌\": 3828.0,\n      \"跌停\": 24.0,\n      \"平盘\": 151.0,\n      \"活跃度\": 27.62,\n      \"情绪值\": 27.62,\n      \"成交额\": 2417275519.0,\n      \"融资净买入\": -13889768817.0,\n      \"全市场换手率\": 2.3399\n    },\n    {\n      \"日期\": \"20260316\",\n      \"trade_date\": \"20260316\",\n      \"上涨\": 2843.0,\n      \"涨停\": 63.0,\n      \"下跌\": 2494.0,\n      \"跌停\": 11.0,\n      \"平盘\": 143.0,\n      \"活跃度\": 51.95,\n      \"情绪值\": 51.95,\n      \"成交额\": 2339903116.0,\n      \"融资净买入\": 8411623235.0,\n      \"全市场换手率\": 2.2664\n    },\n    {\n      \"日期\": \"20260317\",\n      \"trade_date\": \"20260317\",\n      \"上涨\": 867.0,\n      \"涨停\": 52.0,\n      \"下跌\": 4541.0,\n      \"跌停\": 14.0,\n      \"平盘\": 70.0,\n      \"活跃度\": 16.14,\n      \"情绪值\": 16.14,\n      \"成交额\": 2207860990.0,\n      \"融资净买入\": -10314420206.0,\n      \"全市场换手率\": 2.1817\n    },\n    {\n      \"日期\": \"20260318\",\n      \"trade_date\": \"20260318\",\n      \"上涨\": 3554.0,\n      \"涨停\": 69.0,\n      \"下跌\": 1831.0,\n      \"跌停\": 13.0,\n      \"平盘\": 94.0,\n      \"活跃度\": 64.78,\n      \"情绪值\": 64.78,\n      \"成交额\": 2061027860.0,\n      \"融资净买入\": 1272324425.0,\n      \"全市场换手率\": 2.0099\n    },\n    {\n      \"日期\": \"20260319\",\n      \"trade_date\": \"20260319\",\n      \"上涨\": 505.0,\n      \"涨停\": 36.0,\n      \"下跌\": 4955.0,\n      \"跌停\": 16.0,\n      \"平盘\": 19.0,\n      \"活跃度\": 9.46,\n      \"情绪值\": 9.46,\n      \"成交额\": 2127261718.0,\n      \"融资净买入\": -5579460353.0,\n      \"全市场换手率\": 2.1111\n    },\n    {\n      \"日期\": \"20260320\",\n      \"trade_date\": \"20260320\",\n      \"上涨\": 662.0,\n      \"涨停\": 39.0,\n      \"下跌\": 4786.0,\n      \"跌停\": 27.0,\n      \"平盘\": 33.0,\n      \"活跃度\": 12.27,\n      \"情绪值\": 12.27,\n      \"成交额\": 2302824612.0,\n      \"融资净买入\": -18560833593.0,\n      \"全市场换手率\": 2.3125\n    },\n    {\n      \"日期\": \"20260323\",\n      \"trade_date\": \"20260323\",\n      \"上涨\": 305.0,\n      \"涨停\": 37.0,\n      \"下跌\": 5172.0,\n      \"跌停\": 145.0,\n      \"平盘\": 6.0,\n      \"活跃度\": 5.59,\n      \"情绪值\": 5.59,\n      \"成交额\": 2448105222.0,\n      \"融资净买入\": -12669853485.0,\n      \"全市场换手率\": 2.5541\n    },\n    {\n      \"日期\": \"20260324\",\n      \"trade_date\": \"20260324\",\n      \"上涨\": 5136.0,\n      \"涨停\": 101.0,\n      \"下跌\": 329.0,\n      \"跌停\": 8.0,\n      \"平盘\": 16.0,\n      \"活跃度\": 93.49,\n      \"情绪值\": 93.49,\n      \"成交额\": 2096069957.0,\n      \"融资净买入\": -8177979905.0,\n      \"全市场换手率\": 2.146\n    },\n    {\n      \"日期\": \"20260325\",\n      \"trade_date\": \"20260325\",\n      \"上涨\": 4874.0,\n      \"涨停\": 106.0,\n      \"下跌\": 560.0,\n      \"跌停\": 5.0,\n      \"平盘\": 48.0,\n      \"活跃度\": 88.85,\n      \"情绪值\": 88.85,\n      \"成交额\": 2192853021.0,\n      \"融资净买入\": 1744969546.0,\n      \"全市场换手率\": 2.2099\n    },\n    {\n      \"日期\": \"20260326\",\n      \"trade_date\": \"20260326\",\n      \"上涨\": 916.0,\n      \"涨停\": 52.0,\n      \"下跌\": 4493.0,\n      \"跌停\": 13.0,\n      \"平盘\": 72.0,\n      \"活跃度\": 17.03,\n      \"情绪值\": 17.03,\n      \"成交额\": 1956968363.0,\n      \"融资净买入\": -2182823438.0,\n      \"全市场换手率\": 1.9962\n    },\n    {\n      \"日期\": \"20260327\",\n      \"trade_date\": \"20260327\",\n      \"上涨\": 4337.0,\n      \"涨停\": 94.0,\n      \"下跌\": 1073.0,\n      \"跌停\": 4.0,\n      \"平盘\": 68.0,\n      \"活跃度\": 79.23,\n      \"情绪值\": 79.23,\n      \"成交额\": 1863792358.0,\n      \"融资净买入\": -9216749426.0,\n      \"全市场换手率\": 1.8853\n    },\n    {\n      \"日期\": \"20260330\",\n      \"trade_date\": \"20260330\",\n      \"上涨\": 2868.0,\n      \"涨停\": 77.0,\n      \"下跌\": 2464.0,\n      \"跌停\": 19.0,\n      \"平盘\": 144.0,\n      \"活跃度\": 52.35,\n      \"情绪值\": 52.35,\n      \"成交额\": 1927548105.0,\n      \"融资净买入\": 6497924939.0,\n      \"全市场换手率\": 1.9472\n    },\n    {\n      \"日期\": \"20260331\",\n      \"trade_date\": \"20260331\",\n      \"上涨\": 1011.0,\n      \"涨停\": 59.0,\n      \"下跌\": 4378.0,\n      \"跌停\": 17.0,\n      \"平盘\": 93.0,\n      \"活跃度\": 18.76,\n      \"情绪值\": 18.76,\n      \"成交额\": 2005905367.0,\n      \"融资净买入\": -9549258299.0,\n      \"全市场换手率\": 2.0494\n    },\n    {\n      \"日期\": \"20260401\",\n      \"trade_date\": \"20260401\",\n      \"上涨\": 4495.0,\n      \"涨停\": 66.0,\n      \"下跌\": 887.0,\n      \"跌停\": 14.0,\n      \"平盘\": 103.0,\n      \"活跃度\": 81.64,\n      \"情绪值\": 81.64,\n      \"成交额\": 2024837698.0,\n      \"融资净买入\": -730901537.0,\n      \"全市场换手率\": 2.0375\n    },\n    {\n      \"日期\": \"20260402\",\n      \"trade_date\": \"20260402\",\n      \"上涨\": 1052.0,\n      \"涨停\": 33.0,\n      \"下跌\": 4378.0,\n      \"跌停\": 21.0,\n      \"平盘\": 55.0,\n      \"活跃度\": 19.27,\n      \"情绪值\": 19.27,\n      \"成交额\": 1857789952.0,\n      \"融资净买入\": -12268208134.0,\n      \"全市场换手率\": 1.8891\n    },\n    {\n      \"日期\": \"20260403\",\n      \"trade_date\": \"20260403\",\n      \"上涨\": 716.0,\n      \"涨停\": 40.0,\n      \"下跌\": 4746.0,\n      \"跌停\": 46.0,\n      \"平盘\": 24.0,\n      \"活跃度\": 13.15,\n      \"情绪值\": 13.15,\n      \"成交额\": 1668913112.0,\n      \"融资净买入\": -18623345947.0,\n      \"全市场换手率\": 1.7177\n    },\n    {\n      \"日期\": \"20260407\",\n      \"trade_date\": \"20260407\",\n      \"上涨\": 3977.0,\n      \"涨停\": 103.0,\n      \"下跌\": 1426.0,\n      \"跌停\": 19.0,\n      \"平盘\": 81.0,\n      \"活跃度\": 72.28,\n      \"情绪值\": 72.28,\n      \"成交额\": 1623581024.0,\n      \"融资净买入\": 2529383702.0,\n      \"全市场换手率\": 1.6631\n    },\n    {\n      \"日期\": \"20260408\",\n      \"trade_date\": \"20260408\",\n      \"上涨\": 5174.0,\n      \"涨停\": 135.0,\n      \"下跌\": 301.0,\n      \"跌停\": 12.0,\n      \"平盘\": 15.0,\n      \"活跃度\": 93.91,\n      \"情绪值\": 93.91,\n      \"成交额\": 2450644989.0,\n      \"融资净买入\": 14871063547.0,\n      \"全市场换手率\": 2.4291\n    },\n    {\n      \"日期\": \"20260409\",\n      \"trade_date\": \"20260409\",\n      \"上涨\": 1140.0,\n      \"涨停\": 64.0,\n      \"下跌\": 4299.0,\n      \"跌停\": 15.0,\n      \"平盘\": 52.0,\n      \"活跃度\": 21.11,\n      \"情绪值\": 21.11,\n      \"成交额\": 2147341439.0,\n      \"融资净买入\": 6210248449.0,\n      \"全市场换手率\": 2.1426\n    },\n    {\n      \"日期\": \"20260410\",\n      \"trade_date\": \"20260410\",\n      \"上涨\": 3977.0,\n      \"涨停\": 79.0,\n      \"下跌\": 1397.0,\n      \"跌停\": 14.0,\n      \"平盘\": 121.0,\n      \"活跃度\": 72.21,\n      \"情绪值\": 72.21,\n      \"成交额\": 2337611174.0,\n      \"融资净买入\": 4049988072.0,\n      \"全市场换手率\": 2.3088\n    },\n    {\n      \"日期\": \"20260413\",\n      \"trade_date\": \"20260413\",\n      \"上涨\": 2378.0,\n      \"涨停\": 87.0,\n      \"下跌\": 2960.0,\n      \"跌停\": 10.0,\n      \"平盘\": 156.0,\n      \"活跃度\": 43.57,\n      \"情绪值\": 43.57,\n      \"成交额\": 2163064887.0,\n      \"融资净买入\": 14837448123.0,\n      \"全市场换手率\": 2.1297\n    },\n    {\n      \"日期\": \"20260414\",\n      \"trade_date\": \"20260414\",\n      \"上涨\": 3723.0,\n      \"涨停\": 73.0,\n      \"下跌\": 1594.0,\n      \"跌停\": 11.0,\n      \"平盘\": 179.0,\n      \"活跃度\": 67.68,\n      \"情绪值\": 67.68,\n      \"成交额\": 2396798588.0,\n      \"融资净买入\": 15119970149.0,\n      \"全市场换手率\": 2.3332\n    },\n    {\n      \"日期\": \"20260415\",\n      \"trade_date\": \"20260415\",\n      \"上涨\": 1841.0,\n      \"涨停\": 67.0,\n      \"下跌\": 3541.0,\n      \"跌停\": 16.0,\n      \"平盘\": 112.0,\n      \"活跃度\": 33.72,\n      \"情绪值\": 33.72,\n      \"成交额\": 2429477820.0,\n      \"融资净买入\": 8958584688.0,\n      \"全市场换手率\": 2.3714\n    },\n    {\n      \"日期\": \"20260420\",\n      \"trade_date\": \"20260420\",\n      \"上涨\": 3424.0,\n      \"涨停\": 93.0,\n      \"下跌\": 1898.0,\n      \"跌停\": 17.0,\n      \"平盘\": 171.0,\n      \"活跃度\": 62.27,\n      \"情绪值\": 62.27,\n      \"成交额\": 2606522778.0,\n      \"融资净买入\": 4544403763.0,\n      \"全市场换手率\": 2.4963\n    },\n    {\n      \"日期\": \"20260421\",\n      \"trade_date\": \"20260421\",\n      \"上涨\": 1949.0,\n      \"涨停\": 65.0,\n      \"下跌\": 3432.0,\n      \"跌停\": 19.0,\n      \"平盘\": 117.0,\n      \"活跃度\": 35.58,\n      \"情绪值\": 35.58,\n      \"成交额\": 2426646682.0,\n      \"融资净买入\": -1832683182.0,\n      \"全市场换手率\": 2.3227\n    },\n    {\n      \"日期\": \"20260423\",\n      \"trade_date\": \"20260423\",\n      \"上涨\": 1330.0,\n      \"涨停\": 59.0,\n      \"下跌\": 4078.0,\n      \"跌停\": 34.0,\n      \"平盘\": 86.0,\n      \"活跃度\": 24.31,\n      \"情绪值\": 24.31,\n      \"成交额\": 2823315533.0,\n      \"融资净买入\": 2713042311.0,\n      \"全市场换手率\": 2.7002\n    },\n    {\n      \"日期\": \"20260424\",\n      \"trade_date\": \"20260424\",\n      \"上涨\": 2036.0,\n      \"涨停\": 69.0,\n      \"下跌\": 3352.0,\n      \"跌停\": 40.0,\n      \"平盘\": 108.0,\n      \"活跃度\": 36.9,\n      \"情绪值\": 36.9,\n      \"成交额\": 2657622713.0,\n      \"融资净买入\": -12346003838.0,\n      \"全市场换手率\": 2.5519\n    },\n    {\n      \"日期\": \"20260427\",\n      \"trade_date\": \"20260427\",\n      \"上涨\": 3284.0,\n      \"涨停\": 85.0,\n      \"下跌\": 2105.0,\n      \"跌停\": 55.0,\n      \"平盘\": 106.0,\n      \"活跃度\": 58.9,\n      \"情绪值\": 58.9,\n      \"成交额\": 2604807456.0,\n      \"融资净买入\": 14450439247.0,\n      \"全市场换手率\": 2.494\n    },\n    {\n      \"日期\": \"20260428\",\n      \"trade_date\": \"20260428\",\n      \"上涨\": 1698.0,\n      \"涨停\": 76.0,\n      \"下跌\": 3682.0,\n      \"跌停\": 54.0,\n      \"平盘\": 108.0,\n      \"活跃度\": 30.81,\n      \"情绪值\": 30.81,\n      \"成交额\": 2550473217.0,\n      \"融资净买入\": -930123674.0,\n      \"全市场换手率\": 2.4553\n    },\n    {\n      \"日期\": \"20260429\",\n      \"trade_date\": \"20260429\",\n      \"上涨\": 3973.0,\n      \"涨停\": 121.0,\n      \"下跌\": 1403.0,\n      \"跌停\": 42.0,\n      \"平盘\": 86.0,\n      \"活跃度\": 71.94,\n      \"情绪值\": 71.94,\n      \"成交额\": 2608873893.0,\n      \"融资净买入\": -930123674.0,\n      \"全市场换手率\": 2.4868\n    },\n    {\n      \"日期\": \"20260430\",\n      \"trade_date\": \"20260430\",\n      \"上涨\": 2878.0,\n      \"涨停\": 98.0,\n      \"下跌\": 2461.0,\n      \"跌停\": 55.0,\n      \"平盘\": 121.0,\n      \"活跃度\": 52.09,\n      \"情绪值\": 52.09,\n      \"成交额\": 2759205598.0,\n      \"融资净买入\": -17742099281.0,\n      \"全市场换手率\": 2.6298\n    },\n    {\n      \"日期\": \"20260506\",\n      \"trade_date\": \"20260506\",\n      \"上涨\": 3889.0,\n      \"涨停\": 125.0,\n      \"下跌\": 1482.0,\n      \"跌停\": 63.0,\n      \"平盘\": 119.0,\n      \"活跃度\": 69.59,\n      \"情绪值\": 69.59,\n      \"成交额\": 3246596328.0,\n      \"融资净买入\": 40259316658.0,\n      \"全市场换手率\": 3.0407\n    },\n    {\n      \"日期\": \"20260507\",\n      \"trade_date\": \"20260507\",\n      \"上涨\": 3520.0,\n      \"涨停\": 127.0,\n      \"下跌\": 1832.0,\n      \"跌停\": 55.0,\n      \"平盘\": 141.0,\n      \"活跃度\": 63.24,\n      \"情绪值\": 63.24,\n      \"成交额\": 3168269724.0,\n      \"融资净买入\": 28735815496.0,\n      \"全市场换手率\": 2.9433\n    },\n    {\n      \"日期\": \"20260508\",\n      \"trade_date\": \"20260508\",\n      \"上涨\": 3637.0,\n      \"涨停\": 126.0,\n      \"下跌\": 1728.0,\n      \"跌停\": 32.0,\n      \"平盘\": 126.0,\n      \"活跃度\": 65.86,\n      \"情绪值\": 65.86,\n      \"成交额\": 3075719586.0,\n      \"融资净买入\": 14916375170.0,\n      \"全市场换手率\": 2.8565\n    },\n    {\n      \"日期\": \"20260511\",\n      \"trade_date\": \"20260511\",\n      \"上涨\": 3121.0,\n      \"涨停\": 135.0,\n      \"下跌\": 2239.0,\n      \"跌停\": 30.0,\n      \"平盘\": 131.0,\n      \"活跃度\": 56.75,\n      \"情绪值\": 56.75,\n      \"成交额\": 3565452832.0,\n      \"融资净买入\": 28937700528.0,\n      \"全市场换手率\": 3.2688\n    },\n    {\n      \"日期\": \"20260512\",\n      \"trade_date\": \"20260512\",\n      \"上涨\": 1379.0,\n      \"涨停\": 94.0,\n      \"下跌\": 4048.0,\n      \"跌停\": 34.0,\n      \"平盘\": 63.0,\n      \"活跃度\": 25.44,\n      \"情绪值\": 25.44,\n      \"成交额\": 3269736243.0,\n      \"融资净买入\": 15880725587.0,\n      \"全市场换手率\": 3.0094\n    },\n    {\n      \"日期\": \"20260513\",\n      \"trade_date\": \"20260513\",\n      \"上涨\": 3215.0,\n      \"涨停\": 146.0,\n      \"下跌\": 2134.0,\n      \"跌停\": 17.0,\n      \"平盘\": 144.0,\n      \"活跃度\": 58.71,\n      \"情绪值\": 58.71,\n      \"成交额\": 3264212322.0,\n      \"融资净买入\": 21939951590.0,\n      \"全市场换手率\": 2.9745\n    },\n    {\n      \"日期\": \"20260514\",\n      \"trade_date\": \"20260514\",\n      \"上涨\": 1047.0,\n      \"涨停\": 81.0,\n      \"下跌\": 4387.0,\n      \"跌停\": 48.0,\n      \"平盘\": 59.0,\n      \"活跃度\": 19.32,\n      \"情绪值\": 19.32,\n      \"成交额\": 3388086341.0,\n      \"融资净买入\": null,\n      \"全市场换手率\": 3.1434\n    },\n    {\n      \"日期\": \"20260515\",\n      \"trade_date\": \"20260515\",\n      \"上涨\": 1816.0,\n      \"涨停\": 73.0,\n      \"下跌\": 3584.0,\n      \"跌停\": 45.0,\n      \"平盘\": 95.0,\n      \"活跃度\": 32.95,\n      \"情绪值\": 32.95,\n      \"成交额\": 3134384000.0,\n      \"融资净买入\": 7995515163.0,\n      \"全市场换手率\": 3.1584\n    },\n    {\n      \"日期\": \"20260518\",\n      \"trade_date\": \"20260518\",\n      \"上涨\": 2375.0,\n      \"涨停\": 101.0,\n      \"下跌\": 3003.0,\n      \"跌停\": 55.0,\n      \"平盘\": 121.0,\n      \"活跃度\": 42.86,\n      \"情绪值\": 42.86,\n      \"成交额\": 2917073666.062,\n      \"融资净买入\": -7041560127.0,\n      \"全市场换手率\": null\n    },\n    {\n      \"日期\": \"20260519\",\n      \"trade_date\": \"20260519\",\n      \"上涨\": 3608.0,\n      \"涨停\": 123.0,\n      \"下跌\": 1774.0,\n      \"跌停\": 26.0,\n      \"平盘\": 112.0,\n      \"活跃度\": 65.44,\n      \"情绪值\": 65.44,\n      \"成交额\": 2908976620.151,\n      \"融资净买入\": 14218197543.0,\n      \"全市场换手率\": null\n    },\n    {\n      \"日期\": \"20260520\",\n      \"trade_date\": \"20260520\",\n      \"上涨\": 1638.0,\n      \"涨停\": 71.0,\n      \"下跌\": 3804.0,\n      \"跌停\": 41.0,\n      \"平盘\": 56.0,\n      \"活跃度\": 29.8,\n      \"情绪值\": 29.8,\n      \"成交额\": 2976458677.756,\n      \"融资净买入\": 4006503546.0,\n      \"全市场换手率\": 2.7773\n    },\n    {\n      \"日期\": \"20260521\",\n      \"trade_date\": \"20260521\",\n      \"上涨\": 695.0,\n      \"涨停\": 37.0,\n      \"下跌\": 4773.0,\n      \"跌停\": 69.0,\n      \"平盘\": 33.0,\n      \"活跃度\": 12.61,\n      \"情绪值\": 12.61,\n      \"成交额\": 3507279541.527,\n      \"融资净买入\": 5543656833.0,\n      \"全市场换手率\": null\n    },\n    {\n      \"日期\": \"20260522\",\n      \"trade_date\": \"20260522\",\n      \"上涨\": 3869.0,\n      \"涨停\": 138.0,\n      \"下跌\": 1509.0,\n      \"跌停\": 20.0,\n      \"平盘\": 126.0,\n      \"活跃度\": 70.16,\n      \"情绪值\": 70.16,\n      \"成交额\": 2924659105.588,\n      \"融资净买入\": -9395615822.0,\n      \"全市场换手率\": 2.7505\n    },\n    {\n      \"日期\": \"20260525\",\n      \"trade_date\": \"20260525\",\n      \"上涨\": 2181.0,\n      \"涨停\": 129.0,\n      \"下跌\": 3225.0,\n      \"跌停\": 27.0,\n      \"平盘\": 98.0,\n      \"活跃度\": 39.94,\n      \"情绪值\": 39.94,\n      \"成交额\": 3226952453.297,\n      \"融资净买入\": 1716220141.0,\n      \"全市场换手率\": 3.0044\n    },\n    {\n      \"日期\": \"20260526\",\n      \"trade_date\": \"20260526\",\n      \"上涨\": 1354.0,\n      \"涨停\": 68.0,\n      \"下跌\": 4082.0,\n      \"跌停\": 37.0,\n      \"平盘\": 68.0,\n      \"活跃度\": 24.73,\n      \"情绪值\": 24.73,\n      \"成交额\": 3264359080.086,\n      \"融资净买入\": 24096456754.0,\n      \"全市场换手率\": 3.0487\n    },\n    {\n      \"日期\": \"20260527\",\n      \"trade_date\": \"20260527\",\n      \"上涨\": 974.0,\n      \"涨停\": 62.0,\n      \"下跌\": 4489.0,\n      \"跌停\": 35.0,\n      \"平盘\": 43.0,\n      \"活跃度\": 17.92,\n      \"情绪值\": 17.92,\n      \"成交额\": 3259904342.636,\n      \"融资净买入\": 6135580366.0,\n      \"全市场换手率\": 3.0838\n    },\n    {\n      \"日期\": \"20260528\",\n      \"trade_date\": \"20260528\",\n      \"上涨\": 3018.0,\n      \"涨停\": 126.0,\n      \"下跌\": 2365.0,\n      \"跌停\": 13.0,\n      \"平盘\": 123.0,\n      \"活跃度\": 55.07,\n      \"情绪值\": 55.07,\n      \"成交额\": 2987326312.007,\n      \"融资净买入\": 2885292965.0,\n      \"全市场换手率\": 2.8148\n    },\n    {\n      \"日期\": \"20260529\",\n      \"trade_date\": \"20260529\",\n      \"上涨\": 1541.0,\n      \"涨停\": 71.0,\n      \"下跌\": 3884.0,\n      \"跌停\": 64.0,\n      \"平盘\": 80.0,\n      \"活跃度\": 27.81,\n      \"情绪值\": 27.81,\n      \"成交额\": 3339965078.828,\n      \"融资净买入\": 4373358091.0,\n      \"全市场换手率\": 3.1849\n    },\n    {\n      \"日期\": \"20260601\",\n      \"trade_date\": \"20260601\",\n      \"上涨\": 3776.0,\n      \"涨停\": 169.0,\n      \"下跌\": 1682.0,\n      \"跌停\": 25.0,\n      \"平盘\": 50.0,\n      \"活跃度\": 68.42,\n      \"情绪值\": 68.42,\n      \"成交额\": 2896724496.515,\n      \"融资净买入\": -30684579232.0,\n      \"全市场换手率\": 2.7755\n    },\n    {\n      \"日期\": \"20260602\",\n      \"trade_date\": \"20260602\",\n      \"上涨\": 1543.0,\n      \"涨停\": 98.0,\n      \"下跌\": 3876.0,\n      \"跌停\": 18.0,\n      \"平盘\": 88.0,\n      \"活跃度\": 28.47,\n      \"情绪值\": 28.47,\n      \"成交额\": 2812849119.643,\n      \"融资净买入\": -8860807257.0,\n      \"全市场换手率\": 2.6789\n    },\n    {\n      \"日期\": \"20260603\",\n      \"trade_date\": \"20260603\",\n      \"上涨\": 1713.0,\n      \"涨停\": 82.0,\n      \"下跌\": 3727.0,\n      \"跌停\": 30.0,\n      \"平盘\": 71.0,\n      \"活跃度\": 31.25,\n      \"情绪值\": 31.25,\n      \"成交额\": 3153124584.033,\n      \"融资净买入\": 141428736.0,\n      \"全市场换手率\": 2.9945\n    },\n    {\n      \"日期\": \"20260604\",\n      \"trade_date\": \"20260604\",\n      \"上涨\": 1344.0,\n      \"涨停\": 92.0,\n      \"下跌\": 4121.0,\n      \"跌停\": 36.0,\n      \"平盘\": 46.0,\n      \"活跃度\": 24.69,\n      \"情绪值\": 24.69,\n      \"成交额\": 2779163742.118,\n      \"融资净买入\": 7286698347.0,\n      \"全市场换手率\": 2.6562\n    },\n    {\n      \"日期\": \"20260605\",\n      \"trade_date\": \"20260605\",\n      \"上涨\": 3277.0,\n      \"涨停\": 87.0,\n      \"下跌\": 2113.0,\n      \"跌停\": 18.0,\n      \"平盘\": 124.0,\n      \"活跃度\": 59.36,\n      \"情绪值\": 59.36,\n      \"成交额\": 3100690304.725,\n      \"融资净买入\": 5357742867.0,\n      \"全市场换手率\": 2.9904\n    },\n    {\n      \"日期\": \"20260608\",\n      \"trade_date\": \"20260608\",\n      \"上涨\": 899.0,\n      \"涨停\": 63.0,\n      \"下跌\": 4591.0,\n      \"跌停\": 56.0,\n      \"平盘\": 25.0,\n      \"活跃度\": 16.44,\n      \"情绪值\": 16.44,\n      \"成交额\": 2823428977.056,\n      \"融资净买入\": -15241982335.0,\n      \"全市场换手率\": 2.7858\n    },\n    {\n      \"日期\": \"20260609\",\n      \"trade_date\": \"20260609\",\n      \"上涨\": 3322.0,\n      \"涨停\": 144.0,\n      \"下跌\": 2049.0,\n      \"跌停\": 19.0,\n      \"平盘\": 144.0,\n      \"活跃度\": 60.34,\n      \"情绪值\": 60.34,\n      \"成交额\": 2666732928.5,\n      \"融资净买入\": -24533268697.0,\n      \"全市场换手率\": 2.5857\n    },\n    {\n      \"日期\": \"20260610\",\n      \"trade_date\": \"20260610\",\n      \"上涨\": 1557.0,\n      \"涨停\": 76.0,\n      \"下跌\": 3883.0,\n      \"跌停\": 75.0,\n      \"平盘\": 72.0,\n      \"活跃度\": 27.98,\n      \"情绪值\": 27.98,\n      \"成交额\": 2644143271.072,\n      \"融资净买入\": 2480754508.0,\n      \"全市场换手率\": 2.591\n    },\n    {\n      \"日期\": \"20260611\",\n      \"trade_date\": \"20260611\",\n      \"上涨\": 1370.0,\n      \"涨停\": 80.0,\n      \"下跌\": 4069.0,\n      \"跌停\": 56.0,\n      \"平盘\": 72.0,\n      \"活跃度\": 24.9,\n      \"情绪值\": 24.9,\n      \"成交额\": 2574932584.672,\n      \"融资净买入\": -9275678633.0,\n      \"全市场换手率\": 2.5334\n    },\n    {\n      \"日期\": \"20260612\",\n      \"trade_date\": \"20260612\",\n      \"上涨\": 3923.0,\n      \"涨停\": 105.0,\n      \"下跌\": 1515.0,\n      \"跌停\": 24.0,\n      \"平盘\": 74.0,\n      \"活跃度\": 70.83,\n      \"情绪值\": 70.83,\n      \"成交额\": 3236111011.634,\n      \"融资净买入\": -6365918800.0,\n      \"全市场换手率\": 3.1515\n    },\n    {\n      \"日期\": \"20260615\",\n      \"trade_date\": \"20260615\",\n      \"上涨\": 3905.0,\n      \"涨停\": 165.0,\n      \"下跌\": 1475.0,\n      \"跌停\": 12.0,\n      \"平盘\": 128.0,\n      \"活跃度\": 71.02,\n      \"情绪值\": 71.02,\n      \"成交额\": 3050741533.335,\n      \"融资净买入\": -1573184798.0,\n      \"全市场换手率\": 2.9045\n    },\n    {\n      \"日期\": \"20260616\",\n      \"trade_date\": \"20260616\",\n      \"上涨\": 2730.0,\n      \"涨停\": 141.0,\n      \"下跌\": 2677.0,\n      \"跌停\": 11.0,\n      \"平盘\": 106.0,\n      \"活跃度\": 49.96,\n      \"情绪值\": 49.96,\n      \"成交额\": 3086346944.355,\n      \"融资净买入\": 22855341512.0,\n      \"全市场换手率\": 2.9255\n    },\n    {\n      \"日期\": \"20260617\",\n      \"trade_date\": \"20260617\",\n      \"上涨\": 1723.0,\n      \"涨停\": 97.0,\n      \"下跌\": 3734.0,\n      \"跌停\": 23.0,\n      \"平盘\": 52.0,\n      \"活跃度\": 31.61,\n      \"情绪值\": 31.61,\n      \"成交额\": 3114039050.055,\n      \"融资净买入\": 25178139438.0,\n      \"全市场换手率\": 2.9377\n    },\n    {\n      \"日期\": \"20260618\",\n      \"trade_date\": \"20260618\",\n      \"上涨\": 2024.0,\n      \"涨停\": 106.0,\n      \"下跌\": 3397.0,\n      \"跌停\": 43.0,\n      \"平盘\": 86.0,\n      \"活跃度\": 36.79,\n      \"情绪值\": 36.79,\n      \"成交额\": 3331719013.167,\n      \"融资净买入\": 26846357257.0,\n      \"全市场换手率\": 3.1454\n    },\n    {\n      \"日期\": \"20260622\",\n      \"trade_date\": \"20260622\",\n      \"上涨\": 2916.0,\n      \"涨停\": 154.0,\n      \"下跌\": 2468.0,\n      \"跌停\": 34.0,\n      \"平盘\": 126.0,\n      \"活跃度\": 52.93,\n      \"情绪值\": 52.93,\n      \"成交额\": 3762103098.947,\n      \"融资净买入\": 11679559860.0,\n      \"全市场换手率\": 3.492\n    },\n    {\n      \"日期\": \"20260623\",\n      \"trade_date\": \"20260623\",\n      \"上涨\": 2765.0,\n      \"涨停\": 125.0,\n      \"下跌\": 2646.0,\n      \"跌停\": 52.0,\n      \"平盘\": 102.0,\n      \"活跃度\": 49.78,\n      \"情绪值\": 49.78,\n      \"成交额\": 3466026692.859,\n      \"融资净买入\": 27914503285.0,\n      \"全市场换手率\": 3.2725\n    },\n    {\n      \"日期\": \"20260624\",\n      \"trade_date\": \"20260624\",\n      \"上涨\": 1433.0,\n      \"涨停\": 106.0,\n      \"下跌\": 4034.0,\n      \"跌停\": 65.0,\n      \"平盘\": 45.0,\n      \"活跃度\": 26.09,\n      \"情绪值\": 26.09,\n      \"成交额\": 3306939189.064,\n      \"融资净买入\": 4977026376.0,\n      \"全市场换手率\": 3.109\n    },\n    {\n      \"日期\": \"20260625\",\n      \"trade_date\": \"20260625\",\n      \"上涨\": 1232.0,\n      \"涨停\": 96.0,\n      \"下跌\": 4229.0,\n      \"跌停\": 91.0,\n      \"平盘\": 50.0,\n      \"活跃度\": 22.3,\n      \"情绪值\": 22.3,\n      \"成交额\": 3618944417.258,\n      \"融资净买入\": 13822124193.0,\n      \"全市场换手率\": 3.3879\n    },\n    {\n      \"日期\": \"20260626\",\n      \"trade_date\": \"20260626\",\n      \"上涨\": 792.0,\n      \"涨停\": 74.0,\n      \"下跌\": 4676.0,\n      \"跌停\": 47.0,\n      \"平盘\": 45.0,\n      \"活跃度\": 14.69,\n      \"情绪值\": 14.69,\n      \"成交额\": 3575391121.448,\n      \"融资净买入\": 17652309298.0,\n      \"全市场换手率\": 3.4351\n    }\n  ],\n  \"series\": {\n    \"上涨\": [\n      {\n        \"trade_date\": \"20251114\",\n        \"date\": \"20251114\",\n        \"value\": 1961.0\n      },\n      {\n        \"trade_date\": \"20251117\",\n        \"date\": \"20251117\",\n        \"value\": 2584.0\n      },\n      {\n        \"trade_date\": \"20251118\",\n        \"date\": \"20251118\",\n        \"value\": 1278.0\n      },\n      {\n        \"trade_date\": \"20251119\",\n        \"date\": \"20251119\",\n        \"value\": 1200.0\n      },\n      {\n        \"trade_date\": \"20251120\",\n        \"date\": \"20251120\",\n        \"value\": 1453.0\n      },\n      {\n        \"trade_date\": \"20251121\",\n        \"date\": \"20251121\",\n        \"value\": 354.0\n      },\n      {\n        \"trade_date\": \"20251124\",\n        \"date\": \"20251124\",\n        \"value\": 4228.0\n      },\n      {\n        \"trade_date\": \"20251125\",\n        \"date\": \"20251125\",\n        \"value\": 4300.0\n      },\n      {\n        \"trade_date\": \"20251126\",\n        \"date\": \"20251126\",\n        \"value\": 1692.0\n      },\n      {\n        \"trade_date\": \"20251127\",\n        \"date\": \"20251127\",\n        \"value\": 2790.0\n      },\n      {\n        \"trade_date\": \"20251128\",\n        \"date\": \"20251128\",\n        \"value\": 4122.0\n      },\n      {\n        \"trade_date\": \"20251201\",\n        \"date\": \"20251201\",\n        \"value\": 3398.0\n      },\n      {\n        \"trade_date\": \"20251202\",\n        \"date\": \"20251202\",\n        \"value\": 1544.0\n      },\n      {\n        \"trade_date\": \"20251203\",\n        \"date\": \"20251203\",\n        \"value\": 1443.0\n      },\n      {\n        \"trade_date\": \"20251204\",\n        \"date\": \"20251204\",\n        \"value\": 1455.0\n      },\n      {\n        \"trade_date\": \"20251205\",\n        \"date\": \"20251205\",\n        \"value\": 4387.0\n      },\n      {\n        \"trade_date\": \"20251208\",\n        \"date\": \"20251208\",\n        \"value\": 3409.0\n      },\n      {\n        \"trade_date\": \"20251209\",\n        \"date\": \"20251209\",\n        \"value\": 1308.0\n      },\n      {\n        \"trade_date\": \"20251210\",\n        \"date\": \"20251210\",\n        \"value\": 2435.0\n      },\n      {\n        \"trade_date\": \"20251211\",\n        \"date\": \"20251211\",\n        \"value\": 1033.0\n      },\n      {\n        \"trade_date\": \"20251212\",\n        \"date\": \"20251212\",\n        \"value\": 2683.0\n      },\n      {\n        \"trade_date\": \"20251215\",\n        \"date\": \"20251215\",\n        \"value\": 2314.0\n      },\n      {\n        \"trade_date\": \"20251216\",\n        \"date\": \"20251216\",\n        \"value\": 1091.0\n      },\n      {\n        \"trade_date\": \"20251217\",\n        \"date\": \"20251217\",\n        \"value\": 3626.0\n      },\n      {\n        \"trade_date\": \"20251218\",\n        \"date\": \"20251218\",\n        \"value\": 2845.0\n      },\n      {\n        \"trade_date\": \"20251219\",\n        \"date\": \"20251219\",\n        \"value\": 4477.0\n      },\n      {\n        \"trade_date\": \"20251222\",\n        \"date\": \"20251222\",\n        \"value\": 2984.0\n      },\n      {\n        \"trade_date\": \"20251223\",\n        \"date\": \"20251223\",\n        \"value\": 1512.0\n      },\n      {\n        \"trade_date\": \"20251224\",\n        \"date\": \"20251224\",\n        \"value\": 4128.0\n      },\n      {\n        \"trade_date\": \"20251226\",\n        \"date\": \"20251226\",\n        \"value\": 1866.0\n      },\n      {\n        \"trade_date\": \"20251229\",\n        \"date\": \"20251229\",\n        \"value\": 1995.0\n      },\n      {\n        \"trade_date\": \"20251230\",\n        \"date\": \"20251230\",\n        \"value\": 1840.0\n      },\n      {\n        \"trade_date\": \"20251231\",\n        \"date\": \"20251231\",\n        \"value\": 2474.0\n      },\n      {\n        \"trade_date\": \"20260105\",\n        \"date\": \"20260105\",\n        \"value\": 4185.0\n      },\n      {\n        \"trade_date\": \"20260106\",\n        \"date\": \"20260106\",\n        \"value\": 4108.0\n      },\n      {\n        \"trade_date\": \"20260107\",\n        \"date\": \"20260107\",\n        \"value\": 2173.0\n      },\n      {\n        \"trade_date\": \"20260108\",\n        \"date\": \"20260108\",\n        \"value\": 3731.0\n      },\n      {\n        \"trade_date\": \"20260109\",\n        \"date\": \"20260109\",\n        \"value\": 3920.0\n      },\n      {\n        \"trade_date\": \"20260112\",\n        \"date\": \"20260112\",\n        \"value\": 4144.0\n      },\n      {\n        \"trade_date\": \"20260113\",\n        \"date\": \"20260113\",\n        \"value\": 1622.0\n      },\n      {\n        \"trade_date\": \"20260114\",\n        \"date\": \"20260114\",\n        \"value\": 2747.0\n      },\n      {\n        \"trade_date\": \"20260115\",\n        \"date\": \"20260115\",\n        \"value\": 2230.0\n      },\n      {\n        \"trade_date\": \"20260116\",\n        \"date\": \"20260116\",\n        \"value\": 2371.0\n      },\n      {\n        \"trade_date\": \"20260119\",\n        \"date\": \"20260119\",\n        \"value\": 3527.0\n      },\n      {\n        \"trade_date\": \"20260120\",\n        \"date\": \"20260120\",\n        \"value\": 2233.0\n      },\n      {\n        \"trade_date\": \"20260121\",\n        \"date\": \"20260121\",\n        \"value\": 3096.0\n      },\n      {\n        \"trade_date\": \"20260122\",\n        \"date\": \"20260122\",\n        \"value\": 3577.0\n      },\n      {\n        \"trade_date\": \"20260123\",\n        \"date\": \"20260123\",\n        \"value\": 3941.0\n      },\n      {\n        \"trade_date\": \"20260126\",\n        \"date\": \"20260126\",\n        \"value\": 1604.0\n      },\n      {\n        \"trade_date\": \"20260127\",\n        \"date\": \"20260127\",\n        \"value\": 1928.0\n      },\n      {\n        \"trade_date\": \"20260128\",\n        \"date\": \"20260128\",\n        \"value\": 1739.0\n      },\n      {\n        \"trade_date\": \"20260129\",\n        \"date\": \"20260129\",\n        \"value\": 1803.0\n      },\n      {\n        \"trade_date\": \"20260130\",\n        \"date\": \"20260130\",\n        \"value\": 2453.0\n      },\n      {\n        \"trade_date\": \"20260202\",\n        \"date\": \"20260202\",\n        \"value\": 771.0\n      },\n      {\n        \"trade_date\": \"20260203\",\n        \"date\": \"20260203\",\n        \"value\": 4856.0\n      },\n      {\n        \"trade_date\": \"20260204\",\n        \"date\": \"20260204\",\n        \"value\": 3254.0\n      },\n      {\n        \"trade_date\": \"20260205\",\n        \"date\": \"20260205\",\n        \"value\": 1618.0\n      },\n      {\n        \"trade_date\": \"20260206\",\n        \"date\": \"20260206\",\n        \"value\": 2749.0\n      },\n      {\n        \"trade_date\": \"20260209\",\n        \"date\": \"20260209\",\n        \"value\": 4612.0\n      },\n      {\n        \"trade_date\": \"20260210\",\n        \"date\": \"20260210\",\n        \"value\": 2195.0\n      },\n      {\n        \"trade_date\": \"20260211\",\n        \"date\": \"20260211\",\n        \"value\": 2050.0\n      },\n      {\n        \"trade_date\": \"20260212\",\n        \"date\": \"20260212\",\n        \"value\": 2108.0\n      },\n      {\n        \"trade_date\": \"20260213\",\n        \"date\": \"20260213\",\n        \"value\": 1540.0\n      },\n      {\n        \"trade_date\": \"20260224\",\n        \"date\": \"20260224\",\n        \"value\": 4006.0\n      },\n      {\n        \"trade_date\": \"20260225\",\n        \"date\": \"20260225\",\n        \"value\": 3748.0\n      },\n      {\n        \"trade_date\": \"20260226\",\n        \"date\": \"20260226\",\n        \"value\": 2485.0\n      },\n      {\n        \"trade_date\": \"20260227\",\n        \"date\": \"20260227\",\n        \"value\": 3271.0\n      },\n      {\n        \"trade_date\": \"20260302\",\n        \"date\": \"20260302\",\n        \"value\": 1142.0\n      },\n      {\n        \"trade_date\": \"20260303\",\n        \"date\": \"20260303\",\n        \"value\": 643.0\n      },\n      {\n        \"trade_date\": \"20260304\",\n        \"date\": \"20260304\",\n        \"value\": 1745.0\n      },\n      {\n        \"trade_date\": \"20260305\",\n        \"date\": \"20260305\",\n        \"value\": 4079.0\n      },\n      {\n        \"trade_date\": \"20260306\",\n        \"date\": \"20260306\",\n        \"value\": 4260.0\n      },\n      {\n        \"trade_date\": \"20260309\",\n        \"date\": \"20260309\",\n        \"value\": 1423.0\n      },\n      {\n        \"trade_date\": \"20260310\",\n        \"date\": \"20260310\",\n        \"value\": 4536.0\n      },\n      {\n        \"trade_date\": \"20260311\",\n        \"date\": \"20260311\",\n        \"value\": 2060.0\n      },\n      {\n        \"trade_date\": \"20260312\",\n        \"date\": \"20260312\",\n        \"value\": 1494.0\n      },\n      {\n        \"trade_date\": \"20260313\",\n        \"date\": \"20260313\",\n        \"value\": 1502.0\n      },\n      {\n        \"trade_date\": \"20260316\",\n        \"date\": \"20260316\",\n        \"value\": 2843.0\n      },\n      {\n        \"trade_date\": \"20260317\",\n        \"date\": \"20260317\",\n        \"value\": 867.0\n      },\n      {\n        \"trade_date\": \"20260318\",\n        \"date\": \"20260318\",\n        \"value\": 3554.0\n      },\n      {\n        \"trade_date\": \"20260319\",\n        \"date\": \"20260319\",\n        \"value\": 505.0\n      },\n      {\n        \"trade_date\": \"20260320\",\n        \"date\": \"20260320\",\n        \"value\": 662.0\n      },\n      {\n        \"trade_date\": \"20260323\",\n        \"date\": \"20260323\",\n        \"value\": 305.0\n      },\n      {\n        \"trade_date\": \"20260324\",\n        \"date\": \"20260324\",\n        \"value\": 5136.0\n      },\n      {\n        \"trade_date\": \"20260325\",\n        \"date\": \"20260325\",\n        \"value\": 4874.0\n      },\n      {\n        \"trade_date\": \"20260326\",\n        \"date\": \"20260326\",\n        \"value\n\nFile v2.0.2:references/methodology/catalyst_subline_mining.md\n\n# 催化与细分线路挖掘\n\n只在临时主题映射完成、统计脚本运行且模型已锁定量价星级后读取本文件。它增强主线解释力，不参与 ★/★★/★★★ 评级。\n\n## 1. 搜索范围与时间纪律\n\n- 只覆盖当日已由量价锁定的 ★★/★★★ 主线。★ 级方向不搜索、不推演，也不进入 3.2。\n- 每个方向最多发出 3 组查询、每组最多保留 6 条结果。先查即时事件，再查已公开的短中期节点；只对最值得验证的 1–2 条细分线路做二级搜索。\n- 即时事件的发布日期窗口为交易日 `D-7` 至 `D`。\n- 未来催化只使用 `D` 当日及以前已经公开的资料；可回看 `D-180` 至 `D`，提取发生在 `D` 后 `30 天内`、`1–3 个月`、`3–6 个月` 的明确节点。\n- 历史复盘必须用绝对起止日期过滤发布日期。`published_date > D` 的来源一律剔除；无法确认发布日期的材料不得支撑历史时点的强结论。\n- 搜索失败或无可信结果时保留错误并写“未检索到明确催化”，不得从股价异动倒推新闻。\n\n查询按三层组织，按需停止：\n\n1. `主题 + 日期 + 公告/政策/试验/订单/扩产/IPO`，确认发生了什么。\n2. `事件主体 + 产能/资本开支/供需/技术路线 + 时间表`，确认改变了哪个产业变量。\n3. `候选细分环节 + 瓶颈/国产化/材料/设备/验证/放量`，验证传导与反证。\n\n`module3_theme_map.json` 由模型生成，最小契约如下；脚本只校验成员并聚合统计，不替模型归类：\n\n```json\n{\n  \"asof\": \"YYYY-MM-DD\",\n  \"themes\": [\n    {\n      \"name\": \"临时主题名\",\n      \"stars\": null,\n      \"members\": [\"000001.SZ\"],\n      \"sublines\": [\n        {\"name\": \"候选细分线路\", \"members\": [\"000001.SZ\"]}\n      ]\n    }\n  ]\n}\n```\n\n首次映射时 `stars` 必须为 `null`。统计脚本完成后，模型只根据量价 rubric 将其写为 `1/2/3`，分别对应 ★/★★/★★★；搜索开始前不得仍为 `null`。父主题成交额门槛只读取 `share_of_money_pool_pct`；`share_of_parent_theme_pct` 只供细分线路使用。统计脚本不使用星级字段下结论。所有 `members` 必须属于当日 M3 标准强势池，且同一股票不得跨父主题重复归类；细分线路成员还必须属于对应父主题。该标准池默认按成交额截取前 `sample_limit`，所以盘面验证不冒充完整行业广度。搜索和知识证据不能回写或改动已锁定的 `stars` 或成员映射。\n\n临时主题映射完成后运行统计脚本；模型据统计写回并锁定 `stars`，然后才可搜索。若锁星后需要调整成员，须停止搜索、重跑统计并重新锁星，不能让统计与映射错配：\n\n```bash\npython3 scripts/theme_group_stats.py \\\n  --context reports/module_context_YYYYMMDD/module3_money_effect.json \\\n  --mapping reports/module_context_YYYYMMDD/module3_theme_map.json \\\n  --output reports/module_context_YYYYMMDD/module3_theme_stats.json\n```\n\n历史日期搜索用绝对日期窗口；为覆盖 D 当日，API 的 `end-date` 可给 D+1，但模型仍必须剔除 `published_date > D` 的结果：\n\n```bash\npython3 scripts/web_search.py \"主题 事件 YYYY-MM-DD\" --topic news \\\n  --start-date D-7 --end-date D+1 --max-results 6\npython3 scripts/web_search.py \"事件主体 扩产 资本开支 技术路线\" \\\n  --start-date D-180 --end-date D+1 --max-results 6\n```\n\n命令中的 `D-7 / D-180 / D+1` 必须先换算成真实 `YYYY-MM-DD`，不把字面占位符传给脚本。\n\n## 2. 信源与证据分层\n\n信源优先级为：官方或监管文件、公司公告/官网和交易所披露 > 权威媒体 > 高质量行业研究 > 聚合或转载。尽量用一手来源；单一低权重来源不能支持“产业逻辑强”。\n\n把输入压缩成宿主无关的 `module3_enrichment_pack.json`。每条只保留：主题、标题、URL、发布日期、事件日期或窗口、可核事实、来源层级、查询错误；可选知识证据只保留来源标识、可核事实、相邻产业环节和待核问题。Core Skill 不假设知识库产品、目录、图谱类型或绝对路径。\n\n报告中严格区分：\n\n- **事实**：来源明确的事件、日期、规划或数据，附 Markdown 链接和发布日期。\n- **推演**：模型据此判断的产业传导，用“可能、若……则……”等研究语言表达。\n- **盘面验证**：只引用 M3 强势池与 `module3_theme_stats.json` 的成员、成交额、相对收益和持续放量证据。\n\n宿主知识或产业链图谱只用于发现相邻环节和提出待核问题；最终事实必须回到其真相源或外部一手来源。没有相关节点就跳过，不能把某一产业图谱生搬到其他行业。\n\n## 3. 产业推演链\n\n逐条完成：\n\n`已确认事件 → 需求/供给/产能/资本开支/技术路线变量 → 新瓶颈或利润池迁移 → 相邻产业环节 → 细分线路 → 当日 M3 盘面验证 → 反证条件`\n\n只有前一箭头有事实或清楚标记为假设时，才能继续下一箭头。优先选择能解释新增订单、验证周期、扩产节奏、供给约束或价值量变化的线路；仅有名称联想、业务映射未核实或传导层级过长的方向不要保留。\n\n每条主线最多留下 1–3 条细分线路。排序时依次看：传导是否直接、变化是否可验证、A 股映射是否清楚、当日是否已有量价响应。不要为了覆盖上下游而铺满产业链。\n\n## 4. 双轴判断\n\n两根轴互不替代：\n\n- **产业逻辑**\n  - `强`：一手来源或至少两个独立可信来源支持，事件对产业变量的影响直接，关键业务映射可核。\n  - `中`：事件可信且方向合理，但传导仍依赖一项关键假设、节奏或映射待进一步验证。\n  - `线索`：来源、业务映射或传导链尚不充分，只值得继续跟踪。\n- **盘面验证**（只表示该细分线路在当日 M3 强势池中的确认度，不代表全市场行业广度）\n  - `已确认`：至少 3 个有效成员，且成交额占父主题、5 日相对收益、持续放量等多项证据相互支持。\n  - `萌芽`：已有 1–2 个有效成员或一个容量核心，但扩散不足。\n  - `未确认`：只有产业推演，没有 M3 强势池成员。\n\n产业逻辑强但盘面未确认时，只列为研究线索；盘面有异动但产业逻辑薄弱时，写成事件脉冲或待核映射。两种情况都不能改变 3.1 主线星级。\n\n## 5. 输出纪律\n\n`3.2` 不使用横向大表格。每条二星/三星主线按下列纵向结构输出：\n\n```markdown\n### 主线名称（★★/★★★）\n\n- 事件：写已确认事实、来源和发布日期。\n- 产业变化：说明事件改变了什么变量，以及可能如何传导；推演必须使用条件式语言。\n- 主题分支：\n    - **细分线路名称**\n        - 原因：写传导逻辑，并明确产业逻辑为强/中/线索。\n        - 盘面映射股：列 1–5 只属于该细分线路且确实出现在当日 M3 强势池的代表股；没有可靠映射时写“无可靠映射”，不要从名称联想补股。\n        - 盘面验证：写成员数、成交额占父主题、相对收益和持续放量等确认度证据，并标明已确认/萌芽/未确认。\n        - 后续反证：写可观察的事件、产能、验证、订单或量价失效条件。\n```\n\n- 缩进是输出契约：细分线路相对“主题分支”缩进 4 个空格，原因/映射/验证/反证再缩进 4 个空格（合计 8 个），确保 Markdown 和 HTML 都形成真实的三级嵌套列表。\n- 每个事实给可点击来源；不要用外部收评代替 Market Evidence Pack，也不要把搜索摘要写成既成事实。\n- 父主题的事件和产业变化只写一次；各分支只展开自己的因果、映射和验证，避免重复同一段背景。\n- `盘面映射股` 必须来自锁星前已确定的 subline members，搜索后不得新增或改换成员。\n- 只输出 ★★/★★★ 主线；若当日没有二星/三星主线，3.2 直接写“当日无可进行催化与细分线路推演的二星/三星主线”。\n- 后续反证不写买点、卖点、仓位、止损或目标价。\n\nFile v2.0.2:references/methodology/factor_mining.md\n\n# 特征分组 · 量化回溯相对收益因子挖掘\n\n这是一条**按需触发的研究流程**，跟每日盘后日报是两条线——你想挖某个特征分组时才跑，不进日报。\n目标：你提一个特征分组，skill 在分组之上做额外因子挖掘，最终给出**分组中的叠加条件最优解**。\n\n脑/手边界照旧：脚本 `scripts/factor_backtest.py` 只铺确定性证据（命中、6 格前向收益、因子分层、\n单/配对候选叠加条件 + 护栏标记），**不挑\"最优解\"、不下结论**；读证据、选叠加条件、写归因与\ncaveat 是模型的活。\n\n## 一、整条流程（两处人工，其余自动）\n\n1. **你提分组**（人工）：已有内置分组（如 `discount_relaunch` 折扣启动）一句话点名；或全新分组用\n   大白话描述硬条件。\n2. **模型译成规则**（自动，新分组给你确认）：把自然语言翻成 filter spec（见 §五）。\n3. **脚本回放 + 回测 + 铺网格**（自动）：历史回放命中 → 6 格前向相对收益 → 单/配对叠加网格 + 护栏 →\n   写 `reports/factor_mining_<group>_<asof>.json`。\n4. **模型选最优叠加解**（自动）：读 JSON，按 §四 rubric 选定叠加条件，写报告。\n5. **你决定要不要用**（人工）：当研究参考，或手动把叠加条件提级成分组生产阈值——脚本不替你改生产。\n\n## 二、回测口径（脚本固定）\n\n- **信号日 T**：个股命中分组那天。\n- **进场**：T+1 开盘 / T+1 尾盘（收盘）两种；**持有**：到 T+3 / T+5 / T+10 收盘 → 共 **6 格**。\n- **价格**：后复权（adj_factor），中性化除权除息。\n- **相对收益 = 个股收益 − 匹配基准同窗口收益**。基准按**板块优先、主板内再按市值档**分配：\n\n  | 个股归属 | 匹配基准 | 代码 |\n  |---|---|---|\n  | 科创板 | 科创50 | `000688.SH` |\n  | 创业板 | 创业板指 | `399006.SZ` |\n  | 主板 · 大盘（≥300亿） | 沪深300 | `sh.000300` |\n  | 主板 · 中盘（80–300亿） | 中证500 | `sh.000905` |\n  | 主板 · 小盘（<80亿） | 中证1000 / 国证2000 | `sh.000852` / `sz.399303` |\n\n  沪深300 另作\"宽基对照\"列（`relo_k_w` / `relc_k_w`），方便和旧的宽基口径对得上。\n\n- 每格输出 N、均值、**中位数**（识别右偏）、胜率、相对均值与相对胜率。\n\n## 三、因子挖掘（叠加条件搜索）\n\n- **候选因子**取自 `add_numeric_features` + `daily_basic` 派生：换手率、量比、总市值、当日涨幅、\n  T+1 高开（`t1_gap`）、前高折扣、120 日位置、5 日前收益、放量倍数等（见脚本 `FACTOR_BINS`）。\n- **跨技能因子（v1，见 `factor_providers.py`）**：另并入三个\"信号日当日可知\"的确定性因子——\n  `days_since_forecast_ann`（业绩预告新鲜度）、`forecast_cum_yoy_med`（预告累计同比中值）、\n  `in_active_theme`（当日是否在\"强势在场\"主线内，按 theme 台账成员名匹配）。它们全部 as-of 对齐\n  （预告只取 `first_ann_date ≤ T`、theme 只用 T 当日、台账窗口外为 null），**禁用 `forecast_verdict.tier`\n  这类模型事后判断值**。读证据时看 `meta.factor_coverage`：null 占比 > 60% 的因子**只进 `factor_layers`\n  分层观察、不进叠加网格**（覆盖太薄的子集挑出的条件不可信）；进网格的 provider 因子叠加门槛\n  `min_n` 抬到 ≥25。theme 成员是 under-inclusive 样本，命中=1 可信、未命中=0 只表示\"不在这份样本里\"。\n- **不做连续阈值网格扫描**，只在经济上有意义的少量切点（分档边界）上切，压住多重检验。\n- **单因子**：每个因子按切点生成 `>=` / `<` 两类候选，算 G∧c 表现。\n- **配对（深度≤2）**：取每个因子最优的单条件，跨不同因子两两组合——专门捕捉\"单看都一般、合起来强\"的组合。\n- 不再加深到三因子：样本小，三层组合几乎必然过拟合。\n\n## 四、护栏与\"最优解\"怎么选（模型的核心判断）\n\n**脚本的护栏**（`passes_guardrails` 为真才算过闸）：\n\n- 保留样本 ≥ `--min-n`；前后两个时间半区各 ≥ 8 且**均为正**；\n- 确实超过基础组（`delta_vs_base` > 0）；\n- **弱半区 / 强半区 ≥ 0.3**（`oos_balance`）——边际不能全堆在某一段行情，这是最容易识破\"假因子\"的一条。\n\n**模型在过闸候选里选最优解时，按优先级权衡：**\n\n1. **稳健 > 大 Δ**：`oos_balance` 高、前后半区都厚的，优先于 Δ 大但偏某一段的。一个 Δ+3 但\n   `oos_balance` 0.31 的，往往不如 Δ+1.5 但 0.6 的可信。\n2. **经济逻辑**：能讲通的因子（反转组要真实换手、不追高；强势组低换手、别接力）比纯统计巧合更可信。\n   留意不同性质的组方向可能相反——折扣启动（反转）偏高换手，容量上涨（强势）偏低换手。\n3. **同看中位数与胜率，不只看均值**：均值常被少数大赢家抬高；胜率 ≤50% 而均值为正多半是右偏，要点明。\n4. **深度封顶 2**：单因子能解决就别叠两个；叠两个要确认 N 没塌、`oos_balance` 没垮。\n5. **选目标格**：默认 T+1尾盘→T+5；但快动量组可选 T+3、底部反包组可选 T+10——6 格都在证据里，按组性质选并说明。\n\n**最终输出**一句可落地的话，例如「折扣启动 ∧ 换手率≥10% → T+5 相对同类基准 +X%、胜率 Y%、N=Z、前后半区均正」，\n并**老实写 caveat**：样本窗口、单一市场环境、均值右偏、T+10 样本更薄——这是证据扫描下的假设，不是已验证因子。\n\n## 五、运行\n\n```bash\n# 内置折扣启动（多日序列组，复用生产函数，语义同线上）\npython3 scripts/factor_backtest.py --group discount_relaunch [--min-n 15] [--entry close --horizon 5]\n\n# 自定义分组（单日特征阈值组，用 spec）\npython3 scripts/factor_backtest.py --group custom --spec my_group.json [--start YYYYMMDD --end YYYYMMDD]\n```\n\ncustom 的 spec（单日特征阈值条件；含价量条件会自动用作廉价预筛压缩计算面）：\n\n```json\n{\n  \"name\": \"容量上涨\",\n  \"warmup\": 120,\n  \"conditions\": [\n    [\"total_mv_100m_yuan\", \">\", 70],\n    [\"amount_100m\", \">\", 5],\n    [\"pct_chg\", \">\", 8]\n  ],\n  \"exclude_st\": true,\n  \"exclude_bj\": true\n}\n```\n\n条件列名可用：`total_mv_100m_yuan` / `amount_100m` / `pct_chg` / `turnover_rate` / `volume_ratio` /\n`drawdown_120_high` / `close_position_120d` / `pre_ret_5d` / `amount_vs_prev5_ratio` / `ret_5d` / `ret_20d` 等\n（`add_numeric_features` 与 daily_basic 派生列）。操作符：`> >= < <= ==`。\n**折扣这类多日序列条件（前高折扣、缩量再放量、月线趋势）不能用 spec 表达，走内置分组。**\n\n常用参数：`--min-n` 叠加条件最小保留样本（小样本时调低，如 15）；`--entry/--horizon` 选目标格；\n`--skip-backfill` 仅用已缓存 daily_basic 日做快速冒烟；`--refresh-basic` 整窗重取 daily_basic 修脏缓存。\n\n## 六、数据前置\n\n`daily_basic`（换手/市值/量比）历史在 PG 里常常只缓存了零星几天。脚本默认会把**信号窗口**内缺失的\n`daily_basic` 从 Tushare 回补入库（需要 `TUSHARE_TOKEN`）。所以首次跑某个分组、或跑较长窗口时会先回补，\n之后命中缓存就快。后复权可用区间受 `stock_adj_factor` 起始约束；折扣启动还要完整 200 日历史，信号只\n落在数据最近端，窗口与样本偏小——这正是护栏与诚实 caveat 是骨架的原因。\n\n## 七、证据包 JSON 结构（模型读这个）\n\n产物**分两个文件**（决策包纪律：给模型读的 JSON 控制在 ~150KB 内，逐条明细单独落盘）：\n\n**决策包 `reports/factor_mining_<group>_<asof>.json`（模型默认只读这个）：**\n\n- `meta`：分组、asof、目标格、基准方案、护栏定义、数据覆盖、caveats、命中计数；`detail_file` 指向明细文件名。\n- `base_cells`：基础组 6 格（绝对 + 相对匹配基准的均值/中位/胜率）。\n- `factor_layers`：各因子分层表 + 是否单调（单调因子最可信）。\n- `overlay_singles` / `overlay_pairs`：候选叠加条件，每条带 `obj_mean` / `delta_vs_base` / `win` /\n  `oos_first_mean` / `oos_second_mean` / `oos_balance` / `passes_guardrails`。\n- `signals_summary`：命中信号的分布（`total` / `unique_stocks` / `by_month` / `by_board`），替代整列 dump。\n- `examples`：**每条过闸叠加条件**配 ≤3 条命中例证（按目标格收益取高/中/低分布，非只挑赢家），\n  每条含 `ts_code` / `name` / `signal_date` / 目标格收益 + 关键因子值。写报告举例直接用这里。\n\n**明细包 `reports/factor_mining_<group>_<asof>_detail.json`（模型默认不读，只在需要更多个股或交叉核对时按需读）：**\n\n- `signals`：逐 (个股, 信号日) 明细（特征值 + 6 格收益）。整列在此，供深挖归因与人工核对。\n\n## 八、报告写法（模型产出 `reports/factor_mining_<group>_<asof>.md`）\n\n按文风默认（讲人话、同项用 list）：\n\n1. **回测设置**：分组定义、窗口、样本量、基准方案、诚实 caveat（开门见山讲清这是单一环境的证据扫描）。\n2. **基础组怎么样**：6 格里挑目标格说边际厚薄，点出均值 vs 中位的右偏。\n3. **因子网格**：哪些单调因子有效、方向与经济解释；高 Δ 但不稳的要点名\"偏某段行情\"。\n4. **叠加条件最优解**：给一句可落地的叠加条件 + 它的目标格表现 + 为什么是它（稳健/逻辑），并列出次选与不取的理由。\n5. **个股例子**：从决策包 `examples` 里举 2–3 只印证（每条过闸条件已附高/中/低例证）；要更多个股或做交叉核对时再读 `_detail.json` 的 `signals`。\n6. 不出买卖建议、不出仓位/止损/目标价。\n\nFile v2.0.2:references/methodology/module1_trend.md\n\n# 模块 1：盘面趋势\n\n使用 `module1_market_trend.json`。\n\n只分析：\n\n- 上证指数\n- 创业板指数\n- 科创50\n- Baostock 风格代理指数\n- `market.trend.sentiment`\n- `market.temperature`\n\n不要加入融资、创业板 PE、外围资产或新闻解释；市场风格只用 `market.trend.market_style` 里的 Baostock 指数证据，不临时引入别的风格口径。\n\n分析框架：\n\n1. 情绪趋势：结合量能温度、全市场换手率、情绪温度和广度温度。若情绪历史不可用，只保留当日盘面快照。\n2. 指数趋势：用一张紧凑表对照上证、创业板、科创50的趋势阶段、量价质量、均线位置和相对强弱，再用一段话判断三者共振还是分化。\n3. 市场风格：用 Baostock 代理指数判断容量抱团、微盘扩散、红利防守、成长修复、风格均衡或风格混乱；证据不足时不强行定性。\n4. 盘面定性：明确写成指数、风格与情绪的共振、背离或分化。\n\n写作要求：\n\n- 不要把单日涨跌写成趋势。\n- 指数趋势必须合并在 `1.2 指数趋势`，不要拆成上证、创业板、科创50三个独立小节。表格承载核心数值，段落只解释最关键的共振或分化。\n- 市场风格必须说明代理口径：Baostock 指数字典没有直接的微盘指数，国证2000只是小微盘代理。\n- 市场风格只根据代表指数的相对收益、均线位置和成交额相对 20 日均量判断，不写成行业或题材归因。\n- `指数趋势判断` 和 `市场风格判断` 两个总结段落必须用 `==...==` 包裹，和 `盘面定性` 一样渲染为高亮提示块。\n- 指数上涨但缩量时，写“反弹质量待确认”。\n- 成交额与全市场换手率同步抬升、上涨家数同步改善时，写“良性放量加速，风险中性偏高”。\n- 全市场换手率上升但上涨/下跌家数转弱时，写“换手加速但承接分化，风险升温”。\n- 指数强但广度/情绪弱时，写“指数掩盖分化”。\n- 情绪先修复但指数未确认时，写“情绪先行修复但指数尚未确认”。\n\nFile v2.0.2:references/methodology/module2_concentration.md\n\n# 模块 2：成交额集中度\n\n使用 `module2_concentration.json`。\n\n目标：说明市场成交额是集中在少数前排股票，还是相对均衡分布。\n\n读取：\n\n- Top10/20/50/100 成交额占比\n- 相对前一交易日变化\n- 近 10 日 Top50 集中度趋势\n- 成交额前排样本\n\n写作要求：\n\n- Top10/20 集中度越高，说明拥挤度越高、市场越窄。\n- Top50 集中度连续抬升，可能说明共识正在形成。\n- 成交额前排股票只能作为证据，不能机械当作主题分类器。\n- 只有当前排样本能支撑拥挤度判断时，才点名 1-3 个例子。\n\nFile v2.0.2:references/methodology/module3_money_effect.md\n\n# 模块 3：赚钱效应与上涨主线\n\n使用 `module3_money_effect.json`。候选池为 `pct_chg >= 7%` 且成交额 `>= 2 亿`，按成交额降序排列。\n\n## 第一阶段：先映射，再统计并锁星\n\n1. 概括候选数、合计成交额、全市场成交额占比、收益中位数和涨停数。\n2. 按业务事实、产品环节和同步量价行为归纳临时主题。可进入主线评级的父主题至少 3 只；只有 1–2 只有效成员的方向可以作为 ★ 级早期方向保留，但因扩散不足不得评为 ★★/★★★。同一股票只能归入一个父主题，避免重复放大成交额占比；细分线路仍可在该父主题内交叉。主题分组只作为内部判断，不输出独立陈列表。不得通过合并缺少共同业务环节或同步催化的宽泛主题，人为抬高成交额占比。\n3. 先写 `stars: null` 的 `module3_theme_map.json`，保存父主题成员及候选细分成员映射。成员必须属于 M3 标准强势池；默认池按成交额截取前 `sample_limit`（通常 80 只），因此所有广度和占比只代表该标准池，不代表完整行业或全市场广度。\n4. 运行 `theme_group_stats.py`，再由模型读取确定性统计，严格按下列规则写回 `stars: 1/2/3` 并锁定。这里“组成交额占比”只读取父主题的 `share_of_money_pool_pct`，不得误用父主题恒为 100% 的 `share_of_parent_theme_pct`；后者只用于细分线路相对父主题的验证：\n   - ★★★：`share_of_money_pool_pct >= 30%`，5 日涨幅中位 > 0，5 日相对收益中位 > 0，连续放量天数中位 >= 2。\n   - ★★：满足 4 条中的 3 条。\n   - ★：满足 2 条或更少，或父主题只有 1–2 只有效成员。\n5. 主线表只展示 ★★ 与 ★★★ 主题；★ 主题只参与“资金轮动/局部异动”判断。若没有二星或三星主题，写“无二星/三星主线，赚钱效应偏资金轮动”。\n6. 基于代表股的 `close_position_120d`、`drawdown_120_high`、`ret_5d`、`rel_ret_5d`、`sustained_volume_days_5` 判断位置，只写“高位趋势”或“低位启动”；证据不足时默认“高位趋势”。\n\n**硬边界：统计完成后、搜索开始前锁定星级。** IPO、政策、试验成功、扩产、远期空间或任何搜索结果都不能把量价不足的方向升为二星/三星；外部收评也不能替代 Market Evidence Pack 的盘面判断。\n\n锁星后 `module3_theme_map.json` 视为本轮只读。若发现成员归类需要调整，必须先停止搜索，重跑统计并重新锁星；搜索脚本保持纯取数，不承担阶段门禁或主题状态判断。\n\n## 第二阶段：补催化、推演细分线路\n\n在星级锁定后，读取：\n\n- `module3_theme_map.json`：模型归纳的主题与成员；\n- `module3_theme_stats.json`：脚本生成的成员数、成交额占比和量价统计；\n- `module3_enrichment_pack.json`：Web 搜索结果、可选宿主知识证据及查询错误；\n- `references/methodology/catalyst_subline_mining.md`：搜索、事实分层和产业推演细则。\n\n只搜索并推演当日 ★★/★★★ 主线。★ 级方向可以保留在内部量价映射中供“资金轮动”判断，但不搜索、不进入 3.2，也不输出细分线路。每条二星/三星主线最多保留 1–3 条高价值细分线路，二级补充搜索只给最值得验证的 1–2 条。搜索或知识证据缺失不阻断报告，但必须写清证据缺口，不得从涨跌反推事件。\n\n最终按以下顺序输出：\n\n1. `3.1 主线判定`：赚钱效应总览、二星/三星主线表及位置判断；星级只来自第一阶段。\n2. `3.2 催化与细分线路推演`：按主线纵向展开“事件 → 产业变化 → 主题分支”，每条分支分别写原因、盘面映射股、盘面验证和反证条件。\n3. `3.3 主线领导股与弹性股`：只处理二星/三星主线。\n\n## 领导股与弹性股\n\n- 领导股不是涨幅最高股。优先级为：组内成交额厚度 > 市场辨识度 > 可确认的产业链核心地位 > 收盘承接。\n- 弹性股必须属于该主线。优先选择 `elasticity_hint_score` 较高、`turnover_rate` / `amount_ratio_20d` 活跃、`rel_ret_5d` 为正、`close_to_high` 较好的样本。\n- 产业链地位不能由脚本硬判。只能依据可确认的主营、公告、公开业务事实或常识性位置判断；不确定时写“产业链地位待核验”。\n- 每个二星/三星主题最多列领导股 1–3 只、弹性股 1–3 只；证据不足时不要硬凑。\n\n## 写作要求\n\n- 成交额占比是第一门槛；搜索只解释“为何发生、可能传到哪里”，不能改写“今天是否构成主线”。\n- 事实、推演与盘面验证分开表达。产业远期逻辑成立但当日未获盘面确认时，只能写研究线索。\n- 输出清晰的三星领导股名单，供最终聚合做交叉检查；没有三星主线时写“今日无三星主线领导股”。\n- 禁止输出买卖、仓位、止损或目标价建议。\n\nFile v2.0.2:references/methodology/module4_decline.md\n\n# 模块 4：爆量下跌风险\n\n使用 `module4_decline.json`。\n\n候选池：`pct_chg <= -3%`，`amount_ratio_20d >= 2.0`，成交额 `>= 1 亿`，按 `decline_intensity = amount_ratio_20d * abs(pct_chg)` 降序排列。\n\n风险分组必须基于证据：\n\n- 高位抱团瓦解：距 120 日高点回撤较浅，前期强势，今日突然放量崩塌。\n- 业绩雷/事件冲击：单日跌幅大，成交额明显放大。\n- 退潮补跌：5 日已偏弱，今日继续放量下跌。\n- ST/风险股出清：ST/退名称，通常接近跌停。\n- 流动性杀跌：没有清晰叙事，只体现异常卖压。\n- 主线内部分歧：与模块 3 强主题相关，但不一定是代表股本身。\n\n写作要求：\n\n- 不要纳入正常成交的小跌个股。\n- 明确风险是孤立、集中，还是与此前强方向有关。\n- M3/M4 交叉检查在聚合阶段读取 `assembled_checks.json`；本模块不要自行编造最终的主线见顶预警。\n\nFile v2.0.2:references/methodology/module5_feature_groups.md\n\n# 模块 5：特征分组分析\n\n使用 `module5_feature_groups.json`。\n\n模块 5 固定输出四组股票清单：\n\n- 容量上涨：来自 `groups.capacity_up`，要求当天总市值 > 70 亿、成交额 > 5 亿、涨幅 > 8%，并排除北交所与 ST，按涨幅降序输出。\n- 全市场月线平台突破：来自 `groups.monthly_base_breakout`，形态参照雅克科技长底突破。**全市场**（排除北交所/.BJ 与 ST/*ST）。判据是「**当天放量大涨 + 当天日线第一次站上多年箱体上沿**」的事件型信号：① **当天大涨**——当日涨幅 ≥ 7%（`up_threshold`）；② **当天突破**——昨收 `prev_close` < 箱体上沿×(1−容差) ≤ 今收 `close`（`base_top_pivot` = 完整月线、回看约 7 年的最高价；容差默认 2%，因为长底突破常是「大涨日收在前高一线、次日才收上去」，0 容差会因毫厘之差漏掉雅克这类）；③ **横盘长优先、短期也要**——`base_length_months`（pivot 成形月→当月）≥ 3 个月即可入选，**按它降序**（多年长底排前、12 个月内的短底也保留）。当天下跌、或早已站在箱体之上顺势的票一律不算。多年箱体来自 Tushare 前复权月 K（本地仅约一年日线看不到多年底），月线不可用时本组 `available=false` 并给 `reason`。**普跌日里能\"当天放量大涨又恰好当天首破多年箱体\"的票本就稀少，命中很少甚至 0 只属正常，不要硬凑。**\n- 10:30 前涨停：来自 `groups.early_limit_up_1030`，参考 ch-stock 特征分组页，使用 JRJ 涨停池，要求首次封板时间不晚于 10:30、总市值不低于 50 亿，并过滤 ST。\n- 折扣启动：来自 `groups.discount_relaunch`，要求总市值 > 80 亿、成交额 > 5 亿、涨幅 > 7%，且同时满足：\n  - **前高折扣** `discount_after_high`（= 前高之后出现的最低价 ÷ 前高收盘价；前高 = 最近 200 个交易日收盘价最高的那天）落在 0.6~0.85（即自前高最深回撤 15%~40%）；\n  - **最低点新鲜**：上面那个回撤最低点 `low_to_target_days` 须在大涨日前 1~5 个交易日内——即\"刚砸出近期最低就放量反包\"，几周/几个月前的旧坑（如 4 月低点）不算；\n  - **调整缩量再放量**：今日前 5 日均额 ≤ 前 20 日均额 × 0.9（`pre_volume_contraction_ratio`），且当日量相对最近 5 日缩量期 `amount_vs_prev5_ratio` ≥ 2.0（注意是相对前 5 日均额、不是 20 日均量——那几只活跃股前期放过量、20 日基准被抬高，所以改用更贴近的前 5 日基准）；\n  - **长期趋势未破**：`monthly_above_ma10` 为真——当前月收盘站在月线 10 月均线（月末收盘的 10 月 SMA，`monthly_ma10`）之上；月数不足 10 个无法评估者剔除。\n  排除北交所与 ST，按成交额降序输出。它衡量的是\"曾自前高深度回撤（打折）、缩量调整后、近 5 日刚见底就重新放量启动\"的中大盘股；另给 `close_vs_prev_high`（今日收盘 / 前高收盘）作参考，反映现价是否仍处折价位（折扣记录的是回撤最深点，不代表现价仍便宜）。\n\n写作规则：\n\n- 四组各自独立输出股票列表，不做组间横向对比，不写“哪组更强”的排序结论。\n- 每组必须使用 Markdown 表格列出股票；无候选时写“暂无命中”，不要编造近似候选。\n- 10:30 前涨停组如果 `available=false`，写明数据源不可用和 error，不用日涨幅近似替代。\n- 容量上涨组重点引用涨幅、成交额、总市值、换手率和量比；它表达的是“能容纳资金的强上涨”，不是低位启动判断。\n- 全市场月线平台突破组重点引用当日涨幅、昨收 `prev_close` 与今收 `close` 相对箱体上沿 `base_top_pivot` 的关系（昨收在下、今收当天首次站上）、横盘月数 `base_length_months`（越长越好，已降序）、突破幅度 `close_vs_pivot_pct` 与当日量比 `amount_ratio_20d`。**这是「当天放量大涨突破多年箱体」的事件型信号，不是月线持仓型**——所以当天下跌、或早已在箱体之上的票不会出现，普跌日命中很少甚至 0 只属正常，不要硬凑近似候选。**关键：技术形态命中不等于可操作**——模型须对照 3.1 主线表叠加：命中股落在当日 ★★/★★★ 主线内才算主线级突破信号（写明主题名与星级），否则记为「形态命中但暂不在主线」，只作技术观察、不拔高、不归因到主线。横盘越久的长底、首破当天放量越足，质量越高。\n- 10:30 前涨停组重点引用首次封板时间、总市值、成交额、涨幅和开板次数。\n- 折扣启动组重点引用前高折扣（`discount_after_high`，连同 `prev_high_date` 前高日、`prev_high_close` 前高收盘、`post_low` / `post_low_date` 回撤最低价及其日期、`low_to_target_days` 最低点距大涨日交易日数）、现价相对前高 `close_vs_prev_high`、月线趋势（`monthly_above_ma10` / `monthly_ma10`）、缩量比（`pre_volume_contraction_ratio`）、当日相对前 5 日的放量倍数（`amount_vs_prev5_ratio`）、成交额与总市值；可结合 `pre_ret_5d` 判断今日之前是充分调整还是仍在加速——脚本只做硬筛，“回撤是否到位、最低点是否够新鲜、现在是否仍折价、长期趋势是否完好、放量是否可信”由模型判断，必要时点明待验证点。\n\n交叉命中上涨归因：\n\n- 仅当 `overlap_hits` 非空时输出 5.5。\n- 交叉命中是本节重点，必须逐只分析，不只列名单。\n- 归因只基于证据包中的确定性事实和模型对业务/事件的常识归纳，不调用脚本里的 LLM，不写外部新闻已证实之类无法追溯的断言。\n- 归因结构建议为：命中组别 → 量价位置 → 资金行为 → 可能上涨驱动 → 待验证点。\n- 不得输出买入、卖出、仓位、止损、目标价。\n\nArchive v2.0.1: 21 files, 62434 bytes\n\nFiles: reference/market_data.csv (9168b), reference/methodology/module1_trend.md (1497b), reference/methodology/module2_concentration.md (613b), reference/methodology/module3_money_effect.md (1731b), reference/methodology/module4_decline.md (960b), reference/methodology/module5_feature_groups.md (1903b), reference/methodology/module5_low_position.md (2551b), reference/methodology/module6_resilient.md (610b), reference/methodology/output_discipline.md (1745b), reference/report_template.md (11148b), reference/template/section1.md (1295b), reference/template/section2.md (503b), reference/template/section3.md (1330b), reference/template/section4.md (776b), reference/template/section5.md (1323b), reference/template/section6.md (526b), scripts/market_panel.py (149987b), scripts/run_daily_panel.py (7913b), skill-card.md (3070b), SKILL.md (7446b), _meta.json (145b)\n\nFile v2.0.1:SKILL.md\n\n---\nname: tushare-daily-market-sense\ndescription: 基于 Tushare Pro A 股 daily 日线数据生成盘后市场研报的方法论 skill。当用户要求做每日盘面趋势、上证/创业板指数趋势、情绪指数趋势、赚钱效应与上涨主线分析、爆量下跌识别、低位异动/科创板月线突破/10:30前涨停等特征分组分析、指数背离/抗跌股分析、历史某日复盘、基于 daily/daily_basic/涨跌停/指数数据做量化选股观察时，必须优先使用本 skill。本 skill 先生成确定性证据包，再由模型或 Codex/Claude Code 等通用 agent 的 subagent 编排能力按模块撰写；不在脚本中调用 LLM，不提供买卖建议，不按申万、同花顺、东方财富等现成行业/概念口径分组。\nversion: 2.0.1\n---\n\n# Tushare Daily Market Sense\n\n## 目标\n\n基于 Tushare 日线、指数、成交额与本地情绪历史，为 A 股盘后复盘生成结构化研报：盘面趋势、成交额集中度、赚钱效应与上涨主线、爆量下跌风险、特征分组分析、弱指数环境下的抗跌股。\n\n不做单股基本面深度研究、港股/美股/基金/期货/加密分析、分钟级交易决策、自动下单、组合优化或买卖建议。脚本只负责取数、计算、筛选、切分 JSON；主题归纳、风险措辞和研报写作由模型完成。\n\n## 核心理念\n\n成交额优先。所有强弱判断都要有成交额证据：上涨主线按成交额厚度确认，爆量下跌按放量异常与跌幅强度识别，特征分组按命中规则与成交额证据分开呈现，抗跌股要求有至少 1 亿成交额证明资金参与。\n\n主题主线由模型基于业务事实临时归纳，不套现成行业或概念标签。共同性不足时明确写“暂不构成主线”或“资金轮动”。\n\n## 工作流程\n\n1. 确定交易日：解析“今天/最近”或具体日期，默认只使用 `D` 及以前数据；只有用户明确要求后验时才允许 `--allow-future`。\n2. 生成证据包：运行 `scripts/run_daily_panel.py`。脚本会直接调用数据管线，写出完整 evidence、轻量 `report_context` 和模块级 JSON。\n3. 选择撰写模式：\n   - 有 subagent 编排能力时，主 agent 将 6 个模块 JSON 分发给 6 个 subagent 并行撰写。\n   - 没有 subagent 能力时，按同样模块顺序单会话执行，每次只加载当前模块的 JSON、方法论和模板段。\n4. 聚合成稿：主 agent 读取 6 段输出、`assembled_checks.json` 与 `reference/methodology/output_discipline.md`，补一句话盘面判断、风险传导提示和最终语气校准。默认不做外部收评校验、不搜索第三方行情综述、不在报告中加入“外部校验参考”；只有用户明确要求时才补充外部来源。\n5. 清理临时产物：确认 `reports/report_YYYYMMDD.md` 已写入并可读后，删除同日期的临时证据与上下文文件，只保留最终报告。必须清理：\n   - `reports/evidence_YYYYMMDD_utf8.json`\n   - `reports/evidence_YYYYMMDD_utf8.stderr.log`\n   - `reports/report_context_YYYYMMDD.json`\n   - `reports/module_context_YYYYMMDD/`\n   不要删除 `reports/report_YYYYMMDD.md`，不要跨日期批量清理，除非用户明确要求。\n\n## 数据获取\n\n环境变量：\n\n```bash\nTUSHARE_TOKEN=your_token\n```\n\n运行脚本会先更新 `reference/market_data.csv` 再生成情绪趋势：AKShare `stock_market_activity_legu()` 提供情绪明细，Tushare `daily` 补充成交额和必要的上涨/下跌 fallback，Tushare `daily_basic.circ_mv` 用于计算流通市值加权的全市场换手率；因此环境中还需安装 `akshare`。\n\n基础命令：\n\n```powershell\ncd C:\\Users\\chenh\\OneDrive\\skills\\stock-skills\\a-stock-daily-market-sense\npython scripts\\run_daily_panel.py --asof 20260429 --lookback 120 --market-trend-days 90 --index 000300.SH\n```\n\n主要输出：\n\n- `reports/evidence_YYYYMMDD_utf8.json`：完整证据包。\n- `reports/report_context_YYYYMMDD.json`：兼容旧流程的轻量上下文。\n- `reports/module_context_YYYYMMDD/`：供 subagent 分工的模块级 JSON。\n\n这些文件是研报撰写过程中的临时产物。最终报告生成并核对后，应按工作流程第 5 步删除，只保留 `reports/report_YYYYMMDD.md`。\n\n常用参数：\n\n| 参数 | 含义 | 默认 |\n|---|---|---:|\n| `--fetch-workers` | cache/API 获取线程数；排查限流时设为 1 | 6 |\n| `--money-pct-threshold` | 赚钱效应最低当日涨幅 | 7.0 |\n| `--money-amount-threshold` | 赚钱效应最低成交额，单位亿元 | 2.0 |\n| `--decline-pct-max` | 爆量下跌最大当日涨幅 | -3.0 |\n| `--decline-volume-ratio` | 爆量下跌最低 20 日放量倍数 | 2.0 |\n| `--low-lookback-days` | 低位放量触发回看窗口 | 5 |\n| `--resilient-index-5d-max` | 抗跌股模块的弱指数 5 日门槛 | -2.0 |\n\n## Subagent 编排契约\n\n主 agent 先生成模块级 JSON，然后按下列最小上下文分发。每个 subagent 只看自己的模块数据，不读取其他模块数据。\n\n| 模块 | JSON | 方法论 | 模板 |\n|---|---|---|---|\n| 1 盘面趋势 | `module1_market_trend.json` | `reference/methodology/module1_trend.md` | `reference/template/section1.md` |\n| 2 集中度 | `module2_concentration.json` | `reference/methodology/module2_concentration.md` | `reference/template/section2.md` |\n| 3 赚钱效应 | `module3_money_effect.json` | `reference/methodology/module3_money_effect.md` | `reference/template/section3.md` |\n| 4 爆量下跌 | `module4_decline.json` | `reference/methodology/module4_decline.md` | `reference/template/section4.md` |\n| 5 特征分组 | `module5_feature_groups.json` | `reference/methodology/module5_feature_groups.md` | `reference/template/section5.md` |\n| 6 抗跌股 | `module6_resilient.json` | `reference/methodology/module6_resilient.md` | `reference/template/section6.md` |\n\n聚合 agent 额外读取：\n\n- `assembled_checks.json`：M3 赚钱效应池与 M4 爆量下跌池的确定性交叉检查。\n- `reference/methodology/output_discipline.md`：最终成稿纪律。\n\nPython 不调用 Anthropic API、不调用任何 LLM、不硬编码模型名。Codex、Claude Code 或其他通用 agent 的 subagent 编排能力负责并行撰写。\n\n## 输出规范\n\n完整研报仍按六个模块输出。每段结论先行，表格只放关键证据，所有强弱判断必须有成交额或放量倍数支撑。不要写“板块轮动明显”这类空句；要写“候选数、合计成交额、最大主题占比、代表股成交额”。\n\n每个一级大章节（1-6）里已有的总结/定性段落必须使用 Markdown 高亮样式 `==...==` 包裹，例如“盘面定性”“拥挤度判断”“主线 vs 资金轮动结论”“风险传导提示”“特征分组一句话判断”“抗跌方向判断”。不要为了高亮额外新增“本节总结”段落；高亮的是原本就承担总结作用的段落。\n\n禁止输出买卖建议。可以写“风险传导”“持续性待验证”“主线确认度”，不要写“买入/卖出/止损/目标价”。\n\n## 示例\n\n用户：`复盘 2026-04-29 的 A 股盘面，重点看赚钱效应和低位放量。`\n\n执行：\n\n```powershell\npython scripts\\run_daily_panel.py --asof 20260429\n```\n\n然后按 subagent 契约加载 `reports/module_context_20260429/` 下的模块 JSON。若没有 subagent，就顺序加载每个模块的 JSON + 方法论 + 模板段，最后聚合为完整研报。\n\nFile v2.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn7450t2xk0c4fzwzv90194pgd82q8yk\",\n  \"slug\": \"a-stock-daily-market-sense\",\n  \"version\": \"2.0.1\",\n  \"publishedAt\": 1778498668143\n}\n\nFile v2.0.1:reference/methodology/module1_trend.md\n\n# 模块 1：盘面趋势\n\n使用 `module1_market_trend.json`。\n\n只分析：\n\n- 上证指数\n- 创业板指数\n- `market.trend.sentiment`\n- `market.temperature`\n\n不要加入科创板、风格指数、融资、创业板 PE、外围资产或新闻解释。\n\n分析框架：\n\n1. 情绪趋势：结合量能温度、全市场换手率、情绪温度和广度温度。若情绪历史不可用，只保留当日盘面快照。\n2. 上证趋势：判断趋势阶段、量价质量、均线位置和最近支撑压力。\n3. 创业板趋势：使用同样四项框架，并与上证强弱对比。\n4. 盘面定性：明确写成共振、背离或分化。\n\n写作要求：\n\n- 不要把单日涨跌写成趋势。\n- 上证指数趋势、创业板指数趋势只写文字段落，不输出表格。指数数据用于支撑判断，关键数值直接嵌入句子，例如“收盘站上 MA20，成交额为近 20 日均量 1.2 倍，临近 20 日压力位”。这样避免指数部分挤占篇幅，也让报告重点回到盘面判断。\n- 指数上涨但缩量时，写“反弹质量待确认”。\n- 成交额与全市场换手率同步抬升、上涨家数同步改善时，写“良性放量加速，风险中性偏高”。\n- 全市场换手率上升但上涨/下跌家数转弱时，写“换手加速但承接分化，风险升温”。\n- 指数强但广度/情绪弱时，写“指数掩盖分化”。\n- 情绪先修复但指数未确认时，写“情绪先行修复但指数尚未确认”。\n\nFile v2.0.1:reference/methodology/module2_concentration.md\n\n# 模块 2：成交额集中度\n\n使用 `module2_concentration.json`。\n\n目标：说明市场成交额是集中在少数前排股票，还是相对均衡分布。\n\n读取：\n\n- Top10/20/50/100 成交额占比\n- 相对前一交易日变化\n- 近 10 日 Top50 集中度趋势\n- 成交额前排样本\n\n写作要求：\n\n- Top10/20 集中度越高，说明拥挤度越高、市场越窄。\n- Top50 集中度连续抬升，可能说明共识正在形成。\n- 成交额前排股票只能作为证据，不能机械当作主题分类器。\n- 只有当前排样本能支撑拥挤度判断时，才点名 1-3 个例子。\n\nFile v2.0.1:reference/methodology/module3_money_effect.md\n\n# 模块 3：赚钱效应与上涨主线\n\n使用 `module3_money_effect.json`。\n\n候选池：`pct_chg >= 7%` 且成交额 `>= 2 亿`，按成交额降序排列。\n\n工作步骤：\n\n1. 概括候选数、合计成交额、成交额占比、收益中位数和近似涨停数。\n2. 按业务事实、产品环节、事件催化和同步量价行为归纳临时主题。\n3. 每组至少 3 只股票；不足 3 只归入“其他/孤立强势股”。\n4. 每组计算代表股、入选数、组合计成交额和组内成交额占比。\n5. 评定主线确认度：\n   - ★★★：组成交额占比 >= 30%，5 日涨幅中位 > 0，5 日相对收益中位 > 0，连续放量天数中位 >= 2。\n   - ★★：满足 4 条中的 3 条。\n   - ★：满足 2 条或更少，或缺少组内扩散。\n6. 上涨主线表只展示 ★★ 与 ★★★ 主题；★ 主题只用于“资金轮动/局部异动”结论，不进入主线表。\n7. 评定位置判断：基于组内代表股的 `close_position_120d`、`drawdown_120_high`、`ret_5d`、`rel_ret_5d`、`sustained_volume_days_5` 综合判断，只输出“高位趋势”或“低位启动”。无法充分证明低位启动时，默认写“高位趋势”。\n\n写作要求：\n\n- 成交额占比是第一门槛；不要因为股票名称看起来有想象力就提升低成交额主题的评级。\n- 候选稀疏或没有主题达到足够成交额厚度时，定性为资金轮动，而不是确认主线。\n- 若没有 ★★ 或 ★★★ 主题，主线表下写“无二星/三星主线，赚钱效应偏资金轮动”。\n- 输出清晰的 ★★★ 代表股名单，供最终聚合做交叉检查；若没有 ★★★ 主线，写“今日无三星主线代表股”。\n\nFile v2.0.1:reference/methodology/module4_decline.md\n\n# 模块 4：爆量下跌风险\n\n使用 `module4_decline.json`。\n\n候选池：`pct_chg <= -3%`，`amount_ratio_20d >= 2.0`，成交额 `>= 1 亿`，按 `decline_intensity = amount_ratio_20d * abs(pct_chg)` 降序排列。\n\n风险分组必须基于证据：\n\n- 高位抱团瓦解：距 120 日高点回撤较浅，前期强势，今日突然放量崩塌。\n- 业绩雷/事件冲击：单日跌幅大，成交额明显放大。\n- 退潮补跌：5 日已偏弱，今日继续放量下跌。\n- ST/风险股出清：ST/退名称，通常接近跌停。\n- 流动性杀跌：没有清晰叙事，只体现异常卖压。\n- 主线内部分歧：与模块 3 强主题相关，但不一定是代表股本身。\n\n写作要求：\n\n- 不要纳入正常成交的小跌个股。\n- 明确风险是孤立、集中，还是与此前强方向有关。\n- M3/M4 交叉检查在聚合阶段读取 `assembled_checks.json`；本模块不要自行编造最终的主线见顶预警。\n\nFile v2.0.1:reference/methodology/module5_feature_groups.md\n\n# 模块 5：特征分组分析\n\n使用 `module5_feature_groups.json`。\n\n模块 5 固定输出三组股票清单：\n\n- 低位异动：来自 `groups.low_position_anomaly`，复用原低位异动规则、A/B/C 质量层级和 starter/sustain/quiet/undetermined 情形。\n- 科创板月线突破：来自 `groups.star_120_high_monthly_breakout`，要求科创板、今日收盘突破前 120 日高点、真实自然月 K 突破此前完整月份高点，并排除高位趋势延续样本。\n- 10:30 前涨停：来自 `groups.early_limit_up_1030`，参考 ch-stock 特征分组页，使用 JRJ 涨停池，要求首次封板时间不晚于 10:30、总市值不低于 50 亿，并过滤 ST。\n\n写作规则：\n\n- 三组各自独立输出股票列表，不做组间横向对比，不写“哪组更强”的排序结论。\n- 每组必须使用 Markdown 表格列出股票；无候选时写“暂无命中”，不要编造近似候选。\n- 10:30 前涨停组如果 `available=false`，写明数据源不可用和 error，不用日涨幅近似替代。\n- 低位异动组仍可引用质量层级、情形、触发日涨幅、放量倍数、成交额、MA5 等证据。\n- 科创板月线突破组重点引用 120 日新高幅度、月线突破幅度、成交额、近 5/20 日涨幅和 120 日位置。\n- 10:30 前涨停组重点引用首次封板时间、总市值、成交额、涨幅和开板次数。\n\n交叉命中上涨归因：\n\n- 仅当 `overlap_hits` 非空时输出 5.4。\n- 交叉命中是本节重点，必须逐只分析，不只列名单。\n- 归因只基于证据包中的确定性事实和模型对业务/事件的常识归纳，不调用脚本里的 LLM，不写外部新闻已证实之类无法追溯的断言。\n- 归因结构建议为：命中组别 → 量价位置 → 资金行为 → 可能上涨驱动 → 待验证点。\n- 不得输出买入、卖出、仓位、止损、目标价。\n\nFile v2.0.1:reference/methodology/module5_low_position.md\n\n# 低位异动分组口径（兼容参考）\n\n模块 5 已改为 `module5_feature_groups.json`，正式写作方法论见 `module5_feature_groups.md`。本文只保留低位异动分组的内部筛选与解释口径。\n\n低位规则：\n\n- A 轨：`close_position_120d <= 0.20`。\n- B 轨：`drawdown_120_high <= -35%` 且 `close_cv_10d <= 0.03`。\n\n触发规则：\n\n- `amount_ratio_15d >= 3.0`\n- `pct_chg >= 7%`\n- 触发日在今日或最近 5 个交易日内\n- 如果触发日不是今日，今日必须站在 MA5 上方\n\n质量池：\n\n- A：深回撤强启动。\n- B：宽低位强动量质量。\n- C：仅观察池。\n\n情形解释：\n\n- starter：今日触发，后续延续性尚未验证。\n- sustain：触发后成交额维持高位且价格守住，资金仍在换手。\n- quiet：触发后成交额收缩且价格守住，可能是放量后的缩量蓄势。\n- undetermined：已触发但既非持续换手也非缩量企稳，通常代表量价分歧。\n\n观察池参与价值推导：\n\n- 先按 A/A+B、B、C 三个质量层级给出结论，再列个股明细。这样读者先看到“哪些值得继续跟、哪些只是热闹”，而不是在长表里自己找重点。\n- A/A+B：优先视为高交易价值候选，但必须说明具体情形。starter 代表刚触发，重点看次日是否放量承接；sustain 代表换手仍在，参与价值最高；quiet 代表缩量守住，偏等待方向选择；undetermined 不得直接写高交易价值。\n- B：强调弹性和突破质量。只有收盘接近高点、突破前 10 日高点、成交额足够、触发后仍站上 MA5 时，才写“具备交易价值”；证据不足时写“仅观察，等待承接确认”。\n- C：默认仅观察。只有 sustain/quiet 且成交额、MA5、触发后量能证据较好时，才可写“低优先级观察”；undetermined 默认写“暂不参与”。\n- 推导依据必须引用质量层级、情形、触发日放量倍数、触发日或今日成交额、今日收盘/MA5、触发后最低维持比例或近 3 日成交额比例。没有这些证据时，不要拔高结论。\n- “适合参与”是研究报告中的参与价值和观察优先级，不是交易指令；不要写具体买卖、仓位、止损或目标价。\n\n写作要求：\n\n- 先写各情形和质量层级计数。\n- 候选总览后必须输出 A/B/C 参与价值推导表，明确“适合参与/仅观察/暂不参与”。\n- 先展示 A/B 高质量池，再展示 starter/sustain/quiet/undetermined。\n- 按成交额行为解释，不只看价格。\n\nFile v2.0.1:reference/methodology/module6_resilient.md\n\n# 模块 6：抗跌股\n\n使用 `module6_resilient.json`。\n\n本模块只在基准指数偏弱时输出：\n\n- 指数 5 日涨跌幅 <= -2%，或\n- 指数 10 日涨跌幅 <= -3%。\n\n候选规则：\n\n- `rel_ret_5d >= 5`\n- `ret_5d >= 0`\n- 成交额 `>= 1 亿`\n\n写作要求：\n\n- 如果 `index_environment.is_weak = false`，写清跳过原因，不强行输出表格。\n- 如果存在候选，按业务事实归纳：“资金在弱指数环境中抱团/避险到哪里？”\n- 如果共同性弱，写“分散个股韧性，无统一抱团方向”。\n- 不列逆势下跌个股；下跌风险归入模块 4。\n\nFile v2.0.1:reference/methodology/output_discipline.md\n\n# 输出纪律\n\n每个模块和最终聚合都要遵守本文件。\n\n- 证据优先：所有强弱判断都必须引用候选数、成交额、成交额占比、放量倍数、涨跌幅、相对收益或回撤证据。\n- 成交额优先：没有成交额支撑的价格波动只是弱证据；成交额集中、异常放量和持续换手权重更高。\n- 不套现成行业标签：不要机械使用申万、同花顺、东方财富概念。主题只能从公司业务事实、产品环节、事件催化和同步量价行为中临时归纳。\n- 不写投资建议：禁止写买入、卖出、加仓、止损、目标价或组合配置指令。\n- 特征分组可以写“观察优先级”“持续性待验证”“交叉命中值得重点跟踪”等研究判断，但这些只表示证据强弱和跟踪优先级，不得延伸成具体交易指令。\n- 不写空话：不要写“板块轮动明显”“资金关注度提升”“情绪较好”这类没有数字支撑的句子。\n- 事实与判断分开：表格承载数据，段落解释数据意味着什么、哪些结论仍未确认。\n- 高亮定性段落：每个一级大章节（1-6）里已有的总结/定性段落必须用 `==...==` 包裹，例如“盘面定性”“拥挤度判断”“主线 vs 资金轮动结论”“风险传导提示”“特征分组一句话判断”“抗跌方向判断”。不要额外新增“本节总结”段落；高亮的是原本就承担总结作用的段落。\n- 数据缺失或模块跳过时，要明确说明，并引用脚本给出的跳过原因。\n- 最终聚合必须引用 `assembled_checks.json` 的 M3/M4 交叉检查；只有 M3 ★★★ 主线代表股也出现在爆量下跌池中，才升级为主线见顶预警。\n\nFile v2.0.1:reference/report_template.md\n\n**🧭 一句话盘面判断**\r\n[市场状态、赚钱效应集中度、主线清晰度、风险点。整段控制在 2-4 句]\r\n\r\n**📈 1. 盘面趋势**\n\n> 数据基础：`market_trend`。本模块只看上证指数、创业板指数和 `reference/market_data.csv` 情绪趋势；不加入科创板、风格指数、融资、创业板 PE、外围资产。\n\n**1.1 情绪趋势**\n\n| 指标 | 今日 | 近 5/20 日参照 | 趋势提示 |\n|---|---:|---:|---|\n| 成交额（万亿） |  | 5日均 / 20日均 | 缩量/平稳/放量 |\n| 全市场换手率 |  | 5日均 / 20日均 | 加速/平稳/降温 |\n| 活跃度 |  | 5日均 | 冰点/弱修复/中性/偏热/过热 |\n| 上涨家数 / 下跌家数 |  | 上涨占比 / 5日均 | 普涨/普跌/分化/修复 |\n| 涨停数 / 跌停数 |  | 涨停跌停比 / 5日均 | 情绪扩张/退潮 |\n\n==情绪判断：[使用量能温度、换手加速状态、情绪温度、广度温度各一句，最后合成 1 句。若 `market_trend.sentiment.available=false`，写\"情绪历史不可用，仅保留当日盘面快照\"，不要补写活跃度趋势。若换手率上升但上涨/下跌家数转弱，必须提示\"换手加速但承接分化，风险升温\"；若成交额、换手率、上涨家数同步改善，写\"良性放量加速，风险中性偏高\"。]==\n\n**1.2 上证指数趋势**\n\n[只写文字段落，不要使用表格。按趋势阶段、量价配合、均线位置、支撑压力四项组织 2-4 句，关键数值直接嵌入句子中。只写最关键证据，不做长篇技术分析。]\n\n**1.3 创业板指数趋势**\n\n[只写文字段落，不要使用表格。按趋势阶段、量价配合、均线位置、支撑压力四项组织 2-4 句，关键数值直接嵌入句子中，并明确创业板相对上证是更强、更弱还是同步。]\n\n**1.4 盘面定性：指数与情绪是共振、背离还是分化**\n\n==[2-4 句。必须明确：上证与创业板是否共振；指数趋势与情绪温度是否共振；近 5 日换手率是否显示市场加速、平稳或降温。若指数强但情绪弱，写\"指数掩盖分化\"；若指数弱但情绪修复，写\"情绪先行修复但指数尚未确认\"；若换手率上升但上涨/下跌家数转弱，写\"换手加速但承接分化，风险升温\"；若成交额、换手率、上涨家数同步改善，写\"良性放量加速，风险中性偏高\"；若上证强、创业板弱，写\"权重强于成长\"或相反。必须包含指数/情绪/成交额/全市场换手率中的关键证据。]==\n\n**🎯 2. 成交额集中度与拥挤度**\n\r\n| 指标 | 今日 | 前一交易日 | 变化 |\r\n|---|---:|---:|---:|\r\n| Top10 成交额占比 |  |  |  |\r\n| Top20 成交额占比 |  |  |  |\r\n| Top50 成交额占比 |  |  |  |\r\n| Top100 成交额占比 |  |  |  |\r\n\r\n| 近 10 日集中度趋势 | 数值 |\r\n|---|---:|\r\n| Top50 区间变化 |  |\r\n| Top50 上行天数 |  |\r\n\n==拥挤度判断：[集中或均衡 + 前排是否汇聚于同一临时主线 + Top50 趋势。如有典型成交额前排个股，举 1-3 例佐证。必须包含 Top50/Top100 或前排成交额证据。]==\n\n**💰🔥 3. 赚钱效应与上涨主线**\n\r\n> 数据基础：`money_effect_samples`（pct_chg ≥ 7% 且 成交额 ≥ 2 亿，按成交额降序）。\r\n\r\n**3.1 赚钱效应总览**\r\n\r\n| 指标 | 数值 |\r\n|---|---:|\r\n| 候选股票数 |  |\r\n| 候选股合计成交额（亿元） |  |\r\n| 候选股合计成交额占当日全市场比 |  |\r\n| 候选股涨幅中位 / 最大 |  /  |\r\n| 候选股 5 日涨幅中位 |  |\r\n| 候选股 5 日相对指数超额中位 |  |\r\n| 近似涨停数（pct_chg ≥ 9.8%） |  |\r\n\r\n==一句话判断：[局部强主线 / 多线开花 / 稀疏轮动；以候选股数和最大组占比为依据。]==\n\r\n**3.2 主题分组（模型基于业务事实归纳）**\r\n\r\n| 组号 | 主题 | 代表股（按组内成交额TOP5） | 共同业务事实 | 入选数 | 组合计成交额（亿） | 占赚钱效应总成交额比 |\r\n|---|---|---|---|---:|---:|---:|\r\n| 组1 |  |  |  |  |  | % |\r\n| 组2 |  |  |  |  |  | % |\r\n| 组3 |  |  |  |  |  | % |\r\n| 其他 | 孤立强势股 |  | — |  |  | % |\r\n\r\n分组要求：①不套现成行业概念；②每组至少 3 只股票，少于 3 只列入\"其他\"；③必要时补查公司主营、公告解释共同点；④代表股取组内成交额前 5（不足 5 只就全部列）。\r\n\r\n**3.3 主线判定（只展示 ★★ / ★★★ 主线）**\n\n| 主题 | 主线确认度 | 位置判断 | 拥挤度 | 催化逻辑 |\n|---|---|---|---|---|\n|  | ★★★/★★ | 高位趋势/低位启动 | 高/中/低 |  |\n\n判定规则（严格按此评级，不可主观放宽）：\n- ★★★ 主线：组成交额占比 ≥ 30% + 5 日涨幅中位 > 0 + 5 日相对超额中位 > 0 + 连续放量天数中位 ≥ 2\n- ★★ 潜在主线：满足 4 条中的 3 条\n- ★ 局部异动：满足 ≤ 2 条\n\n展示规则：本表只保留 ★★ 与 ★★★ 主题；★ 主题只参与“资金轮动/局部异动”判断，不进入主线表。若没有 ★★ 或 ★★★ 主题，写“无二星/三星主线，赚钱效应偏资金轮动”。\n位置判断：只写“高位趋势”或“低位启动”。基于组内代表股的 `close_position_120d`、`drawdown_120_high`、`ret_5d`、`rel_ret_5d`、`sustained_volume_days_5` 综合判断；无法充分证明低位启动时，默认写“高位趋势”。\n拥挤度：高 = 组内代表股同时在第 2 模块成交额 Top10/20；中 = 仅 1 只入 Top20；低 = 无代表股入 Top20。\n催化逻辑：有明确事件用一句话写明；无则写\"无明确事件催化，量价驱动\"。\n\r\n**3.4 主线组内股票明细**（合并展示所有 ★★★ 主线的代表股；每个 ★★★ 主线 5 只，按主题分块插入空行；少于 5 只就全列）\r\n\r\n| 股票 | 当日涨幅 | 成交额(亿) | 5日涨幅 | 5日相对超额 | 放量倍数 | 近5日放量天数 |\r\n|---|---:|---:|---:|---:|---:|---:|\r\n| [组1主题] |  |  |  |  |  |  |\r\n|  |  |  |  |  |  |  |\r\n| [组2主题] |  |  |  |  |  |  |\r\n|  |  |  |  |  |  |  |\r\n\n==**主线 vs 资金轮动结论**：[必须明确定性。≥1 个 ★★★ 主线 = 主线行情；全部 ≤ ★★ = 资金轮动；不允许含糊带过。如同时给出\"局部主线 vs 全面扩散\"的判断，例：上涨占比 < 50% 时即便有 ★★★ 主线也属于局部主线行情。必须包含候选数、合计成交额或最大主题占比证据。]==\n\n**🧊 4. 亏钱效应（爆量下跌）**\n\r\n> 数据基础：`volume_decline_samples`（pct_chg ≤ -3% 且 放量倍数 ≥ 2x 且 成交额 ≥ 1 亿，按 decline_intensity 降序）。\r\n\r\n==[一句话判断（以候选数、最大风险组占比、跌停数为依据）。如有典型样本贡献的成交额值得点名（例如单一股票成交额数百亿且爆量下跌），在此处直接说明。不再单独列总览表。]==\n\r\n**4.1 风险类型归纳（模型分组，不套行业标签）**\r\n\r\n| 风险类型 | 代表股（按 decline_intensity TOP5） | 共同特征 | 入选数 | 跌幅中位 | 放量倍数中位 | 距120日高点中位 | 风险定性 |\r\n|---|---|---|---:|---:|---:|---:|---|\r\n|  |  |  |  |  |  |  |  |\r\n|  |  |  |  |  |  |  |  |\r\n\r\n参考类型：高位抱团瓦解、业绩雷/事件冲击、退潮补跌、ST/风险股出清、流动性杀跌、主线内部分歧。\r\n\r\n风险定性写法（具体描述，不要写\"加速/趋稳/局部\"这类抽象词）：例如\"主线内部分歧加剧\"、\"高位筹码松动\"、\"弱势股出清\"、\"局部补跌\"、\"业绩雷扩散\"。每类必须给出共同特征，仅靠跌幅相近不构成一类。\r\n\r\n**4.2 高强度爆量下跌个股明细**（按 decline_intensity 排序，前 10-15 只）\r\n\r\n| 排名 | 股票 | 当日跌幅 | 放量倍数 | decline_intensity | 成交额(亿) | 5日跌幅 | 距120日高点 | 风险归类 |\r\n|---:|---|---:|---:|---:|---:|---:|---:|---|\r\n| 1 |  |  |  |  |  |  |  |  |\r\n| 2 |  |  |  |  |  |  |  |  |\r\n\n==**风险传导提示**：[第 3 模块 ★★★ 主线代表股若进入 4.2 明细且属\"退潮补跌\"或\"高位抱团瓦解\"，必须标注主线见顶预警，不可省略。如果只是大方向内部其他股票出现爆量下跌（不是 ★★★ 主线代表股本身），写\"主线内部分歧加剧，暂不升级为见顶预警；若 [代表股] 也转入爆量下跌池，再升级\"。必须包含爆量下跌候选数、成交额、跌停数或 M3/M4 交叉结果。]==\n\n**🌱 5. 特征分组分析**\n\n> 数据基础：`feature_group_analysis_samples`。三组分别输出：低位异动、科创板月线突破、10:30 前涨停；若存在 `overlap_hits`，重点分析交叉命中股票的上涨归因。\n\n==一句话判断：[概括三组命中数量和是否存在交叉命中；必须包含低位异动、科创板月线突破、10:30 前涨停的候选数，以及 overlap_hits 数量。]==\n\n**5.1 低位异动明细**\n\n| 股票 | 质量层级 | 情形 | 触发日涨幅 | 触发日放量倍数 | 触发日成交额(亿) | 今日成交额(亿) | 低位轨道 | 今日120日位置 |\n|---|:---:|---|---:|---:|---:|---:|:---:|---:|\n|  |  |  |  |  |  |  |  |  |\n\n无候选时写“暂无命中”。\n\n**5.2 科创板月线突破明细**\n\n| 股票 | 涨幅 | 成交额(亿) | 收盘 | 前120日高点 | 月线突破幅度 | 5日涨幅 | 20日涨幅 | 120日位置 |\n|---|---:|---:|---:|---:|---:|---:|---:|---:|\n|  |  |  |  |  |  |  |  |  |\n\n无候选时写“暂无命中”。\n\n**5.3 10:30 前涨停明细**\n\n| 股票 | 首次封板 | 涨幅 | 成交额(亿) | 总市值(亿) | 开板次数 | 收盘 |\n|---|---:|---:|---:|---:|---:|---:|\n|  |  |  |  |  |  |  |\n\n若 `available=false`，写明 JRJ 数据不可用和 error，不使用涨幅近似替代。无候选时写“暂无命中”。\n\n**5.4 交叉命中上涨归因**\n\n仅当 `overlap_hits` 非空时输出本段；为空时写：今日三组之间无交叉命中股票。\n\n| 股票 | 命中组别 | 上涨归因 | 关键证据 | 待验证点 |\n|---|---|---|---|---|\n|  |  |  |  |  |\n\n**🧭 6. 抗跌股（该弱不弱就是强）**\n\r\n> 数据基础：`resilient_against_index_samples`（仅在指数走弱时输出；rel_ret_5d ≥ 5pct + ret_5d > 0 + 成交额 ≥ 1 亿）。\r\n\r\n==**指数环境**：[读取脚本 `index_environment` 字段。`is_weak = false` 时本模块写\"今日指数环境不弱，本模块无输出。沪深 300 5 日涨跌幅为 X%，10 日涨跌幅为 Y%，未触发新版规则的弱指数门槛（5 日 ≤ -2% 或 10 日 ≤ -3%）\"，跳过下面的表格。这种自解释写法让读者一眼明白为何跳过。]==\n\r\n| 股票 | 5 日收益 | 5 日相对指数超额 | 放量倍数 | 距120日高点 | 业务归类 |\r\n|---|---:|---:|---:|---:|---|\r\n|  |  |  |  |  |  |\r\n\n==抗跌方向归纳：[把候选股按业务事实归到 1-3 个抗跌方向，例如稳定红利、防御性消费、独立产业逻辑等。共同性弱时写\"分散个股韧性，无统一抱团方向\"。若跳过，必须写明指数未触发弱势门槛及对应 5 日/10 日指数涨跌幅。]==\n\n以上基于 Tushare 历史交易数据和本地生成证据包，不构成投资建议。\n\nFile v2.0.1:reference/template/section1.md\n\n# 1. 盘面趋势\n\n## 1.1 情绪趋势\n\n| 指标 | 今日 | 近 5/20 日参照 | 趋势提示 |\n|---|---:|---:|---|\n| 成交额 |  |  |  |\n| 全市场换手率 |  |  |  |\n| 活跃度 |  |  |  |\n| 上涨/下跌家数 |  |  |  |\n| 涨停/跌停数 |  |  |  |\n\n情绪判断：[量能温度 + 换手加速状态 + 情绪温度 + 广度温度，最后合成一句。若换手率上升但上涨/下跌家数转弱，必须提示“换手加速但承接分化，风险升温”；若成交额、换手率、上涨家数同步改善，写“良性放量加速，风险中性偏高”。]\n\n## 1.2 指数趋势\n\n上证指数趋势判断：[只用文字段落，不要使用表格。用 2-4 句写清趋势阶段、量价配合、均线位置、支撑压力；关键数值直接嵌入句子中。]\n\n创业板趋势判断：[只用文字段落，不要使用表格。用 2-4 句写清趋势阶段、量价配合、均线位置、支撑压力，并说明创业板相对上证更强、更弱还是同步；关键数值直接嵌入句子中。]\n\n## 1.3 盘面定性\n\n==[明确指数与情绪是共振、背离还是分化。用 2-4 句完成本节定性，必须包含指数/情绪/成交额/全市场换手率中的关键证据，并基于近 5 日换手率判断市场是否加速、风险是否升温。]==\n\nArchive v2.0.0: 19 files, 49137 bytes\n\nFiles: reference/market_data.csv (8937b), reference/methodology/module1_trend.md (908b), reference/methodology/module2_concentration.md (613b), reference/methodology/module3_money_effect.md (1122b), reference/methodology/module4_decline.md (960b), reference/methodology/module5_low_position.md (1003b), reference/methodology/module6_resilient.md (610b), reference/methodology/output_discipline.md (1162b), reference/report_template.md (11573b), reference/template/section1.md (595b), reference/template/section2.md (446b), reference/template/section3.md (896b), reference/template/section4.md (690b), reference/template/section5.md (1123b), reference/template/section6.md (431b), scripts/market_panel.py (112185b), scripts/run_daily_panel.py (7913b), SKILL.md (6680b), _meta.json (145b)\n\nFile v2.0.0:SKILL.md\n\n---\nname: tushare-daily-market-sense\ndescription: 基于 Tushare Pro A 股 daily 日线数据生成盘后市场研报的方法论 skill。当用户要求做每日盘面趋势、上证/创业板指数趋势、情绪指数趋势、赚钱效应与上涨主线分析、爆量下跌识别、低位放量异动筛选、指数背离/抗跌股分析、历史某日复盘、基于 daily/daily_basic/涨跌停/指数数据做量化选股观察时，必须优先使用本 skill。本 skill 先生成确定性证据包，再由模型或 Codex/Claude Code 等通用 agent 的 subagent 编排能力按模块撰写；不在脚本中调用 LLM，不提供买卖建议，不按申万、同花顺、东方财富等现成行业/概念口径分组。\nversion: 2.0.0\n---\n\n# Tushare Daily Market Sense\n\n## 目标\n\n基于 Tushare 日线、指数、成交额与本地情绪历史，为 A 股盘后复盘生成结构化研报：盘面趋势、成交额集中度、赚钱效应与上涨主线、爆量下跌风险、低位放量异动、弱指数环境下的抗跌股。\n\n不做单股基本面深度研究、港股/美股/基金/期货/加密分析、分钟级交易决策、自动下单、组合优化或买卖建议。脚本只负责取数、计算、筛选、切分 JSON；主题归纳、风险措辞和研报写作由模型完成。\n\n## 核心理念\n\n成交额优先。所有强弱判断都要有成交额证据：上涨主线按成交额厚度确认，爆量下跌按放量异常与跌幅强度识别，低位异动按放量触发与触发后成交额行为分类，抗跌股要求有至少 1 亿成交额证明资金参与。\n\n主题主线由模型基于业务事实临时归纳，不套现成行业或概念标签。共同性不足时明确写“暂不构成主线”或“资金轮动”。\n\n## 工作流程\n\n1. 确定交易日：解析“今天/最近”或具体日期，默认只使用 `D` 及以前数据；只有用户明确要求后验时才允许 `--allow-future`。\n2. 生成证据包：运行 `scripts/run_daily_panel.py`。脚本会直接调用数据管线，写出完整 evidence、轻量 `report_context` 和模块级 JSON。\n3. 选择撰写模式：\n   - 有 subagent 编排能力时，主 agent 将 6 个模块 JSON 分发给 6 个 subagent 并行撰写。\n   - 没有 subagent 能力时，按同样模块顺序单会话执行，每次只加载当前模块的 JSON、方法论和模板段。\n4. 聚合成稿：主 agent 读取 6 段输出、`assembled_checks.json` 与 `reference/methodology/output_discipline.md`，补一句话盘面判断、风险传导提示和最终语气校准。默认不做外部收评校验、不搜索第三方行情综述、不在报告中加入“外部校验参考”；只有用户明确要求时才补充外部来源。\n5. 清理临时产物：确认 `reports/report_YYYYMMDD.md` 已写入并可读后，删除同日期的临时证据与上下文文件，只保留最终报告。必须清理：\n   - `reports/evidence_YYYYMMDD_utf8.json`\n   - `reports/evidence_YYYYMMDD_utf8.stderr.log`\n   - `reports/report_context_YYYYMMDD.json`\n   - `reports/module_context_YYYYMMDD/`\n   不要删除 `reports/report_YYYYMMDD.md`，不要跨日期批量清理，除非用户明确要求。\n\n## 数据获取\n\n环境变量：\n\n```bash\nTUSHARE_TOKEN=your_token\n```\n\n基础命令：\n\n```powershell\ncd C:\\Users\\chenh\\OneDrive\\skills\\stock-skills\\a-stock-daily-market-sense\npython scripts\\run_daily_panel.py --asof 20260429 --lookback 120 --market-trend-days 90 --index 000300.SH\n```\n\n主要输出：\n\n- `reports/evidence_YYYYMMDD_utf8.json`：完整证据包。\n- `reports/report_context_YYYYMMDD.json`：兼容旧流程的轻量上下文。\n- `reports/module_context_YYYYMMDD/`：供 subagent 分工的模块级 JSON。\n\n这些文件是研报撰写过程中的临时产物。最终报告生成并核对后，应按工作流程第 5 步删除，只保留 `reports/report_YYYYMMDD.md`。\n\n常用参数：\n\n| 参数 | 含义 | 默认 |\n|---|---|---:|\n| `--fetch-workers` | cache/API 获取线程数；排查限流时设为 1 | 6 |\n| `--money-pct-threshold` | 赚钱效应最低当日涨幅 | 7.0 |\n| `--money-amount-threshold` | 赚钱效应最低成交额，单位亿元 | 2.0 |\n| `--decline-pct-max` | 爆量下跌最大当日涨幅 | -3.0 |\n| `--decline-volume-ratio` | 爆量下跌最低 20 日放量倍数 | 2.0 |\n| `--low-lookback-days` | 低位放量触发回看窗口 | 5 |\n| `--resilient-index-5d-max` | 抗跌股模块的弱指数 5 日门槛 | -2.0 |\n\n## Subagent 编排契约\n\n主 agent 先生成模块级 JSON，然后按下列最小上下文分发。每个 subagent 只看自己的模块数据，不读取其他模块数据。\n\n| 模块 | JSON | 方法论 | 模板 |\n|---|---|---|---|\n| 1 盘面趋势 | `module1_market_trend.json` | `reference/methodology/module1_trend.md` | `reference/template/section1.md` |\n| 2 集中度 | `module2_concentration.json` | `reference/methodology/module2_concentration.md` | `reference/template/section2.md` |\n| 3 赚钱效应 | `module3_money_effect.json` | `reference/methodology/module3_money_effect.md` | `reference/template/section3.md` |\n| 4 爆量下跌 | `module4_decline.json` | `reference/methodology/module4_decline.md` | `reference/template/section4.md` |\n| 5 低位放量 | `module5_low_position.json` | `reference/methodology/module5_low_position.md` | `reference/template/section5.md` |\n| 6 抗跌股 | `module6_resilient.json` | `reference/methodology/module6_resilient.md` | `reference/template/section6.md` |\n\n聚合 agent 额外读取：\n\n- `assembled_checks.json`：M3 赚钱效应池与 M4 爆量下跌池的确定性交叉检查。\n- `reference/methodology/output_discipline.md`：最终成稿纪律。\n\nPython 不调用 Anthropic API、不调用任何 LLM、不硬编码模型名。Codex、Claude Code 或其他通用 agent 的 subagent 编排能力负责并行撰写。\n\n## 输出规范\n\n完整研报仍按六个模块输出。每段结论先行，表格只放关键证据，所有强弱判断必须有成交额或放量倍数支撑。不要写“板块轮动明显”这类空句；要写“候选数、合计成交额、最大主题占比、代表股成交额”。\n\n禁止输出买卖建议。可以写“风险传导”“持续性待验证”“主线确认度”，不要写“买入/卖出/止损/目标价”。\n\n## 示例\n\n用户：`复盘 2026-04-29 的 A 股盘面，重点看赚钱效应和低位放量。`\n\n执行：\n\n```powershell\npython scripts\\run_daily_panel.py --asof 20260429\n```\n\n然后按 subagent 契约加载 `reports/module_context_20260429/` 下的模块 JSON。若没有 subagent，就顺序加载每个模块的 JSON + 方法论 + 模板段，最后聚合为完整研报。\n\nFile v2.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7450t2xk0c4fzwzv90194pgd82q8yk\",\n  \"slug\": \"a-stock-daily-market-sense\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1777603367669\n}\n\nFile v2.0.0:reference/methodology/module1_trend.md\n\n# 模块 1：盘面趋势\n\n使用 `module1_market_trend.json`。\n\n只分析：\n\n- 上证指数\n- 创业板指数\n- `market.trend.sentiment`\n- `market.temperature`\n\n不要加入科创板、风格指数、融资、创业板 PE、外围资产或新闻解释。\n\n分析框架：\n\n1. 情绪趋势：结合量能温度、情绪温度和广度温度。若情绪历史不可用，只保留当日盘面快照。\n2. 上证趋势：判断趋势阶段、量价质量、均线位置和最近支撑压力。\n3. 创业板趋势：使用同样四项框架，并与上证强弱对比。\n4. 盘面定性：明确写成共振、背离或分化。\n\n写作要求：\n\n- 不要把单日涨跌写成趋势。\n- 指数上涨但缩量时，写“反弹质量待确认”。\n- 指数强但广度/情绪弱时，写“指数掩盖分化”。\n- 情绪先修复但指数未确认时，写“情绪先行修复但指数尚未确认”。\n\nFile v2.0.0:reference/methodology/module2_concentration.md\n\n# 模块 2：成交额集中度\n\n使用 `module2_concentration.json`。\n\n目标：说明市场成交额是集中在少数前排股票，还是相对均衡分布。\n\n读取：\n\n- Top10/20/50/100 成交额占比\n- 相对前一交易日变化\n- 近 10 日 Top50 集中度趋势\n- 成交额前排样本\n\n写作要求：\n\n- Top10/20 集中度越高，说明拥挤度越高、市场越窄。\n- Top50 集中度连续抬升，可能说明共识正在形成。\n- 成交额前排股票只能作为证据，不能机械当作主题分类器。\n- 只有当前排样本能支撑拥挤度判断时，才点名 1-3 个例子。\n\nFile v2.0.0:reference/methodology/module3_money_effect.md\n\n# 模块 3：赚钱效应与上涨主线\n\n使用 `module3_money_effect.json`。\n\n候选池：`pct_chg >= 7%` 且成交额 `>= 2 亿`，按成交额降序排列。\n\n工作步骤：\n\n1. 概括候选数、合计成交额、成交额占比、收益中位数和近似涨停数。\n2. 按业务事实、产品环节、事件催化和同步量价行为归纳临时主题。\n3. 每组至少 3 只股票；不足 3 只归入“其他/孤立强势股”。\n4. 每组计算代表股、入选数、组合计成交额和组内成交额占比。\n5. 评定主线确认度：\n   - ★★★：组成交额占比 >= 30%，5 日涨幅中位 > 0，5 日相对收益中位 > 0，连续放量天数中位 >= 2。\n   - ★★：满足 4 条中的 3 条。\n   - ★：满足 2 条或更少，或缺少组内扩散。\n\n写作要求：\n\n- 成交额占比是第一门槛；不要因为股票名称看起来有想象力就提升低成交额主题的评级。\n- 候选稀疏或没有主题达到足够成交额厚度时，定性为资金轮动，而不是确认主线。\n- 输出清晰的 ★★★ 代表股名单，供最终聚合做交叉检查。\n\nFile v2.0.0:reference/methodology/module4_decline.md\n\n# 模块 4：爆量下跌风险\n\n使用 `module4_decline.json`。\n\n候选池：`pct_chg <= -3%`，`amount_ratio_20d >= 2.0`，成交额 `>= 1 亿`，按 `decline_intensity = amount_ratio_20d * abs(pct_chg)` 降序排列。\n\n风险分组必须基于证据：\n\n- 高位抱团瓦解：距 120 日高点回撤较浅，前期强势，今日突然放量崩塌。\n- 业绩雷/事件冲击：单日跌幅大，成交额明显放大。\n- 退潮补跌：5 日已偏弱，今日继续放量下跌。\n- ST/风险股出清：ST/退名称，通常接近跌停。\n- 流动性杀跌：没有清晰叙事，只体现异常卖压。\n- 主线内部分歧：与模块 3 强主题相关，但不一定是代表股本身。\n\n写作要求：\n\n- 不要纳入正常成交的小跌个股。\n- 明确风险是孤立、集中，还是与此前强方向有关。\n- M3/M4 交叉检查在聚合阶段读取 `assembled_checks.json`；本模块不要自行编造最终的主线见顶预警。\n\nFile v2.0.0:reference/methodology/module5_low_position.md\n\n# 模块 5：低位放量异动\n\n使用 `module5_low_position.json`。\n\n低位规则：\n\n- A 轨：`close_position_120d <= 0.20`。\n- B 轨：`drawdown_120_high <= -35%` 且 `close_cv_10d <= 0.03`。\n\n触发规则：\n\n- `amount_ratio_15d >= 3.0`\n- `pct_chg >= 7%`\n- 触发日在今日或最近 5 个交易日内\n- 如果触发日不是今日，今日必须站在 MA5 上方\n\n质量池：\n\n- A：深回撤强启动。\n- B：宽低位强动量质量。\n- C：仅观察池。\n\n情形解释：\n\n- starter：今日触发，后续延续性尚未验证。\n- sustain：触发后成交额维持高位且价格守住，资金仍在换手。\n- quiet：触发后成交额收缩且价格守住，可能是放量后的缩量蓄势。\n- undetermined：已触发但既非持续换手也非缩量企稳，通常代表量价分歧。\n\n写作要求：\n\n- 先写各情形和质量层级计数。\n- 先展示 A/B 高质量池，再展示 starter/sustain/quiet/undetermined。\n- 按成交额行为解释，不只看价格。\n\nFile v2.0.0:reference/methodology/module6_resilient.md\n\n# 模块 6：抗跌股\n\n使用 `module6_resilient.json`。\n\n本模块只在基准指数偏弱时输出：\n\n- 指数 5 日涨跌幅 <= -2%，或\n- 指数 10 日涨跌幅 <= -3%。\n\n候选规则：\n\n- `rel_ret_5d >= 5`\n- `ret_5d >= 0`\n- 成交额 `>= 1 亿`\n\n写作要求：\n\n- 如果 `index_environment.is_weak = false`，写清跳过原因，不强行输出表格。\n- 如果存在候选，按业务事实归纳：“资金在弱指数环境中抱团/避险到哪里？”\n- 如果共同性弱，写“分散个股韧性，无统一抱团方向”。\n- 不列逆势下跌个股；下跌风险归入模块 4。\n\nFile v2.0.0:reference/methodology/output_discipline.md\n\n# 输出纪律\n\n每个模块和最终聚合都要遵守本文件。\n\n- 证据优先：所有强弱判断都必须引用候选数、成交额、成交额占比、放量倍数、涨跌幅、相对收益或回撤证据。\n- 成交额优先：没有成交额支撑的价格波动只是弱证据；成交额集中、异常放量和持续换手权重更高。\n- 不套现成行业标签：不要机械使用申万、同花顺、东方财富概念。主题只能从公司业务事实、产品环节、事件催化和同步量价行为中临时归纳。\n- 不写投资建议：禁止写买入、卖出、加仓、止损、目标价或组合配置指令。\n- 不写空话：不要写“板块轮动明显”“资金关注度提升”“情绪较好”这类没有数字支撑的句子。\n- 事实与判断分开：表格承载数据，段落解释数据意味着什么、哪些结论仍未确认。\n- 数据缺失或模块跳过时，要明确说明，并引用脚本给出的跳过原因。\n- 最终聚合必须引用 `assembled_checks.json` 的 M3/M4 交叉检查；只有 M3 ★★★ 主线代表股也出现在爆量下跌池中，才升级为主线见顶预警。\n\nFile v2.0.0:reference/report_template.md\n\n**🧭 一句话盘面判断**\r\n[市场状态、赚钱效应集中度、主线清晰度、风险点。整段控制在 2-4 句]\r\n\r\n**📈 1. 盘面趋势**\n\n> 数据基础：`market_trend`。本模块只看上证指数、创业板指数和 `reference/market_data.csv` 情绪趋势；不加入科创板、风格指数、融资、创业板 PE、外围资产。\n\n**1.1 情绪趋势**\n\n| 指标 | 今日 | 近 5/20 日参照 | 趋势提示 |\n|---|---:|---:|---|\n| 成交额（万亿） |  | 5日均 / 20日均 | 缩量/平稳/放量 |\n| 活跃度 |  | 5日均 | 冰点/弱修复/中性/偏热/过热 |\n| 上涨家数 / 下跌家数 |  | 上涨占比 / 5日均 | 普涨/普跌/分化/修复 |\n| 涨停数 / 跌停数 |  | 涨停跌停比 / 5日均 | 情绪扩张/退潮 |\n\n情绪判断：[使用量能温度、情绪温度、广度温度各一句，最后合成 1 句。若 `market_trend.sentiment.available=false`，写\"情绪历史不可用，仅保留当日盘面快照\"，不要补写活跃度趋势。]\n\n**1.2 上证指数趋势**\n\n| 指标 | 数值 |\n|---|---:|\n| 收盘 / 当日涨跌幅 |  |\n| 5日 / 20日 / 60日涨跌幅 |  /  /  |\n| MA5 / MA20 / MA60 |  /  /  |\n| 收盘相对 MA20 / MA60 |  /  |\n| 量价状态 |  |\n| 近20日支撑 / 压力 |  /  |\n| 近60日支撑 / 压力 |  /  |\n\n趋势判断：[按趋势阶段、量价配合、均线位置、支撑压力四项各给一句。只写最关键证据，不做长篇技术分析。]\n\n**1.3 创业板指数趋势**\n\n| 指标 | 数值 |\n|---|---:|\n| 收盘 / 当日涨跌幅 |  |\n| 5日 / 20日 / 60日涨跌幅 |  /  /  |\n| MA5 / MA20 / MA60 |  /  /  |\n| 收盘相对 MA20 / MA60 |  /  |\n| 量价状态 |  |\n| 近20日支撑 / 压力 |  /  |\n| 近60日支撑 / 压力 |  /  |\n\n趋势判断：[同上，并明确创业板相对上证是更强、更弱还是同步。]\n\n**1.4 盘面定性：指数与情绪是共振、背离还是分化**\n\n[2-4 句。必须明确：上证与创业板是否共振；指数趋势与情绪温度是否共振；若指数强但情绪弱，写\"指数掩盖分化\"；若指数弱但情绪修复，写\"情绪先行修复但指数尚未确认\"；若上证强、创业板弱，写\"权重强于成长\"或相反。]\n\r\n**🎯 2. 成交额集中度与拥挤度**\r\n\r\n| 指标 | 今日 | 前一交易日 | 变化 |\r\n|---|---:|---:|---:|\r\n| Top10 成交额占比 |  |  |  |\r\n| Top20 成交额占比 |  |  |  |\r\n| Top50 成交额占比 |  |  |  |\r\n| Top100 成交额占比 |  |  |  |\r\n\r\n| 近 10 日集中度趋势 | 数值 |\r\n|---|---:|\r\n| Top50 区间变化 |  |\r\n| Top50 上行天数 |  |\r\n\r\n拥挤度判断：[集中或均衡 + 前排是否汇聚于同一临时主线 + Top50 趋势。如有典型成交额前排个股，举 1-3 例佐证]\r\n\r\n**💰🔥 3. 赚钱效应与上涨主线**\r\n\r\n> 数据基础：`money_effect_samples`（pct_chg ≥ 7% 且 成交额 ≥ 2 亿，按成交额降序）。\r\n\r\n**3.1 赚钱效应总览**\r\n\r\n| 指标 | 数值 |\r\n|---|---:|\r\n| 候选股票数 |  |\r\n| 候选股合计成交额（亿元） |  |\r\n| 候选股合计成交额占当日全市场比 |  |\r\n| 候选股涨幅中位 / 最大 |  /  |\r\n| 候选股 5 日涨幅中位 |  |\r\n| 候选股 5 日相对指数超额中位 |  |\r\n| 近似涨停数（pct_chg ≥ 9.8%） |  |\r\n\r\n一句话判断：[局部强主线 / 多线开花 / 稀疏轮动；以候选股数和最大组占比为依据]\r\n\r\n**3.2 主题分组（模型基于业务事实归纳）**\r\n\r\n| 组号 | 主题 | 代表股（按组内成交额TOP5） | 共同业务事实 | 入选数 | 组合计成交额（亿） | 占赚钱效应总成交额比 |\r\n|---|---|---|---|---:|---:|---:|\r\n| 组1 |  |  |  |  |  | % |\r\n| 组2 |  |  |  |  |  | % |\r\n| 组3 |  |  |  |  |  | % |\r\n| 其他 | 孤立强势股 |  | — |  |  | % |\r\n\r\n分组要求：①不套现成行业概念；②每组至少 3 只股票，少于 3 只列入\"其他\"；③必要时补查公司主营、公告解释共同点；④代表股取组内成交额前 5（不足 5 只就全部列）。\r\n\r\n**3.3 主线判定（按成交额厚度 + 持续性 + 扩散度）**\r\n\r\n| 组号 | 主题 | 5日涨幅中位 | 5日相对超额中位 | 放量倍数中位 | 连续放量天数中位 | 主线确认度 | 拥挤度 | 催化逻辑 |\r\n|---|---|---:|---:|---:|---:|---|---|---|\r\n| 组1 |  |  |  |  |  | ★★★/★★/★ | 高/中/低 |  |\r\n| 组2 |  |  |  |  |  |  |  |  |\r\n| 组3 |  |  |  |  |  |  |  |  |\r\n\r\n判定规则（严格按此评级，不可主观放宽）：\r\n- ★★★ 主线：组成交额占比 ≥ 30% + 5 日涨幅中位 > 0 + 5 日相对超额中位 > 0 + 连续放量天数中位 ≥ 2\r\n- ★★ 潜在主线：满足 4 条中的 3 条\r\n- ★ 局部异动：满足 ≤ 2 条\r\n\r\n拥挤度：高 = 组内代表股同时在第 2 模块成交额 Top10/20；中 = 仅 1 只入 Top20；低 = 无代表股入 Top20。\r\n催化逻辑：有明确事件用一句话写明；无则写\"无明确事件催化，量价驱动\"。\r\n\r\n**3.4 主线组内股票明细**（合并展示所有 ★★★ 主线的代表股；每个 ★★★ 主线 5 只，按主题分块插入空行；少于 5 只就全列）\r\n\r\n| 股票 | 当日涨幅 | 成交额(亿) | 5日涨幅 | 5日相对超额 | 放量倍数 | 近5日放量天数 |\r\n|---|---:|---:|---:|---:|---:|---:|\r\n| [组1主题] |  |  |  |  |  |  |\r\n|  |  |  |  |  |  |  |\r\n| [组2主题] |  |  |  |  |  |  |\r\n|  |  |  |  |  |  |  |\r\n\r\n**主线 vs 资金轮动结论**：[必须明确定性。≥1 个 ★★★ 主线 = 主线行情；全部 ≤ ★★ = 资金轮动；不允许含糊带过。如同时给出\"局部主线 vs 全面扩散\"的判断，例：上涨占比 < 50% 时即便有 ★★★ 主线也属于局部主线行情]\r\n\r\n**🧊 4. 亏钱效应（爆量下跌）**\r\n\r\n> 数据基础：`volume_decline_samples`（pct_chg ≤ -3% 且 放量倍数 ≥ 2x 且 成交额 ≥ 1 亿，按 decline_intensity 降序）。\r\n\r\n[一句话判断（以候选数、最大风险组占比、跌停数为依据）。如有典型样本贡献的成交额值得点名（例如单一股票成交额数百亿且爆量下跌），在此处直接说明。不再单独列总览表]\r\n\r\n**4.1 风险类型归纳（模型分组，不套行业标签）**\r\n\r\n| 风险类型 | 代表股（按 decline_intensity TOP5） | 共同特征 | 入选数 | 跌幅中位 | 放量倍数中位 | 距120日高点中位 | 风险定性 |\r\n|---|---|---|---:|---:|---:|---:|---|\r\n|  |  |  |  |  |  |  |  |\r\n|  |  |  |  |  |  |  |  |\r\n\r\n参考类型：高位抱团瓦解、业绩雷/事件冲击、退潮补跌、ST/风险股出清、流动性杀跌、主线内部分歧。\r\n\r\n风险定性写法（具体描述，不要写\"加速/趋稳/局部\"这类抽象词）：例如\"主线内部分歧加剧\"、\"高位筹码松动\"、\"弱势股出清\"、\"局部补跌\"、\"业绩雷扩散\"。每类必须给出共同特征，仅靠跌幅相近不构成一类。\r\n\r\n**4.2 高强度爆量下跌个股明细**（按 decline_intensity 排序，前 10-15 只）\r\n\r\n| 排名 | 股票 | 当日跌幅 | 放量倍数 | decline_intensity | 成交额(亿) | 5日跌幅 | 距120日高点 | 风险归类 |\r\n|---:|---|---:|---:|---:|---:|---:|---:|---|\r\n| 1 |  |  |  |  |  |  |  |  |\r\n| 2 |  |  |  |  |  |  |  |  |\r\n\r\n**风险传导提示**：[第 3 模块 ★★★ 主线代表股若进入 4.2 明细且属\"退潮补跌\"或\"高位抱团瓦解\"，必须标注主线见顶预警，不可省略。如果只是大方向内部其他股票出现爆量下跌（不是 ★★★ 主线代表股本身），写\"主线内部分歧加剧，暂不升级为见顶预警；若 [代表股] 也转入爆量下跌池，再升级\"]\r\n\r\n**🌱 5. 低位放量异动**\r\n\r\n> 数据基础：`low_position_volume_anomaly_samples`（基础观察池 + 高质量池 A/B，D-N 历史触发需今日收盘不破 5 日线）。\n\r\n**5.1 候选总览**\r\n\r\n| 指标 | 数值 |\r\n|---|---:|\r\n| 总候选数 |  |\r\n| starter（启动型）数 |  |\r\n| sustain（持续换手型）数 |  |\n| quiet（缩量企稳型）数 |  |\n| undetermined（分歧型）数 |  |\n| 高质量 A 数 |  |\n| 高质量 B 数 |  |\n| 仅观察池 C 数 |  |\n\r\n一句话判断（按四类计数分布做诊断）：\r\n- starter 数 ≥ 5：新增机会涌现，关注首日触发的低位股\r\n- sustain 占比高：市场存在持续抱团方向，资金没有快速撤离\r\n- quiet 占比高：建仓后等待方向选择，临近变盘\r\n- undetermined 占比高：触发后资金分歧大，慎追\r\n- starter = quiet = 0 且 sustain 少：低位方向并非大面积启动，更多是前期触发的后续分化\r\n\r\n**5.2 高质量池 A/B**：优先展示，说明是否为深回撤强启动或宽低位强动量质量\n\n| 股票 | 质量层级 | 命中模型 | 情形 | 触发日涨幅 | 触发日放量倍数 | 触发日成交额(亿) | 收盘/最高 | 突破前10日高点 |\n|---|:---:|---|---|---:|---:|---:|---:|:---:|\n|  | A/B |  | starter/sustain/quiet/undetermined |  |  |  |  | 是/否 |\n\n如无 A/B 候选，写\"今日无高质量池 A/B 候选\"。\n\n**5.3 starter（启动型）**：今日触发，后续待验证\n\n| 股票 | 质量层级 | 触发日涨幅 | 触发日放量倍数 | 低位轨道 | 距120日高点 | 120日价格分位 | 成交额(亿) |\n|---|:---:|---:|---:|:---:|---:|---:|---:|\n|  | A/B/C |  |  | A/B/HQ |  |  |  |\n\n如无候选，写\"今日无 starter 候选\"。\n\n**5.4 sustain（持续换手型）**：触发后量能维持，资金换手吃筹\n\n| 股票 | 质量层级 | 触发日距今 | 触发日涨幅 | 触发日放量倍数 | 触发后最低维持比例 | 今日收盘/5日线 | 今日成交额(亿) | 低位轨道 |\n|---|:---:|---:|---:|---:|---:|---:|---:|:---:|\n|  | A/B/C | -N 日 |  |  |  |  /  |  | A/B/HQ |\n\n如无候选，写\"今日无 sustain 候选\"。\n\n**5.5 quiet（缩量企稳型）**：触发后缩量横盘，等待方向\n\n| 股票 | 质量层级 | 触发日距今 | 触发日涨幅 | 触发日放量倍数 | 近3日成交额比例 | 今日收盘/5日线 | 今日成交额(亿) | 低位轨道 |\n|---|:---:|---:|---:|---:|---:|---:|---:|:---:|\n|  | A/B/C | -N 日 |  |  |  |  /  |  | A/B/HQ |\n\n如无候选，写\"今日无 quiet 候选\"。\n\n**5.6 undetermined（分歧型）**：触发但量价分歧\n\n| 股票 | 质量层级 | 触发日距今 | 触发日涨幅 | 触发日放量倍数 | 今日收盘/5日线 | 今日成交额(亿) |\n|---|:---:|---:|---:|---:|---:|---:|\n|  | A/B/C | -N 日 |  |  |  /  |  |\n\r\nundetermined 数量较多时全部列出（最多 10 只）。如全部列出仍不能解释分歧，用一句话指出共性（如\"多数候选既未维持高换手也未明显缩量\"）。\r\n\r\n**🧭 6. 抗跌股（该弱不弱就是强）**\r\n\r\n> 数据基础：`resilient_against_index_samples`（仅在指数走弱时输出；rel_ret_5d ≥ 5pct + ret_5d > 0 + 成交额 ≥ 1 亿）。\r\n\r\n**指数环境**：[读取脚本 `index_environment` 字段。`is_weak = false` 时本模块写\"今日指数环境不弱，本模块无输出。沪深 300 5 日涨跌幅为 X%，10 日涨跌幅为 Y%，未触发新版规则的弱指数门槛（5 日 ≤ -2% 或 10 日 ≤ -3%）\"，跳过下面的表格。这种自解释写法让读者一眼明白为何跳过]\r\n\r\n| 股票 | 5 日收益 | 5 日相对指数超额 | 放量倍数 | 距120日高点 | 业务归类 |\r\n|---|---:|---:|---:|---:|---|\r\n|  |  |  |  |  |  |\r\n\r\n抗跌方向归纳：[把候选股按业务事实归到 1-3 个抗跌方向，例如稳定红利、防御性消费、独立产业逻辑等。共同性弱时写\"分散个股韧性，无统一抱团方向\"]\r\n\r\n以上基于 Tushare 历史交易数据和本地生成证据包，不构成投资建议。\n\nFile v2.0.0:reference/template/section1.md\n\n# 1. 盘面趋势\n\n## 1.1 情绪趋势\n\n| 指标 | 今日 | 近 5/20 日参照 | 趋势提示 |\n|---|---:|---:|---|\n| 成交额 |  |  |  |\n| 活跃度 |  |  |  |\n| 上涨/下跌家数 |  |  |  |\n| 涨停/跌停数 |  |  |  |\n\n情绪判断：[量能温度 + 情绪温度 + 广度温度，最后合成一句。]\n\n## 1.2 指数趋势\n\n上证指数趋势判断：[趋势阶段、量价配合、均线位置、支撑压力。]\n\n创业板趋势判断[同上，并说明创业板相对上证更强、更弱还是同步。]\n\n## 1.3 盘面定性\n\n[明确指数与情绪是共振、背离还是分化。]\n\nFile v2.0.0:reference/template/section2.md\n\n# 2. 成交额集中度与拥挤度\n\n| 指标 | 今日 | 前一交易日 | 变化 |\n|---|---:|---:|---:|\n| Top10 成交额占比 |  |  |  |\n| Top20 成交额占比 |  |  |  |\n| Top50 成交额占比 |  |  |  |\n| Top100 成交额占比 |  |  |  |\n\n| 近 10 日集中度趋势 | 数值 |\n|---|---:|\n| Top50 区间变化 |  |\n| Top50 上行天数 |  |\n\n拥挤度判断：[集中或均衡 + 前排是否汇聚于同一临时主线 + Top50 趋势。]\n\nArchive v1.6.2: 4 files, 23260 bytes\n\nFiles: reference/report_template.md (9489b), scripts/market_panel.py (59929b), SKILL.md (8814b), _meta.json (145b)\n\nFile v1.6.2:SKILL.md\n\n---\nname: a-stock-daily-market-sense\ndescription: A Stock Daily Market Sense，用于基于 Tushare Pro A 股 daily 日线数据生成盘后市场研报。当用户要求每日盘面感知、盘后复盘、赚钱效应在哪里、上涨主线是什么、主线 vs 资金轮动、爆量下跌、低位放量异动、指数背离个股、该弱不弱就是强、历史某日复盘，或基于 daily/daily_basic/涨跌停/指数数据做量化选股观察时，必须优先使用本 skill。核心方法论是成交额优先：赚钱效应用涨幅与成交额硬阈值筛候选，再由模型基于业务事实临时归纳主题；亏钱效应聚焦爆量下跌；低位放量异动用双轨低位 + 3 倍放量 + 7% 异动；指数背离只在指数走弱时输出逆势上涨候选。默认产出研报，不导出 CSV/Parquet，不提供买卖建议；不按申万、同花顺、东方财富等现成行业/概念口径分组。\nversion: 1.6.2\ntrigger_patterns:\n  - \"盘后研报\"\n  - \"每日盘面感知\"\n  - \"赚钱效应在哪里\"\n  - \"上涨主线是什么\"\n  - \"主线 vs 资金轮动\"\n  - \"爆量下跌\"\n  - \"低位放量异动\"\n  - \"该弱不弱就是强\"\n  - \"指数背离个股\"\n  - \"复盘某天的市场主线\"\n---\n\n# A Stock Daily Market Sense\n\n## 目标与边界\n\n基于 Tushare 历史交易数据，生成 A 股盘后市场感知报告，回答四个问题：\n\n1. 盘面温度如何：普涨、普跌、局部主线、情绪退潮，还是指数掩盖结构分化。\n2. 赚钱效应在哪里：哪些股票真的涨了，且成交额足以证明资金参与。\n3. 风险在哪里：哪些股票在爆量下跌，可能对应高位筹码松动、主线分歧、事件冲击或弱势出清。\n4. 结构性机会在哪里：哪些个股出现低位放量异动；指数弱时哪些股票“该弱不弱就是强”。\n\n不用于单股深度基本面、港股/美股/基金/期货/加密资产、分钟级实时交易、自动下单、组合优化或任何买卖建议。\n\n## 核心原则\n\n**成交额优先。** 强弱判断必须用成交额支撑，不能只看涨跌幅。涨跌幅是结果，成交额变化才是资金行为痕迹。\n\n主题主线由模型临时归纳，不套现成行业/概念口径。先读候选池，再根据业务事实、产品环节、产业链位置、事件催化、量价同步性分组。少于 3 只股票或共同性不足的方向，归入“其他/孤立强势股”。\n\n不要把单日上涨说成趋势。持续性至少看 3-5 个交易日；不确定时直接写不确定，不硬凑主线。\n\n## 固定数据流程\n\n1. **确定交易日 D**：解析用户日期；若给的是非交易日，用 `trade_cal` 取 D 日及以前最近交易日。默认只用 `<= D` 数据；只有用户明确要求后验时才允许 D+N。\n2. **生成证据包**：运行 `scripts/market_panel.py panel`，拿到盘面温度、成交额集中度、赚钱效应候选池、爆量下跌候选池、低位放量异动候选池、抗跌股候选池。\n3. **判断盘面状态**：优先看涨跌家数、涨跌幅中位数、大涨/大跌数量、上涨/下跌成交额占比、总成交额、主要指数表现。\n4. **归纳赚钱效应与主线**：读 `money_effect_samples`，先看候选总数和合计成交额，再分组，最后按 ★★★/★★/★ 评级。\n5. **识别爆量下跌风险**：读 `volume_decline_samples`，归纳风险类型，列高强度样本；若 ★★★ 主线代表股进入爆量池，必须写风险传导提示。\n6. **识别低位异动**：读 `low_position_volume_anomaly_samples`，按 starter / sustain / quiet / undetermined 四类呈现。\n7. **识别抗跌股**：读 `resilient_against_index_samples`。只有指数触发弱环境时才列候选；指数不弱时直接说明本模块无输出。\n8. **按模板成稿**：读取 `reference/report_template.md`，按六个固定模块填空，数字优先放表格，结论短句化。\n\n## 数据获取\n\n依赖：Python 3.9+、`tushare`、`pandas`。敏感信息只从环境变量或当前工作目录 `.env` 读取：\n\n```bash\nTUSHARE_TOKEN=your_token\n```\n\n基础命令：\n\n```bash\ncd C:\\Users\\chenh\\OneDrive\\skills\\a-stock-daily-market-sense\npython scripts/market_panel.py panel --asof 20260424 --lookback 120 --index 000300.SH\n```\n\n查看完整参数：\n\n```bash\npython scripts/market_panel.py panel --help\n```\n\n常用阈值默认值：\n\n| 模块 | 核心筛选规则 |\n|---|---|\n| 赚钱效应 | `pct_chg >= 7%` 且成交额 `>= 2 亿元`，按成交额降序 |\n| 爆量下跌 | `pct_chg <= -3%`、20 日放量倍数 `>= 2.0x`、成交额 `>= 1 亿元` |\n| 低位异动 | A 轨底部区域或 B 轨深回撤走平，且触发日 15 日放量倍数 `>= 3.0x`、涨幅 `>= 7%` |\n| 抗跌股 | 仅在沪深 300 等基准指数 5 日 `<= -2%` 或 10 日 `<= -3%` 时输出；个股 5 日相对超额 `>= 5pct`、绝对收益 `>= 0`、成交额 `>= 1 亿元` |\n\n降级规则：\n\n- `daily_basic` 不可用：仍分析涨跌、成交额、相对强弱，但标注缺少换手率、量比、市值。\n- `limit_list_d` 不可用：使用 `pct_chg >= 9.8%` / `pct_chg <= -9.8%` 的近似涨跌停口径并标注。\n- 指数数据不可用：第 6 模块跳过并说明无法判断指数弱环境。\n- 候选池为空或过少：不要硬凑结论，直接说明“无清晰赚钱效应”或“无大面积爆量下跌”。\n\n## 主线判定\n\n赚钱效应候选池只负责“哪些票有资金参与”，主题和主线必须由模型基于业务事实归纳。\n\n每个主题至少写：\n\n- 主题名\n- 代表股，按组内成交额取前 3-5 只\n- 共同业务事实\n- 入选数\n- 组合计成交额\n- 占赚钱效应总成交额比\n\n主线确认度严格按以下规则：\n\n| 评级 | 判定规则 |\n|---|---|\n| ★★★ 主线 | 组成交额占赚钱效应总成交额比 `>= 30%`，且 5 日涨幅中位 `> 0`，且 5 日相对指数超额中位 `> 0`，且连续放量天数中位 `>= 2` |\n| ★★ 潜在主线 | 上述四条满足 3 条 |\n| ★ 局部异动/资金轮动 | 满足不超过 2 条，或候选股票数少于 3 只 |\n\n若全市场上涨占比低，即便有 ★★★ 主线，也要写成“局部主线行情”，不要写成全面扩散。\n\n## 风险归纳\n\n爆量下跌不是跌幅榜复述。优先按 `decline_intensity = 放量倍数 × |跌幅|` 看异常程度，再按共同事实归纳风险类型。\n\n常见风险类型：\n\n- 高位抱团瓦解：前期涨幅大、距 120 日高点回撤浅、当日放量崩塌。\n- 主线内部分歧：与第 3 模块强方向存在交叉，但出现高成交额放量杀跌。\n- 业绩雷/事件冲击：单日重挫且成交额跳升明显。\n- 退潮补跌：5 日已累计下跌，今日继续放量。\n- ST/风险股出清：名称含 ST/退或风险标签明显。\n- 流动性杀跌：无清晰业务叙事但放量下跌。\n\n风险定性必须具体，例如“主线内部分歧加剧”“高位筹码松动”“弱势股出清”，不要写“加速恶化/趋稳/局部”这类空泛词。\n\n## 低位异动分类\n\n使用新版四类术语，不使用旧版“启动型/确认型/分歧型”：\n\n| 类型 | 含义 |\n|---|---|\n| starter | 今日触发，后续行为尚未验证 |\n| sustain | 触发后成交额维持在触发日的 70% 以上，资金仍在换手 |\n| quiet | 触发后最近 3 日成交额缩至触发日 50% 以下，且价格未明显破位 |\n| undetermined | 触发过，但既未维持高换手，也未清晰缩量企稳 |\n\n解读时把 sustain 和 quiet 放在重点位置；undetermined 数量高时，写“触发后资金分歧大”，不要解读成新主线。\n\n## 输出规范\n\n固定模块顺序：\n\n1. 盘面温度\n2. 成交额集中度与拥挤度\n3. 赚钱效应与上涨主线\n4. 亏钱效应（爆量下跌）\n5. 低位放量异动\n6. 抗跌股（该弱不弱就是强）\n\n写作纪律：\n\n- 写清楚数据日期、窗口和基准指数。\n- 所有强弱判断都给成交额数字支撑。\n- 基准指数只保留关键涨跌幅，不堆数据。\n- 数字优先表格，表格后文字只解释结论。\n- 第 3 模块必须给“主线行情”或“资金轮动”明确定性。\n- 第 4 模块必须互查 ★★★ 主线代表股是否进入爆量下跌池。\n- 第 6 模块指数不弱时直接写“今日指数环境不弱，本模块无输出”，并附指数 5 日/10 日涨跌幅和门槛。\n- 不写“次日观察点”，不写买入/卖出/持有。\n\n## 示例\n\n用户输入：\n\n```text\n使用 a stock daily market sense 生成 2026-04-24 的完整盘后报告\n```\n\n执行：\n\n```bash\npython scripts/market_panel.py panel --asof 20260424 --lookback 120 --index 000300.SH\n```\n\n输出：按 `reference/report_template.md` 的六模块结构生成 Markdown 研报，并在末尾标注数据口径、接口降级和“不构成投资建议”。\n\nFile v1.6.2:_meta.json\n\n{\n  \"ownerId\": \"kn7450t2xk0c4fzwzv90194pgd82q8yk\",\n  \"slug\": \"a-stock-daily-market-sense\",\n  \"version\": \"1.6.2\",\n  \"publishedAt\": 1777129335671\n}\n\nFile v1.6.2:reference/report_template.md\n\n**🧭 一句话盘面判断**\r\n[市场状态、赚钱效应集中度、主线清晰度、风险点。整段控制在 2-4 句]\r\n\r\n**🌡️ 1. 盘面温度**\r\n\r\n| 指标 | 今日 |\r\n|---|---:|\r\n| 上涨家数 / 下跌家数 |  |\r\n| 上涨占比 |  |\r\n| 涨跌幅中位数 |  |\r\n| 大涨数量（>=5%） |  |\r\n| 大跌数量（<=-5%） |  |\r\n| 近似涨停数 / 近似跌停数 |  |\r\n| 总成交额（亿元） |  |\r\n| 上涨成交额占比 / 下跌成交额占比 |  |\r\n| 基准指数今日涨跌幅 |  |\r\n\r\n异常变化：[只列差异显著的项，例如上涨家数大幅增减、成交额大幅缩量/放量、大跌数量显著变化、涨跌停数量异常]\r\n简短判断：[2-4 句说明普涨/普跌/局部主线/指数掩盖分化]\r\n\r\n**🎯 2. 成交额集中度与拥挤度**\r\n\r\n| 指标 | 今日 | 前一交易日 | 变化 |\r\n|---|---:|---:|---:|\r\n| Top10 成交额占比 |  |  |  |\r\n| Top20 成交额占比 |  |  |  |\r\n| Top50 成交额占比 |  |  |  |\r\n| Top100 成交额占比 |  |  |  |\r\n\r\n| 近 10 日集中度趋势 | 数值 |\r\n|---|---:|\r\n| Top50 区间变化 |  |\r\n| Top50 上行天数 |  |\r\n\r\n拥挤度判断：[集中或均衡 + 前排是否汇聚于同一临时主线 + Top50 趋势。如有典型成交额前排个股，举 1-3 例佐证]\r\n\r\n**💰🔥 3. 赚钱效应与上涨主线**\r\n\r\n> 数据基础：`money_effect_samples`（pct_chg ≥ 7% 且 成交额 ≥ 2 亿，按成交额降序）。\r\n\r\n**3.1 赚钱效应总览**\r\n\r\n| 指标 | 数值 |\r\n|---|---:|\r\n| 候选股票数 |  |\r\n| 候选股合计成交额（亿元） |  |\r\n| 候选股合计成交额占当日全市场比 |  |\r\n| 候选股涨幅中位 / 最大 |  /  |\r\n| 候选股 5 日涨幅中位 |  |\r\n| 候选股 5 日相对指数超额中位 |  |\r\n| 近似涨停数（pct_chg ≥ 9.8%） |  |\r\n\r\n一句话判断：[局部强主线 / 多线开花 / 稀疏轮动；以候选股数和最大组占比为依据]\r\n\r\n**3.2 主题分组（模型基于业务事实归纳）**\r\n\r\n| 组号 | 主题 | 代表股（按组内成交额TOP5） | 共同业务事实 | 入选数 | 组合计成交额（亿） | 占赚钱效应总成交额比 |\r\n|---|---|---|---|---:|---:|---:|\r\n| 组1 |  |  |  |  |  | % |\r\n| 组2 |  |  |  |  |  | % |\r\n| 组3 |  |  |  |  |  | % |\r\n| 其他 | 孤立强势股 |  | — |  |  | % |\r\n\r\n分组要求：①不套现成行业概念；②每组至少 3 只股票，少于 3 只列入\"其他\"；③必要时补查公司主营、公告解释共同点；④代表股取组内成交额前 5（不足 5 只就全部列）。\r\n\r\n**3.3 主线判定（按成交额厚度 + 持续性 + 扩散度）**\r\n\r\n| 组号 | 主题 | 5日涨幅中位 | 5日相对超额中位 | 放量倍数中位 | 连续放量天数中位 | 主线确认度 | 拥挤度 | 催化逻辑 |\r\n|---|---|---:|---:|---:|---:|---|---|---|\r\n| 组1 |  |  |  |  |  | ★★★/★★/★ | 高/中/低 |  |\r\n| 组2 |  |  |  |  |  |  |  |  |\r\n| 组3 |  |  |  |  |  |  |  |  |\r\n\r\n判定规则（严格按此评级，不可主观放宽）：\r\n- ★★★ 主线：组成交额占比 ≥ 30% + 5 日涨幅中位 > 0 + 5 日相对超额中位 > 0 + 连续放量天数中位 ≥ 2\r\n- ★★ 潜在主线：满足 4 条中的 3 条\r\n- ★ 局部异动：满足 ≤ 2 条\r\n\r\n拥挤度：高 = 组内代表股同时在第 2 模块成交额 Top10/20；中 = 仅 1 只入 Top20；低 = 无代表股入 Top20。\r\n催化逻辑：有明确事件用一句话写明；无则写\"无明确事件催化，量价驱动\"。\r\n\r\n**3.4 主线组内股票明细**（合并展示所有 ★★★ 主线的代表股；每个 ★★★ 主线 5 只，按主题分块插入空行；少于 5 只就全列）\r\n\r\n| 股票 | 当日涨幅 | 成交额(亿) | 5日涨幅 | 5日相对超额 | 放量倍数 | 近5日放量天数 |\r\n|---|---:|---:|---:|---:|---:|---:|\r\n| [组1主题] |  |  |  |  |  |  |\r\n|  |  |  |  |  |  |  |\r\n| [组2主题] |  |  |  |  |  |  |\r\n|  |  |  |  |  |  |  |\r\n\r\n**主线 vs 资金轮动结论**：[必须明确定性。≥1 个 ★★★ 主线 = 主线行情；全部 ≤ ★★ = 资金轮动；不允许含糊带过。如同时给出\"局部主线 vs 全面扩散\"的判断，例：上涨占比 < 50% 时即便有 ★★★ 主线也属于局部主线行情]\r\n\r\n**🧊 4. 亏钱效应（爆量下跌）**\r\n\r\n> 数据基础：`volume_decline_samples`（pct_chg ≤ -3% 且 放量倍数 ≥ 2x 且 成交额 ≥ 1 亿，按 decline_intensity 降序）。\r\n\r\n[一句话判断（以候选数、最大风险组占比、跌停数为依据）。如有典型样本贡献的成交额值得点名（例如单一股票成交额数百亿且爆量下跌），在此处直接说明。不再单独列总览表]\r\n\r\n**4.1 风险类型归纳（模型分组，不套行业标签）**\r\n\r\n| 风险类型 | 代表股（按 decline_intensity TOP5） | 共同特征 | 入选数 | 跌幅中位 | 放量倍数中位 | 距120日高点中位 | 风险定性 |\r\n|---|---|---|---:|---:|---:|---:|---|\r\n|  |  |  |  |  |  |  |  |\r\n|  |  |  |  |  |  |  |  |\r\n\r\n参考类型：高位抱团瓦解、业绩雷/事件冲击、退潮补跌、ST/风险股出清、流动性杀跌、主线内部分歧。\r\n\r\n风险定性写法（具体描述，不要写\"加速/趋稳/局部\"这类抽象词）：例如\"主线内部分歧加剧\"、\"高位筹码松动\"、\"弱势股出清\"、\"局部补跌\"、\"业绩雷扩散\"。每类必须给出共同特征，仅靠跌幅相近不构成一类。\r\n\r\n**4.2 高强度爆量下跌个股明细**（按 decline_intensity 排序，前 10-15 只）\r\n\r\n| 排名 | 股票 | 当日跌幅 | 放量倍数 | decline_intensity | 成交额(亿) | 5日跌幅 | 距120日高点 | 风险归类 |\r\n|---:|---|---:|---:|---:|---:|---:|---:|---|\r\n| 1 |  |  |  |  |  |  |  |  |\r\n| 2 |  |  |  |  |  |  |  |  |\r\n\r\n**风险传导提示**：[第 3 模块 ★★★ 主线代表股若进入 4.2 明细且属\"退潮补跌\"或\"高位抱团瓦解\"，必须标注主线见顶预警，不可省略。如果只是大方向内部其他股票出现爆量下跌（不是 ★★★ 主线代表股本身），写\"主线内部分歧加剧，暂不升级为见顶预警；若 [代表股] 也转入爆量下跌池，再升级\"]\r\n\r\n**🌱 5. 低位放量异动**\r\n\r\n> 数据基础：`low_position_volume_anomaly_samples`（双轨低位 + 3 倍放量 + 7% 涨幅，按 starter/sustain/quiet/undetermined 分类）。\r\n\r\n**5.1 候选总览**\r\n\r\n| 指标 | 数值 |\r\n|---|---:|\r\n| 总候选数 |  |\r\n| starter（启动型）数 |  |\r\n| sustain（持续换手型）数 |  |\r\n| quiet（缩量企稳型）数 |  |\r\n| undetermined（分歧型）数 |  |\r\n\r\n一句话判断（按四类计数分布做诊断）：\r\n- starter 数 ≥ 5：新增机会涌现，关注首日触发的低位股\r\n- sustain 占比高：市场存在持续抱团方向，资金没有快速撤离\r\n- quiet 占比高：建仓后等待方向选择，临近变盘\r\n- undetermined 占比高：触发后资金分歧大，慎追\r\n- starter = quiet = 0 且 sustain 少：低位方向并非大面积启动，更多是前期触发的后续分化\r\n\r\n**5.2 starter（启动型）**：今日触发，后续待验证\r\n\r\n| 股票 | 触发日涨幅 | 触发日放量倍数 | 低位轨道 | 距120日高点 | 120日价格分位 | 成交额(亿) |\r\n|---|---:|---:|:---:|---:|---:|---:|\r\n|  |  |  | A/B |  |  |  |\r\n\r\n如无候选，写\"今日无 starter 候选\"。\r\n\r\n**5.3 sustain（持续换手型）**：触发后量能维持，资金换手吃筹\r\n\r\n| 股票 | 触发日距今 | 触发日涨幅 | 触发日放量倍数 | 触发后最低维持比例 | 今日成交额(亿) | 低位轨道 |\r\n|---|---:|---:|---:|---:|---:|:---:|\r\n|  | -N 日 |  |  |  |  | A/B |\r\n\r\n如无候选，写\"今日无 sustain 候选\"。\r\n\r\n**5.4 quiet（缩量企稳型）**：触发后缩量横盘，等待方向\r\n\r\n| 股票 | 触发日距今 | 触发日涨幅 | 触发日放量倍数 | 近3日成交额比例 | 今日成交额(亿) | 低位轨道 |\r\n|---|---:|---:|---:|---:|---:|:---:|\r\n|  | -N 日 |  |  |  |  | A/B |\r\n\r\n如无候选，写\"今日无 quiet 候选\"。\r\n\r\n**5.5 undetermined（分歧型）**：触发但量价分歧\r\n\r\n| 股票 | 触发日距今 | 触发日涨幅 | 触发日放量倍数 | 触发后最低维持比例 | 近3日成交额比例 | 今日成交额(亿) |\r\n|---|---:|---:|---:|---:|---:|---:|\r\n|  | -N 日 |  |  |  |  |  |\r\n\r\nundetermined 数量较多时全部列出（最多 10 只）。如全部列出仍不能解释分歧，用一句话指出共性（如\"多数候选既未维持高换手也未明显缩量\"）。\r\n\r\n**🧭 6. 抗跌股（该弱不弱就是强）**\r\n\r\n> 数据基础：`resilient_against_index_samples`（仅在指数走弱时输出；rel_ret_5d ≥ 5pct + ret_5d > 0 + 成交额 ≥ 1 亿）。\r\n\r\n**指数环境**：[读取脚本 `index_environment` 字段。`is_weak = false` 时本模块写\"今日指数环境不弱，本模块无输出。沪深 300 5 日涨跌幅为 X%，10 日涨跌幅为 Y%，未触发新版规则的弱指数门槛（5 日 ≤ -2% 或 10 日 ≤ -3%）\"，跳过下面的表格。这种自解释写法让读者一眼明白为何跳过]\r\n\r\n| 股票 | 5 日收益 | 5 日相对指数超额 | 放量倍数 | 距120日高点 | 业务归类 |\r\n|---|---:|---:|---:|---:|---|\r\n|  |  |  |  |  |  |\r\n\r\n抗跌方向归纳：[把候选股按业务事实归到 1-3 个抗跌方向，例如稳定红利、防御性消费、独立产业逻辑等。共同性弱时写\"分散个股韧性，无统一抱团方向\"]\r\n\r\n以上基于 Tushare 历史交易数据和当前可得公开信息，不构成投资建议。","readmeExcerpt":"Skill: A Stock Daily Market Sense Owner: chinfi-codex Summary: 基于 Tushare Pro A 股日线与 Baostock 风格指数生成盘后市场研报。当用户要求分析每日或历史盘面、指数与市场风格、情绪和成交额集中度、赚钱效应与上涨主线、即时及短中期催化、主线细分线路、爆量下跌，或容量上涨、全市场月线平台突破、10:30 前涨停、折扣启动等特征分组时使用；也用于特征分组量化回... Tags: latest:2.0.2 Version history: v2.0.2 | 2026-07-14T02:23:00.100Z | user Add PostgreSQL-backed market workflows, catalyst and subline mining, lifecycle and factor analysis, and updated HTML re","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"python3 scripts/run_daily_panel.py --cleanup YYYYMMDD"},{"language":"bash","snippet":"# 内置折扣启动（多日序列组，复用生产函数，语义同线上）\n   python3 scripts/factor_backtest.py --group discount_relaunch --min-n 15\n   # 自定义单日特征阈值组（含容量上涨式），用 spec\n   python3 scripts/factor_backtest.py --group custom --spec my_group.json"},{"language":"bash","snippet":"TUSHARE_TOKEN=your_token\nALPHA_DB_BACKEND=postgresql\nALPHA_PG_URL=postgresql://alpha_user:alpha_pass@/alpha_data?host=/tmp\nTAVILY_API_KEY=your_token  # 催化搜索主路径；缺失时可由宿主 Web Search 降级"},{"language":"bash","snippet":"python3 scripts/run_daily_panel.py --asof 20260429 --lookback 120 --market-trend-days 90 --index 000300.SH"},{"language":"bash","snippet":"python3 scripts/theme_group_stats.py \\\n  --context reports/module_context_YYYYMMDD/module3_money_effect.json \\\n  --mapping reports/module_context_YYYYMMDD/module3_theme_map.json \\\n  --output reports/module_context_YYYYMMDD/module3_theme_stats.json\npython3 scripts/web_search.py \"主题 事件 YYYY-MM-DD\" --topic news \\\n  --start-date YYYY-MM-DD --end-date YYYY-MM-DD --max-results 6"},{"language":"bash","snippet":"python3 scripts/render_report_html.py --input reports/report_20260429.md [--theme default|claude|print]"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: a-stock-daily-market-sense\ndescription: 基于 Tushare Pro A 股日线与 Baostock 风格指数生成盘后市场研报。当用户要求分析每日或历史盘面、指数与市场风格、情绪和成交额集中度、赚钱效应与上涨主线、即时及短中期催化、主线细分线路、爆量下跌，或容量上涨、全市场月线平台突破、10:30 前涨停、折扣启动等特征分组时使用；也用于特征分组量化回溯与相对收益因子挖掘。本 skill 先生成确定性证据包，再由模型按模块判断与写作；脚本不调用 LLM，外部消息不得改变量价确定的主线星级，不套用现成行业/概念分类，不提供买卖建议。\n---\n\n# Tushare Daily Market Sense\n\n## 目标\n\n基于 Tushare 日线、指数、成交额与本地情绪历史，为 A 股盘后复盘生成结构化研报：盘面趋势、成交额集中度、赚钱效应与上涨主线、爆量下跌风险、特征分组分析。\n\n不做单股基本面深度研究、港股/美股/基金/期货/加密分析、超短线交易决策、自动下单、组合优化或买卖建议。脚本只负责取数、计算、筛选、切分 JSON；主题归纳、风险措辞和研报写作由模型完成。\n\n## 核心理念\n\n成交额优先。所有强弱判断都要有成交额证据：上涨主线按成交额厚度确认，爆量下跌按放量异常与跌幅强度识别，特征分组按命中规则与成交额证据分开呈现。\n\n主题主线由模型基于业务事实临时归纳，不套现成行业或概念标签。共同性不足时明确写“暂不构成主线”或“资金轮动”。\n\n## 工作流程\n\n1. 确定交易日：解析“今天/最近”或具体日期，默认只使用 `D` 及以前数据；只有用户明确要求后验时才允许 `--allow-future`。\n2. 生成证据包：运行 `scripts/run_daily_panel.py`。脚本会直接调用数据管线，写出完整 evidence、个股 K 线展示数据（`kline_YYYYMMDD.json`）和模块级 JSON。\n3. 生成首轮模块产物：模块 1、2、4、5 继续各自只读自己的 JSON、方法论与模板。模块 3 首轮只根据 `module3_money_effect.json` 归纳临时主题、父主题成员与候选细分成员，先写 `stars: null` 的 `module3_theme_map.json`；不要搜索，也不要在统计前凭手算锁星。有 subagent 时分发最小上下文，没有时按相同边界顺序执行。\n4. 统计并锁定模块 3 星级：运行 `theme_group_stats.py` 生成 `module3_theme_stats.json`，再由模型严格按 Market Evidence Pack 与统计结果写回 `stars: 1/2/3`。星级锁定后，只对当日 ★★/★★★ 主线强制尝试搜索，并按宿主能力选读知识库或产业链资料；★ 级方向不搜索、不做产业推演、不进入 3.2。主 agent 将 Web 结果、可选的宿主知识证据与查询错误压缩成 `module3_enrichment_pack.json`。外部资料只用于解释催化、推演产业变量与挖掘细分线路，绝不回写或上调 3.1 星级。详细搜索、证据和评级纪律见 `references/methodology/catalyst_subline_mining.md`。\n5. 聚合成稿：模块 3 第二阶段只读取 theme map、统计结果、enrichment pack、方法论与模板，完成 3.1 主线判定、3.2 催化与细分线路推演、3.3 领导股与弹性股。主 agent 再读取模块 1-5 输出、`assembled_checks.json` 与 `references/methodology/output_discipline.md`，补一句话盘面判断、风险传导提示和最终语气校准。搜索或知识查询失败不阻断日报，但要披露证据缺口并降低产业推演确定性。\n6. 主线生命周期落库：报告定稿后，把当日 3.1 主线判定沉淀进 PG 生命周期台账。先运行 `python3 scripts/theme_lifecycle.py context --asof YYYYMMDD` 取注册表、各主线近期状态与 watchlist；模型完成别名归一（当日临时主题名 → canonical theme_id）和生命周期状态判定（低位启动/在场候选/主线确认/高位分歧/退潮/修复/再聚焦/沉寂），写出 `reports/lifecycle_YYYYMMDD.json` 后运行 `python3 scripts/theme_lifecycle.py record --input reports/lifecycle_YYYYMMDD.json` 落库。脚本只做确定性校验（枚举、状态机转移合法性、theme_id 存在性），判断留给模型；输入格式、状态机与判定基准见 `references/theme_lifecycle.md`。\n7. 按需生成 HTML：当用户要求 HTML、网页、可视化报告或截图风格输出时，先完成并核对 `reports/report_YYYYMMDD.md`，再运行 `scripts/render_report_html.py` 生成同日期 HTML。HTML 是展示层产物，不新增研报判断、不删减 Markdown 正文；若同目录存在 `evidence_YYYYMMDD_utf8.json` 与 `kline_YYYYMMDD.json`，HTML 会自动读取指数 120 日 K 线与个股 K 线并插入对应正文附近；其中 5.2 全市场月线平台突破组改画**月线 K 线图**（多年底部箱体阴影 + 箱体上沿 pivot 水平线 + 突破月标记，数据来自 `kline_YYYYMMDD.json` 的 `monthly` 段），其余分组仍为 120 日日线。若 `theme_daily_state` 已有该日数据，HTML 还会在主线判定小节下方自动注入主线生命周期泳道图区块（近 22 个交易日，红 = 强势在场、绿 = 退潮、闪电 = 低位启动；`--lifecycle-days` 调窗口、`--no-lifecycle` 关闭）；区块只展示台账已落库数据，不新增判断。若 evidence 含风格序列，HTML 会在「市场风格」小节表格下方自动注入两张 60 日归一化对比图（规模轴五线 / 成长价值红利三线，起点=100），区块只展示 evidence 已有数据、不新增判断。\n8. 证据包边界：`reports/evidence_YYYYMMDD_utf8.json` 是本 skill 的 Market Evidence Pack，只属于 skill 输出目录。即使宿主把最终趋势复盘写入其他知识系统，也不要把该证据包复制或登记成宿主原始来源；宿主知识查询只以可选 evidence pack 输入，不成为 core skill 的路径依赖。生命周期台账同理：它是 skill 域运行时数据，归 PG 管。\n9. 清理临时产物：确认 `reports/report_YYYYM"},{"path":"scripts/_shared/html_report/README.md","content":"# shared/html_report\n\n仓库级 HTML 报告渲染框架。各报告型 skill 把 Markdown 研报 + JSON 证据包套成一份自包含的单页 HTML(图表不依赖外部 CDN)。\n\n设计目标:**新 skill 出 HTML 只写一张\"薄清单\"**——怎么读自己的数据、画哪几张图——其余(命令行、Markdown→HTML、主题、校验、图表工具、染色/hero 装饰)全部由本包提供。\n\n## 一张薄清单长什么样\n\n```python\nimport sys\nfrom pathlib import Path\nsys.path.insert(0, str(Path(__file__).parent / \"_shared\"))\n\nfrom html_report import (\n    HtmlReportBuilder, ChartHook, RenderJob,\n    render_report, PillDecoration, HeroDecoration,\n)\n\ndef add_arguments(parser):                 # 可选:本 skill 额外的命令行参数\n    parser.add_argument(\"--evidence\", default=None)\n\ndef build_job(args) -> RenderJob:          # 唯一要写的:读数据 + 选图表\n    md = Path(args.input).read_text(encoding=\"utf-8\")\n    evidence = load_my_evidence(args.evidence)        # 域:自己的 evidence schema\n    charts = extract_my_payload(evidence)             # 域:整形成 JS 好用的 payload\n    builder = HtmlReportBuilder(title=args.title or Path(args.input).stem,\n                                theme=args.theme, meta_text=\"…\")\n    builder.add_decoration(PillDecoration(MY_PILL_RULES))   # 词表是数据\n    builder.add_decoration(HeroDecoration(heading_prefix=\"核心判断\"))\n    builder.add_chart_hook(ChartHook(name=\"my-charts\", payload=charts, js=MY_CHARTS_JS))\n    out = Path(args.output) if args.output else Path(args.input).with_suffix(\".html\")\n    return RenderJob(markdown_text=md, builder=builder, output_path=out,\n                     summary={\"…\": \"打印到 stdout 的诊断字段\"})\n\nif __name__ == \"__main__\":\n    raise SystemExit(render_report(\n        description=\"Render … to static HTML.\",\n        build_job=build_job, add_arguments=add_arguments))\n```\n\n`render_report` 统一负责:解析 `--input/--output/--title/--theme/--no-validate/--strict`、读 Markdown、跑 `build_job`、以\"校验失败转 warning 不阻断\"的策略渲染(`--strict` 才硬失败)、写文件、打印 JSON 摘要、把异常收成 `error: …` + 退出码 1。\n\n## 四层结构\n\n| 层 | 模块 | 职责 |\n|---|---|---|\n| CLI | `cli.py` | `render_report` / `RenderJob`,吃掉每个 skill 重复的 argparse + main 编排 |\n| 装饰 | `decorations.py` | `PillDecoration` / `HeroDecoration` / `CollapsibleUpdatesDecoration` / `TimelineDecoration`,数据驱动,机制只一份 |\n| 图表 | `chartkit.js` (`window.CK`) + `ChartHook` | 共享 SVG/DOM 工具 + 各 skill 自带的画图 JS |\n| 外壳 | `builder.py` `markdown_engine.py` `text_validator.py` `themes/` | HTML 骨架、Markdown→HTML、文本保全校验、CSS 主题 |\n\n## 装饰:换词表不换代码\n\n```python\nPillDecoration(rules=[(r\"^(成长股|成熟龙头)$\", \"pill\"),\n                      (r\"^(强|高)$\", \"pill neg\")])          # 表格单元格按正则染成 pill\nHeroDecoration(heading_prefix=\"一句话盘面判断\",\n               collect_tags=(\"P\",), max_blocks=3,\n               stop_at_numbered=True, number_units=\"%|pct|倍\",\n               keyword_pattern=\"上证|创业板|科创50\")          # 把摘要标题升格成 hero 卡\nCollapsibleUpdatesDecoration()      # ## 更新 YYYY-MM-DD：摘要 → 折叠卡(默认最新展开)\nTimelineDecoration()                # 顶部 日期|版本号 表 + 文末 版本变更记录 表 → 可点版本时间轴\n```\n\n活报告(同一报告随时间多轮更新)用后两个装饰:更新章节折叠成带日期徽标 + 一句话摘要的卡片(id 为 `upd-<date>`,供其它组件跳转),两张版本表合成一条时间轴(节点弹出该版本主要变更/关键数字,可跳转对应更新卡;时间轴挂上后隐藏顶部两列表,不足 2 个版本不动作)。**添加顺序**:CollapsibleUpdates 在 Hero 之前(hero 收集遇 section/aside/blockquote 停止,不会吞卡),Timeline 在两者"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7450t2xk0c4fzwzv90194pgd82q8yk\",\n  \"slug\": \"a-stock-daily-market-sense\",\n  \"version\": \"2.0.2\",\n  \"publishedAt\": 1783995780100\n}"},{"path":"references/cli_reference.md","content":"# CLI 参数参考\n\n本 skill 各脚本的常用参数集中在这里，SKILL.md 正文只留指引。\n\n## `run_daily_panel.py`（每日复盘证据）\n\n| 参数 | 含义 | 默认 |\n|---|---|---:|\n| `--fetch-workers` | cache/API 获取线程数；排查限流时设为 1 | 6 |\n| `--index-kline-days` | HTML 上证/创业板/科创50 K 线展示窗口，独立于 `--market-trend-days` | 120 |\n| `--money-pct-threshold` | 赚钱效应最低当日涨幅 | 7.0 |\n| `--money-amount-threshold` | 赚钱效应最低成交额，单位亿元 | 2.0 |\n| `--decline-pct-max` | 爆量下跌最大当日涨幅 | -3.0 |\n| `--decline-volume-ratio` | 爆量下跌最低 20 日放量倍数 | 2.0 |\n| `--capacity-market-cap-threshold` | 容量上涨最低总市值，单位亿元，严格大于 | 70.0 |\n| `--capacity-amount-threshold` | 容量上涨最低成交额，单位亿元，严格大于 | 5.0 |\n| `--capacity-pct-threshold` | 容量上涨最低当日涨幅，严格大于 | 8.0 |\n| `--feature-sample-limit` | 模块 5 每组最大样本数 | 60 |\n| `--discount-market-cap-threshold` | 折扣启动最低总市值，单位亿元，严格大于 | 80.0 |\n| `--discount-amount-threshold` | 折扣启动最低成交额，单位亿元，严格大于 | 5.0 |\n| `--discount-pct-threshold` | 折扣启动最低当日涨幅，严格大于 | 7.0 |\n| `--discount-min` | 折扣启动前高折扣下界（前高之后最低价/前高收盘价），严格大于 | 0.6 |\n| `--discount-max` | 折扣启动前高折扣上界，严格小于 | 0.85 |\n| `--discount-high-lookback` | 折扣启动\"前高\"回看交易日数（取该窗口内收盘价最高日） | 200 |\n| `--discount-low-recency-days` | 折扣启动回撤最低点须落在大涨日前几个交易日内（最低点新鲜度） | 5 |\n| `--discount-pre-contraction-max` | 折扣启动调整缩量上限（前5日均额/前20日均额） | 0.9 |\n| `--discount-volume-expansion-min` | 折扣启动当日重新放量下限（amount_vs_prev5_ratio，相对前5日缩量期） | 2.0 |\n| `--cleanup YYYYMMDD` | 删除该日期临时产物（evidence/kline/context/module_context + 因子挖掘临时包），保留 report md/html | — |\n\n## `factor_backtest.py`（特征因子挖掘）\n\n见 `references/methodology/factor_mining.md` §五。要点：`--group discount_relaunch|custom`、`--spec FILE`、\n`--min-n`、`--entry/--horizon` 选目标格、`--skip-backfill` 快速冒烟、`--refresh-basic` 修脏缓存。\n产物：决策包 `factor_mining_<group>_<asof>.json`（≤150KB）+ `_detail.json`（整列 signals）。\n\n## `factor_lab.py`（因子实验台账）\n\n每次 `factor_backtest.py` 挖矿会把确定性摘要写入 PG `factor_experiment_log`。`factor_lab.py` 只负责查询实验和补人工 verdict：\n\n| 命令 | 作用 |\n|---|---|\n| `experiments --recent N` | 列最近挖矿实验 |\n| `experiments --set-verdict <g>@<w>@<hash前缀> --verdict adopted\\|rejected\\|observing [--note ..]` | 人工判分（只改 verdict 与说明） |\n\n## `render_report_html.py`（HTML 展示层）\n\n`--input reports/report_YYYYMMDD.md`、`--theme default|claude|print`。见 SKILL.md「数据获取」HTML 段。"},{"path":"references/market_data.json","content":"{\n  \"metadata\": {\n    \"source_csv\": \"references/market_data.csv\",\n    \"generated_at\": \"2026-06-28 18:23:21\",\n    \"sort\": \"trade_date_ascending\",\n    \"window_start\": \"20251114\",\n    \"window_end\": \"20260626\"\n  },\n  \"columns\": [\n    \"日期\",\n    \"上涨\",\n    \"涨停\",\n    \"下跌\",\n    \"跌停\",\n    \"平盘\",\n    \"活跃度\",\n    \"情绪值\",\n    \"成交额\",\n    \"融资净买入\",\n    \"全市场换手率\"\n  ],\n  \"records\": [\n    {\n      \"日期\": \"20251114\",\n      \"trade_date\": \"20251114\",\n      \"上涨\": 1961.0,\n      \"涨停\": 89.0,\n      \"下跌\": 3323.0,\n      \"跌停\": 9.0,\n      \"平盘\": 154.0,\n      \"活跃度\": 36.46,\n      \"情绪值\": 36.46,\n      \"成交额\": 1980381884.0,\n      \"融资净买入\": -14818381779.0,\n      \"全市场换手率\": 2.0216\n    },\n    {\n      \"日期\": \"20251117\",\n      \"trade_date\": \"20251117\",\n      \"上涨\": 2584.0,\n      \"涨停\": 100.0,\n      \"下跌\": 2726.0,\n      \"跌停\": 12.0,\n      \"平盘\": 127.0,\n      \"活跃度\": 47.8,\n      \"情绪值\": 47.8,\n      \"成交额\": 1930321103.0,\n      \"融资净买入\": 6203695015.0,\n      \"全市场换手率\": 1.9755\n    },\n    {\n      \"日期\": \"20251118\",\n      \"trade_date\": \"20251118\",\n      \"上涨\": 1278.0,\n      \"涨停\": 62.0,\n      \"下跌\": 4106.0,\n      \"跌停\": 38.0,\n      \"平盘\": 56.0,\n      \"活跃度\": 23.6,\n      \"情绪值\": 23.6,\n      \"成交额\": 1945958605.0,\n      \"融资净买入\": 1076793187.0,\n      \"全市场换手率\": 2.0099\n    },\n    {\n      \"日期\": \"20251119\",\n      \"trade_date\": \"20251119\",\n      \"上涨\": 1200.0,\n      \"涨停\": 62.0,\n      \"下跌\": 4175.0,\n      \"跌停\": 33.0,\n      \"平盘\": 67.0,\n      \"活跃度\": 22.22,\n      \"情绪值\": 22.22,\n      \"成交额\": 1742665765.0,\n      \"融资净买入\": -6009363856.0,\n      \"全市场换手率\": 1.801\n    },\n    {\n      \"日期\": \"20251120\",\n      \"trade_date\": \"20251120\",\n      \"上涨\": 1453.0,\n      \"涨停\": 49.0,\n      \"下跌\": 3850.0,\n      \"跌停\": 23.0,\n      \"平盘\": 138.0,\n      \"活跃度\": 26.81,\n      \"情绪值\": 26.81,\n      \"成交额\": 1722634730.0,\n      \"融资净买入\": -7262266892.0,\n      \"全市场换手率\": 1.7927\n    },\n    {\n      \"日期\": \"20251121\",\n      \"trade_date\": \"20251121\",\n      \"上涨\": 354.0,\n      \"涨停\": 32.0,\n      \"下跌\": 5072.0,\n      \"跌停\": 105.0,\n      \"平盘\": 18.0,\n      \"活跃度\": 6.53,\n      \"情绪值\": 6.53,\n      \"成交额\": 1983599376.0,\n      \"融资净买入\": -30505273536.0,\n      \"全市场换手率\": 2.1224\n    },\n    {\n      \"日期\": \"20251124\",\n      \"trade_date\": \"20251124\",\n      \"上涨\": 4228.0,\n      \"涨停\": 77.0,\n      \"下跌\": 1104.0,\n      \"跌停\": 34.0,\n      \"平盘\": 108.0,\n      \"活跃度\": 76.92,\n      \"情绪值\": 76.92,\n      \"成交额\": 1740350183.0,\n      \"融资净买入\": -4258451204.0,\n      \"全市场换手率\": 1.8562\n    },\n    {\n      \"日期\": \"20251125\",\n      \"trade_date\": \"20251125\",\n      \"上涨\": 4300.0,\n      \"涨停\": 92.0,\n      \"下跌\": 993.0,\n      \"跌停\": 8.0,\n      \"平盘\": 145.0,\n      \"活跃度\": 79.02,\n      \"情绪值\": 79.02,\n      \"成交额\": 1826169390.0,\n      \"融资净买入\": 2529287846.0,\n      \"全市场换手率\": 1.9274\n    },\n    {\n      \"日期\": \"20251126\",\n      \"trade_date\": \"20251126\",\n      \"上涨\": 1692.0,\n      \"涨停\": 76.0,\n      \"下跌\": 3593.0,\n      \"跌停\": 9.0,\n      \"平盘\": 149.0,\n      \"活跃度\": 31.51,\n      \"情绪值\": 31.51,\n      \"成交额\": 1797190474.0,\n      \"融资净买入\": 4587527473.0,\n      \"全市场换手率\": 1.8961\n    },\n    {\n      \"日期\": \"20251127\",\n      \"trade_date\": \"20251127\",\n      \"上涨\": 2790.0,\n      \"涨停\": "}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"基于 Tushare Pro A 股日线与 Baostock 风格指数生成盘后市场研报。当用户要求分析每日或历史盘面、指数与市场风格、情绪和成交额集中度、赚钱效应与上涨主线、即时及短中期催化、主线细分线路、爆量下跌，或容量上涨、全市场月线平台突破、10:30 前涨停、折扣启动等特征分组时使用；也用于特征分组量化回... Skill: A Stock Daily Market Sense Owner: chinfi-codex Summary: 基于 Tushare Pro A 股日线与 Baostock 风格指数生成盘后市场研报。当用户要求分析每日或历史盘面、指数与市场风格、情绪和成交额集中度、赚钱效应与上涨主线、即时及短中期催化、主线细分线路、爆量下跌，或容量上涨、全市场月线平台突破、10:30 前涨停、折扣启动等特征分组时使用；也用于特征分组量化回... Tags: latest:2.0.2 Version history: v2.0.2 | 2026-07-14T02:23:00.100Z | user Add PostgreSQL-backed market workflows, catalyst and subline mining, lifecycle and factor analysis, and updated HTML re","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1028,"uniquenessScore":56,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T16:35:47.950Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T16:35:47.950Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T21:57:30.377Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}