A Stock Daily Market Sense
基于 Tushare Pro A 股日线与 Baostock 风格指数生成盘后市场研报。当用户要求分析每日或历史盘面、指数与市场风格、情绪和成交额集中度、赚钱效应与上涨主线、即时及短中期催化、主线细分线路、爆量下跌,或容量上涨、全市场月线平台突破、10:30 前涨停、折扣启动等特征分组时使用;也用于特征分组量化回...
chinfi-codex
@chinfi-codex
What This Skill Does
Generates structured post-market A-share research reports using Tushare daily data and Baostock style indices. Analyzes market trends, turnover concentration, money-making effects, leading themes, catalysts, and characteristic groupings like volume surges or breakout patterns.
Replaces manual post-market data aggregation and subjective theme labeling by providing a deterministic evidence pack with turnover-weighted theme scoring and strict methodology for report generation.
When to Use It
- Analyze today's A-share market breadth, index performance, and style rotation after market close
- Identify leading themes with turnover concentration evidence and assign star ratings
- Detect abnormal volume surges with price decline for risk warning
- Run characteristic grouping backtests like discount relaunch or monthly platform breakout
- Generate a structured daily market report with catalyst analysis and sub-line reasoning
Install
$ openclaw skills install @chinfi-codex/a-stock-daily-market-senseTushare Daily Market Sense
目标
基于 Tushare 日线、指数、成交额与本地情绪历史,为 A 股盘后复盘生成结构化研报:盘面趋势、成交额集中度、赚钱效应与上涨主线、爆量下跌风险、特征分组分析。
不做单股基本面深度研究、港股/美股/基金/期货/加密分析、超短线交易决策、自动下单、组合优化或买卖建议。脚本只负责取数、计算、筛选、切分 JSON;主题归纳、风险措辞和研报写作由模型完成。
核心理念
成交额优先。所有强弱判断都要有成交额证据:上涨主线按成交额厚度确认,爆量下跌按放量异常与跌幅强度识别,特征分组按命中规则与成交额证据分开呈现。
主题主线由模型基于业务事实临时归纳,不套现成行业或概念标签。共同性不足时明确写“暂不构成主线”或“资金轮动”。
工作流程
-
确定交易日:解析“今天/最近”或具体日期,默认只使用
D及以前数据;只有用户明确要求后验时才允许--allow-future。 -
生成证据包:运行
scripts/run_daily_panel.py。脚本会直接调用数据管线,写出完整 evidence、个股 K 线展示数据(kline_YYYYMMDD.json)和模块级 JSON。 -
生成首轮模块产物:模块 1、2、4、5 继续各自只读自己的 JSON、方法论与模板。模块 3 首轮只根据
module3_money_effect.json归纳临时主题、父主题成员与候选细分成员,先写stars: null的module3_theme_map.json;不要搜索,也不要在统计前凭手算锁星。有 subagent 时分发最小上下文,没有时按相同边界顺序执行。 -
统计并锁定模块 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。 -
聚合成稿:模块 3 第二阶段只读取 theme map、统计结果、enrichment pack、方法论与模板,完成 3.1 主线判定、3.2 催化与细分线路推演、3.3 领导股与弹性股。主 agent 再读取模块 1-5 输出、
assembled_checks.json与references/methodology/output_discipline.md,补一句话盘面判断、风险传导提示和最终语气校准。搜索或知识查询失败不阻断日报,但要披露证据缺口并降低产业推演确定性。 -
主线生命周期落库:报告定稿后,把当日 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。 -
按需生成 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 已有数据、不新增判断。 -
证据包边界:
reports/evidence_YYYYMMDD_utf8.json是本 skill 的 Market Evidence Pack,只属于 skill 输出目录。即使宿主把最终趋势复盘写入其他知识系统,也不要把该证据包复制或登记成宿主原始来源;宿主知识查询只以可选 evidence pack 输入,不成为 core skill 的路径依赖。生命周期台账同理:它是 skill 域运行时数据,归 PG 管。 -
清理临时产物:确认
reports/report_YYYYMMDD.md(及按需生成的 HTML)已写入并可读后,运行一条确定性清理命令,不要手工逐个删文件:python3 scripts/run_daily_panel.py --cleanup YYYYMMDD该命令删除同日期的 evidence、kline、stderr 日志、lifecycle 输入、report_context 与 module_context 目录,永远不会碰
report_YYYYMMDD.md/report_YYYYMMDD.html(生命周期数据已持久化在 PG,不受清理影响)。不要跨日期批量清理,除非用户明确要求。
特征因子挖掘(量化回溯 · 按需研究流程)
这是独立于每日日报的一条研究线:你提一个特征分组,skill 在分组之上做额外因子挖掘,给出分组内的"叠加条件最优解"。不进日报,想挖时才跑。完整方法论、基准表、spec 格式、最优解选择 rubric 见 references/methodology/factor_mining.md。
脑/手边界照旧:脚本 scripts/factor_backtest.py 只铺确定性证据(历史回放命中、6 格前向相对收益、因子分层、单/配对候选叠加条件 + 过拟合护栏标记),不挑"最优解"、不下结论;读证据、选叠加条件、写归因与 caveat 是模型的活。
流程(两处人工,其余自动):
- 你提分组:内置组直接点名(如折扣启动);新组用大白话给硬条件,模型译成 filter spec 给你确认。
- 脚本回放 + 回测 + 铺网格:
产物:# 内置折扣启动(多日序列组,复用生产函数,语义同线上) python3 scripts/factor_backtest.py --group discount_relaunch --min-n 15 # 自定义单日特征阈值组(含容量上涨式),用 spec python3 scripts/factor_backtest.py --group custom --spec my_group.jsonreports/factor_mining_<group>_<asof>.json(证据包,gitignore,跑完即临时)。 - 模型选最优叠加解:读 JSON,按 reference §四 rubric(稳健优先于大 Δ、看
oos_balance与中位数胜率、深度≤2、经济逻辑)选定叠加条件,写reports/factor_mining_<group>_<asof>.md。 - 你决定要不要用:把结果作为研究参考,或手动把叠加条件提级成分组生产阈值;脚本不替你改生产。
口径要点:进场 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(可查、可判分,见下)。
需要回看已跑过的实验或补人工判定时,使用 factor_lab.py experiments 查询 PG factor_experiment_log。实验台账只记录挖矿参数、样本数、过闸数量、证据路径与人工 verdict,不进入每日日报。
数据获取
环境变量:
TUSHARE_TOKEN=your_token
ALPHA_DB_BACKEND=postgresql
ALPHA_PG_URL=postgresql://alpha_user:alpha_pass@/alpha_data?host=/tmp
TAVILY_API_KEY=your_token # 催化搜索主路径;缺失时可由宿主 Web Search 降级
数据库连接统一走 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。
运行脚本会先更新 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 为历史遗留可选依赖)。
基础命令(在 skill 根目录下执行):
python3 scripts/run_daily_panel.py --asof 20260429 --lookback 120 --market-trend-days 90 --index 000300.SH
模块 3 首轮完成临时主题映射后,先用下列原子命令补充确定性统计;模型据此锁星后才运行搜索:
python3 scripts/theme_group_stats.py \
--context reports/module_context_YYYYMMDD/module3_money_effect.json \
--mapping reports/module_context_YYYYMMDD/module3_theme_map.json \
--output reports/module_context_YYYYMMDD/module3_theme_stats.json
python3 scripts/web_search.py "主题 事件 YYYY-MM-DD" --topic news \
--start-date YYYY-MM-DD --end-date YYYY-MM-DD --max-results 6
theme_group_stats.py 只统计模型已分组的成员;web_search.py 只返回结构化搜索结果。两者都不做主题、催化或产业强弱判断。
主要输出:
reports/evidence_YYYYMMDD_utf8.json:完整证据包(紧凑 JSON,metadata 含stage_timings_seconds各阶段耗时与fetch_gaps各端点缺失交易日清单;任一端点缺日非空时必须在报告中显式说明)。reports/kline_YYYYMMDD.json:个股 K 线展示层数据,只供 HTML 渲染使用,模型撰写不读取。reports/module_context_YYYYMMDD/:供 subagent 分工的模块级 JSON。references/market_data.json:market_data.csv的全量派生 JSON,按交易日升序保留所有列、清洗数值并提供series给 HTML 趋势图使用。
这些文件中,evidence、kline、lifecycle 输入和 module_context 是研报撰写过程中的临时产物。最终报告生成并核对后,按工作流程第 9 步用 --cleanup 一键删除,只保留 reports/report_YYYYMMDD.md、按需生成的 reports/report_YYYYMMDD.html,以及长期维护的 references/market_data.csv / references/market_data.json。
HTML 输出命令:
python3 scripts/render_report_html.py --input reports/report_20260429.md [--theme default|claude|print]
默认输出 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 共用。
常用参数(赚钱效应/爆量/容量/折扣阈值、--fetch-workers、--cleanup 等)与
factor_backtest.py / factor_lab.py / render_report_html.py 的参数集中在 references/cli_reference.md。
Subagent 编排契约
主 agent 先生成模块级 JSON,然后按下列最小上下文分发。每个 subagent 只看自己的模块数据,不读取其他模块数据。
| 模块 | JSON | 方法论 | 模板 |
|---|---|---|---|
| 1 盘面趋势 | module1_market_trend.json | references/methodology/module1_trend.md | references/template/section1.md |
| 2 集中度 | module2_concentration.json | references/methodology/module2_concentration.md | references/template/section2.md |
| 3 赚钱效应(首轮) | module3_money_effect.json | references/methodology/module3_money_effect.md | 先输出临时主题短名单与 stars: null 的 module3_theme_map.json |
| 4 爆量下跌 | module4_decline.json | references/methodology/module4_decline.md | references/template/section4.md |
| 5 特征分组 | module5_feature_groups.json | references/methodology/module5_feature_groups.md | references/template/section5.md |
模块 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 数量、并发槽位或模型。
聚合 agent 额外读取:
assembled_checks.json:M3 赚钱效应池与 M4 爆量下跌池的确定性交叉检查。references/methodology/output_discipline.md:最终成稿纪律。
Python 不调用 Anthropic API、不调用任何 LLM、不硬编码模型名。Codex、Claude Code 或其他通用 agent 的 subagent 编排能力负责撰写;知识 evidence pack 是宿主可选输入,不在 core skill 中硬编码知识库路径或图谱实现。
输出规范
完整研报按五个模块输出。每个判断段先给自然语言结论,再选择少量关键证据支撑;表格承载细项数据,段落解释这些数据意味着进攻、分歧、退潮、修复、拥挤还是扩散。所有强弱判断都要能回到成交额、放量倍数、涨跌幅、相对收益或回撤证据,但不要把所有可用指标塞进同一段。模块 3 的主题分组只作为内部推理步骤,不输出单独的主题分组陈列表,赚钱效应总览后直接进入主线判定。
文风默认(项目级硬性要求):
- 文风讲人话,减少机械与僵硬。 像跟懂行的人当面把一件事讲清楚那样写,句子通顺、有逻辑衔接,该解释因果和给判断时把话说透。避免模板腔、翻译腔和套话——别成段堆砌"综上所述""值得注意的是""总体来看",别把每条都写成生硬的"主语+动词+宾语"公式句,也别为了凑结构把话说断、只丢关键词。
- 同项罗列优先用 list,但每条要说人话。 同一维度的多个条目(多个信号、多只个股观察点、多项风险传导)拆成 bullet 或编号,一条一项,别塞进一个长段落;但每条用完整通顺的话写,不要退化成"字段A - 字段B - 字段C"式的横杠拼接。结构化对照(指标 × 数值、分组 × 判定)才用表格。
文风目标:僵硬度约 5/10。报告应像一位有经验的盘后研究员在做复盘:先给人能立刻理解的盘面状态,再用少量关键数字支撑,最后给出下一交易日需要验证的条件。避免把所有可用指标都塞进段落;同一自然段最多放 2-3 个核心数字,其余数字放表格。
每个一级大章节(1-5)里已有的总结/定性段落必须使用 Markdown 高亮样式 ==...== 包裹,例如“指数趋势判断”“市场风格判断”“盘面定性”“拥挤度判断”“主线 vs 资金轮动结论”“风险传导提示”“特征分组一句话判断”。不要为了高亮额外新增“本节总结”段落;高亮的是原本就承担总结作用的段落。
禁止输出买卖建议。可以写“风险传导”“持续性待验证”“主线确认度”,不要写“买入/卖出/止损/目标价”。
HTML 输出只改变呈现方式:必须保留 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 不一致的分析结论。
示例
用户:复盘 2026-04-29 的 A 股盘面,重点看赚钱效应和容量上涨。
执行:
python3 scripts/run_daily_panel.py --asof 20260429
然后按 subagent 契约加载 reports/module_context_20260429/ 下的模块 JSON。若没有 subagent,就顺序加载每个模块的 JSON + 方法论 + 模板段,最后聚合为完整研报。
Top skills in this category
Polymarket Agent
@andretutaResearch Polymarket markets, whale flow and smart money; optionally trade a Polygon wallet behind deterministic risk guard-rails.
Decision Trees
@evgyurDecision tree analysis for complex decision-making across all domains. Use when user needs to evaluate multiple options with uncertain outcomes, assess risk/reward scenarios, or structure choices systematically. Applicable to business, investment, personal decisions, operations, career choices, product strategy, and any situation requiring structured evaluation. Triggers include decision tree, should I, what if, evaluate options, compare alternatives, risk analysis.
eastmoney skills
@qqk000基于东方财富权威数据库的金融数据查询工具,支持行情、财务及关联关系数据。
Seedstr (Earn pasive income with your agent)
@mastersyondgyA marketplace connecting AI agents with humans who need tasks completed. Agents earn cryptocurrency (ETH or SOL) for accepted work. Supports swarm jobs where...
Agent Evaluation
@rustyorbTesting and benchmarking LLM agents including behavioral testing, capability assessment, reliability metrics, and production monitoring—where even top agents achieve less than 50% on real-world benchmarks Use when: agent testing, agent evaluation, benchmark agents, agent reliability, test agent.