市场化定价的竞猜体验、中文本地化事件、CNY/USDT 入金、不碰加密钱包、随时平仓。
三层流动性 + 净敞口对冲,保持风险中性,靠价差和手续费获得稳定、可预测的收入,不赌结果。
不重建账户/余额,经单一钱包(seamless)接入。主平台是身份与余额的唯一真相源。
行情、撮合、AMM、持仓、对冲、结算等全部交易与风控逻辑。
已在宿主平台、有余额、习惯娱乐化玩法。
关注世界杯、大选、加密,想为判断下注。
知道 Polymarket,受语言/钱包/合规所限。
| 指标 | 口径定义(数据侧统一) |
|---|---|
| GMV | 有效投注额 = 实际成交金额(含盘口与限价已成交部分;不含挂单冻结、不含撤单) |
| 内部撮合率 | 玩家互撮成交量 ÷ 总成交量(分子=第①层订单簿+互补Mint;不含 AMM 成交;AMM 自平衡率单独统计) |
| 裸赔额 | 未对冲敞口持有到结算且结果反向造成的实际亏损(目标趋近 0) |
| 留存/复投 | 次日/7日留存;复投=结算后 7 天内再次下注的用户占比 |
| 模式 | 代表 | 价格怎么来 | 优势 | 劣势 |
|---|---|---|---|---|
| 纯订单簿 CLOB | Polymarket、Kalshi | 真实买卖盘博弈 | 资本效率高、零算法滑点 | 冷启动难、依赖做市商 |
| 纯 AMM | 早期 Augur/Gnosis | 流动性池算法(LMSR等) | 消除冷启动、永远有流动性 | 价格发现弱、LP 有损耗(LVR) |
| 池式对赌 Parimutuel | 赛马彩池 | 赛后按池子瓜分 | 简单、资本效率高 | 下注时不知赔付,体验差 |
| 混合(主流趋势) | ubetmarket | 订单簿+AMM 互补 | 兼顾冷启动与效率 | 工程复杂度较高 |
真实订单簿,几十万用户 + 专业做市商,价格自给自足、贴近真值。
庄家拍赔率,不透明,玩家无法看到「市场共识」。
自身流动性少,靠 AMM 兜底 + 锚定 Polymarket 价。价格跟随真值,不自己造价。
纯撮合,不下场、不担结果风险,旱涝保收抽手续费。
自己开盘做庄,承担全部结果风险,靠赔率边际盈利。
AMM 被迫下场扛敞口,但通过对冲把风险甩回 Polymarket,回到风险中性。
全球加密用户、套利者,自然流量为主,对中文用户不友好。
美国合规散户,受地域限制,非中文市场。
接入宿主游戏平台,复用存量用户与余额,获客成本低。
入金虽支持多币种,但底层以 USDC 结算、需加密钱包与跨链操作,对普通用户门槛高。
美元银行入金,仅限美国。
CNY 入金→兑 USDT 计价,复用宿主钱包;内部 USDT 记账、对冲时兑成 USDC,用户全程无感。
已支持中文,但仍是专业交易终端风格、需加密钱包、底层 USDC 结算,门槛高。
本地化好,但不透明、形象负面。
娱乐化体验 + 概率可视化 + 法币入金 + 接入游戏平台,打开即玩、透明易懂。
maker 免费(+返佣),taker 0–1.8%,赢钱/结算不收费。
赔率内嵌高额抽水,常 5%+。
价差 2–4%(含对冲成本+汇率垫+本地化溢价),分品类配置。
| 节点 | 触发 | 系统行为 | 用户反馈 / 状态 |
|---|---|---|---|
| 浏览大厅 | 打开 App | 拉取二元筛选后的市场列表,按 24h 成交量排热门榜 | 看到概率、走势线、成交量、倒计时 |
| 查看详情 | 点卡片 | 加载锚价、可成交深度、中文结算规则;冷启动借 PM 走势 | 大号概率 + 折线走势 + 订单簿 + 规则 |
| 下注 | 选 Yes/No · 盘口或限价 | 盘口:填金额,实时算份额/均价(含滑点)/taker费;限价:填价格+份额。校验余额、最小量、tick、滑点 | 明细实时刷新;确认下单 |
| 成交 | 确认买入 | 幂等冻结/扣款 → 盘口单:①订单簿撮合(价格优先·时间优先)→②AMM 兜底即时成交;限价单:可成部分立即撮合、剩余挂入订单簿(可撤单) | 盘口→秒成交跳持仓中;限价→「已挂单」跳委托中(待成交/部分成交) |
| 持仓 | 进持仓页 | 用标记价算浮动盈亏,区分持仓中/等待结算/已结算 | 逐仓盈亏、汇总浮盈 |
| 平仓 | 点平仓 | 撮合对手或 AMM 即时回购 → 加款 → 减仓 → 敞口重算 | 支持部分平仓;到账提示 |
| 结算 | 结果确定 | 轮询 UMA/Gamma;赢方派彩(份额×1 USDT),输方归零;对冲赎回+对账 | 「等待结算」→「已结算」+ 战绩 |
触发退款补偿(幂等键回滚),保证不吞钱。余额不足直接拦截、不进撮合。
盘口单:订单簿吃一部分、AMM 补足剩余;限价单:已成部分进持仓、剩余留在「委托中」继续挂(状态=部分成交)。
限价未成交挂在内部订单簿(增厚深度);玩家可随时撤单→撤剩余份额并解冻资金(幂等,重复撤只生效一次);闭市时未成交挂单自动全部撤销并解冻。
成交均价超滑点上限则拒单重报;锚价缺失/异常时 AMM 停报,仅允许玩家互撮。
走兜底阶梯:拉宽价差→限额→暂停新单(仅平仓)→熔断。玩家侧不受影响。
UMA 争议窗口内不派彩,UI 明确「等待结算」,不承诺即时到账,避免误解。
作废 → 全额退款(非赢输);结果争议进人工复核队列,冻结派彩待确认。
收紧下单额、强制对冲已有敞口;到 end_date 停止新单与撮合,仅允许查看。
玩家计价单一 USDT;CNY 仅在入金时按当时汇率兑成 USDT(宿主通道),结算派彩均为 USDT。平台承担的 CNY↔USDT 波动集中在入金环节与司库兑换,由费率汇率垫覆盖。
展示的买卖价即可成交价(含价差);K线用中间价不含价差,防止「看到的和成交的不一致」。
每个市场是一个 Yes/No 问题,Yes 价 + No 价 ≈ 1(中间价口径;玩家实际成交价含价差,两侧合计略高于 1)。v1 只做单市场事件的纯二元,多选/标量排后续。
结算时赢方每份赔付 1 USDT、输方归零。买入价 = 概率(0~1),买一份只花概率价(如 0.62),那个「1」是赢了才兑付的金额,不是购买门槛。
0.62 = 市场认为 62% 会发生。平台不自己造价,直接以 Polymarket 实时价为锚,它是几万真实玩家博弈出的概率共识。
| Event / Market | 事件含一或多个二元市场;单市场事件=纯二元 |
| 互补 Mint | Yes 买家 + No 买家凑齐 1 USDT 抵押,铸造一对份额 |
| 净敞口 I | 单市场 玩家净买 YES − 玩家净买 NO(含吃 AMM 的量)。I>0 表示玩家整体押 YES、平台被迫承担 NO 侧风险,需在 Polymarket 买 YES 对冲 |
| 库存偏斜 | AMM 按当前库存倾斜报价,实现自平衡 |
| 自持阈值 R | 平台允许不对冲、自行承担的净敞口上限 |
| 对冲 Hedge | 庄家钱包在 Polymarket 跟买玩家净押方向(I>0 买 YES),把承担的反面风险转移出去 |
| 锚价 | Polymarket 实时中间价,AMM 定价基准 |
两个玩家各按概率价出钱凑齐 1 USDT,平台零成本零风险纯赚价差。
只有买 Yes 没人买 No,平台 AMM 垫上缺的钱、自留 No 份额(=库存=敞口),随后对冲。
每对份额锁 1 USDT 抵押,结算时正好赔付赢方,总抵押=总YES=总NO。
玩家间 YES/NO 直接撮合或互补 Mint(YES 买家 + NO 买家凑齐 1 USDT 抵押铸造份额)。平台零敞口、零成本,纯赚价差,永远最优先。
撮合不掉时平台按需报价成交,玩家秒成交。库存偏斜自平衡,主动引导玩家回平敞口。
只用庄家钱包在 Polymarket 下单(USDC),批量按净额对冲。因有 AMM 自平衡,对冲频率更低、成本更省。
| 只用 | 硬伤 |
|---|---|
| 只用订单簿 | 冷启动没人挂单 → 空盘、下不了单,新市场永远起不来 |
| 只用 AMM | 平台对每一单都扛敞口、自赌结果,风险全压自己身上 |
| 只用对冲 | 每一单都去 Polymarket 付 taker 费 + 滑点,成本高、还慢 |
AMM 兜底保证任何时候都能成交,解决冷启动;玩家体验顺畅。
①零成本 → ②自平衡几乎零成本 → ③才付对冲费。整体对冲支出最小化。
净敞口最终对冲出去,平台不自赌结果,利润可预测。
用户越多,第①层撮合率越高,AMM 与对冲占比持续下降,单位成本随规模递减。
| 符号 | 含义 / 作用 |
|---|---|
| P_ref | Polymarket 实时中间价(锚,保证不偏离真值) |
| s | 基础价差(毛利,盖对冲成本,按品类配) |
| k·(I/b) | 库存偏斜(自平衡核心:偏哪边报贵那边) |
| λ·(Δ/b) | 规模滑点(单量越大越不利,防砸盘) |
| 参数 | 含义 | 例中取值 / 作用 |
|---|---|---|
| I | 净敞口 = Σ玩家净买YES − Σ玩家净买NO,即玩家整体押注的方向与数量(平台承担其反面风险) | 偏正=玩家押YES多、平台持NO风险 |
| k | 偏斜系数:库存对报价的影响强度,越大则同样库存把价格推得越远 | 0.05 |
| b | 深度参数:把库存「归一化」的尺度,b 越大表示市场越深、同样库存引起的偏斜越小 | 1000 |
核心准则:同时保证①内部平比对冲省钱②套利者无利可图。
软刹车之外的硬刹车,触顶停止单边吃单。
报价夹在 [0.02,0.98];锚价缺失/异常则停报。
| 情况 | 决策 |
|---|---|
| 临近封盘 / 撞 I_max | 强制对冲优先(封盘前 R→0 清空,无论敞口大小) |
| 敞口在 R 内(非强制场景) | 不对冲(自持) |
| 超 R 内部平更便宜 | AMM 偏斜内部消化 |
| 超 R 内部平不划算 | 对冲 |
| 对冲不掉 | 兜底降级 |
R 是「平台允许不对冲、自己扛着的净敞口上限」。核心逻辑:只要这部分敞口自己消化的成本(偏斜折价)还低于对冲它的成本,且预期还能赚价差,就先不对冲、留着自平衡——因为对冲要付 taker 费+滑点,而内部平几乎零成本。R 是「自持省钱」与「裸扛风险」之间的平衡点。
| R 取决于 | 怎么影响 |
|---|---|
| 庄家钱包风险预算 | 本金/风险容忍度越大 → R 越大 |
| 该市场波动性 | 越易波动 → R 越小(裸扛风险高,早点对冲) |
| 距结算时间 | 越临近封盘 → R 收紧趋近 0(不留敞口进结算) |
| 对冲成本 vs 偏斜折价 | 对冲越贵、内部平越省 → 可适当放大 R |
| 组合敞口 | 多市场总敞口也要控,单市场 R 服从总盘子 |
撮合不到对手 → AMM 按需报价成交,秒拿货。这是 AMM 存在的核心目的。
把 AMM 报价公式反推成「各价位能吃多少量」,渲染成多档订单簿。
直接复用 PM 的真实历史与热度,首页不冷清。
订单簿里的每一档,都是AMM 按偏斜公式算出的、真实可成交的量,不是假挂单:
| 多档展开 | 以 AMM 中间价为中心,按价格步长(tick)向两侧逐档算出可成交量,形成卖盘/买盘多档 |
| 量随价递减 | 越偏离中间价、单档可成交量越小(受偏斜+滑点约束),呈自然的「参差」形态 |
| 深度上限 | 每档铺的量 ≤ 该价位在 Polymarket 真能对冲掉的量,保证不放空头支票 |
| 动态刷新 | 锚价/库存变化 → 各档实时重算,像真实盘口一样跳动 |
| K线/走势 | 冷启动直接借 Polymarket 历史价格曲线,有了自己成交量后切换为自有数据 |
| 成交量/热度 | 用 Polymarket 真实成交量做热门榜排序与「🔥热度」标识,首页铺满活跃市场 |
| 最近成交 | 展示真实发生的成交(含 AMM 成交),无成交时留空而非伪造 |
| 持仓人数等 | 仅展示真实可统计的数据,不杜撰 |
盘面不空之外还要有人:① 宿主导流位——游戏平台首页/活动位挂热点市场入口(世界杯、大选),转化成本最低;② 首单活动——新客首单立减/加赠(成本记营销费用,不碰赔率与价格);③ 热点运营——围绕大事件做专题页与推送,事件驱动拉活;④ 体验金/空投类活动须先过合规评估(涉赠送投注额的定性),Phase 1 默认不做。
| 价 | 来源 | 用途 | 含价差 |
|---|---|---|---|
| 锚价(指数角色) | Polymarket 实时中间价 | AMM 定价基准、防盘面漂 | 否 |
| 当前买价 | 订单簿最优卖 / AMM 卖报价 取优(同价时玩家挂单优先,见业务逻辑·三层) | 玩家买入成交 | 含 |
| 当前卖价 | 订单簿最优买 / AMM 买报价 取优 | 玩家卖出成交 | 含 |
| 标记价 | AMM 中间价(≈锚价) | 算玩家浮动盈亏(防单笔成交带偏) | 否 |
| K线 / 走势 | 冷启动用 Polymarket,有量后用自己成交中间价 | 概率走势展示 | 否 |
嵌在买卖报价里(买贵卖便宜),所有成交都收,是主要收入。
只收吃单方:市价单/吃掉挂单的一方收 0.5%;挂限价单成交的一方(maker)免费——刺激挂单、增厚内部深度、提高撮合率。买入与平仓同规则。
挂单方不收费,部分品类还返 25–50%。不急的对冲尽量挂 maker。
地缘政治 0%、体育 0.75%、政治/财经/科技 1.0%、加密 1.8%。50% 概率处最高、向两端递减。
存提与结算/赎回不收费;Polygon gas ≈ $0.005 可忽略。费在成交那刻嵌入资产交换扣除。
| 品类 | PM taker 峰值 | 建议价差 | 吃单总成本* | 说明 |
|---|---|---|---|---|
| 地缘政治 | 0% | 1.5% | ≈2.0% | 对冲最便宜,价差可低、更有竞争力 |
| 体育 | 0.75% | 2.0–2.5% | ≈2.5–3.0% | 主力品类,深度好、对冲顺 |
| 政治/财经/科技 | 1.0% | 2.5–3.0% | ≈3.0–3.5% | — |
| 加密 | 1.8% | 3.5–4.0% | ≈4.0–4.5% | 对冲最贵 + 波动套利风险,价差最高、谨慎上架 |
玩家买贵卖便宜,所有单都赚,约投注额 1.5–4%(分品类,见分品类价差页)。
玩家互撮赚价差且无对冲成本,撮合率越高越赚。
挂单方(maker)免手续费、吃单方(taker)才收——刺激玩家多挂限价单、增厚内部订单簿深度,撮合率随之上升;同时吃单方贡献稳定手续费收入。
偏斜把敞口内部平掉,省 taker + 滑点。
| 过手量 GMV | 利润=量×(价差+taker费),规模根本 |
| 撮合率+自平衡率 | 越高越多纯赚、越少对冲成本 |
| 价差−对冲成本 | 单位经济,每单赚多少 |
| taker 手续费 | maker 免费引导挂单 → 深度↑撮合率↑ |
| 内部撮合率 | 对冲占比 | 对冲成本 | 毛利* | 净利率 |
|---|---|---|---|---|
| 40% | 40% | −420 | 2,330 | 2.33% |
| 60% | 20% | −210 | 2,540 | 2.54% |
| 80% | 10% | −105 | 2,645 | 2.65% |
| 100% | 0% | 0 | 2,750 | 2.75% |
| 价差 \ 对冲成本 | 0.55% | 1.05% | 1.55% |
|---|---|---|---|
| 2.0% | 2.14 | 2.04 | 1.94 |
| 2.5% | 2.64 | 2.54 | 2.44 |
| 3.0% | 3.14 | 3.04 | 2.94 |
| 亏损情形 | 怎么发生 | 影响 | 防线 |
|---|---|---|---|
| 裸扛敞口到结算 | 持仓未及时对冲、结果与库存反向,赔付 > 收到的钱 | 最大、可巨亏 | 临近封盘强制清敞口、I_max 上限、不裸扛进结算 |
| 对冲失败/对冲不掉 | Polymarket 深度不足、流动性枯竭,敞口甩不出去 | 高 | 只上可对冲市场、兜底降级、薄盘少铺 |
| 对冲通道中断 | Polymarket 封庄家钱包 / ToS 变更 / API 限制,对冲能力瞬间归零 | 致命(模式停摆) | 多钱包分散、合规使用 API、预案:通道断则全场仅平仓+暂停新单、Phase 2 评估备选对冲场所 |
| 延迟套利被狙击 | 锚价更新慢,套利者用旧价吃单 | 持续小漏 | websocket 实时锚价、波动拉宽价差、单笔限额(详见下页玩家侧风控) |
| 价差未盖成本 | 价差设低于对冲成本(taker+滑点+兑换+汇率) | 每单亏 | 分品类配置、随 PM 调价回测、低概率加密谨慎 |
| 裸扛窗口波动 | ②③层间隔内(几秒~几十秒)价格剧烈跳动 | 偶发成本 | 短批处理间隔、波动期拉宽价差/暂停 |
| 汇率反向 | CNY↔USDT 在持仓期间大幅波动 | 折算亏损 | 费率汇率垫、Phase 3 单独对冲汇率 |
| 偿付挤兑 | 派彩准备金被挪用/不足,无法兑付赢家 | 致命 | 玩家资金隔离、准备金独立、偿付水位监控 |
| 滥用向量 | 怎么发生 | 危害 | 对策 |
|---|---|---|---|
| 延迟套利 | 用比我们更快的 Polymarket 行情,在锚价更新间隙吃 AMM 旧价 | 持续小额失血(LVR) | websocket 实时锚价、波动期自动拉宽价差、单笔/单市场限额、异常盈利账户标记 |
| 自成交 / 对敲 | 同人多账户互为对手挂单吃单,制造假量或转移资金 | 刷量、洗钱风险、误导撮合率指标 | 同账户禁止自成交(撮合层拦截);关联账户识别(设备/IP/行为);对敲模式检测 |
| maker 空挂占位 | 大量挂远价单占深度、随时撤,制造假深度(幌骗) | 深度虚胖、误导他人 | 撤单率/挂撤频率监控、高频挂撤限频、极端者限权 |
| 多账户绕限额 | 开多号绕单账户限额,集中吃某方向 | 单市场敞口被恶意推高 | 关联识别 + 市场级总限额(与 I_max 联动)、KYC 依托宿主平台 |
| 机器人高频 | 脚本高频报撤单、扫价 | 系统负载、套利加剧 | 接口限频、行为验证码(低打扰)、异常流量熔断 |
| 结算前知情交易 | 结果快出时用信息差扫单(体育终场前等) | 平台/对手方受损 | 临近封盘收紧限额与价差、提前停止新单(分品类配置) |
| Gamma API | 市场/价格/tick/流动性/negRisk(公开) |
| CLOB API | 读深度(公开);写对冲下单(需 L1签名+L2 Key) |
| Data API | 庄家钱包持仓 / redeemable 结算状态 |
目录周期全量;价格高频(热门1–5s/冷门30–60s,优先 websocket);CLOB 深度定对冲可行量与 AMM 深度展示。限频退避 + 缓存。
有争议窗口(约2h–数天),无 webhook 需轮询。结果未最终确定前不派彩,UI 显示「等待结算」,不承诺即时到账。
赢方=份额×1 USDT(玩家单一 USDT 计价),输方归零;抵押池赔付 + 庄家钱包赎回对冲头寸 → 对账入 PnL。
Polymarket taker 费在成交那刻扣(嵌在 USDC↔份额的原子交换里),存提/结算/赎回不收费;maker 免费且返佣。
Polymarket 已提供中文内容,直接采用其中文标题与结算规则,无需自建翻译。运营侧只做:① 策展(选哪些市场上架/置顶);② 对高曝光市场的结算规则做重点核对,确保表述准确无歧义。
玩家买 YES/NO、互补 Mint、平仓,全部是平台数据库里的记账。玩家不持有链上代币、不需要钱包、不付 gas。速度快、体验顺。
若每笔玩家交易都上链,会慢、贵(gas)、且要求玩家有加密钱包——与「大众、无感」的产品目标冲突。所以玩家侧走内部账本。
平台对冲净敞口时,用庄家钱包与 Polymarket 的链上合约交互:CTF 条件代币的 split / merge / redeem、CLOB 撮合下单(每笔需私钥签名)、结算后赎回。
这些合约由 Polymarket 提供,我们不自研合约,只作为客户端调用。
| 价格优先 | 买单先吃最低卖价、卖单先吃最高买价。例:买单可接受 ≤65¢,卖档有 63/64/65¢,先吃 63¢。 |
| 时间优先 | 同价位按下单时间 FIFO排队。例:58¢ 上甲先挂 200、乙后挂 300,来 250 份卖单 → 甲成 200、乙成 50、乙剩 250 继续挂。 |
| 处理模型 | 撮合以单个市场为单位串行(同市场内顺序确定、无锁竞争),跨市场并行。tick=1¢、价 1–99¢、份额整数、金额 2 位小数四舍五入。 |
| 条件 | 买是 a¢ + 买否 b¢,当 a+b ≥ 100+价差 配对。例:价差2¢,买是63+买否39=102≥102 → 配对。 |
| 动作 | 生成一对 是/否 份额分给两人;100¢ 进抵押池、差额进价差收入;两方均为 taker。 |
| 优先级 | 同时能对手撮合又能互补配对时,优先配对(平台不产生库存、无需对冲)。 |
| 场景 | 处理 |
|---|---|
| 无对手盘 | 限价 → 直接挂单等待;市价 → 全部转 AMM 兜底(见 2/3)。 |
| 价格穿越多档 | 逐档吃:先吃满最优档再吃次优,成交均价按各档加权。 |
| 同价多个挂单 | 严格 FIFO;先到的先成,剩余量顺延下一个。 |
| 一笔吃穿整个簿 | 吃到没有可成交对手为止;市价剩余转 AMM,限价剩余挂单。 |
| 互补 + 对手同时可成 | 先互补配对(无风险),再对手撮合,最后 AMM。 |
| 撮合中对手撤单/成交完 | 该档消失 → 自动跳到下一档,玩家无感知。 |
| 自成交命中 | 撮合时识别 taker 与 maker 同/关联账户 → 跳过该档,不成交(见 3/3 防作弊)。 |
| 成交 | 输入金额,从最优价逐档吃直到金额用完。成交均价 = Σ成交额 ÷ Σ份额(含滑点);预估份额 ≈ 金额 ÷ (均价×1.005),显示为预估。 |
| 盘口不足 | 玩家盘口吃完未满足 → 剩余转 AMM 兜底,玩家感知为一笔完整成交。 |
| 滑点保护 | 成交均价偏离下单时最优价 > 上限(默认 2%,可配)→ 整单拒、不部分成交,冻结额原路全额解冻,提示「价格变化过大,请重试」。 |
| 不挂单 | 市价单只即时成交,吃不掉/被拒的部分不留簿、不转限价。 |
| 场景 | 处理 |
|---|---|
| 盘口 + AMM 都不足 | 成交已撮部分、剩余金额取消并退回,提示部分成交。 |
| 吃单中价格剧烈跳动 | 触发滑点保护 → 整单拒、全额解冻。 |
| 金额 < 一份的价 | 低于最小下单量 → 下单前拦截。 |
| AMM 停报(锚价失效) | 无兜底 → 仅玩家盘口成交,不足部分取消退回并提示。 |
| 下单 | 填限价+份额。可成交部分(出价 ≥ 现价)立即撮合;不能成交部分挂簿。例:现价卖62¢,挂买65¢→立即成交;挂买55¢→全挂单。 |
| 部分成交 | 已成进「持仓中」;剩余进「委托中」标「部分成交」+已成/剩余。例:挂300成120→持仓+120、委托剩180。 |
| 有效期 | GTC 长期有效,挂到全成或撤单;闭市自动撤(见 3/3)。 |
| 冻结 | 冻结 = 剩余未成份额 × 限价。例:200×58¢=116.00 冻结。 |
| 场景 | 处理 |
|---|---|
| 限价远优于现价 | 按对手价(现价)成交,不按玩家高价成交(玩家占便宜),剩余挂在其限价。 |
| 挂单后价格走到 | 被后来的对手单撮合(此时玩家是 maker,免费)。 |
| 同价已有大量挂单 | 排到队尾,按 FIFO 等前面成交完。 |
| 下单瞬间恰好可全成 | 直接全成进持仓,不进委托中。 |
| 挂单期间市场闭市 | 自动撤销并解冻(见 3/3)。 |
| 范围 | 「委托中」单可撤;只撤未成交部分,已成不动。撤 200@58¢ → 解冻116.00;部分成交单撤剩余180 → 解冻180×限价。 |
| 并发 | 撤单与撮合同时到达 → 以撮合结果为准,撤单作用于撮合后的剩余;若单已全成,返回「已成交,无法撤销」。 |
| 幂等 | 重复撤只生效一次;已撤/已成再撤返回当前状态,不报错、不重复解冻。 |
| 自动撤单 | 到 closeTs 瞬间,该市场未成交挂单全部自动撤销+解冻,通知玩家。 |
| 停止新单 | 闭市后拒一切新单(买卖/限价市价);已成持仓转「等待结算」。 |
| 边界 | 闭市判定以服务端为准;临界时刻提交的单,服务端时间过 closeTs 即拒。 |
| 只收 taker | 吃单方 0.5%、挂单方免费;互补配对双方视为 taker。费=成交额×0.5%(100→0.50)。 |
| 目的 | maker 免费引导挂单、做厚深度、提撮合率、降对冲成本。 |
| 下单校验 | 余额≥冻结额、份额≥最小量、限价对齐1¢且1–99、市场为交易中;不满足拦截并提示。 |
| 幂等 | 同 clientOrderId 重复提交只生效一次,不重复扣款/建单(解决网络重试)。 |
| 禁自成交 | 同一/关联账户(设备/IP/资金关系)买卖单不得互撮,撮合层跳过该档硬拦截,防刷量/套返利。 |
| 异常 | 处理 |
|---|---|
| 冻结成功但撮合服务崩溃 | 重启后从快照+序列号重放恢复簿状态;未完成单按事务补偿(解冻或续撮)。 |
| 扣款/记账下游失败 | 撮合成交但账本写失败 → Saga 补偿回滚或重试至一致,绝不「成交了没记账」。 |
| 钱包冻结超时 | 视为下单失败,不建单、不成交,提示重试。 |
| 重复成交消息 | 账本按业务键幂等去重,不重复记仓/扣款。 |
| 簿数据与账本不一致 | 对账任务巡检 → 告警 → 以账本为准修正。 |
| 内容 | 市场目录、中文标题与规则、锚价(中间价 0–1)、订单簿深度、24h 成交量、闭市时间、结算来源。 |
| 频率 | 价格/深度准实时(websocket 优先、轮询兜底,目标延迟 <1–2 秒);目录/规则定时全量+增量(如 5–10 分钟)。 |
| 限频重试 | 受 PM 接口限频约束,指数退避重试;本地缓存最近有效数据兜底并打标。 |
| 中文内容 | 直接采用 PM 中文,不自建翻译;无中文的市场运营补录或不上架。 |
| 纯二元 | 仅上架结果为 Yes/No 两种的市场;多选(negRisk)、标量、一事件多市场 v1 不上架。 |
| 可对冲 | 只上架能在 PM 对冲掉的:启用订单簿、active、流动性达标;否则不上架。 |
| 锚价有效 | 锚价缺失/越界/超时未更新 → 打标,AMM 停报、前端置灰。 |
| 场景 | 处理 |
|---|---|
| PM 接口限频/超时 | 退避重试;期间用缓存并打「行情延迟」标,前端提示。 |
| websocket 断连 | 自动重连;重连前切轮询兜底,恢复后补齐增量。 |
| 锚价长时间未更新 | 超阈值判失效 → 该市场 AMM 停报、前端置灰、禁基于旧价下新单。 |
| PM 暂停/下架某市场 | 同步到本地 → 本平台同步暂停该市场(仅平仓/撤单),通知运营。 |
| PM 改结算规则 | 标记规则变更 → 暂停新单 + 运营人工核对后再决定续用/下架。 |
| 新市场首次同步不全 | 字段不完整不上架,待补齐;不展示半成品市场。 |
| 概率 | Yes 概率% = 中间价×100(不含价差),四舍五入到整数。走势/大号概率用此口径。 |
| 买卖价 | Yes 买价 = round(mid×100+价差/2)、No 买价 = round((1−mid)×100+价差/2);价差分品类;clamp 1–99¢。 |
| 涨跌 | 24h 涨跌 = 当前中间价 − 24h 前中间价,带 ▲/▼ 与色。 |
| 闭市 | 后端给 closeTs,前端算「N 天后闭市」;now≥closeTs 标已闭市。 |
| 场景 | 处理 |
|---|---|
| mid 接近 0/1 | 买卖价 clamp 到 1–99¢,不出现 0/100。 |
| 价差配置缺失 | 回退到该品类默认价差;无默认则用全局兜底价差并告警。 |
| 24h 前无数据 | 涨跌显示「—」,不显示错误的巨幅涨跌。 |
| 走势源 | 自有成交量低于阈值(冷启动) → 用 PM 历史中间价;达标 → 切自有成交中间价。曲线画中间价。 |
| 时间档 | 1小时/1天/1周/1月,按粒度降采样(1天=5min点、1月=1h点)。 |
| 深度 | 展示深度 = 玩家真实挂单 + AMM 反推可成交深度合并;每档量 ≤ PM 实际可对冲量(红线:不挂假量)。 |
| 场景 | 处理 |
|---|---|
| 切档位重拉失败 | 保留上一档数据 + 提示重试,不白屏。 |
| 冷启动无历史 | 用 PM 历史价占位;仍无则显示「暂无走势」。 |
| PM 深度骤降 | AMM 反推深度同步收窄(≤ 可对冲量),避免展示对冲不掉的量。 |
| 切换到自有源的临界 | 成交量跨阈值时平滑切换,避免曲线跳变。 |
| P_ref | 锚价中间价(行情服务)。 |
| s | 基础价差(分品类 1.5–4%),价差收入。 |
| k·(I/b) | 偏斜项:I=净敞口、b=深度、k=偏斜系数(0.05),玩家押多方向报价被推高。 |
| λ·(Δ/b) | 冲击项:Δ=本单量,大单更差(滑点),防吃穿。 |
| 护栏 | 报价 clamp 2–98¢。 |
| 负反馈 | I 偏正(玩家押YES多/平台持NO) → Yes报贵、No报便宜 → 劝退买YES、吸引买NO → I 回 0。 |
| 例子 | I=+2000、k=0.05、b=1000 → 偏斜 +0.10 → Yes 额外 +10¢,直到 I 回落。 |
| 场景 | 处理 |
|---|---|
| 被调用兜底 | 仅订单簿撮合不掉时按需报价(RFQ),不与玩家挂单抢单(同价玩家优先)。 |
| 大单冲击 | λ 项放大滑点,逐量报价越来越差;超可成交深度则只成交可对冲部分。 |
| 报价触 clamp | mid 极端时报价被夹在 2–98¢,不报 0/100。 |
| 偏斜已很大 | 失衡方向报价很贵、几乎无人吃;反向报便宜吸引回平。 |
| 同时来多笔吃 AMM | 按到达顺序逐笔更新 I 后再报下一笔(串行,价随库存变)。 |
| 反推深度 | 按公式在各价位算「这个价能吃多少」铺盘面;每档量 ≤ PM 实际可对冲量(薄盘少铺/不铺,绝不报假量)。 |
| 成交回写 | 成交后更新 I,触发风险引擎重算是否对冲。 |
| 计量 | AMM 成交计入 GMV,不计入内部撮合率分子;自平衡率单独统计。 |
| 锚价异常停报 | 行情标锚价失效 → 该市场停止报价、前端置灰。 |
| I_max 触顶 | 净敞口达上限 → 停止继续吃失衡方向,只接反向回平,并触发强制对冲。 |
| 护栏原则 | 偏斜折价 < 对冲成本才自持;波动期临时拉宽 s 降低被套利速度。 |
| 场景 | 处理 |
|---|---|
| 锚价失效 | 停报兜底 → 该市场仅玩家盘口成交,市价单不足部分取消退回。 |
| 撞 I_max 仍来失衡单 | 失衡方向拒绝/只成交到 I_max,剩余取消;触发强制对冲。 |
| 波动剧烈 | 自动拉宽 s、加大偏斜,降低吃单速度,配合风险引擎缩短对冲批间隔。 |
| 参数配置异常 | 参数越界回退默认值并告警,不用异常参数报价。 |
| PM 可对冲量骤降 | 反推深度同步收窄,避免报出对冲不掉的量。 |
| 定义 | I = 玩家净买YES − 玩家净买NO(含吃 AMM)。I>0=玩家押YES、平台担NO风险、需买YES对冲;I<0 反之。 |
| 更新 | 每笔成交(撮合/AMM/平仓)后即时重算;玩家互撮不改变 I(左手倒右手),吃 AMM 才改变。 |
| 最坏裸赔 | ≈ |I|×(1−库存均价),作风险度量与限额依据。 |
| ①强制优先 | 临近封盘(R→0清空)/剧烈波动/撞I_max/超紧急阈值 → 不计成本强制对冲。在 R 之前判,确保封盘前清零。 |
| ②R内自持 | 非强制场景 |I|≤R → 不对冲,靠 AMM 偏斜自平衡。 |
| ③比价 | |I|>R:偏斜折价 < 对冲成本 → 内部平;否则对冲超 R 部分到 PM。 |
| ④兜底降级 | 对冲不掉 → 拉宽价差/加大偏斜/降失衡方向下单额/暂停新单仅平仓/熔断告警。 |
| 场景 | 处理 |
|---|---|
| 敞口 R 内但临近封盘 | 强制清零优先(不因在 R 内而跳过),封盘前对冲掉全部。 |
| 敞口刚超 R | 只对冲超出 R 的部分,R 内仍自持。 |
| 波动骤起 | 缩短对冲批间隔、大单直通、拉宽价差;必要时熔断只平仓。 |
| 撞 I_max | AMM 停吃失衡方向 + 强制对冲,把 I 压回 I_max 内。 |
| 多市场同时超 R | 按组合约束(Σ最坏裸赔≤总预算)排优先级,先对冲风险大的。 |
| 对冲后仍有残余 | 下一批继续,直至回到 R 内或清零。 |
| 含义 | 允许不对冲、自扛的净敞口上限。R 内省对冲成本,R 外必须对冲。 |
| 量化 | R ≤ (风险预算×占比)÷(1−库存均价)。例:预算10万、单市场2%(=2000)、均价0.6 → R≤5000份。 |
| 组合约束 | Σ各市场最坏裸赔 ≤ 总风险预算(不能同时顶格)。 |
| 分期 | Phase1 保守 R≈0;成熟后放大。「超R对冲+封盘清零」两道保险不可取消。 |
| 批处理 | 小批次周期执行(聚合净额减下单次数);波动期缩短间隔、大单直通。 |
| 裸扛窗口 | 成交到对冲间几秒~几十秒,敞口计入 I_max 实时监控;波动拉宽价差降吃单速度。 |
| 风险态 | normal → warning(近I_max/波动) → halted(熔断仅平仓),变更告警运营。 |
| 场景 | 处理 |
|---|---|
| 对冲执行器返回失败 | 敞口未减 → 保持监控、走兜底降级(暂停失衡方向新单),重试对冲。 |
| 对冲通道中断 | 无法对冲 → 全场仅平仓+暂停新单、告警(对应对冲执行器预案)。 |
| I 计算数据延迟 | 以账本为准对齐;延迟期从严(视同接近阈值),宁可多对冲。 |
| 参数越界 | R/I_max 异常回退默认并告警,不用异常参数决策。 |
| 封盘瞬间仍有敞口 | 强制清零;若清不掉则记录裸扛并最高级告警。 |
| 跟买方向 | 按指令买入玩家净押方向(I>0买YES),对冲份额与敞口一致,转移反面风险。 |
| 调用 | PM 合约 CTF split/merge/redeem + CLOB 下单(L1签名+L2 Key);negRisk 选对应合约。 |
| 批量 | 聚合净敞口批量下单减次数/Gas;大单/紧急单直通。 |
| 深度/滑点 | 下单前查 PM 深度与预期滑点;过大则拆单/分批或降级回报。 |
| USDC 水位 | 查庄家钱包 USDC 是否够,不足向司库请求补给。 |
| 可对冲性 | 只对可对冲市场执行;PM 暂停/改规则的走降级预案。 |
| 场景 | 处理 |
|---|---|
| PM 深度不足 | 拆单分批吃;仍不足 → 降级回报风险引擎(拉价差/暂停失衡方向)。 |
| 滑点超预期 | 放弃该批或减量,回报实际成本,风险引擎据此调决策。 |
| USDC 不足 | 向司库补给;补给到位前暂缓非紧急对冲、紧急单优先。 |
| Gas 拥堵/链慢 | 提高优先级或分批;紧急对冲不等批直通。 |
| negRisk 多结果市场 | 选对应合约分别对冲(v1 多为纯二元,少见)。 |
| 下单失败 | 网络/链上失败 → 退避重试+降级;仍失败回报风险引擎走兜底。 |
| 幂等 | 每笔带业务键,重试不重复对冲;已提交未确认的按链上回执核对。 |
| 对账 | 对冲成交与成本回写账本(Hedges),与敞口/库存对账,差异告警。 |
| 私钥 | 走 KMS/签名服务,不落明文、不进代码库,签名审计留痕。 |
| 多钱包 | 多钱包分散,降低单钱包被封的单点风险。 |
| 封盘前清空 | 按指令强制清空残余敞口,绝不带敞口进结算。 |
| 场景 | 处理 |
|---|---|
| 已提交但回执超时 | 不重复下单;轮询链上确认,确认后补记账,未确认挂起监控。 |
| 部分成交 | 记已对冲量,剩余继续下一批,敞口按实际对冲更新。 |
| PM 封庄家钱包 | 通道中断预案:全场仅平仓+暂停新单、告警,切备用钱包,Phase2 评估备选场所。 |
| ToS/API 变更 | 暂停对冲、暂停新开仓,法务/运营评估后再恢复。 |
| 签名服务不可用 | 暂停对冲下单、告警;不降级为明文私钥。 |
| 订单成交 | 每笔下单/撤单/成交(价格、份额、taker费、来源:撮合/AMM/Mint/Merge)。 |
| 持仓 | 用户×市场×方向的份额与加权均价。 |
| 资金流水 | 冻结/扣款/加款/退款/派彩/撤单解冻,关联订单或结算。 |
| 对冲盈亏 | 对冲成交与成本(Hedges)、已实现/未实现盈亏(PnL)。 |
| 复式记账 | 每笔资金有借贷两侧,任意时点账必平。 |
| 幂等 | 每条记账带业务键,重复消息只记一次。 |
| 跨服务一致 | 冻结→扣款→记仓跨多服务,用 Saga/TCC 保最终一致,失败补偿回滚。 |
| 精度 | 金额用定点数,统一 2 位小数四舍五入,避免累计误差。 |
| 场景 | 处理 |
|---|---|
| 成交消息重复到达 | 业务键幂等去重,不重复记仓/扣款。 |
| 扣款成功记仓失败 | Saga 补偿:要么补记成功、要么回滚扣款,不留「扣了没仓」。 |
| 并发平仓同一仓位 | 行级锁/版本号乐观锁,串行结算,避免超卖负份额。 |
| 浮点/进位误差 | 定点数统一进位;对账发现差异告警并修正。 |
| 服务崩溃重启 | 从事务日志/快照恢复,未完成事务补偿到终态。 |
| 持仓均价 | 加权平均成交价;平仓按份额减仓,剩余均价不变。 |
| 浮动盈亏 | 用标记价(中间价):份额×(标记价−均价);不用最新成交价。 |
| 已实现盈亏 | 平仓=份额×(卖价−均价)−费;结算见结算引擎。 |
| 在投 | Σ持仓市值(标记价)+Σ挂单冻结。 |
| 闭市后 | 标记价冻结在闭市时刻(无锚价更新),标「待结算确认」。 |
| 场景 | 处理 |
|---|---|
| 标记价缺失 | 用最近有效中间价;仍无则浮盈显示「—」。 |
| 均价为 0 或异常 | 校验拦截,不产生错误盈亏。 |
| 内部对账 | 持仓×份额、资金×流水、敞口×对冲定期勾稽,差异进告警队列。 |
| 外部对账 | 与宿主单一钱包每日对账(余额/流水),差异告警。 |
| 守恒巡检 | 校验 总抵押=总YES=总NO,份额不凭空多少。 |
| 查询 | 对前端出:持仓/委托、交易流水(分页)、结算战绩(盈亏/胜率/笔数)。 |
| 场景 | 处理 |
|---|---|
| 与宿主钱包对不平 | 告警+定位差异笔,冻结相关操作待人工核对。 |
| 守恒被破坏 | 最高级告警,排查 Mint/Merge/结算,暂停相关市场。 |
| 流水查询量大 | 分页+索引,历史归档冷存储。 |
| 数据源 | 轮询 UMA/Gamma 获取结果(YES/NO/作废)。 |
| 争议窗口 | UMA 争议窗口内不派彩,市场停「等待结算」,仓位不动。 |
| 状态 | 交易中→已闭市→等待结算→已结算(派彩)/已作废(退款)。 |
| 兑付 | 结果定后:赢方每份1 USDT、输方归零。 |
| 金额 | 派彩=持有份额×1,入可用余额。例:200份赢→+200.00。 |
| 已实现盈亏 | 赢=份额×(1−均价);输=−份额×均价。写 PnL 与战绩。 |
| 作废退款 | VOID → 所有持仓按成本全额退款,不计盈亏。 |
| 场景 | 处理 |
|---|---|
| 结果进入争议 | 冻结派彩、停「等待结算」,UMA 裁定后再执行。 |
| 结果长期未出 | 保持等待结算+监控告警,不擅自判定。 |
| 结果反转(争议后改判) | 以最终裁定为准;若已误派,走差错冲正流程+人工复核。 |
| 市场作废 | 全员按成本退款,撤销相关对冲,不计盈亏。 |
| 只有单边有人持仓 | 正常派彩/归零,抵押池与对冲赎回对账平衡。 |
| 幂等派彩 | 每次结算带 settlementId,派彩只执行一次,重复触发不重复加款。 |
| 准备金校验 | 派彩前校验偿付准备金(司库隔离账户)充足;抵押池+对冲赎回覆盖应付。 |
| 对冲赎回 | 结算同时庄家钱包 PM 赎回对冲头寸回收 USDC,与派彩对账入 PnL。 |
| 争议复核 | 结果异常/争议 → 冻结派彩进人工复核队列,裁定后执行。 |
| 玩家通知 | 结算完成通知(赢/输/退款与金额),持仓「等待结算」→「已结算」。 |
| 未成交挂单 | 已在闭市时自动撤销解冻(订单簿负责),结算只处理持仓。 |
| 场景 | 处理 |
|---|---|
| 派彩过程中断 | 幂等重放继续派,已派的不重派,直至全部完成。 |
| 准备金不足 | 暂停派彩、最高级告警、司库紧急补给后再派,绝不透支。 |
| 赎回失败 | 派彩照常(玩家优先),赎回重试并对账,缺口计入风险监控。 |
| UMA 数据异常 | 不采信异常结果,保持等待结算并告警。 |
| 误派需冲正 | 差错冲正流程:追回/补差+人工复核+审计留痕。 |
| 阶段 | 核心目标 | 关键交付 | 退出标准(Gate) |
|---|---|---|---|
| Phase 0 影子运行 | 不花真钱验证机制可行 | 对冲引擎影子运行、净敞口/对冲触发/滑点模型 | 净敞口计算零误差;对冲触发逻辑验证;滑点假设被印证:≥2 周、覆盖 ≥20 个市场、≥1000 笔模拟对冲,实测滑点与模型偏差 < 0.3pct(含 ≥1 次剧烈波动时段样本) |
| Phase 1 MVP | 端到端跑通 + 小流量上线 | 纯二元、三层流动性、全对冲、平仓、冷启动、运营后台、偿付隔离 | 对冲成功率达标、裸赔额可控、单位经济为正、资金对账无差错 |
| Phase 2 成长 | 扩品类、提撮合率、强风控 | NegRisk 多选、订单簿深度成长、maker 对冲、反作弊 | 内部撮合率提升、对冲成本下降、反作弊有效、组合风险可控 |
| Phase 3 成熟 | 精细化运营与自营能力 | AMM 阶梯挂单、放大自持、汇率对冲、标量市场、专业做市商 | —(持续演进) |