关于 variance-strategy-selector
variance-strategy-selector 是用于决策的技能,根据胜率、损失不对称性和待决事项数量,选择寻求、中性或降低方差的策略,并输出供下游优化器使用的乘数。
主要功能
- 01按胜率划分三种策略
- 02根据损失后果调整乘数
- 03按决策数量降低调整幅度
- 04校验范围与单调性
- 05输出结构化理由
适用场景
- 01为奇幻体育阵容选择风险倾向
- 02按胜率调整投资组合波动偏好
- 03为扑克下注策略设置方差倾向
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ lyndonkl/ claude --skill variance-strategy-selector安装后在 Claude Code 中输入/variance-strategy-selector确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
resources/methodology.mdtemplate.mdresources/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.30confidence_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 不对称性偏移,不进行名额抑制)
- 理由:只有一次机会,需要守住领先优势,一旦浪费就会酿成灾难。领跑的赛车手不会选择高风险的内侧路线;进行了对冲的看涨期权卖方不会在到期日解除对冲。消费者会大幅抑制方差。
防护规则
-
区间边界是硬性的,不能模糊处理。 不要在 0.40 和 0.60 阈值之间插值推算姿态标签。姿态是类别(seek/neutral/minimize);乘数则在各区间内连续变化。调用方依靠类别标签执行分支逻辑。
-
不对称性只会放大,绝不会反转。 灾难性下行会让热门方更保守,让弱势方更激进,但绝不会改变方向。如果计算出的乘数因不对称性调整而越过 1.0,则将其钳制在 1.0,并重新检查输入。
-
槽位阻尼作用于与 1.0 的差值,而非乘数本身。 实现方式:
final = 1.0 + (pre_dampening - 1.0) x min(1.0, 5 / slots)。在 10 个槽位下,1.30 的阻尼结果是 1.15,而不是 0.65。 -
概率为 0 和 1 时的边缘情况。 如果
win_probability = 0,姿态为 “seek”,乘数取最大值(不考虑不对称性时为 1.30,考虑后为 1.40);这类似于买彩票——方差是获得非零结果的唯一途径。如果win_probability = 1,姿态为 “minimize”,阻尼达到最大值(不考虑不对称性时为 0.80,考虑后为 0.70);任何方差都只会带来下行风险。请在理由中明确记录这两种情况。 -
乘数是推力,而非指令。 它会影响下游优化器的倾向,但不会取代优化器。1.30 的乘数不代表“只选择高风险高回报的选项”,而是表示“在调用方运行的任意优化过程中,将高方差选项的评分相对于稳定选项提高 30%”。
-
下行不对称性不等同于获胜概率。 赛季第 1 周的弱势方获胜概率低,但不对称性也低(还有很多机会可以扭转局面)。同一弱势方到了第 20 周,不对称性就会很高(这是最后一次机会)。两项输入都要询问;不要从其中一项推断另一项。
-
槽位阻尼以独立性假设为基础。 当各槽位的结果相互独立时,中心极限定理带来的分散化才有效。如果槽位之间高度相关(例如,球队相同的所有投手,或投资组合中的所有科技股),阻尼效果会较弱。如果已知调用方所在领域存在相关性,请在理由中指出这一假设。
-
设计上不依赖特定领域。 此技能不知道决策涉及的是梦幻阵容、投资组合、扑克牌局还是比赛。它只输出一个标量,由调用方赋予领域特定的含义。不要在理由中硬编码领域术语,而应使用“高方差选项”和“稳定选项”等中性表述。
快速参考
三档规则:
| 获胜概率 | 策略 | 基础乘数范围 |
|---|---|---|
< 0.40 | seek | 1.15 - 1.30 |
0.40 - 0.60 | neutral | 1.00 |
> 0.60 | minimize | 0.80 - 0.90 |
不对称性调整(当 downside_asymmetry > 0.8 时应用):
| 策略 | 调整值 |
|---|---|
| seek | +0.10 |
| neutral | 0 |
| 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”原则)。