Agent SkillsVeblin/invest-skills › invest-a-event-calendar

invest-a-event-calendar

GitHub

提供宏观事件前瞻、限售解禁排雷及题材日历记账功能,通过本地脚本采集数据并生成报告,辅助投资决策。

skills/invest-a-event-calendar/SKILL.md Veblin/invest-skills

触发场景

事件日历 宏观日历 经济数据日程 CPI日程 议息会议 解禁日历 解禁压力 限售股解禁

安装

npx skills add Veblin/invest-skills --skill invest-a-event-calendar -g -y
更多选项

不安装直接使用

npx skills use Veblin/invest-skills@invest-a-event-calendar

指定 Agent (Claude Code)

npx skills add Veblin/invest-skills --skill invest-a-event-calendar -a claude-code -g -y

安装 repo 全部 skill

npx skills add Veblin/invest-skills --all -g -y

预览 repo 内 skill

npx skills add Veblin/invest-skills --list

SKILL.md

Frontmatter
{
    "name": "invest-a-event-calendar",
    "version": "0.3.0",
    "metadata": {
        "requires": {
            "bins": [
                "uv",
                "python3"
            ]
        }
    },
    "whenToUse": "查未来一段时间有哪些定期事件('下周有什么数据''什么时候议息')、持仓\/自选池排雷('我的票哪天解禁')、或低频查看全市场解禁压力分布(解禁≠减持,与减持公告联动)",
    "description": "事件日历 v3 — 定期事件前瞻(宏观日程:中美 CPI\/社零\/非农\/议息)+ 限售解禁排雷(池模式清单池下钻 + 市场模式日级分位)。研究工具非决策。触发词:事件日历\/宏观日历\/经济数据日程\/CPI日程\/议息会议\/解禁日历\/解禁压力\/限售股解禁",
    "allowed-tools": "Bash, Read, Write",
    "argument-hint": "\/invest-a-event-calendar --macro | --pool-file pool.txt | --theme <题材>",
    "user-invocable": true
}

invest-a-event-calendar 事件日历(v3)

工具约束说明:frontmatter 的 allowed-tools 是 Claude Code 约定;在 DSH 等不读取该字段的 harness 下不生效,实际可用工具由平台自身沙箱控制。本技能全部操作为本地数据采集与计算(Bash/Python 引擎)。

概述(四模式)

