mcpField
M
mlb-trade-evaluator

mlb-trade-evaluator

github.com/lyndonkl其他18744 次安装9 周前更新
代码仓库

关于 mlb-trade-evaluator

mlb-trade-evaluator 是用于评估幻想棒球交易的技能,面向需要结合球员预测、球队类别需求和阵容位置判断报价的管理者。它计算加权类别差异、交易价值与名额影响,并按规则给出接受、还价或拒绝建议。

主要功能

  1. 01比较交易双方的剩余赛季预测
  2. 02计算加权类别差异与交易价值
  3. 03纳入空出阵容名额的价值
  4. 04调用逆向选择技能调整估值
  5. 05评估位置灵活性与季后赛影响
  6. 06按阈值生成接受、还价或拒绝结论

适用场景

  1. 01评估收到的球员交换报价
  2. 02根据类别需求设计具体还价方案
  3. 03判断交易对争冠周阵容的影响

安装

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

$npx skills add https://github.com/lyndonkl/claude --skill mlb-trade-evaluator

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

包含的文件

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

resources/
methodology.md
template.md
resources/evaluators/
rubric_mlb_trade_evaluator.json

详细介绍

MLB 交易评估器

目录

示例

场景:对手提出用 Aaron Judge(OF)交换 Bobby Witt Jr.(SS)+ Spencer Strider(SP)。今天是 2026-06-10。用户在 12 支球队的联盟中排名第 4。mlb-category-state-analyzer 提供的 cat_pressure 信号:SB 压力 85、HR 压力 55、K 压力 70、QS 压力 80、OBP 压力 60;其他指标为 40-50。用户有富余的 OF 深度,但 SS 阵容较薄弱。mlb-opponent-profiler 给出的对手类型为:active。

赛季剩余时间的 ATC 预测(第 11-23 周,约剩余 105 场比赛):

球员RHRRBISBOBPKQSSV$ 价值
Judge(转入)7528782.405———$34
Witt(转出)70206525.355———$32
Strider(转出)—————165120$26

各类别差值(我方减对方,按 cat_pressure 加权):

类别差值(原始)压力加权 Δ
R+545+2.3
HR+855+4.4
RBI+1345+5.9
SB−2585−21.3
OBP+.050 (×PA)60+3.0
K−16570−115.5
QS−1280−96.0
SV0450
ERA/WHIP持平500
合计−217.2

交易原始价值差 = $34 − ($32 + $26) = −$24。

