v0.2.1
v0.2.1
v0.2.1 扩展多 Skill 组合:新增 ETF 研究与交易日志评估,补齐跳空缺口扫描;统一用户 slash 为连字符;并收敛一批估值/涨停/数据源正确性修复。
Slash 与 Skill 入口
- 用户 slash 一律连字符:
/invest-a-stock、/invest-a-etf、/invest-a-journal等;.claude/commands/文件名改为invest-a-*.md(放弃/invest:a-*用户入口) - 插件 marketplace 包名仍可使用
invest:a-*(与 slash 分层)
invest-a-etf(新 Skill)
- 新增 ETF 独立研究 Skill:指数估值 / 折溢价 / AUM / 跟踪质量 / 对冲覆盖 → 结构化备忘录
- CLI:
uv run python skills/invest-a-etf/scripts/etf.py report|diagnose etf_data.py+etf-hedge-map.md自 journal 迁出为本 Skill canonical;journal 经 thin shim 复用
invest-a-journal
- ETF 评估路径改为调用 invest-a-etf 共用模块;深研引导
/invest-a-etf {代码}
报告精简
- 移除报告头部冗余段落:AI 偏见声明、逆向思考、Ichimoku/波动率锥、AI 置信度矩阵
- 移除占位符段落:F-1 理解陈述、F-5 偏误自查表、F-6 交叉验证记录表(占位)、九模块 mermaid 图
- 恢复报告头部
[宏观情景]、[产业链]、[报告增强触发] --emit md不再自动生成 HTML 兼容文件(需 HTML 时显式--emit html --outdir)
宏观扩展
--with-macro增加全球指标:VIX(FRED VIXCLS)+ SOX(Yahoo^SOX);简报标签国内/全球用|分隔- 修复 akshare 不可用时 early-return 跳过 VIX/SOX 的问题(中国与全球采集路径解耦)
数据融合
schema._extract_scalar按维度映射语义字段(_DIM_SCALAR_KEYS),fusion.fuse_from_source_results传入dim_name避免跨源比较不同量纲
invest-a-gap-scan
- 新增跳空缺口扫描 skill:沪深300 + 中证A500 + 科创50 并集,向上缺口 + MA60 + 未回补三重筛选
- 数据源降级:Tushare Pro(批量按日)→ baostock(逐股前复权
adjustflag="2")自动切换 - 缓存:按日期 + 数据源隔离的 pickle 缓存(TTL 3 天),同日二次扫描 ~7s
- 停牌检测:交易日历对比日线数据,跨停牌缺口单独列出
- 容忍规则:从新到旧遍历缺口,遇到首个满足 MA60 + 未回补 + 量比的即命中
Bug 修复
-
修复 gap-scan
start_date硬编码 90 天导致 MA60 虚设:改为gap_lookback + 59交易 bar × 1.46 日历转换,默认 ~180 天 -
修复 gap-scan baostock 部分缓存命中时
daily_by_date缺少缓存标的,导致跨停牌检测静默失效 -
gap-scan
hasattr(source, "set_ts_codes")→isinstance(source, BaostockSource),消除鸭子类型隐患 -
新增 gap-scan 回归测试:短历史 MA60 虚设、
min_list_days=60默认值、混合停牌检测覆盖 -
修复
valuation_calc.pyPE 亏损期警告死代码(pe_negative_excluded→pe_none_or_neg) -
修复 ROE 年化乘数始终 ×4 的问题(根据报告期区分 0331×4/0630×2/0930×4/3/1231×1);
roe_data.roe_quarterly重命名为roe_cumulative(YTD 累计值) -
修复 collector 业绩预告 "None%" 渲染(
p_min/p_max为 None 时省略同比) -
修复
cmd_reportHTML 路径缺少_ensure_render_ready() -
修复
schema._extract_scalar按维度选字段时 quote/northbound 零值与无 dimension 回退路径回归(change_pct/net_mf_vol提取失败导致融合与交叉验证跳过) -
估值 OCF/EPS TTM:按
end_date对齐,且要求连续 4 个报告期(断档不冒充 TTM) -
PE/PB 历史分位:两侧独立计算,一侧缺失不再整段丢弃
-
涨停 Tushare enrich:
amount/close为 None/0 时不得覆盖 akshare L1 有效值 -
gap-scan
create_source:短生命周期探活一次,避免双探活与失败路径 session 泄漏 -
journal:
_percentile用<=;个股空 K 线 →missing;update/delete写路径补rollback -
gap-scan:
gap_high近零容差与 MA60 一致,避免百分比爆炸
Emoji 统一
- 新建
render_icons.py— 集中管理 CV 交叉验证与证据强度标签 schema._CV_ICONS与_evidence_strength_label迁移至render_icons
Full Changelog: v0.2.0...v0.2.1