mcpField
V
variance-strategy-selector

variance-strategy-selector

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

关于 variance-strategy-selector

variance-strategy-selector 是用于决策的技能,根据胜率、损失不对称性和待决事项数量,选择寻求、中性或降低方差的策略,并输出供下游优化器使用的乘数。

主要功能

  1. 01按胜率划分三种策略
  2. 02根据损失后果调整乘数
  3. 03按决策数量降低调整幅度
  4. 04校验范围与单调性
  5. 05输出结构化理由

适用场景

  1. 01为奇幻体育阵容选择风险倾向
  2. 02按胜率调整投资组合波动偏好
  3. 03为扑克下注策略设置方差倾向

安装

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

$npx skills add https://github.com/lyndonkl/claude --skill variance-strategy-selector

安装后在 Claude Code 中输入/variance-strategy-selector确认已加载。

包含的文件

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

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

详细介绍

方差策略选择器

目录

示例

场景:一位奇幻体育经理本周还有 3 个阵容位置需要决定,目前落后对手 15%。如果本周落败,他们将失去进入季后赛的机会。

输入:

  • current_win_probability = 0.32(明显处于劣势)
  • downside_asymmetry = 0.90(必须获胜,落败将造成灾难性后果)
  • slots_to_decide = 3

区间分类:win_probability < 0.40 -> 策略 = "seek",基础乘数范围为 1.15-1.30。

不对称性放大:downside_asymmetry > 0.8 -> 在 seek 策略下,乘数进一步远离 1.0,增加 +0.10。基础值 1.20 + 0.10 = 1.30。

位置数量衰减:slots_to_decide = 3,低于 5 个位置的阈值 -> 不进行衰减。

输出:

  • variance_posture:"seek"
  • variance_multiplier:1.30
  • confidence_band:"高方差(积极寻求)"
  • rationale:"调整前的获胜概率为 0.32(明显处于劣势),且下行后果具有灾难性(必须获胜,不对称性为 0.90)。最大化方差可提高获得右尾结果的概率。下游使用方应将高方差选项(高波动球员、集中持仓、长赔率投注)的权重提高 30%。"

使用方应用(下游技能应用此乘数):

adjusted_player_score = base_score x (1 + (boom_bust_score - 0.5) x (variance_multiplier - 1))

高波动球员的爆发-低迷评分为 0.8,乘以 1.30 后,相较于表现稳定的球员将获得 +9% 的加成。

工作流

复制此清单并跟踪进度:

Variance Strategy Selection Progress:
- [ ] Step 1: Collect inputs (win_probability, downside_asymmetry, slots_to_decide)
- [ ] Step 2: Classify win-probability band (seek / neutral / minimize)
- [ ] Step 3: Apply downside-asymmetry amplification
- [ ] Step 4: Apply slot-count dampening
- [ ] Step 5: Clamp multiplier to valid range and validate monotonicity
- [ ] Step 6: Emit structured output with rationale

步骤 1:收集输入

  • current_win_probability 是一个介于 [0, 1] 的浮点数。拒绝超出此范围的值。
  • downside_asymmetry 是一个介于 [0, 1] 的浮点数,其中 1.0 = 失败后果灾难性(季后赛必须取胜、生死战、资金耗尽)。
  • slots_to_decide 是一个非负整数,表示此策略涵盖多少个相互独立的决策(阵容位置、投资组合持仓、下注序列长度)。

输入验证规则请参阅 resources/template.md。

步骤 2:划分胜率区间

应用三段规则:

  • win_probability < 0.40 -> 策略 = "seek",基础乘数为 1.15-1.30
  • 0.40 <= win_probability <= 0.60 -> 策略 = "neutral",基础乘数为 1.00
  • win_probability > 0.60 -> 策略 = "minimize",基础乘数为 0.80-0.90

在 "seek" 区间内,根据胜率低于 0.40 的幅度选择基础乘数:base = 1.15 + (0.40 - win_probability) x 0.375,上限为 1.30。在 "minimize" 区间内,反向计算:base = 0.90 - (win_probability - 0.60) x 0.25,下限为 0.80。

关于其背后的右尾 / 左尾逻辑,请参阅 resources/methodology.md。

步骤 3:应用下行不对称性放大

如果失败后果具有灾难性,弱势方必须更积极地放手一搏,而优势方必须更谨慎地保护优势。此调整以 1.0 为中心对称变化。

  • 如果 downside_asymmetry > 0.8 且策略 = "seek":乘数上调 +0.10(进一步高于 1.0)
  • 如果 downside_asymmetry > 0.8 且策略 = "minimize":乘数下调 -0.10(进一步低于 1.0)
  • 如果 downside_asymmetry > 0.8 且策略 = "neutral":不调整(按定义,中性策略保持中性)
  • 如果 downside_asymmetry <= 0.8:不调整

