Releases: Veblin/invest-skills
Release list
v0.2.7
v0.2.7
v0.2.7 对 512660/588000/300750/600036 四标的全链路报告执行工作流评估,并分级修复评估发现:P0 数字口径(F0-1F0-9)、P1 ETF 数据层(F1-1F1-7)、P2 流程工程(F2-1~F2-7);WorkBuddy 零终端分发链路真机验证通过(可安装发布包 + Release 集成);版本确立后经 code-review 三轮修复自身缺陷(初版 15 项确认级发现 + 二轮 6 处回归),并完成北向时效守卫等发布前加固。
- 新增(2026-08-17):WorkBuddy 零终端分发 — 真机验证通过 + 发布集成
- 修复(2026-08-17):工作流评估分级修复 — P0 数字口径(F0-1
F0-9)+ P1 ETF 数据层(F1-1F1-7)+ P2 流程工程(F2-1~F2-7) - 修复(2026-08-17 二轮):/code-review max 15 项确认级发现修复(2 项崩溃级 live repro + 13 项数字/静默回归)
- 修复(2026-08-17 三轮):发布前 /code-review max 复核 — 二轮修复自身的 6 处缺陷(评分 100×1 + 75×5)
- 修复(2026-08-23/24):发布前加固 — 北向时效守卫 + 落库/降噪 + code-review 第四轮
Full Changelog: CHANGELOG.md · v0.2.6...v0.2.7
v0.2.6
v0.2.6
8.11 量化指标体系调研(ABCD)P0 + P1/P2 全量落地。
- 新增(2026-08-17):WorkBuddy 零终端分发 — 真机验证通过 + 发布集成
- 修复(2026-08-17):工作流评估分级修复 — P0 数字口径(F0-1
F0-9)+ P1 ETF 数据层(F1-1F1-7)+ P2 流程工程(F2-1~F2-7) - 修复(2026-08-17 二轮):/code-review max 15 项确认级发现修复(2 项崩溃级 live repro + 13 项数字/静默回归)
- 修复(2026-08-17 三轮):发布前 /code-review max 复核 — 二轮修复自身的 6 处缺陷(评分 100×1 + 75×5)
- 修复(2026-08-16 二轮):/code-review max 13 项修复(force 重建安全 + F 系列幻影事件剔除)
- 修复(2026-08-16):/code-review max 10 项修复(数据层重建 + 全量重跑)
- 第二阶段:code-review 修复 + P1/P2(同日续)
- F 系列(2026-08-15):股指期货数据全量接入
- 补漏(2026-08-14 续):H6 回测 + 回踩分类 + 候选预案基线
- 修复(2026-08-15):/code-review max 确认级发现修复(10 项,全部 Python 复算验证)
- 第一阶段:P0 落地
- H5 日历效应回测(8 月中旬谨慎裁决)
- D 类引擎字段(四不原则可计算化)
- A 类点位红线(证据等级 + 自动拦截)
- Windows 技能链接重建(WorkBuddy 兼容)
- 情景预案库(references)
- 测试
Full Changelog: CHANGELOG.md · v0.2.5...v0.2.6
v0.2.5
v0.2.5
交易纪律框架(资金视角方法论)D1-D8 + WorkBuddy 平台兼容 + invest-a-limit-up 移除 + code-review 15 项修复。
v0.2.5 把用户交易理念固化为 skill 纪律需求:资金选择优先、决策不受持仓盈亏影响、带血筹码分批买入、参考点独立性。纪律执行层(触发线/条件单/执行核对)经评审不进入 skill 动作域——skill 统一收敛为趋势/区间/状态/核对四类客观参考输出,决策动作全部留在用户侧。配套新增 WorkBuddy 平台兼容层(规则层本版落地,真机验证由用户后置执行)。
交易纪律框架(D1-D8)
- 统一参考输出层:report-conventions §8 + pulse/journal 模板,四类参考(趋势/区间/状态/核对),无动作词
- journal 卖出评估四维度:新增参考点独立性核对(浮盈目标/回本心理/亏损不甘/成本价锚定四问 + 关键问题 + 独立依据);Q3 错误条件选项限定逻辑失效类(含估值触发);浮盈目标类理由触发 Odean 1998 改述提示
- pulse 筹码出清度四信号:去杠杆幅度/换手温度/割肉盘代理/磨底时长+企稳确认(含今日窗口),新增
references/chip-clearance.md - trade-structure 入场区间 3 段参考:悲观锚区/中性-悲观区/中性锚区 + 状态含义,不设触发条件/比例
- 主线确认资金流优先:两融趋势/板块轮动/ETF 份额为主证据,价格走势辅助(A 股无动量,Chui et al. 2022)
- 止损定位与话术规范:禁止"止损提高收益"话术,定位防呆风控(Kaminski & Lo 2014)
- 观念修正内置(C3/C5):"无低估价值股"类断言禁写;带血筹码信号强制含企稳确认字段
- 新增
references/capital-mechanisms.md:资金机制参考(反弹赎回/破净赎回/量化行为/散户割肉)
WorkBuddy 兼容
- W1 规则层适配(本版落地):5 个 SKILL.md description 中文触发词、引擎调用统一
${INVEST_SKILLS_ROOT:-.}cd 前缀、journal Q&A 分屏(≤4 选项) - W2/W3 文档化交付:
.env.example9 token 模板、hooks/scripts/check-config.sh、.workbuddy/skillssymlink 副本、README WorkBuddy 章节(macOS + Windows) - 真机验证(T1-T12)与 hooks 官方背书验证由用户后置执行,不阻塞本版
invest-a-limit-up 移除
- 全仓库 grep 实证无代码调用方(
_fetch_limit_pools自实现直调 akshare),skill 整体移除;marketplace/skills.yaml/sync_version/test fixtures 同步清理
code-review 修复
- 引擎 6 项(compute_chip_clearance/_auto_persist):阶段判定急跌口径(峰值近 5 日 + 急跌 → 去杠杆中)、I-2 守卫补全(margin 缺失不得断言磨底)、信号③④窗口含今日、_auto_persist merge 防抹 Tier-2/env_label、days_since_margin_peak 口径统一(0=峰值在今天)、窗口收缩 calc_notes 标注
- pulse SKILL.md:SSE 降级命令上海时区 + 长度守卫、step 1 走 data_bridge 缓存(消除 8 源双采)、规则 8 主证据路径可落地
- 文档一致性:CLAUDE.md 盈亏比表述与 trade-structure 3 段规范对齐、D 编号引用改描述性措辞、journal 卖出维度编号 1,2,3,4
- 发布层:CHANGELOG 补 v0.2.5 节、release tarball 补 docs/ + .workbuddy/、README 徽章纳入 sync_version
2026-08-11 修订
- WorkBuddy 安装支持:README 补官方安装流程(下载渠道 codebuddy.cn/work、系统要求 Windows 10+ / macOS 12+、Mac 芯片版本选择 ARM64/X64、安装与登录步骤、首次文件夹授权、新人积分礼包);本机前置条件核对——
~/.config/investment/.env(9 token)与 WorkBuddy 桌面版均未就位,T1-T12 真机验收仍为用户后置执行 - new_high_ratio 双包装:
_fetch_daily_panel_row返回(ts_code, records)元组,与_map_parallel契约((item, result))双重包装使 panel 值为元组、rows[0]=str(ts_code),_ms_new_high_ratio_from_panel对其.get()抛 AttributeError(报告采集中实证);修复为 fetcher 只返回 records + 非 dict 行防御过滤 - valuation fusion 口径混合:legacy 重建路径对非主源注入 scalar_value(默认键序 pe_ttm 先命中=PE),
_extract_scalar裸标量短路绕过显式市值键 → 市值 445.71 与 PE 140.16 混合融合(322.78、max_diff 104% 不可用);修复为 valuation 维度改用_extract_l2_scalar(仅认白名单字段),口径一致性优先宁可单源 - 回归测试 2 项(真实复现路径,全 mock);全量 1267 passed
2026-08-12 修订
- valuation 口径混合收口(/code-review #1-#4):审查实证 08-11 修复仅覆盖融合槽——legacy 重建的
DimensionResult.cross_validation裸标量短路仍将 PE 140.16 与市值 445.71 混合(divergence 104.3%)。三处收口:SourceResult.to_dict对 L2 维度(financials/valuation)按白名单键提取(根因,兼修证据表 PE/市值混排)、dimension_results_from_legacy非主源只接受白名单数据(不注入旧 PE scalar)、fuse_from_legacy_dicts优先白名单提取(无 data 才回退 scalar_value 兼容旧快照);无市值数据宁可单源 - new_high_ratio 面板守卫补测:空 df → None →
if records:过滤、_map_parallelon_error 占位(item, None)过滤两条路径(停牌/异常不崩溃) - 回归测试 9 项(to_dict 4 + 重建 cross_validation 2 + legacy 融合 2 + 面板 2,含 1 项改写,全 mock);全量 1276 passed
Full Changelog: v0.2.4...v0.2.5
v0.2.4
v0.2.4
方法论引擎 R1-R12h 落地 + 事实边界规范 + 三轮 /code-review 修复 + 全域数值/口径安全加固。
v0.2.4 是「从数据采集工具到研究方法论引擎」的转折版本:如果说 v0.2.3 是让 AI 跑得更快更稳(数据桥接、缓存、超时防挂死),v0.2.4 是让 AI 先想清楚该用什么方法,再动手分析——把"我该怎么分析这只股票"从每次临场发挥,变成结构化决策。配套的还有一条铁律:AI 不能猜(事实边界 §2.3)。
方法论引擎(R 系列,核心)
- R1/R2/R3/R12a/R12d 方法论匹配引擎核心:报告先做框架匹配,不再一套模板打天下
- R12b/R12c 财务深度补全 + 准确性硬化:income 表 revenue/net_profit 兜底、CPI 口径归一 + 合理性校验、亏损期 PE 分位标题层强制标注、
--material-gap数据缺口门 - R4 行业成功关键因素:先答行业关键问题,再进通用 12 题
- R5 行业景气状态卡:五维规则引擎 +
market-status --industry - R6/R7:学术纪律补丁(技术面定位提示)+ 成长股四分类分流
- R8 机会成本行:盈利收益率 vs 10Y 利差
- R9:投委会两问 + 复盘归因(环境/能力/运气)
- R11a ETF 历史行情深度:baostock 双源回退 + 历史统计(年度高低点/最大回撤/±5% 交易日)
- R11b/R11c:事件-价格对照表 + 情景预案模板(LAW 6a,回撤档位 σ 分级)
- R12e 近端价格结构检测:连板识别进报告
- R12f 分析深化契约:简报铁律
- R12g 双路径分流矩阵:趋势路径引擎补强(均线系统表 + 连板结构触发)+ 开场四问 + 风格-标的匹配三态
- R12h 数据源降级链:字段级首选源 + L2 抽查 + 分治降级 + 限流
规范
- 事实边界 §2.3(随 skill 安装生效):禁止猜测/推断/幻觉;数据冲突并列不裁决;三态标注(可验证 / 公开不可独立验证 / 未知);「检索不到」不得断言「数据不存在」
- R2 措辞修订:周期高点低 PE 表述去断言化
修复(多轮 /code-review)
- 数值安全:
0.0合法值不再被or吞、rigor 除零、双估值引擎 delegate - 指标口径:ROIC 趋势可比口径、5 年 FCF 年报去重叠、EV/EBITDA 强制年报期、TTM EPS 连续期校验、应收信号同报告期同比、SZSE 冻结日期、上海时区统一
- 采集域:价格冲击排序、跨源取最新财季、store 上海时区、PCR partial 恒真、margin 窗口分歧、qfq 假跳变、股东缓存、cascade deadline、北交所路由
- 渲染层:render 去隐性网络、audit FAIL 判定序、CV7 对称、val_cache 共享、facade 惰性解析、R12g TOC 注册表、幻数消除、participant_scan 换手 key 对齐
- 报告/估值渲染域:report
--mode/--plan断链(argparse 未注册)、_safe_floatNaN 守卫回归、亏损期估值负区间(PE 法/盈利收益法产 None + N/A 标注)、隐含市值改市值比例法、entry_check 单 K 线越界崩溃、RSI 全涨 NaN、MA20/BOLL 共享引擎去重、资金流 NaN 安全 - proxy/limit-up 域:proxy logger 缺失(代理环境变量不恢复)、tushare 无 token 周末当交易日兜底、limit_up_store 唯一键
scan_date→(scan_date, filter_key) - 跨 skill:涨跌停表统一、ST 名称补判、市值门槛、gap 最新 bar + 数据缺口误报停牌、报告路径、ETF None 处理、max_drawdown 峰谷配对、杠杆 60 日分位剔除今日持久化行
- 时区/事件域:catalyst NaN 整批丢失、RS 近 120 交易日窗口、
collections.kind列(collect/report 分离) - R12h 数据层:L2 提取行序升序 + 单位归一化(total_mv 万元→亿元)、quote 腾讯实时快照独立并行尝试
- 宏观日快照 / 指数 PE 历史 / 默认落库
- 发布域:marketplace.json 纳入版本同步统一、shim 显式加载(消除 sys.path 顺序依赖)
- 冗余/死代码清理(B/C 类 + code-review 第三轮 #1–#8)
市场情绪增强(invest-a-pulse)
- 涨停行业轮动
zt_industry_flow(days):东财涨停池按行业聚合,Top5 + N 日趋势 + 前后半段拆分(return_daily=True输出每日矩阵) - 跷跷板观察
zt_seesaw(days):板块簇占比 Pearson 相关(10 簇映射 + n 样本 p<0.05 临界值)+ 显著负相关对(跷跷板候选)/正相关对(同步资金池)+ 前后半段 Δpp;标注「参考,不构成投资决策」 - invest-a-pulse 报告新增「行业维度」与「⚖️ 跷跷板观察」章节,输出分析结论而非数据表
工程
- 版本号同步机制:pyproject.toml canonical → 派生文件(bump-version.sh / sync_version.py)
- 版本验收:四类样例 + 复测记录 + fixtures 冻结
Full Changelog: v0.2.3...v0.2.4
v0.2.3
v0.2.3
数据桥接层(data_bridge)落地 + 巨型模块拆分 + 多轮 /code-review 修复 + 采集管线性能与健壮性优化 + 数据源必要性落地(4 源评估:tushare+akshare 必要 / baostock 兜底 / tickflow 可移除)。
数据桥接层
- data_bridge 新增 8 个 ETF 缓存维度:
etf_spot/index_pe/nav/index_daily/adj_factor/share_history/industry_alloc/category_sina - canonical etf_data 全部网络调用接入 data_bridge L2 缓存
- journal 消费侧接入 data_bridge:microstructure 5min 缓存生效;shim re-export 8 个
fetch_*(data_bridge 上下文解析关键)
采集管线 4 项优化(挂死根因修复 + 提速)
- 全局 socket 超时(
INVEST_SOCKET_TIMEOUT默认 30s,0=不设置):修复 akshare/baostock 无 timeout 接口无限挂死(实测曾挂死 20 分钟),已显式传 timeout 的调用不受影响 - 同日 K 线缓存(
collect_kline_cache,TTL 1 天,INVEST_KLINE_CACHE=0禁用):键含 source + 查询窗口 + 复权语义,默认 400 日与--deep730 日互不误用;kline 维度实测 76.8s → 0.4s - 开发模式日志(
INVEST_DEV=1→ stderr INFO + 轮转文件,release 零文件 I/O):逐源耗时 + 维度耗时 + 慢源(>60s)告警,挂死类问题可秒级定位 - 慢源降级(
INVEST_SOURCE_TIMEOUT默认 60s deadline):_run_sources_parallel重写为 daemon 线程 + 信号量限流,超时源返回 timeout 占位 → 维度 partial 优雅降级;_run_with_timeout同病同治。弃用ThreadPoolExecutor(其__exit__join 挂起线程会拖死整个维度)
数据源必要性落地
- tickflow 默认关闭(
INVEST_ENABLE_TICKFLOW=1启用):免费 tier 慢,其前复权价值已由 tushare adj_factor 自算覆盖 - baostock 默认 auto(
INVEST_ENABLE_BAOSTOCK=1/0覆盖):仅无 Tushare token 时启用(与 gap-scancreate_source("auto")语义一致) - K 线统一前复权:tushare
daily + adj_factor自算(_q_tushare_daily_qfq,公式对齐 gap-scanqfq.py)、akshareadjust="qfq"、baostockadjustflag="2"— 除权日假跳变消除(301165 转增史 5 个 -16.7% 假跳变日全部消失,最大单日波动 40.26% → 20.87%),技术指标不再被除权污染,跨源校验不再因语义错配误报 divergence - 缓存键
__qfq标记:复权语义变更后新键生效,旧缓存自动失效
代码结构与质量
- 共用库提升:6 个 skill 去重(
skills/lib/纯函数层 + shim) - 巨型模块拆分:
render_markdown5110 行 → 4 模块、collector4234 行 → 3 模块 - 多轮 /code-review max 修复(30 + 15 + 8 + 8 项):复权启发式 / 空信封缓存 / 缓存陈旧 / 复权因子除权日错位(拆分 ETF 假跳变)/ cache TOCTOU 等
- 行业分析框架 + 引擎衍生指标(
derived字段)+ AI 计算禁令(P0)
Full Changelog: v0.2.2...v0.2.3
v0.2.2
v0.2.2
v0.2.2 建设市场微观结构指标体系与平台化基础设施:新增市场情绪全景 Skill、共用函数层、TTL 缓存层;ETF 模块补齐行业基础设施(类型分类/PE快照/持仓代理/对冲映射),并修复 8 项设计问题。
市场微观结构
market_microstructure.py:17 指标统一采集管道(Tier 1 涨跌比/涨跌停比/两融/北向/成交额 + Tier 2 衍生指标/分位 + Tier 3 ERP/PCR/破净率)market_snapshots表:每日快照持久化,支持历史分位计算与趋势对比market-statusCLI:invest.py market-status [--save] [--days N] [--json],一键查看当日杠杆/广度/情绪/估值温度- 环境标签 v2:历史分位 + 趋势 + 多指标交叉验证规则,
env_labelJSON 输出供 journal 自动注入 - 北向资金:季度持股市值变动推算净流向(日频 2024-08-19 起停更后的替代方案)
- 两融 akshare 降级:
collector._ms_fetch_margin()添加stock_margin_account_info降级路径(Tushare margin_detail 不可用时自动切换全市场汇总)
invest-a-pulse(新 Skill)
- 市场情绪全景分析 Skill:5 章节结构化报告(杠杆周期/市场广度/极端情绪/资金面/估值温度)
- 数据来源:
market_microstructure.snapshot()+load_history(60) - 综合环境标签自动生成(正常/偏谨慎/
⚠️ 警告),journal 评估流程自动注入
平台化基础设施
skills/lib/共用层:从 invest-a-stock 抽离纯函数(nums.py/stats.py/technical.py/dates.py/codes.py),各 Skill 经_invest_pathshim 引用- TTL 缓存层(
cache.py):JSON 文件缓存,维度级 TTL,盘中/盘后差异化过期策略 data_bridge.py:跨源数据桥接,带重试与降级- 共享报告规范(
report-conventions.md):措辞规范/证据强度/分析合成三步/self-check — stock/etf/journal/pulse 统一引用 industry_snapshot.py:申万行业 PE/PB 周频采集,industry_weekly表持久化
invest-a-etf 行业基础设施(G1-G9)
- G1 ETF 类型分类:
query_etf_category()— 硬编码映射 → fund_etf_category_sina → 名称关键词推断,三级降级 - G2 行业 PE 快照:
collect_industry_weekly()+industry_weekly表,31 申万行业 PE/PB 排名 - G4 行业 ETF PE 映射:
_attach_industry_pe(),ETF→SW 行业→行业 PE 代理 - G6 持仓代理:
_attach_industry_allocation(),stock_board_industry_cons_em获取前 5 大行业暴露 - G7 对冲映射扩展:
ETF_HEDGE_MAP16→39 只,覆盖宽基/跨境/商品/主要行业 ETF - G9 行业估值指引:
query_sector_valuation_guide()+_attach_valuation_guide(),行业特定估值指标与 pe_timing 判断 - ETF 份额流跟踪:
save_etf_share_snapshot()+etf_share_flow(),份额变动 + 估算资金流
设计问题修复(D1-D8)
- D1 auto-flags 按 ETF 类型区分阈值:
_TYPE_THRESHOLDS区分跨境(5%)/债券(2%)/商品(3%),消除 QDII 误报 - D2 RSI 注释修正:注明 Wilder RSI 默认周期 24(非 standard 14),删除冗余
rsi_24字段 - D3 折溢价符号验证:确认 EM
基金折价率+ = 折价,-em取反逻辑正确,补充注释 - D4 MA 增加指数价格 MA:
_fetch_index_ma(),NAV MA 重命名为ma20/ma60,新增index_ma20/index_ma60 - D5
etf_share_flow文档修正:days参数语义从"自然日"更正为"行数" - D6 死代码删除:移除
from lib import env as _env未使用导入 - D7 波动率固定 60 日窗口:跨 ETF 可比性
- D8 BOLL 接入 kline:
boll_upper/boll_mid/boll_lower,基于 NAV 20 日窗口
invest-a-limit-up 废弃
- 用户入口下线:移除
.claude/commands/invest-a-limit-up.md符号链接 - SKILL.md 精简为数据管道说明(134→53 行),
user-invocable: false limit_up_scanner.py+scan.pyCLI 保留为market_microstructure._fetch_limit_pools()的数据源
Bug 修复
- 修复
market_microstructure6 个数据抓取缺陷(Tushare 导入、PCR 查询、裸 except 等) - 修复
query_data._median替换为statistics.median - 移除 4 个未使用导入(
os/math/as_completed/List) - 去重
_conn/_safe_close数据库连接工具函数 - 修复
data_bridge裸导入:添加相对导入 fallback - 修复 etf-flow JSON 序列化、days 参数语义、capital_flow 显示
fund_adj前复权集成:消除 NAV 序列分红/拆分断点- 报告文件名强制实际时间戳(禁止硬编码)
文档
host-docs/v0.2.2/:requirements.md / gap-verification-and-design-flaws.md / fix-execution-plan.md / architecture-cache-layer.md / architecture-shared-lib.md / deep-research/(9 篇调研文档)- README 更新:版本号 v0.2.2、新增 invest-a-pulse / market-status、项目结构更新
Unreleased
Full Changelog: v0.2.1...v0.2.2
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
v0.2.0
v0.2.0
v0.2.0 将项目从单 skill 演进为多 skill 组合,统一命名空间 invest:。新增科学估值计算器、多 Agent 并行深度分析、估值持久化与回溯。
多 Skill 架构
- invest:a-stock(原 invest-A)— A股个股深度研究,九模块多因子分析
- invest:a-limit-up(原 limit-up)— A股涨停板全市场扫描 + 归因深挖
- 命名规范:
invest:{市场}-{标的}(如invest:us-stock、invest:hk-stock未来可扩展)
项目重命名
- Skill 名称:
invest-A→invest:a-stock,limit-up→invest:a-limit-up - 目录重命名:
skills/invest-A/→skills/invest-a-stock/,skills/limit-up/→skills/invest-a-limit-up/ - 项目身份:README / AGENTS / CLAUDE / CONFIGURATION 全面更新
- pyproject.toml 项目名:
investment-learning-skill→invest-skills
科学估值计算器(valuation_calc.py)
- 七步估值流程: 基础参数 → 核心财务(TTM EPS/BVPS/ROE/OCF质量) → 历史分位(PE Band + PB) → 盈利收益率 vs 要求回报率(Fed Model 变体) → 反推 market-implied g → ROE-PB 理论匹配 → 多情景 × 多方法综合区间
- TTM EPS 精准计算:
fina_indicator累计 EPS 差分为单季 EPS,再求最近 4 个单季之和 - PE 失真检测:亏损期占比 >30% 时自动切换 Gordon 模型合理 PE,避免被失真的历史 PE 中位数误导
- 三级数据降级:akshare 东财 API(代理阻断)→ 腾讯行情兜底 → 报错
- CLI 集成:
invest.py value 002466 [--rf X] [--erp X] [--store] [--emit json]
多 Agent 并行深度分析
- 两阶段并行架构:Phase 1 — 3 Agent 并行采集 → merge + 交叉验证;Phase 2 — 4 Agent 四视角并行分析;Phase 3 — 主编合成
- 四视角 Agent prompt 模板(
references/agent-prompts.md):生意质量 / 财务估值 / 行业竞争 / 风险治理,每个含数据提取命令、分析框架、输出规范、LAW 合规要求 - 交叉验证(
merge_collections.py):关键字段 Tushare vs akshare 双源对比,差异 <5% 通过、5-20% 标注、>20% 触发 tie-breaker - 性能提升:深度报告耗时从 ~14 分钟(串行)压缩至 ~6 分钟(并行),采集 ~2min + 分析 ~3min + 合成 ~1min
估值持久化与回溯
- 新增
valuations表:双写结构化列(price/ttm_eps/bvps/ttm_pe/pb/rf/erp/roe/ocf/pe_pct/pb_pct/各情景区间) + 完整result_json store valuations:列出历史估值记录,支持--symbol过滤compare_valuations(id1, id2):两期估值快照对比(price/ttm_eps/ttm_pe/pb/base_mid 增量)
CLI 新增
invest.py value— 科学估值计算(七步多方法:PE/PB/盈利收益率/隐含增长/ROE-PB 匹配)invest.py store valuations— 估值历史列表valuation_calc.py— 独立脚本,可脱离 CLI 单独使用
文档更新
- README.md:统一命令格式为
invest:a-stock/invest:a-limit-up;Token 表格新增 Tushare 积分档位对照(120/2000/5000/10000+);新增对话式配置 Token 指引;新增多 Agent 深度分析架构图;补充value/store valuations命令 - SKILL.md:SOP-DEEP 重写为三阶段多 Agent 流程;新增数据降级说明
基础设施
scripts/sync_version.py统一版本收敛:pyproject.toml→ 2× SKILL.md + 3× JSON(由.json.in模板生成)- CI / pre-commit /
bump-version.sh统一调用sync_version.py check|bump - CI/Release 工作流适配双 skill 目录
- 跨 skill 导入路径修复(limit-up → invest-a-stock)
Full Changelog: v0.1.9...v0.2.0
v0.1.9
v0.1.9
v0.1.9 交付质量门工具链、新闻三层架构、5 个新 CLI、渲染扩展与技术指标 P0–P1。
质量门(Phase 2)
lib/financial_rigor.py:verify-market-cap/verify-valuation/cross-validate/calclib/report_audit.py:audit --extract/--verdictlib/render_extras.py:>5% 跨源差异警示(--strict-rigor严格模式)
新闻采集(Phase 3)
lib/news_scanner.py:公告 + 声明式查询包 + 可选 Tavilycollect --with-news-pack;env.py加载TAVILY_API_KEYevents.calc_price_impact_interpolation+shockCLI
CLI(Phase 4)
rigor/audit/check/portfolio/thesislib/quality_check.py:7 指标 + 3 豁免lib/portfolio_review.py:行业集中度 / 相关性 / 压力测试store.py:thesis表
渲染与文档(Phase 5)
- AI 偏见声明 / 逆向思考 / A+H 检测标注 / 外生冲击段
- SKILL.md:SOP-DEEP、earnings-review、news-pulse
- source-guide:新闻三层架构
技术指标(Phase 6)
- Ichimoku / 波动率锥 / RS / 滚动 Beta(默认基准 000300.SH)
测试
test_financial_rigor/test_news_scanner/test_report_audit/test_quality_check/test_technical_v019
Phase 1(早期交付 2026-07-07)
- SKILL 拆分为核心 + references;
plan --intent扩展 participant_scan.py;财务软信号revenue_acceleration_flag/ocf_np_divergence_flag
Full Changelog: v0.1.8...v0.1.9
v0.1.8
v0.1.8
v0.1.8 交付 DCF 三情景估值模型、量化评分引擎、分析框架模板和 AI 分析置信度矩阵。
策略调整
- LAW 6 放宽:移除"禁止目标价"限制。允许多情景估值参考价(乐观/中性/悲观),须标注各情景的假设前提与概率权重,且注明"仅供参考,不构成投资建议"。不标注假设前提的单一目标价数字仍然禁止。涉及 CLAUDE.md 和 SKILL.md。
DCF 估值模型(V-1~V-6,valuation.py)
dcf_two_stage:两阶段 FCFF 折现模型(显式预测期 + 永续增长终值),math.isfinite()NaN/inf 输入校验dcf_sensitivity:WACC × 终值增长率 5×5 敏感性矩阵scenario_fcff:Bear/Base/Bull 三情景 FCFF 预测(营收增速/利润率/capex 强度)triangle_check:自研 DCF 隐含增速 vs 机构一致预期 vs 历史 CAGR 三角对照表_section_dcf_valuation(D-4/D-5/D-6):三情景估值区间 + 三角对照 + 敏感性矩阵渲染
量化评分引擎(S-1,scoring.py 新建)
revenue_quality_score:收入模式质量评分(Zha Giedt 2018 三组件应计模型 + 毛利率稳定性 + OCF 覆盖)customer_lockin_score:客户锁定评分(Shy 2002 转换成本 + CFA 护城河框架)management_ability_proxy:管理层能力代理评分(Demerjian et al. 2012 DEA+Tobit)insider_signal:内部人买卖一致性信号聚合(≥3 主体同向 → 强信号)confidence_matrix:AI 分析置信度矩阵(8 模块 × 数据覆盖率/来源丰富度/时效性/交叉验证)
分析深度增强(A-1~A-6,render.py)
- A-1 内部人增强:言行对照 + 红旗标注 +
insider_signal()聚合 - A-2 AI 置信度矩阵:引擎自动计算,非 LLM 判断;估值判断/周期拐点固定中/低
- A-3 待验证问题清单:行业/估值/事件特征 → 定制化问题模板
- A-4 商业模式画布:7 维度评分(5/7 可量化,2/7 数据不足标注)
- A-5 管理层完整评估:决策时间线 + 资本配置能力 5 维度 + 股东利益一致性
- A-6 价值链位置:ASCII 价值链图 + 利润池分布
框架模板(F-1~F-6,render.py)
- F-1 理解陈述:5 句模板(生意/护城河/管理层/估值/不确定性)
- F-2 Bull/Bear 增强:空方论点 ≥ 多方-1、每条款附带数字链条、禁止收敛为共识;估值/行业竞争自动补齐模板
- F-3 快速否决:
_check_fast_veto硬/软触发分层(FCFF/负债率/商誉 → 硬触发跳 DCF;OCF/ROE → 软触发预警) - F-4 六关评分速览:生意/护城河/管理层/财务/估值/风险,无二元判决,无仓位映射
- F-5 偏误自查表:叙事/锚定/幸存者/近因/确认偏误槽位
- F-6 交叉验证记录表:各维度 cross_validation 已有结果占位
工具链
- 版本号收敛:新增
scripts/version_sync.py;bump-version.sh/check-version.sh以pyproject.toml为 canonical,一键同步 5 个分发 manifest - 移除运行时版本自检:删除 SKILL.md Step 0 与 SessionStart 钩子中的
check-version.sh(保留 CI / pre-commit 校验)
Code Review 修复(第三轮 + v0.1.8)
- NaN 守卫:
dcf_two_stage新增math.isfinite()输入校验,防止静默 NaN 传播 - 措辞规范:"分位" → "历史位置"(F-1/F-4/A-3,模块 1 外)
- CAGR 复用:
_section_dcf_valuation优先使用scenario_fcff内置 CAGR,避免双算法分歧 FORBIDDEN_TARGET_PRICE_RE正则覆盖冒号变体_norm_date移除不可达第三正则_has_price_signal非 dict 安全;calc_betaepsilon 零方差;cmd_bump失败回滚- CI:
test_extract_release_notes.py版本号动态读取pyproject.toml
文档
host-docs/v0.1.8/:scope.md、dcf-valuation-design.md、implementation-plan.md、补充资料.mdhost-docs/开发文档评审流程.md:六维评审方法论(待沉淀为 skill)SKILL.md:新增 F-1~F-4 SOP 规范 + A-4/A-5 置信度标注要求CLAUDE.md:LAW 6 放宽措辞同步
测试
test_v018.py:100 tests(scoring 5 函数 + DCF 4 函数 + render 12 节 + 合规 grep)test_v017_e2e.py:INVEST_RUN_E2E=1时四标的 collect/report 冒烟
Full Changelog: v0.1.7...v0.1.8