trader-screener 是 trader-skill 技能集中的股票筛选器,用于把用户对公司的定性要求(例如“盈利仍在增长、估值不过高”)转化为可计算的规则,并对一组公司逐一检查,展示每个通过项和未通过项对应的实际数值与阈值。
用途:
- 将用户描述转化为筛选规则文件(JSON),支持比较运算符、区间、包含/不包含等操作。
- 对候选公司列表应用规则,输出通过名单、排名得分和未通过原因。
- 可结合价格数据计算市盈率(P/E,仅当 EPS 为正时)和盈利收益率。
主要能力:
- 读取指标数据:支持 trader/metrics.json(由 /trader-analyst 的 facts.py --metrics 生成),也支持任何包含 ticker 列的 JSON 列表或 CSV 文件;CSV 中的数字可包含 $、% 和逗号。
- 可选价格数据:读取 trader/prices.json(格式如 {"prices": {"AAPL": 341.27}}),用于计算价格、市盈率和盈利收益率。
- 规则文件:JSON 格式,可参考 rules.example.json。每条规则包含 metric、op、value;支持 >、>=、<、<=、==、!=、between(区间 [low, high])、in 和 not in(列表,用于排除特定股票代码或行业)。
- 缺失值处理:"missing": "fail" 表示缺少规则所需指标的公司直接判定失败;"skip" 表示跳过该规则并注明。
- 排名:对通过的公司按 rank 中每个指标打分(0 到 1),再按权重取加权平均。
- 输出:通过 --out 写入 trader/shortlist.json,包含通过者、得分及原因,未通过者及原因。
使用方式:
- 将用户需求转化为规则,写入 trader/rules.json;阈值模糊时询问用户(例如“便宜”对应多少市盈率)。
- 获取候选公司指标:运行 /trader-analyst 并指定 --metrics trader/metrics.json,或使用用户自己的 CSV 文件;若涉及市盈率则准备 trader/prices.json。
- 运行筛选命令: python3 "${CLAUDE_SKILL_DIR}/screen.py" trader/metrics.json --rules trader/rules.json --prices trader/prices.json --out trader/shortlist.json
- 退出码 1 表示无公司通过,需说明并展示最接近的未通过项。
- 报告通过名单及原因、未通过项及未达标数值、数据日期(各公司最新季度末、价格日期),并建议先对头部公司运行 /trader-analyst。
适用场景:
- 根据财务指标快速过滤股票池,得到符合特定增长、盈利和估值条件的候选名单。
- 对已有指标数据或 CSV 进行可复现的规则化筛选。
- 作为教育或研究工具,辅助理解筛选逻辑和结果。
限制:
- 仅使用标准库 Python,不联网;数据需本地提供。
- 不会将通过公司称为“买入”,筛选只是对已报告数字的过滤,不是投资建议。
- 不会填补缺失数字或猜测指标;缺失即缺失。
- 不会自动向 /trader-budget 或任何下单路径发送内容;只有 /trader-broker 在 /trader-risk 通过且用户明确输入 yes 后才可能下单。
- 仅供教育和工具用途,不构成财务建议。