关于 prediction-market-strategy
prediction-market-strategy 是一项面向二元预测市场的策略与验证指南,适用于 Kalshi、Polymarket 等市场的交易者和研究者。内容涵盖 maker/taker 策略、费用调整后的边际筛选、仓位管理及回测验证。
主要功能
- 01比较多种市场策略及其局限
- 02按费用调整净边际筛选交易
- 03提供分数 Kelly 仓位计算
- 04说明风险敞口与滑点限制
- 05列出回测与结算验证方法
适用场景
- 01筛选费用后仍有边际优势的合约
- 02为交易仓位和账户敞口设定上限
- 03检查回测中的结算错误与数据泄漏
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ agiprolabs/ claude-trading-skills --skill prediction-market-strategy安装后在 Claude Code 中输入/prediction-market-strategy确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/backtesting-methodology.mdevidence-and-literature.mdsizing-and-edge-gates.mdstrategy-catalog.mdscripts/sizing.py详细介绍
预测市场策略
二元预测市场将合约价格设定为概率。本技能涵盖适用于所有平台和市场类型的策略、仓位规模和验证层。API 操作机制见 kalshi-api / polymarket-api;合约语义和结算见 kalshi-weather-markets / kalshi-crypto-index-markets。这就是适用于所有这些市场的策略/仓位规模/验证层。
核心论点
价格 = 隐含概率。 定价为 $0.18 的合约表示其结算为 YES 的概率为 18%。一组中的各个区间合计略高于 $1.00——超额赔率就是庄家利润(Kalshi 天气市场约为 5–8%)。
吃单者系统性亏损;挂单者系统性盈利。 在超过 30 万份 Kalshi 合约中,扣除费用前的平均回报约为 −20%,亏损主要集中在吃单者(使用市价单的用户)和买入小概率事件合约的人身上。挂单者(挂出未成交限价单的人)能获得正回报。在 Polymarket(超过 5.88 亿笔交易)中,排名前约 1% 的账户拿走约 76.5% 的利润,主要通过挂出限价单获利。这是最基础的结论。
热门—冷门偏差是持久存在的机制。 低价小概率合约系统性地定价过高:历史上,定价为 $0.05 的合约约有 2% 的概率胜出;对于买家而言,价格低于 $0.10 的合约会损失约 60% 的投注额。热门合约的定价合理或略低。可重复的做法是站在做市方一侧卖出定价过高的小概率尾部合约——在定价约为 $0.05–$0.20 的区间挂出 NO 买单,并分散到许多事件中,以承受罕见的命中。这是结构性/行为性优势,而非预测优势。
预测能力 ≠ 交易优势。 在决策时点,优秀的天气或事件预测与市场价格大多是重复信息。市场汇总信息的效率足够高,即使模型明显更优,扣除费用后净优势仍接近于零,除非它能发现系统性的错误定价(这属于行为因素,而非信息因素)。在交易清淡的市场中,官方标签机器学习是个例外——但它受成交率和容量限制,而非预测准确度限制。
策略目录
针对 Kalshi/Polymarket 天气和事件市场评估的策略。“真实有效”表示该策略在测试中经正确结算和扣费后仍然成立;其他策略会特别标出,避免你再次追逐它们。
| 策略 | 结论 | 机制 | 关键问题 |
|---|---|---|---|
| 热门—冷门偏差反向操作,做市方一侧 | ✅ 持久有效 | 在价格约为 $0.05–$0.20 的区间挂出 NO 买单;利用行为导致的尾部定价过高 | 小概率事件罕见命中;需向前测量成交率 |
| 仅买入区间 YES(由预测驱动) | ✅ 有效,对费用敏感 | 校准后的模型认为区间价格明显偏低时买入 YES | 需要通过净优势 > θ 门槛,而非看原始胜率 |
| 做市/提供流动性 | ⚠️ 结构上有利,但对基础设施要求高 | 双边报价,赚取价差和做市返佣 | 库存风险、不利选择、排队优先级 |
| 超额赔率/荷兰式套利 | ⚠️ 理论上可行,实践中收益有限 | 各区间合计 >$1.00;买入定价偏低的剩余部分 | 各腿必须同时成交;Kalshi 的成交是依次发生的 |
| 跨平台套利(Kalshi ↔ Polymarket) | ❌ 多数人无法参与 | 在两个平台上同时持有等价合约的仓位 | 转移时间/成本会抹去优势;地域限制 |
| 延迟/抢先利用新闻(加密货币/指数小时合约) | ❌ 高频交易游戏 | 在市场重新定价前,对公开信息源作出反应 | 要求低于 100 毫秒的延迟;需同址托管;不适合零售交易者 |
| 日内接近确定的合约重新定价 | ⚠️ 信息/延迟优势 | 市场对接近确定的合约重新定价缓慢;捕捉剩余机会 | 需要实时信息源和自动化 |
| 跟随高手 | ❌ 幸存者错觉 | 模仿表面上获胜的账户 | 公开数据中没有可靠信号;过去的赢家会回归均值 |
总结: 经过正确核算,只有两种策略仍然成立——做市方一侧反向操作行为导致的尾部偏差,以及通过 θ 门槛后由预测驱动的 YES 入场。其他策略要么需要高频交易级别的能力,要么对基础设施要求很高,要么会在正确结算和扣费后失去优势。
费用感知的仓位 sizing 与边缘门槛
所有筛选均基于扣除费用后的净优势。原始胜率、名义金额收益率和正确率百分比都不是筛选指标。
净优势公式
net_edge = p_model - ask - kalshi_fee(ask)
# Kalshi taker fee: ceil(0.07 * price * (1 - price) * 100) / 100 per contract
# Polymarket fee: 0 (no explicit taker fee; spread is the cost)
仅当 net_edge > θ 时才选择交易。
预期优势门槛(θ)
| 账户规模 | θ(Kalshi) | 原因 |
|---|---|---|
| < $2,000 | 15% | 小额账户;费用造成的拖累占比更高 |
| ≥ $2,000 | 20% | 标准门槛,涵盖费用和执行不确定性 |
| Polymarket | ~5% | 没有明确的 taker 费用;价差和 gas 是成本 |
限价单挂单
挂 maker 订单时,报价应比模型公允价值低 θ:
limit_price_cents = floor((p_model - θ) × 100)
这样可以确保,只有当市场至少朝有利于你的方向变动 θ 时,订单才会成交。
分数凯利仓位 sizing
f_star = edge / (1 - entry_price) # full Kelly fraction
stake = min(kelly_frac * f_star * bankroll, max_bet_fraction * bankroll)
contracts = stake / entry_price
# Defaults: kelly_frac=0.25 (quarter-Kelly), max_bet_fraction=0.015
对大多数交易而言,1.5% 的资金上限是实际起约束作用的限制。四分之一凯利足以积极复利,同时又足够温和,能够承受一连串相关的不利结果。
敞口上限(观察到的默认值)
| 上限 | 数值 |
|---|---|
| 单份合约的账户资金上限 | 账户资金的 1.5% |
| 单一城市/单一事件 | 账户资金的 5% |
| 总未平仓敞口 | 账户资金的 20–25% |
| 最大滑点占优势的比例 | 50% |
滑点也是筛选的一部分
沿着真实的 NO/YES 订单簿梯度逐档成交,直到达到完整仓位,以计算深度加权入场价。如果逐档成交使 net_edge 低于 θ,或滑点超过优势的 50%,就跳过这笔交易。逐档计算前,必须从订单簿梯度中排除虚假的一分钱档位(≤2¢ 的卖单价,这些价格不会在连续快照中持续存在,且没有成交记录佐证)。
Maker 与 taker
挂出限价单(maker)可以赚取价差,而不是支付价差,并避免(或减少)taker 费用。这也是盈利账户采用的执行方式。Maker 优势会叠加结构性的长尾反转收益。仅当限价单的成交概率相对于交易机会低到不可接受时,才应使用市价单(taker)。
所有仓位 sizing 函数都在 scripts/sizing.py 中。可直接运行以查看完整示例。
回测方法
首要规则:以平台自身的结果结算
绝不要根据第三方来源重新推导结算结果。应使用平台的 result 字段(Kalshi:result: "yes"/"no";Polymarket:结算交易)。任何仅与平台结算结果相关的推导真值,都可能导致约 10% 的结果翻转,并凭空制造出两位数的虚假优势。
方法核对清单
- 使用平台的
result进行结算——绝不自行计算真值 - 使用
close_time(或从 ticker 获取的结算日期),而非爬取日期 - 决策特征应截止于城市/事件自身的本地决策时间——避免 UTC 时间不匹配
- 入场价格应取自决策时的快照,而非已趋于收敛的临近收盘价格
- 按完整仓位沿真实订单簿梯度逐档计算;以最优买卖价深度为上限;对成交去重
- 仅使用扣除费用后的 PnL——绝不使用名义金额
- 仅使用时间留出验证或扩展窗口的滚动前推验证——不使用随机打乱的交叉验证
- 投入实盘资金前,先进行前向模拟交易:记录模型 p、决策时卖价和结果;并与回测的 Brier 分数/准确率进行比较
Phantom-Edge 名人堂
以下每个问题都曾产生看似合理的回测结果,但经仔细检查后都站不住脚。
| Bug | 症状 | 修复 |
|---|---|---|
| 结算数据源错误 | 重新推导真实结果后,约 10% 的结果发生反转 → 虚假的 +18% 反向投注优势 | 使用交易场所的 result |
| 区间边界差一位 | 将包含 2°F 的区间 {floor,cap} 误当作半开区间 1°F → +1640% 的虚假回测 | 仔细阅读合约规范 |
| 虚假的低价卖单 | 对 ≤2¢ 的伪造价位过度计入深度,夸大 23×(25 万 vs 约 9 千笔真实成交) | 仅统计在多个快照中持续存在且有成交记录佐证的深度 |
误读 strike_type | 根据代码推断大于/小于 → 44% 的影子交易方向错误 | 从 API 读取 strike_type — 切勿推断 |
| 混淆影子交易与实盘 | 重放混合影子和实盘持仓的日志 → 虚假的每份合约 $14K 盈利 | 只根据实盘成交追踪 PnL(PositionStore);切勿重放内存中的数据 |
| 先验平坦或未校准 | 预测中心配置错误 → 单日实盘亏损 $121.93 | 所有决策都必须基于经过校准并签名的先验 |
| 运行极值初始值过期 | 被污染的持久化 day_max 让每个低位区间看起来都已获胜 | 启动时重置/重建运行极值状态;切勿继承 |
| 时钟不匹配导致前视 | 使用 18:00Z 的订单簿快照成交,而特征数据截至 14:00 LST,导致非东部城市泄漏未来信息 | 在每个市场自己的本地决策时间进行决策和成交 |
前向纸面交易
在投入实盘资金前:以影子模式运行完整流程。记录模型的 p、决策时的卖价和实际结算结果。将所得 Brier 分数和准确率与回测数据进行比较。如果在 100 个以上样本中,差距持续超过 2–3 个 Brier 分数点,就说明存在数据泄漏或分布漂移,必须在实盘前查明原因。
为什么预测能力 ≠ 交易优势
良好的预测是交易优势的必要条件,但并非充分条件。
-
市场会汇总信息。 到了决策时,市场价格已经反映了 NWS 模型输出、近期实况,以及实力强劲的账户所获得的优势。你的预测必须可衡量地优于市场 — 而不只是准确。
-
Brier 分数不等于优势。 OOS Brier 分数为 0.07(优于气候基准)仍可能意味着净优势为零,前提是市场定价也为 0.07。
-
真正的优势来自行为。 对冷门选项的过高定价并非信息因素所致,而是行为因素所致(散户对低价合约过度自信)。无论你对这些区间的预测质量如何,只要在尾部充当流动性提供者,就能从中获利。
-
基于预测的 YES 入场只在边际情况下有效。 当你的校准模型认为某个区间的定价明显偏低(扣除费用后的优势 > θ)时,买入 YES 是有效的。但这只适用于少数决策点,而尾部市场深度不足也限制了成交率和容量。
实际启示:应出于预测本身的价值来构建和验证预测模型(它能改进 NO 报价目标,并在不利条件下限制敞口),但不要假设预测准确率会自动转化为交易收益,除非另有正确且计入费用的回测。
证据与文献
基础研究结论
-
Whelan,做市商与吃单者:Kalshi 预测市场的经济学(CEPR VoxEU;GWU/UCD 工作论文)。研究涵盖 30 多万份 Kalshi 合约。平均费用前收益 ≈ −20%,亏损主要集中在吃单者和冷门选项买家身上。做市商获得正收益。基础性结论:赢家提供流动性,输家吃掉流动性。
-
大规模 Polymarket 做市商—吃单者研究(5.88 亿多笔交易,SSRN)。排名前约 1% 的账户拿走约 76.5% 的利润,主要通过挂出限价单实现。该研究证实,做市优势可推广到不同交易场所。
-
Gupta,谁能在二元预测市场中获利?Kalshi 上的做市商—吃单者动态、行为偏差与情绪套利(SSRN)。该研究从微观结构和行为偏差角度分析谁能获胜以及原因。
最爱—冷门偏差
- 经典博彩市场文献(Thaler、Ziemba):在大多数博彩市场中,冷门选手的胜率低于其赔率所暗示的水平。
- Kalshi 特有情况:历史上,价格约为 $0.05 的合约胜率约为 2%;价格低于 $0.10 的合约会让买方损失约 60% 的本金。热门选项的定价公允至略低。
- 可交易的策略:在便宜的区间上挂 NO 侧做市买单,并进行分散投资。
内部验证(bracket-model skill)
- 对 Kalshi 天气市场进行包含手续费的轮换式交叉验证回测:做空冷门选项的 taker ROI 约为 +1.7–3.3%,maker ROI 约为 +7.9–9%。
- 定价约为 10% 的区间,实际命中率约为 3–7% → 每份合约毛收益约为 +6.7¢;maker 的收益表现会进一步提升。
证据不支持的结论
- 准确的天气或事件预测能在决策时点战胜市场(这与价格所反映的信息重复——见上文经验教训)。
- 零售用户可见的跨平台或平台内套利,扣除手续费、地域限制和资金锁定成本后仍能反复获利。
- 优势集中在预测最准确的地方(实际上,它反映的是市场流动性不足或零售用户占比较高)。
确定仓位规模前,请根据一手来源核实具体数据——数值会因样本窗口和交易平台而异。
文件
参考资料
references/strategy-catalog.md— 完整的策略评估结果,包括证据和注意事项references/sizing-and-edge-gates.md— 完整的手续费感知仓位规模规则和门槛推导references/backtesting-methodology.md— 按交易平台结果结算的规则、虚假优势案例集、方法检查清单references/evidence-and-literature.md— 一手来源:Whelan、Polymarket 588M、Gupta、最爱—冷门偏差幅度
脚本
scripts/sizing.py—kalshi_fee、net_edge、theta_for_account、limit_price_cents、kelly_contracts、slippage_ok— 纯标准库,无需联网即可运行