步骤 4:应用决策数量阻尼

当存在许多相互独立的决策时,中心极限定理会自行分散方差。在多个决策位置上大幅推动乘数是多余的。

  • 如果 slots_to_decide > 5:将偏离 1.0 的幅度乘以 5 / slots_to_decide 进行阻尼(下限为 0.5)。例如,10 个决策位置会使偏离幅度减半。
  • 如果 slots_to_decide <= 5:不进行阻尼。

数学原理请参阅 resources/methodology.md。

步骤 5:限制范围并验证单调性

  • 将最终乘数限制在 [0.70, 1.40] 范围内。超出此范围的值表示输入或计算有误。
  • 确认单调性:随着 win_probability 降低,乘数必须单调不减。随着 downside_asymmetry 增大,|multiplier - 1.0| 必须单调不减。

步骤 6:输出结构化结果

返回以下四个必需字段:

  • variance_posture -- "seek" | "neutral" | "minimize"
  • variance_multiplier -- [0.70, 1.40] 范围内的最终数值
  • confidence_band -- 简短、便于理解的描述(例如:"high-variance (seek aggressively)"、"low-variance (protect the lead)")
  • rationale -- 用 2-3 句话说明胜率区间、不对称性标记、决策数量的影响,以及使用者应如何解读该乘数

使用 resources/evaluators/rubric_variance_strategy_selector.json 进行验证。最低标准:平均得分达到 3.5 或以上。

常见模式

模式 1:实力悬殊的弱势方,必须取胜(梦幻体育)

  • 输入:win_prob ~0.30,asymmetry ~0.90,slots 1-3
  • 输出:姿态 "seek",乘数 ~1.30
  • 理由:放手一搏。优先选择高三振率 / 高本垒打率、表现大起大落的击球手,而不是击球率高、擅长安打的击球手;优先选择有上限但表现不稳定的先发投手,而不是稳定的 #4 先发投手。消费者技能(例如 mlb-lineup-optimizer)会将大起大落权重乘以 1.30。

模式 2:实力悬殊的优势方,大型投资组合 / 多个名额

  • 输入:win_prob ~0.75,asymmetry ~0.50,slots ~12(完整阵容 / 多元化投资组合)
  • 输出:姿态 "minimize",乘数 ~0.92(经名额抑制后,基数为 0.85)
  • 理由:守住领先优势,但不要过度设计——有 12 个名额时,投资组合已经通过中心极限定理实现了多元化。只需小幅调低方差旋钮。消费者会将集中度 / 大起大落权重降低 8%。

模式 3:势均力敌的对局(扑克中等筹码量)

  • 输入:win_prob ~0.50,asymmetry ~0.40,slots ~5(接下来的 5 手牌)
  • 输出:姿态 "neutral",乘数 1.00
  • 理由:打法接近 GTO。不向任何一方倾斜方差。消费者不调整下注额。

模式 4:略占优势,只有一个决定性选择(赛车 / 期权到期)

  • 输入:win_prob ~0.65,asymmetry ~0.85,slots 1
  • 输出:姿态 "minimize",乘数 ~0.75(基数 0.85 - 0.10 不对称性偏移,不进行名额抑制)
  • 理由:只有一次机会,需要守住领先优势,一旦浪费就会酿成灾难。领跑的赛车手不会选择高风险的内侧路线;进行了对冲的看涨期权卖方不会在到期日解除对冲。消费者会大幅抑制方差。

