mcpField
M
mlb-regression-flagger

mlb-regression-flagger

github.com/lyndonkl数据与数据库18745 次安装9 周前更新
代码仓库

关于 mlb-regression-flagger

mlb-regression-flagger 是用于评估 MLB 球员表现回归信号的幻想棒球技能,面向需要判断买入、卖出或观望对象的管理者。它结合预期与实际数据、次级指标和样本量规则,输出带来源的信号及通俗解释。

主要功能

  1. 01比较预期与实际表现指标
  2. 02计算并限制回归指数
  3. 03用 BABIP 和 HR/FB 交叉检查
  4. 04按样本量和信号冲突调整置信度
  5. 05生成信号文件与通俗解读

适用场景

  1. 01筛查表现低于预期且可能反弹的球员
  2. 02识别表面表现超前的潜在卖出对象
  3. 03评估指定球员的买入或卖出信号

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/lyndonkl/claude --skill mlb-regression-flagger

安装后在 Claude Code 中输入/mlb-regression-flagger确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

resources/
methodology.md
template.md
resources/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,并将其列入观察名单,等待再观察一周。

保护规则

  1. 最小样本量:打者打席数少于 80,或投手投球局数少于 30 时,不要输出其 regression_index。样本量低于此阈值时,Statcast 预期数据的噪声较大。若低于阈值,则输出 confidence: 0.3,并标记为 too-early。

  2. 投手的符号约定:(FIP - ERA) x 50 得出原始数值。正的原始数值表示 ERA < FIP → 投手运气好 → 取反,得到负的 regression_index(SELL 信号)。负的原始数值表示 ERA > FIP → 运气差 → 取反,得到正的 regression_index(BUY)。务必取反。计算示例见方法说明。打者直接使用原始符号。

  3. 限制在 ±100 以内:极端的 xwOBA 差值(>.200)几乎总是小样本造成的假象。必须严格限制数值。不要报告 +140 的 regression_index。

  4. 球场和左右投手对位调整:Savant 的 xwOBA 不受球场影响,但未针对左右投手对位拆分进行调整。对于一名左打者(LHH),如果他在对左打者不利的球场(例如 Oracle)比赛,且接下来有许多场将面对左投(LHP),那么回归速度可能会比指数显示的更慢。将此作为注意事项;不要重新计算。

  5. BABIP 是次要指标,不是主要指标:如果底层击球质量很出色,单凭高 BABIP(击球落地后形成安打的比例)并不能作为 SELL 信号。极高击球初速的打者(例如 Judge、Ohtani)整个赛季的 BABIP 都能维持在 .340 以上。标记之前,务必将 BABIP 与强击球率(Hard-Hit %)交叉核对。

  6. 投手的 HR/FB 正常化:联盟平均 HR/FB 约为 12%。投手会回归到其职业生涯 HR/FB 水平,而非联盟平均水平。飞球型投手的“正常”HR/FB 为 14%;滚地球型投手则为 9%。若有数据,使用职业生涯或近 3 年平均值;只有在没有历史数据时才使用 12%。

  7. 对每项事实进行网络搜索(依据 CLAUDE.md):所有代入公式的数字都必须来自实时网络搜索,并将 URL 记录在 source_urls: 中。绝不能凭记忆或训练数据填写。如果搜索失败,则将 confidence 降至 0.3,并在红队审查中标记。

  8. 面向初学者翻译:用户完全不了解棒球。每个面向用户的句子,首次使用“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 Savanthttps://baseballsavant.mlb.com/savant-player/{slug}-{id}
wOBA、BABIP(打者)FanGraphshttps://www.fangraphs.com/players/{slug}/{id}
ERA、FIP、xFIP、HR/FB、LOB%FanGraphs同上
xERABaseball Savant同上

关键资源:

必需输入:

  • 球员姓名,或“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 的信号文件
  • 面向用户的摘要,包含术语解释和行动动词

评论

支持 Markdown