NovaMarket
← 全部策略

YES/NO 套利

Polymarket事件预测事件市场较低风险

YES+NO 成本低于 1 时同买两腿,一对结算兑付 1,锁定无风险价差

战绩

收益
+2.4%
夏普
0.29
最大回撤
4.8%
管理规模
$0
创建时间
2026-07-12
使用人次
0
使用池子
0
结算天数
0

适用市况

事件预测对特定事件结果下注(如 BTC 年底价格)
  • 你对事件概率有独立判断、与市场定价有分歧时
  • 临近结算流动性变差,二元结果有归零风险
不确定行情会怎么走?看看市场中性策略 →

回测(确定性模拟器)

参数: size / min_edge

二元预测市场模拟(YES/NO,180 步后结算 YES)——非未来收益承诺。

核心代码

GitHub 源码
"""YES/NO 套利(YES/NO arbitrage)—— 两腿总价 < 1 的无风险价差。

思路:二元市场的 YES 与 NO 结算时必有一腿兑付 1、另一腿 0,故一对(1 YES + 1 NO)到期恰好价值 1。
当此刻 YES + NO 的买入成本 < 1 时,同时买入两腿即锁定 (1 - 成本) 的无风险价差,持有至结算兑付。
纸面回测按中间价成交,故 edge = 1 - (yes_mid + no_mid)(真实场馆应按 best_ask 计,见下)。

适用性:instrument="event"、venues=["POLYMARKET"]。仅做多(买 token),不涉及做空。
降级:feed 不提供配对腿(complement_token 为 None)时保持空仓。
"""
from __future__ import annotations

from ..base import StrategyBase
from ..context import StrategyContext
from ..registry import register


@register("YES/NO 套利")
class PmYesNoArb(StrategyBase):
    description = "YES+NO 两腿总价低于 1 时同时买入锁定无风险价差,结算兑付。"
    params = {"size": 20.0, "min_edge": 0.01}
    venues = ["POLYMARKET"]
    symbols: list = []
    instrument = "event"

    def __init__(self, size: float = 20.0, min_edge: float = 0.01) -> None:
        self.size = float(size)
        self.min_edge = float(min_edge)

    async def on_tick(self, ctx: StrategyContext) -> None:
        yes = ctx.conn_symbol()
        no = ctx.complement_token(yes)
        if no is None:
            return  # 非二元市场:不建仓
        ym = await ctx.price(yes)
        nm = await ctx.price(no)
        edge = 1.0 - (ym + nm)  # 一对 YES+NO 的买入成本相对结算价值 1 的价差
        band = self.size * 0.1
        if edge >= self.min_edge:
            await ctx.target(yes, self.size, band=band)  # 两腿等量买入锁定
            await ctx.target(no, self.size, band=band)

完整 SDK 与全部策略以 MIT 协议开源,可直接回测、paper 试跑或二次开发。

运行此策略的池子

暂无池子运行此策略——成为第一个发起者。