① 宏观日程模式(--macro:未来一段时间内周期性、非突发的定期事件日程 —— 中美官方统计数据发布日(CPI/PPI/社零/工业增加值/非农/GDP/零售…)与美联储议息会议。产出:

  • ⭐ 重点事件(头部速览):只取策展档位「高」的事件,按日期一行, 带距今(交易日)——回答「接下来要紧的是什么」
  • 📡 源覆盖矩阵:逐源列出实测覆盖边界与状态(正常/部分失败/不可得)
  • 📅 日程时间轴日期为统一尺度,一天一行,格内含当日全部区域事件 (区域标识 🇨🇳 中国 · 🇺🇸 美国 · 🇯🇵 日本 + 时刻);全集,仅列有排期的日期
  • 🧾 降级与过滤留痕:本次不可得的源、被过滤的噪音条数
  • 落盘 reports/event-calendar/{YYYYMMDD}-macro.md

档位(高/中/低)是影响量级判断、不是方向判断,在 references/macro_sources.yaml 里策展:同一次发布的细分项(如 Q2 GDP 被源拆成 6 条)用更长的关键词降到中/低档,避免重点段被灌满。重点段另有单日上限 (超出折叠为「…另 N 项」),被折叠项在完整日程中仍可见。

时区口径(统一轴的前提)表中「时刻」列一律为北京时间。百度源本就是 北京口径(2026-09-10 实测:61/61 个美国事件的时刻 = 公认美东发布时刻 +12h, 即 8:30 ET → 20:30 北京),中国/日本同源同口径 → 三区时刻可直接比较。 美国(FRED)条目无时刻(源不提供,不推测),其日期为美东日期口径。 议息决议为美东 14:00 → 表中日期已换算为北京次日(否则按北京日期查看会 整整错过一天)。

覆盖窗口是不对称的(如实标注,勿当成全集):中国 ≈30 天(百度源前向窗限制)、 美国 ≥3 个月(FRED)、议息 ~1 年(人工表)。报告会写明各区实测覆盖至哪一天; 覆盖边界之外不可得 ≠ 没有事件。事件按 references/macro_sources.yaml 按区域分别配置的白名单收录——源中未收录的条目不在表内。

② 池模式(解禁排雷首选):对清单内的个股逐一下钻个股解禁队列,产出:

  • 🔔 提醒段:未来 --alert-days(默认 30 自然日)内有解禁批次的标的(解禁日/距今交易日/数量/股东数/类型)
  • 🆕 变化段:相较上次运行的新增/消失/字段变化(状态存私有文件;首跑建基线不告警)——只推新增与临近,不做每日全表
  • 📋 全池明细:含逐标的「无解禁记录」与「取数失败」区分标注
  • 落盘 reports/event-calendar/{YYYYMMDD}-pool.md

③ 市场模式(低频参考):全市场解禁日汇总(东财 summary_em),回看近 120 日 + 展望未来 30 日,未来解禁日按市值相对近 120 日序列分位标注(≥80% 高压 / ≥90% 极高压力)。注明:市场级日历不含个股名单,用于给时段分配注意力,不能用于个股排雷——个股排雷用池模式。

解禁 ≠ 减持:解禁是供给事件提示,非方向信号。控股股东/实际控制人解禁后多数不立即减持(锁定期另有承诺);真减持需看减持预披露公告(invest-a-stock 公告采集已有)。压力/提醒的作用 = 提示「何时去看供给面事件」,配合减持公告与 journal 评估使用。

v2 边界(如实标注):池来源本期 = 清单文件;journal 持仓推导与 portfolio holdings.json 直读为二期(扩展位见 _run_pool 的单一入口)。股东户数/高管持股/分红实施日历仍为按股票接口,未接入。

运行

# 宏观日程模式(定期事件前瞻)
cd "${INVEST_SKILLS_ROOT:-.}" && uv run python skills/invest-a-event-calendar/scripts/unlock_calendar.py --macro

# 池模式(解禁排雷首选):清单文件每行一个 6 位代码(# 注释)
cd "${INVEST_SKILLS_ROOT:-.}" && uv run python skills/invest-a-event-calendar/scripts/unlock_calendar.py --pool-file /path/to/pool.txt

# 市场模式(低频)
cd "${INVEST_SKILLS_ROOT:-.}" && uv run python skills/invest-a-event-calendar/scripts/unlock_calendar.py

# 题材日历记账(R-D01;只记账不预测扩散路径)
cd "${INVEST_SKILLS_ROOT:-.}" && uv run python skills/invest-a-event-calendar/scripts/unlock_calendar.py \
  --theme 示例题材 --stage 首波 --anchor "某规划正式发布" --anchor-source "发改委公告" --concepts 甲,乙

四种模式互斥--theme / --macro / --pool-file 两两同传会报参数错;三者都缺省为市场模式)。 --macro 不读写状态文件;--theme 与解禁模块共用状态文件但只读写 themes 键(保留 symbols)。

题材日历(--theme,R-D01)

定位:只记账,不预测扩散路径。 源文档裁决(hypothesis-registry C9/C10):

  • 阶段字段固定四值:首波 / 扩散 / 延伸 / 兑现(无「下一轮扩散方向」类字段)
  • 证实锚点 = 官方/权威来源确认;⚠️ 题材热度见顶 ≠ 证实热度/涨停家数/涨幅榜/情绪 等市场热度描述会被拒绝为来源)
  • 「兑现」阶段须给 --confirmed-date(证实日入日历,供 journal / 复盘对照预期差)
  • 多概念归属 = 拥挤度「加总」,不输出「托底/更稳」语义(C10 后半无支持)
  • 消息方向语义不预设(分类器验证前,见 C8)
  • 状态文件损坏时拒绝写入并报错(不静默清空既有记录)