防护规则

  1. 区间边界是硬性的,不能模糊处理。 不要在 0.40 和 0.60 阈值之间插值推算姿态标签。姿态是类别(seek/neutral/minimize);乘数则在各区间内连续变化。调用方依靠类别标签执行分支逻辑。

  2. 不对称性只会放大,绝不会反转。 灾难性下行会让热门方更保守,让弱势方更激进,但绝不会改变方向。如果计算出的乘数因不对称性调整而越过 1.0,则将其钳制在 1.0,并重新检查输入。

  3. 槽位阻尼作用于与 1.0 的差值,而非乘数本身。 实现方式:final = 1.0 + (pre_dampening - 1.0) x min(1.0, 5 / slots)。在 10 个槽位下,1.30 的阻尼结果是 1.15,而不是 0.65。

  4. 概率为 0 和 1 时的边缘情况。 如果 win_probability = 0,姿态为 “seek”,乘数取最大值(不考虑不对称性时为 1.30,考虑后为 1.40);这类似于买彩票——方差是获得非零结果的唯一途径。如果 win_probability = 1,姿态为 “minimize”,阻尼达到最大值(不考虑不对称性时为 0.80,考虑后为 0.70);任何方差都只会带来下行风险。请在理由中明确记录这两种情况。

  5. 乘数是推力,而非指令。 它会影响下游优化器的倾向,但不会取代优化器。1.30 的乘数不代表“只选择高风险高回报的选项”,而是表示“在调用方运行的任意优化过程中,将高方差选项的评分相对于稳定选项提高 30%”。

  6. 下行不对称性不等同于获胜概率。 赛季第 1 周的弱势方获胜概率低,但不对称性也低(还有很多机会可以扭转局面)。同一弱势方到了第 20 周,不对称性就会很高(这是最后一次机会)。两项输入都要询问;不要从其中一项推断另一项。

  7. 槽位阻尼以独立性假设为基础。 当各槽位的结果相互独立时,中心极限定理带来的分散化才有效。如果槽位之间高度相关(例如,球队相同的所有投手,或投资组合中的所有科技股),阻尼效果会较弱。如果已知调用方所在领域存在相关性,请在理由中指出这一假设。

  8. 设计上不依赖特定领域。 此技能不知道决策涉及的是梦幻阵容、投资组合、扑克牌局还是比赛。它只输出一个标量,由调用方赋予领域特定的含义。不要在理由中硬编码领域术语,而应使用“高方差选项”和“稳定选项”等中性表述。

快速参考

三档规则:

获胜概率策略基础乘数范围
< 0.40seek1.15 - 1.30
0.40 - 0.60neutral1.00
> 0.60minimize0.80 - 0.90

不对称性调整(当 downside_asymmetry > 0.8 时应用):

策略调整值
seek+0.10
neutral0
minimize-0.10

槽位抑制:

if slots_to_decide > 5:
    factor = max(0.5, 5 / slots_to_decide)
    multiplier = 1.0 + (multiplier - 1.0) x factor

完整计算概要:

def variance_strategy(p_win, asym, slots):
    # 1. Band
    if p_win < 0.40:
        posture = "seek"
        base = 1.15 + (0.40 - p_win) * 0.375
        base = min(base, 1.30)
    elif p_win > 0.60:
        posture = "minimize"
        base = 0.90 - (p_win - 0.60) * 0.25
        base = max(base, 0.80)
    else:
        posture = "neutral"
        base = 1.00

    # 2. Asymmetry
    if asym > 0.8 and posture == "seek":
        base += 0.10
    elif asym > 0.8 and posture == "minimize":
        base -= 0.10

    # 3. Slot dampening
    if slots > 5:
        factor = max(0.5, 5 / slots)
        base = 1.0 + (base - 1.0) * factor

    # 4. Clamp
    multiplier = max(0.70, min(1.40, base))
    return posture, multiplier

关键资源:

  • resources/template.md:输入验证清单、涵盖 4 种情境的示例(明显劣势但必须获胜、轻微劣势、势均力敌、明显优势)、输出格式
  • resources/methodology.md:凯利准则参考、方差求和计算、右尾/左尾概率推理、中心极限定理抑制、领域类比(梦幻体育、扑克、赛马、投资组合)
  • resources/evaluators/rubric_variance_strategy_selector.json:包含 8 项标准的质量评分准则,涵盖分档准确性、不对称性调整、槽位抑制、乘数范围、理由清晰度、边界情况、单调性和引用

所需输入:

  • current_win_probability(浮点数,0-1):作出方差决策前的获胜概率点估计
  • downside_asymmetry(浮点数,0-1):1.0 = 失败后果是灾难性的(淘汰、资金耗尽);0.5 = 常规;0.0 = 不会产生不利后果
  • slots_to_decide(整数,>= 0):此策略将应用于的独立决策数量

生成的输出:

  • variance_posture(字符串):"seek" | "neutral" | "minimize"
  • variance_multiplier(浮点数,0.70-1.40):供使用方乘以爆发/萎靡、波动性或集中度得分的标量
  • confidence_band(字符串):简短、易于理解的策略描述
  • rationale(字符串):2-3 句话,说明所处档位、不对称性、槽位数及其含义

引用方(使用方):

  • mlb-lineup-optimizer(在每日质量 × 杠杆 × 方差乘数的基础上进行梦幻棒球阵容选择)
  • 在高贝塔与低贝塔仓位之间分配权重的投资组合配置技能
  • 选择下注方差的扑克资金管理技能
  • 任何决定方差调节力度的 Agent

原则参考:yahoo-mlb/context/frameworks/game-theory-principles.md 中的博弈论原则 #6(作为劣势方寻求方差——“cope”原则)。

评论

支持 Markdown