关于 mlb-regression-flagger
mlb-regression-flagger 是用于评估 MLB 球员表现回归信号的幻想棒球技能,面向需要判断买入、卖出或观望对象的管理者。它结合预期与实际数据、次级指标和样本量规则,输出带来源的信号及通俗解释。
主要功能
- 01比较预期与实际表现指标
- 02计算并限制回归指数
- 03用 BABIP 和 HR/FB 交叉检查
- 04按样本量和信号冲突调整置信度
- 05生成信号文件与通俗解读
适用场景
- 01筛查表现低于预期且可能反弹的球员
- 02识别表面表现超前的潜在卖出对象
- 03评估指定球员的买入或卖出信号
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ lyndonkl/ claude --skill mlb-regression-flagger安装后在 Claude Code 中输入/mlb-regression-flagger确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
resources/methodology.mdtemplate.mdresources/evaluators/rubric_mlb_regression_flagger.json详细介绍
MLB 回归指标识别器
目录
示例
场景:用户询问“Junior Caminero 是低买候选人吗?还是我在追逐噪声?”
从 Baseball Savant + FanGraphs 收集的原始数据(引用 URL):
- Caminero 2026 年 wOBA:.310(实际结果)
- Caminero 2026 年 xwOBA:.380(根据击球初速 + 发射角预期的结果)
- BABIP:.255(远低于 .300 的联盟平均值)
- Barrel %:14.2%(精英水平,处于第 90 百分位)
- Hard-Hit %:52%(精英水平)
回归指数计算:
regression_index = (xwOBA - wOBA) x 500
= (.380 - .310) x 500
= +35
二次检查——BABIP:只有在进一步收紧标准时,.255 才低于击球手的 .240 低值异常阈值;不过,.255 加上精英级别的击球质量,足以确认他运气不佳。他不是那种“会回升到 .300”的球员,但考虑到他的击球分布,他不太可能一直维持在 .255。
结论:regression_index = +35 → 买入。Caminero 运气不佳;其底层击球质量属于精英水平。预计未来 30 天内,他的表面数据会迎头赶上。
面向用户的表述(遵循 CLAUDE.md 规则 #5——面向初学者的写法):
“Junior Caminero 的原始数据看起来平平(.310 wOBA——这是一项综合性击球数据),但他的实际击球质量(击球的力度和角度)表明,他的击球表现应该达到 .380。这个差距是联盟中最大的差距之一。如果他还没被选走,就把他加入阵容;或者在他的数据回升前提出交易。”
信号文件输出(遵循 signal-framework.md):
---
type: regression
date: 2026-04-17
emitted_by: mlb-regression-flagger
player: Junior Caminero
regression_index: +35
direction: BUY
confidence: 0.78
source_urls:
- https://baseballsavant.mlb.com/savant-player/junior-caminero-...
- https://www.fangraphs.com/players/junior-caminero/...
---
工作流
复制此清单并跟踪进度:
Regression Flagger Progress:
- [ ] Step 1: Define the candidate list (who to check)
- [ ] Step 2: Web-search Savant for expected stats (xwOBA, xERA, xBA)
- [ ] Step 3: Web-search FanGraphs for surface stats (wOBA, ERA, BABIP, HR/FB)
- [ ] Step 4: Compute regression_index per player
- [ ] Step 5: Apply secondary flags (BABIP, HR/FB)
- [ ] Step 6: Emit signal file + user-facing translation
步骤 1:确定候选名单
我们要检查哪些人?有三个入口:
- 用户当前阵容(SELL 候选人——表现超出预期的球员)
- 自由球员 + 豁免名单(BUY 候选人——表现不佳但底层指标出色的球员)
- 用户询问的特定球员(例如,交易目标)
步骤 2:在网上搜索 Baseball Savant 的预期数据
具体查询和 URL 模式请参阅 resources/methodology.md。
- 击球手:
xwOBA、xBA、xSLG、强劲击球率(Barrel %)、强击球率(Hard-Hit %) - 投手:
xERA、预期被击打率、挥空率(Whiff %)、追打率(Chase %) - 将每个 URL 记录到信号文件的
source_urls中
步骤 3:在网上搜索 FanGraphs 的表面数据
查询模式请参阅 resources/methodology.md。
- 击球手:
wOBA、BABIP、AVG、OBP、SLG - 投手:
ERA、FIP、xFIP、HR/FB %、残垒率(LOB %) - 记录每个 URL
步骤 4:计算 regression_index
计算公式请参阅 resources/methodology.md。
- 击球手:
regression_index = (xwOBA - wOBA) x 500,限制在 ±100 以内 - 投手:
regression_index = (FIP - ERA) x 50,限制在 ±100 以内- 注意:对于投手,FIP 比 ERA 大(更正)= 投手此前运气较好(对梦幻棒球而言是负面信号);FIP 比 ERA 小 = 投手此前运气较差(正面信号)。符号约定请参阅方法说明。
- 将结果填入 resources/template.md
步骤 5:应用次要标记
- 检查击球手 BABIP:若 > .370(运气好得不可持续)或 < .240(运气差得不可持续),则标记
- 检查投手 HR/FB:若 > 17%(运气差,通常会回归至约 12%)或 < 8%(运气好),则标记
- 注意:次要标记会强化或反驳主要的
regression_index。两者一致时,置信度上升;两者不一致时,置信度下降,球员会归入“观察名单”类别,而不是可执行的 BUY/SELL 建议。
步骤 6:生成信号文件和面向用户的解读
- 按照 signal-framework.md 中的 frontmatter 格式编写
signals/YYYY-MM-DD-regression.md - 将每项统计数据都转化为通俗易懂的语言,供用户理解(遵循 CLAUDE.md 规则 #5)
- 每项建议均以行动动词结尾:
BUY/SELL/HOLD/ADD/DROP(遵循 CLAUDE.md 规则 #6) - 根据 resources/evaluators/rubric_mlb_regression_flagger.json 进行验证。目标平均分 ≥ 3.5。
常见模式
模式 1:精英击球质量、运气不佳的打者(经典 BUY)
- 信号:xwOBA - wOBA ≥ +.050,Barrel % ≥ 第 90 百分位,BABIP ≤ .260
- 典型特征:年轻打者,出球初速度出众,但平直球总是被接杀
- 行动:积极 BUY。在市场察觉之前向他们提出交易。如果他们出现在弃用名单中,就用 FAAB 出价。
- 示例:Junior Caminero — xwOBA .380 vs wOBA .310,BABIP .255 →
+35,BUY。
模式 2:走运的老将(经典 SELL)
- 信号:wOBA - xwOBA ≥ +.050,Barrel % 低于中位数,BABIP ≥ .360
- 典型特征:职业生涯表现平平的打者,靠软弱击球延续火热状态
- 行动:逢高 SELL。尝试用他们换取真正有实力的 BUY-LOW 目标。
- 示例(假设):多面手 IF 击球率 .310,BABIP .360,xwOBA .295 vs wOBA .340 →
-22,SELL。
模式 3:运气好的先发投手(SELL)
- 信号:ERA 远低于 FIP(例如,ERA 2.50,FIP 4.20),HR/FB < 8%,残垒率(LOB%)> 80%
- 典型特征:先发投手的飞球没有飞出全垒打墙,继承跑者也没有得分
- 行动:趁他的 ERA 仍然好看时 SELL。
- Regression_index 示例:
(FIP - ERA) x 50 = (4.20 - 2.50) x 50 = +85。但对投手而言,FIP-ERA 差距大意味着他一直很走运 → 翻转符号 →-85,SELL。符号约定请参阅方法说明。
模式 4:运气不佳的先发投手(BUY)
- 信号:ERA 远高于 FIP(例如,ERA 5.10,FIP 3.40),HR/FB > 17%,LOB% < 68%
- 典型特征:实力出众,但投球顺序 / BABIP 运气不佳
- 行动:在 ERA 回归正常之前 BUY。
模式 5:信号相互冲突(WATCHLIST,不可操作)
- 信号:xwOBA-wOBA 差距较大,但 Barrel % 低于中位数;或者 BABIP 极端,但击球质量证实这一点
- 行动:不要自动标记为 BUY/SELL。以较低置信度(< 0.5)输出
regression_index,并将其列入观察名单,等待再观察一周。
保护规则
-
最小样本量:打者打席数少于 80,或投手投球局数少于 30 时,不要输出其
regression_index。样本量低于此阈值时,Statcast 预期数据的噪声较大。若低于阈值,则输出confidence: 0.3,并标记为too-early。 -
投手的符号约定:
(FIP - ERA) x 50得出原始数值。正的原始数值表示 ERA < FIP → 投手运气好 → 取反,得到负的regression_index(SELL 信号)。负的原始数值表示 ERA > FIP → 运气差 → 取反,得到正的regression_index(BUY)。务必取反。计算示例见方法说明。打者直接使用原始符号。 -
限制在 ±100 以内:极端的 xwOBA 差值(>.200)几乎总是小样本造成的假象。必须严格限制数值。不要报告 +140 的
regression_index。 -
球场和左右投手对位调整:Savant 的 xwOBA 不受球场影响,但未针对左右投手对位拆分进行调整。对于一名左打者(LHH),如果他在对左打者不利的球场(例如 Oracle)比赛,且接下来有许多场将面对左投(LHP),那么回归速度可能会比指数显示的更慢。将此作为注意事项;不要重新计算。
-
BABIP 是次要指标,不是主要指标:如果底层击球质量很出色,单凭高 BABIP(击球落地后形成安打的比例)并不能作为 SELL 信号。极高击球初速的打者(例如 Judge、Ohtani)整个赛季的 BABIP 都能维持在 .340 以上。标记之前,务必将 BABIP 与强击球率(Hard-Hit %)交叉核对。
-
投手的 HR/FB 正常化:联盟平均 HR/FB 约为 12%。投手会回归到其职业生涯 HR/FB 水平,而非联盟平均水平。飞球型投手的“正常”HR/FB 为 14%;滚地球型投手则为 9%。若有数据,使用职业生涯或近 3 年平均值;只有在没有历史数据时才使用 12%。
-
对每项事实进行网络搜索(依据 CLAUDE.md):所有代入公式的数字都必须来自实时网络搜索,并将 URL 记录在
source_urls:中。绝不能凭记忆或训练数据填写。如果搜索失败,则将confidence降至0.3,并在红队审查中标记。 -
面向初学者翻译:用户完全不了解棒球。每个面向用户的句子,首次使用“xwOBA”“FIP”“BABIP”时都必须附上括号内的解释。参见 CLAUDE.md 规则 #5 和上面的示例。
快速参考
核心公式:
HITTER: regression_index = clamp((xwOBA - wOBA) x 500, -100, +100)
positive = UNLUCKY (BUY); negative = LUCKY (SELL)
PITCHER: raw = (FIP - ERA) x 50
regression_index = clamp(-raw, -100, +100)
positive = UNLUCKY (BUY); negative = LUCKY (SELL)
SECONDARY (hitter): BABIP > .370 → lucky flag; BABIP < .240 → unlucky flag
SECONDARY (pitcher): HR/FB < 8% → lucky flag; HR/FB > 17% → unlucky flag
操作阈值:
regression_index | 方向 | Fantasy 操作 |
|---|---|---|
| ≥ +30 | 运气极差 | 积极 BUY / ADD / 提高 FAAB 报价 |
| +15 到 +29 | 运气稍差 | 价格便宜时 BUY |
| -14 到 +14 | 噪声 | HOLD / 不操作 |
| -29 到 -15 | 运气稍好 | 按市场价出售时 SELL |
| ≤ -30 | 运气极好 | 积极 SELL / DROP / 拒绝报价 |
数据源对照表(依据 data-sources.md):
| 统计指标 | 主要来源 | URL 格式 |
|---|---|---|
| xwOBA、xBA、xSLG、Barrel %、Hard-Hit % | Baseball Savant | https://baseballsavant.mlb.com/savant-player/{slug}-{id} |
| wOBA、BABIP(打者) | FanGraphs | https://www.fangraphs.com/players/{slug}/{id} |
| ERA、FIP、xFIP、HR/FB、LOB% | FanGraphs | 同上 |
| xERA | Baseball Savant | 同上 |
关键资源:
- resources/template.md:标记球员表、逐球员工作表、信号文件模板
- resources/methodology.md:含符号约定的公式、网络搜索查询模式、计算示例、BABIP 和 HR/FB 正常化
- resources/evaluators/rubric_mlb_regression_flagger.json:8 项评分标准
必需输入:
- 球员姓名,或“scan roster” / “scan waivers”
- 联盟背景:剩余周数、类别需求(来自
context/league-config.md和mlb-category-state-analyzer信号)
生成的输出:
- 每位球员的
regression_index(-100 到 +100) - 方向标签:
BUY/SELL/HOLD/WATCHLIST - 次要标记说明(BABIP、HR/FB)
- 位于
signals/YYYY-MM-DD-regression.md的信号文件 - 面向用户的摘要,包含术语解释和行动动词