时间窗口:需求窗口 vs 炒作窗口(R-D02,禁止合并

--theme 登记时可带两类互斥的时间窗口,渲染时分列且显式声明不可合并:

类型 性质 强制要求
需求窗口 基本面季节性(有据) 文本 + 来源(缺来源即拒绝)+ 可选商品基本面文献注记
炒作窗口 从业者惯例(非学术验证) 强制标注 [从业者惯例,非学术验证:{出处}](出处不可考写「出处不可考」);不得带收益预期(「预期收益/目标位/涨幅预期」等一律拒绝)

为什么禁合并:C9 裁决——「基本面季节性」有据,而「股价提前数周布局」无直接证据; 合并输出等于让惯例借用事实的证据等级。

可跟踪度字段(R-D03,替代「小作文干扰小」)

tractability_field() = 硬催化占比 × 覆盖充分度

  • 硬催化占比 = 可核验日历事件数(财报/政策/重组等)/ 总事件数
  • 覆盖充分度 = 三类指标的归一化均值(研报覆盖数 / 公告频率 / 媒体提及)
  • 低覆盖给对称风险提示:「坏消息消化可能更慢」(Hou 2007 反向警示)—— 不得读作「覆盖低 ⇒ 波动小」;本字段不含「干扰小/易跟踪」类主观措辞(单测守护)
  • 归一化上限为工程近似,随 backtest_prereg/C12_预注册.md 裁决
  • ⚠️ 落地状态(2026-09-13 校正)tractability_field() 函数已交付(含单测), 但尚无生产调用方——宏观/解禁/题材三个报告均不含该字段。调用点待 v0.3.1 (见 host-docs/v0.3.0/round-plans/r5-20260912.md 移档记录)
参数 默认 说明
--macro false 宏观日程模式开关:定期宏观数据发布日程 + 议息会议
--macro-days N 90 宏观展望窗(自然日;中国区受源限制最多覆盖 30 天)
--macro-regions 中国,美国,日本 宏观区域(逗号分隔)
--macro-rules-file PATH references/macro_sources.yaml 宏观策展规则表(白名单/噪音 pattern)
--fomc-file PATH references/fomc_meetings.yaml FOMC 会议策展表
--baidu-cookie 百度财经日历 cookie(可选;复用可显著降低逐日失败率)
--pool-file PATH 池模式开关:清单文件路径(每行一个 6 位代码;# 注释;坏行跳过并告警)
--alert-days N 30 提醒窗(自然日;池模式)
--lookahead N 90 拉取展望(自然日;池模式)
--state-file PATH ~/.local/share/investment/event_calendar_state.json 变化检测状态(私有)
--no-state false 不读写状态(调试)
--days-past 120 分位回看窗口(自然日;市场模式)
--days-future 30 展望窗口(自然日;市场模式)
--no-out false 不落盘
--out-dir reports/event-calendar/ 输出目录

落盘:宏观日程 {YYYYMMDD}-macro.md;池模式 {YYYYMMDD}-pool.md;市场模式 {YYYYMMDD}.md。 退出码:0 正常(含部分失败/部分源降级,报告逐段标注);2 参数/池文件错误;3 不可得(市场空返回且窗口含交易日,或池内全部标的失败,或全部宏观源不可得)。

数据源与口径

宏观日程(--macro)—— 三源,覆盖窗口不对称

区域/类别 前向窗口(实测) 备注
🇨🇳 中国 百度财经日历(akshare.news_economic_baidu ≈30 天 逐日拉取;单日失败重试 3 次(实测单次失败率 ≈12%)
🇺🇸 美国(近场) 同上 ≈30 天 窗口内不含美国 CPI(实测:103 条 CPI 全是其他国家的)
🇺🇸 美国(长窗) FRED releases/dates ≥3 个月 FRED_API_KEY无时刻字段(不推测)
🏛 议息会议 references/fomc_meetings.yaml ~1 年 人工策展(无自动源);年度刷新
  • FRED_API_KEY 是显式降级(报告出「❌ 不可得」,不是「无事件」);中国段照常
  • 事件按 references/macro_sources.yaml 白名单收录;重要性 列是本地策展档位, 源的 重要性(实测只有 1/2 两档且 str/float 混型,噪音行同样有值)只作备注原值
  • 噪音过滤 = 频率检测(同名同刻出现于 ≥5 个不同日期 → 每日类)+ 极窄 pattern; 过滤条数在报告「降级与过滤」段留痕
  • FRED 白名单按 (release_id, release_name) 对匹配;id 命中但 name 不符 → 报配置漂移并排除
  • FOMC 表过期/缺失 → 报告出「❌ 不可得 / 已过期」,不得渲染成「无议息会议」

解禁(池模式 / 市场模式)

  • 个股源(池模式):stock_restricted_release_queue_em(symbol=...)(东财,单标的;共享实现 skills/lib/unlock_source.py)——失败以 (rows, error) 显式返回,报告逐标的标注「取数失败:原因」,不得当作「无解禁」
  • 市场源(市场模式):stock_restricted_release_summary_em(symbol="全部股票")(东财数据中心;ProxyError → 「数据不可得」退出码 3,不硬编)
  • 原始单位:解禁数量 = 股(脚本换算为亿);市场模式实际解禁市值 = 元(换算为亿)
  • 距今天数 = 近场(≤365 自然日)交易日口径(经 skills/lib/freshness.py,长假后不误报);远场或日历不可用 → 自然日 + 标注「自然日粗判」(交易日历不覆盖远端,防截断计数)
  • 分位 = bisect_left 口径(同 pulse),基准 = 近 120 日有解禁日的市值序列
  • 状态文件:私有 JSON(~/.local/share/investment/),只存批次与运行日;失败标的保留旧状态不覆盖

分析纪律

  1. 解禁 ≠ 必然减持:提醒/压力日只提示事件集中度;个股层面须查减持预披露(若大股东计划减持会先公告)——提醒 + 减持公告双信号才构成供给面关注(仍非买卖信号)
  2. 分位/提醒是横向提示:市值分位高、临近解禁 ≠ 利空成立——需看解禁股东类型(控股 vs 财务投资者)、承诺与当前股价位置,本工具只给日历与分位
  3. 不要用回看段的沪深300表现做因果:那是参考坐标,不是「解禁日必跌」的证据(样本与混杂因素未控制)
  4. 数据不可得时如实降级:取数失败逐行标注,不以「无解禁记录」冒充;市场模式 ProxyError → 明确「数据不可得」
  5. 变化段是运行间差异:不是「新增解禁事件」的公告确认——同一标的首次纳入池时只建基线;把变化段当排雷信号使用前,先核对原始公告

宏观日程(--macro)追加:

  1. 日程是排期事实,不是预测:本表只说明「何时公布」,不预测「公布什么」;源里的「预期」列未纳入(窗口内多为空,纳入会误导)
  2. 「表里没有」不等于「没有事件」:中国区源前向窗 ≈30 天,覆盖边界外不可得;报告已写明各区覆盖至哪一天——引用前先看覆盖矩阵
  3. 议息会议日期为暂定:官方注明「会议日期在紧邻的上次会议确认前均为暂定」;且本表取决议公布日(会议第二日),不是会议开始日
  4. 数据发布 ≠ 方向信号:公布时点是波动来源提示;方向取决于实际值 vs 预期,不在本表范围
  5. 降级项必须随结论一并读出:若某区显示「❌ 不可得」,该区不可下「那段时间很平静」类判断

参考输出层

参考类型 内容 来源
重点事件(事件参考) 档位「高」的事件速览(日期/星期/距今交易日/事件) [来源: macro_calendar 引擎输出]
宏观日程(事件参考) 未来排定的全部定期事件(日期/时刻/地区/统计周期/策展档位)+ 逐源覆盖矩阵与降级项 [来源: macro_calendar 引擎输出]
池提醒(事件参考) 提醒窗内有解禁批次的标的(日/距今交易日/数量/股东数/类型) [来源: unlock_source 引擎输出]
池变化(对照参考) 相较上次运行的新增/消失/字段变化 [来源: 状态文件 diff 引擎输出]
市场日历(事件参考) 未来 30 日逐日解禁家数/市值 + 高压日标注(无个股名单) [来源: unlock_calendar 引擎输出]

只描述供给事件事实,不含任何动作建议;执行由你依据自身纪律决定。

机器层准出(报告类产出必跑,非可选)uv run python skills/lib/report_qc.py <产出文件> --fail-on error → 无 error 级发现(退出码 0/1)方可交付;sourcing warning(F2 派生词缺来源 / F4 §N 引用不存在)须人工复核后消除或说明。

版本历史

  • 9fbd24f 当前 2026-09-21 23:59

同 Skill 集合

.claude/skills/verify/SKILL.md
scripts/wb_bundle/SKILL.md
skills/invest-a-discover-scan/SKILL.md
skills/invest-a-etf/SKILL.md
skills/invest-a-gap-scan/SKILL.md
skills/invest-a-journal/SKILL.md
skills/invest-a-pattern-scan/SKILL.md
skills/invest-a-pulse/SKILL.md
skills/invest-a-stock/SKILL.md
skills/invest-hk-stock/SKILL.md

元信息

文件数
0
版本
9fbd24f
Hash
c93cf52f
收录时间
2026-09-21 23:59

首页 - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-23 11:01
浙ICP备14020137号-1