阵容位置价值加成(原则 #9):转出 2 名球员,转入 1 名球员 → 我方腾出 +1 个净阵容名额;对方腾出 0 个。slot_value_delta = (1 − 0) × $2.50 = +$2.50。

逆向选择流程(委托给 @skills/adverse-selection-prior/):

  • 输入:offer_type=trade、proposer_archetype=active、offer_symmetry_score=20(调整前价值比 −37%,明显对我方不利)、proposer_info_asymmetry=55。
  • 技能输出:prior_ev_probability=0.30、recommended_adjustment=0.85;理由指出,活跃交易者从众多可能方案中选出这笔交易,尽管表面上看对我方不利。

调整后的交易价值差:

trade_value_delta_raw       = −$24.00
+ slot_value_delta          = +$2.50
= trade_value_delta_pre_adj = −$21.50
× recommended_adjustment    = × 0.85
= trade_value_delta_adjusted= −$18.28

以转出球员的美元价值百分比表示:−$18.28 / $58 = −31.5% → 低于 −20% 的拒绝阈值。

位置灵活度差值:−30(失去稀缺的 SS,获得过剩的 OF)。 季后赛影响(第 21-23 周):Judge 的赛程有 19 场比赛,而 Witt 有 18 场比赛,Strider 有 4 次先发 → −35(冠军赛期间少了 4 次先发所能带来的 K/QS)。

判定阶梯(原则 #8):

  • delta_pct = −31.5%,明显低于 −20%。
  • 逆向选择先验为 0.34(有力证据表明这笔交易对我方来说是负期望值)。
  • 支持方和批评方意见一致:SB、K、QS 在高压力下都受到严重影响。
  • 符合狭义的 拒绝 情形:delta < −20% 且存在明确的逆向选择证据。

判定:拒绝。即使始终遵循还价规则,提出的还价也会是“Judge + Webb + Ruiz 换 Witt + Strider”,作为最后通牒;但我们会预先承诺拒绝,因为折价后这笔交易仍然不划算。

工作流

复制此清单并跟踪进度:

Trade Evaluation Progress:
- [ ] Step 1: Parse the offer (players in, players out, both sides)
- [ ] Step 2: Pull rest-of-season ATC projections for every player
- [ ] Step 3: Compute per-category deltas (counting + ratio)
- [ ] Step 4: Apply cat_pressure weights from category-state-analyzer
- [ ] Step 5: Compute raw trade_value_delta in dollars
- [ ] Step 6: Compute slot_value_delta (optionality bonus)
- [ ] Step 7: Invoke @skills/adverse-selection-prior/ and apply the haircut
- [ ] Step 8: Assess positional_flex_delta
- [ ] Step 9: Compute playoff_impact (weeks 21-23 only, July+)
- [ ] Step 10: Render verdict + counter via the +15% / -20% ladder

步骤 1:解析报价

准确记录双方各自交出和接收的球员。联盟内的交易是零和的。输入格式请参阅 resources/template.md。

  • 列出所有转入我方阵容的球员(转入)
  • 列出所有离开我方阵容的球员(转出)
  • 记录每位球员在 Yahoo 的位置资格(C/1B/2B/3B/SS/OF/Util/SP/RP)
  • 记录 IL 状态、交易保护条款或正在进行的双先发周
  • 记录对手球队的标识,以便读取 context/opponents/<team>.md 获取其类型

步骤 2:获取赛季剩余时间的预测

权威来源是 FanGraphs ATC(综合预测)。备用来源:FanGraphs Depth Charts,其次是 Razzball Player Rater。获取所有涉及球员本赛季剩余时间的预测总量。

  • 对击球手:赛季剩余时间的 R、HR、RBI、SB、OBP 和打席数(PA)
  • 对投手:赛季剩余时间的 K、IP、ERA、WHIP、QS、SV
  • 在信号文件的 frontmatter 中引用每个来源 URL
  • 如果缺少预测数据,将置信度降至 0.5 并标记

详细的来源顺序请参阅 resources/methodology.md#projection-sourcing。

第 3 步:计算各类别的差值

对于计数统计(R、HR、RBI、SB、K、QS、SV):用转入数据减去转出数据,简单求和。

对于比率统计(OBP、ERA、WHIP):按预计打席数(击球手)或投球局数(投手)加权。加权公式请参阅 resources/methodology.md#ratio-category-math。

  • 逐类别计算计数统计差值
  • 比率类别差值表示为按数据量加权后的球队平均值变动
  • 在逐类别差值表中记录每项数据(并列展示两支球队)

第 4 步:应用 cat_pressure 权重

读取 mlb-category-state-analyzer 最新的 signals/YYYY-MM-DD-cat-state.md。对于 10 个类别中的每一个,将原始差值乘以 cat_pressure / 50。

  • 加权差值 = raw_delta × (cat_pressure / 50)
  • 将加权差值求和 → cat_pressure_weighted_delta

第 5 步:计算原始 trade_value_delta

使用 FanGraphs Auction Calculator 的赛季剩余美元价值(若不可用,则使用 Razzball)。

trade_value_delta_raw = Sum($ of players IN) − Sum($ of players OUT)

这是起始值——尚未计入阵容位置价值加成或逆向选择折减。

第 6 步:计算 slot_value_delta(可选性加成)

每个空闲替补席位的可选性价值约为 $2-3:可用于安排临时上场球员、保留伤病名单(IL)球员,或投机性地储备替补球员。2 换 1 的交易会让其中一方腾出一个阵容位置。

slot_value_delta = (N_slots_cleared_for_us − N_slots_cleared_for_them) × $2.50

其中:

  • N_slots_cleared_for_us = 我方转出球员数 − 我方转入球员数,结果限制为 ≥ 0
  • N_slots_cleared_for_them = 对方一侧按相同方式计算

示例:

  • 1 换 1:双方均未腾出位置 → slot_value_delta = $0
  • 2 换 1(我方送出 2 人,得到 1 人):我方腾出 1 个位置,对方腾出 0 个 → +$2.50
  • 1 换 2(我方送出 1 人,得到 2 人):我方腾出 0 个位置,对方腾出 1 个 → −$2.50
  • 3 换 1(我方送出 3 人,得到 1 人):我方腾出 2 个位置,对方腾出 0 个 → +$5.00

将其加到 trade_value_delta_raw,得到 trade_value_delta_pre_adj。

有关原因(game-theory-principles.md #9),请参阅 resources/methodology.md#slot-value-optionality。

第 7 步:调用 @skills/adverse-selection-prior/ 并应用折减

此步骤将原则 #4(针对收到的报价进行逆向选择评估)付诸实践。评估器不会自行计算先验值,而是委托专用技能计算并使用其输出。

  • 准备 @skills/adverse-selection-prior/ 的输入:
    • offer_type:trade(如果这是针对先前提议的还价,则用 counter_offer)
    • proposer_archetype:从 context/opponents/<opponent-team>.md 读取(取值之一:active、expert、dormant、frustrated、unknown)。如果文件不存在,则使用 unknown。
    • offer_symmetry_score:基于我们自己的表面估值计算的 0-100 整数。按以下方式映射:
      • trade_value_delta_pre_adj / Σ($_OUT) ≥ 0 → 72(报价看起来公平或对我们有利)
      • 0 > 比率 ≥ −10% → 60
      • −10% > 比率 ≥ −25% → 40
      • 比率 < −25% → 20
    • proposer_info_asymmetry:0-100 的整数。默认值为 50。若存在以下任一情况,则提高至 80 以上:近期伤病消息尚未由我们核实、closer 角色变动尚待确定、阵容构建发生变化、交易截止日期临近。评分指南见 resources/methodology.md#adverse-selection-delegation。
  • 使用这四项输入调用 @skills/adverse-selection-prior/。
  • 使用该技能的输出契约:
    • prior_ev_probability — 在信号文件中原样保存。
    • recommended_adjustment(浮点数,通常为 0.80-1.00)— 这是乘法折减系数。
    • bayesian_rationale — 嵌入 verdict 块的理由中。
    • override_hints — 将每条提示作为 red_team_finding 添加到信号文件中。
  • 计算:
    trade_value_delta_adjusted = trade_value_delta_pre_adj × recommended_adjustment
    
  • 在输出信号块中记录 adverse_selection_adjustment = 1 − recommended_adjustment(以百分比折减表示,例如,0.88 → “折减 12%”)。

符号说明: 折减系数乘在差值上,会缩小估算值的绝对值,不论方向如何——正差值会趋近于零(我们高估了收益),负差值也会趋近于零(我们高估了损失)。这在数学上符合 Akerlof 式先验:该技能告诉我们模型的可靠性低于预期,因此我们应更多地以零为基准。verdict 梯度通过对折减后的百分比设定严格阈值(+15% / −20%)进行补偿,因此,折减幅度较大的中度负原始差值会落入中间区间(COUNTER),而折减幅度无论多大,极负的原始差值仍会低于 −20% 的 REJECT 阈值。如果折减后数值恰好落在梯度边界上,则按“始终还价”规则处理为 COUNTER。

步骤 8:评估 positional_flex_delta

根据交易对阵容灵活性的影响,评分范围为 −100 至 +100。参见 resources/methodology.md#positional-flex-scoring。

  • 从富余位置补入稀缺位置(C、SS、2B)= 正值
  • 失去稀缺位置 = 负值
  • 获得多位置资格 = 正值
  • 将两名板凳球员合并为一名首发球员 = 正值(释放板凳名额)

步骤 9:计算 playoff_impact(仅限 7 月 1 日及以后)

对于在 7 月 1 日或之后进行的交易,专门评估第 21、22、23 周的冠军争夺赛周。读取 mlb-playoff-scheduler 信号文件,获取每位球员的 playoff_games 和 playoff_matchup_quality。

playoff_impact = Sum(playoff_games × matchup_quality of IN)
               − Sum(playoff_games × matchup_quality of OUT)

归一化至 0-100,其中 50 表示中性。

步骤 10:通过 +15% / −20% 梯度给出 verdict

将 trade_value_delta_adjusted 表示为转出金额的百分比:

delta_pct = trade_value_delta_adjusted / Σ($_OUT)

应用原则 #8 的 verdict 梯度:

delta_pctVerdict条件
≥ +15%ACCEPT且 advocate/critic 变体达成一致,且没有压力 ≥80 的类别具有负的加权差值
−20% < delta_pct < +15%COUNTER(附具体方案)必须给出具体还价;绝不能直接拒绝
≤ −20%REJECT且 prior_ev_probability ≤ 0.35(有明确的逆向选择证据)

始终还价规则:在中间区间,即使我们的直觉是拒绝,也要按照原则 #8 给出具体还价方案(维护重复博弈中的声誉)。轻率地拒绝会让未来报价断绝;给出经过权衡的还价则能保持交易渠道畅通。 如果 REJECT 条件只部分满足(例如,delta_pct ≤ −20%,但 prior_ev_probability > 0.35):降级为 COUNTER,并要求对方提供更有诚意的方案。

每个判定都以单个动词建议结尾:ACCEPT、COUNTER (with specific proposal) 或 REJECT。不要使用“考虑”。

请参阅 resources/template.md#verdict-block 获取输出架构。使用 resources/evaluators/rubric_mlb_trade_evaluator.json 进行验证。发布所需的最低平均分:3.5。

常见模式

模式 1:用明星球员换阵容深度

  • 对方用一名明星球员换我们两到三名中游球员。对方得到一个头条级名字;我们则因 2 换 1 腾出一个替补席位,获得名额价值加成。
  • 常见陷阱:美元价值看起来接近,但考虑到对方主动提出这笔交易,我们仍应预期受到逆向选择折价。
  • 规则:slot_value_delta 有利于我们(+$2.50 或 +$5);但仍要应用逆向选择折价——检查 trade_value_delta_adjusted 是否高于 +15%,以及我们送出的球员是否不属于可弃用级别。如有疑虑,选择 COUNTER(而不是 REJECT)。

模式 2:针对类别的互换

  • 双方价值对等的交易,双方都瞄准各自的弱项(例如,对方用 K/QS 换我们的 HR/RBI)。
  • 诊断:这笔互换符合我们的 cat_pressure,还是对方的?如果符合对方的,折价幅度会很大(对我们而言,对称性反而不利)。
  • 规则:只有在我们获得的类别压力 ≥70、放弃的类别压力 ≤40,且折价后的 delta_pct ≥ +15% 时,才选择 ACCEPT。否则选择 COUNTER。

模式 3:低买高卖的回归交易

  • 交易涉及一名目前表现高于或低于其基础指标的球员。交叉参考 mlb-regression-flagger 的信号。
  • 规则:如果对方球员的 regression_index 显著为正(运气不佳,理应反弹),而我们的球员显著为负(运气好,回归即将到来),则将此情况作为 proposer_info_asymmetry(30-40)传递给 @skills/adverse-selection-prior/(我们可能比对方掌握更好的回归信息)。由此产生的轻微折价可能让 delta_pct 超过 +15%。

模式 4:与伤病相关的绝望报价

  • 对方球员已进入伤病名单,或正在养轻伤。报价以折扣为诱饵。
  • 规则:将 proposer_info_asymmetry 设为 80+(他们对伤病了解更多)。该技能会返回 recommended_adjustment ≈ 0.80。通常选择 COUNTER 或 REJECT,具体取决于折价后的 delta_pct 是否低于 −20%。

模式 5:季后赛周赛程套利(7 月起)

  • 接手的球员在第 21-23 周有 20 场比赛;送出的球员有 14 场。即使剩余赛季美元价值持平,季后赛价值也会有所不同。
  • 规则:对于 7 月 15 日或之后提出的任何交易,将 playoff_impact 的权重加倍。利用 playoff_impact 的正向变化,让接近门槛的 COUNTER 案例转为 ACCEPT。

护栏

  1. 始终提出还价——直接 REJECT 的适用范围很窄。 根据 game-theory-principles.md #8(重复博弈中的声誉),给出合理还价并拒绝,可以让报价渠道保持畅通;轻率拒绝则会让渠道断绝。只有在 delta_pct ≤ −20% 且有明确的逆向选择证据(prior_ev_probability ≤ 0.35)时,才使用 REJECT。其他所有处于中间区间的报价 → 都应给出具体方案并 COUNTER。

  2. 交由专用技能计算逆向选择先验——不要在此处重新计算。 第 7 步调用 @skills/adverse-selection-prior/。不要在这里重复其逻辑。该技能会用于交易、弃掉豁免球员,以及未来的 M&A/谈判技能;保持单一数据源可以避免逻辑偏差。

  3. 对 trade_value_delta_pre_adj 应用折减,不要折减各类别的 delta。 先验会调整我们的净美元估值,而不是各类别的单项贡献。类别 delta 表不应用折减,并按模板原样显示。

  4. 阵容席位价值加成是对称的。 如果对方送来两名球员,而我们只送出一名,那么从我们的角度看,slot_value_delta 为负数——对方获得了替补席位的灵活性。收到 2 换 1 报价时,别忘了加上负号。

  5. 使用赛季剩余时间的预测值,绝不要使用全赛季或赛季至今的数据。 规则同前;用 atcr,不用 atc。

  6. 比例类类别需要按数量加权。 OBP、ERA、WHIP 的 delta 必须按 PA 或 IP 加权。

  7. 先读取 cat_pressure 信号。 如果 mlb-category-state-analyzer 今天尚未生成数据,先运行它。

  8. 明确量化还价——不要只说“再多要一些”。 提出包含具体球员姓名的替代方案。

  9. 检查是否临近交易截止日期。 Yahoo 的截止日期是 August 6。若在截止日期前一周内提出交易,标记出来。

  10. 考虑对双方的影响。 如果对方是直接争夺季后赛席位的竞争者,帮助对方的交易会造成双重损失。在输出块中注明对手身份及其与我们的排名差距。

  11. 使用适合初学者的表达。 用户完全不了解棒球。至少要用通俗语言解释每项统计数据一次。每条面向用户的建议都必须以 ACCEPT、COUNTER (with specific package) 或 REJECT 结尾。

  12. 记录决策。 通过 mlb-decision-logger 将记录写入 tracker/decisions-log.md,并附上完整的信号值,包括 prior_ev_probability、recommended_adjustment、slot_value_delta、trade_value_delta_adjusted、裁决结果、置信度,以及 will_verify_on 日期(4 周后)。

快速参考

关键公式:

Counting-cat delta (cat C):
  raw_delta_C = Σ(projected_C of IN) − Σ(projected_C of OUT)

Ratio-cat delta (OBP example):
  PA-weighted OBP_IN and OBP_OUT, then team-level shift

Weighted cat delta:
  weighted_delta_C = raw_delta_C × (cat_pressure_C / 50)

Total cat delta:
  trade_cat_delta = Σ weighted_delta_C

Raw trade value:
  trade_value_delta_raw = Σ($_IN) − Σ($_OUT)

Slot-value bonus:
  slot_value_delta = (slots_cleared_us − slots_cleared_them) × $2.50

Pre-adjustment delta:
  trade_value_delta_pre_adj = trade_value_delta_raw + slot_value_delta

Adverse-selection haircut (via @skills/adverse-selection-prior/):
  trade_value_delta_adjusted = trade_value_delta_pre_adj × recommended_adjustment

Percent expression:
  delta_pct = trade_value_delta_adjusted / Σ($_OUT)

Playoff impact (July+):
  playoff_impact = Σ(games_21_23 × matchup_q of IN)
                 − Σ(games_21_23 × matchup_q of OUT)

结论判定阶梯(原则 #8):

delta_pct结论额外门槛
≥ +15%接受且倡导方/批评方意见一致,且没有压力值 ≥80 的类别呈负面
−20% < d < +15%还价(附具体方案)始终如此——此区间内绝不直接拒绝
≤ −20%拒绝且 prior_ev_probability ≤ 0.35

逆向选择先验摘要(来自 @skills/adverse-selection-prior/):

recommended_adjustment典型原因对 delta_pct 的影响
1.00对手不活跃,信息差距小不变
0.95对手活跃,报价对等幅度降低 5%
0.90对手通常较活跃幅度降低 10%
0.85对手是专家,存在一定信息差距幅度降低 15%
0.80对手是专家,存在显著信息不对称幅度降低 20%

关键资源:

  • resources/template.md:报价输入架构、逐类别 delta 表(两支球队)、价值/阵容位置/逆向选择/灵活性/季后赛区块、含理由和还价方案的结论区块,以及三个示例(接受、还价、拒绝)
  • resources/methodology.md:预测来源、计数类与比率类类别的计算方法、cat_pressure 加权、价值金额、阵容位置价值的可选性、委派给 adverse-selection-prior、灵活性评分、季后赛影响,以及新增的结论判定阶梯和始终还价规则
  • resources/evaluators/rubric_mlb_trade_evaluator.json:质量标准,包括逆向选择整合、阵容位置价值加成的应用,以及结论判定阶梯的正确性

所需输入:

  • 交易报价(转入球员、转出球员、发起交易的对手)
  • 赛季剩余时间 ATC 预测(FanGraphs)
  • 当前 cat_pressure 信号(来自 mlb-category-state-analyzer)
  • 拍卖计算器的美元价值(FanGraphs)
  • 每位球员的位置资格(Yahoo)
  • 来自 context/opponents/<team>.md 的对手类型(由 mlb-opponent-profiler 编写)
  • regression_index 信号(来自 mlb-regression-flagger),用于低买高卖检查和信息不对称评分
  • 伤病状态(RotoWire)
  • 如果是 7 月或之后:每位球员的 playoff_games 和 playoff_matchup_quality
  • 来自 @skills/adverse-selection-prior/ 的逆向选择输出(步骤 7)

生成的输出:

  • 10 个类别各自的 trade_cat_delta(原始值 + 压力加权值)
  • trade_value_delta_raw($)
  • slot_value_delta($)
  • trade_value_delta_pre_adj($)
  • prior_ev_probability(来自委派的技能)
  • recommended_adjustment(来自委派的技能)
  • adverse_selection_adjustment(= 1 − recommended_adjustment)
  • trade_value_delta_adjusted($)
  • delta_pct(trade_value_delta_adjusted / Σ$_OUT)
  • positional_flex_delta(±100)
  • playoff_impact(0-100,7 月及之后)
  • verdict(接受 / 还价 / 拒绝)及理由(包括来自逆向选择技能的 bayesian_rationale)
  • 还价方案:除非结论为 ACCEPT,否则始终明确指定(即使结论为 REJECT,也要附上我们本会提出的还价方案作为背景信息)
  • 写入 signals/YYYY-MM-DD-trade-<opponent>.md 的信号文件
  • 通过 mlb-decision-logger 记录决策日志

评论

支持 Markdown