> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oddspapi.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 期货赔率频道 - 实时赛季投注赔率

> 通过WebSocket流式传输实时期货赔率。冠军赔率、赛季投注价格和长期市场赔率，用于体育博彩交易。

## 数据流内容

针对长期或赛季投注市场（"期货"）的实时赔率更新，以 `futureId` 为范围。
每次更新包含每个博彩商的每个结果的一个或多个价格。

赔率按 `bookmaker` 分组，并在每个博彩商内按参赛方进行键控。

***

## 路由

* 实体键：`payload.futureId`
* 过滤器：`sportIds`、`tournamentIds`、`futureIds`、`bookmakers`
* 博彩商授权：✅ 是

***

## 传输语义

与[赔率频道](/zh/websocket/channels/odds)相同的合并模型：同一 `oddsId` 在固定的约 10 毫秒批处理窗口内的多次更新会合并为最新值。

* **状态不会丢失** —— 每次价格变动的最终值始终会被送达
* 窗口内被取代的中间报价不会送达 —— 将其视为状态流，而非账本

> 需要完整的价格变动或收盘价？请使用 REST [历史赔率与 CLV](/zh/api-reference/concepts) 端点（`/futures/odds/historical`、`/futures/odds/clv`）。

***

## 负载结构

oddsId：

```
<futureId>:<bookmaker>:<futureOutcomeId>:<participantId>
```

`futureOutcomeId` 标识盘口内的方向与线值。以参与者为键的盘口（`winner`、`topscorer`、`relegation`、`mvp`）不拥有 outcome 行，取哨兵值 `0` —— 此时选择项就是参与者。可分解盘口（是 / 否、大 / 小）则按线值、按方向携带真实的 `futureOutcomeId`。

请将 `oddsId` 视为不透明字符串，并从下方的显式字段读取取值，而不要拆分它。参见[期货赔率ID](/zh/api-reference/concepts#期货赔率id)。

***

## 结果对象（完整架构）

`oddsFutures` 映射中的每个条目都是一个**结果**，类似于 `odds` 频道中使用的结果。

| 字段                   | 类型                | 描述                                             |                       |
| -------------------- | ----------------- | ---------------------------------------------- | --------------------- |
| `bookmaker`          | `string`          | 博彩商标识（如 `"stake"`、`"pinnacle"`、`"polymarket"`） |                       |
| `futureOutcomeId`    | `integer`         | 盘口内的方向与线值 —— 以参与者为键的盘口取 `0`                    |                       |
| `participantId`      | `integer \| null` | 赔率适用的参赛方（队伍/选手）                                |                       |
| `price`              | `number`          | 小数赔率                                           |                       |
| `active`             | `boolean`         | 结果当前是否可用                                       |                       |
| `bookmakerOutcomeId` | `string \| null`  | 博彩商原生结果ID                                      |                       |
| `bookmakerChangedAt` | `integer \| null` | 博彩商提供的更新时间戳（毫秒）                                |                       |
| `priceFractional`    | \`string          | \`                                             | 分数赔率（如 `"5/2"`）       |
| `priceAmerican`      | \`integer         | \`                                             | 美式赔率（如 `+200`、`-120`） |
| `limit`              | `number \| null`  | 最大允许投注额（如适用）                                   |                       |
| `betslip`            | `string \| null`  | 可选的博彩商投注单/深链接信息                                |                       |
| `meta`               | `object \| null`  | 博彩商特定元数据（如阶梯、刻度）                               |                       |
| `changedAt`          | `integer`         | 网关接收时的纪元毫秒（UTC）                                |                       |

***

## 示例：传统博彩商期货赔率

```json theme={null}
{
  "channel": "oddsFutures",
  "type": "UPDATE",
  "payload": {
    "futureId": "id11028543137888",
    "oddsFutures": {
      "stake": {
        "id11028543137888:stake:0:5432": {
          "bookmaker": "stake",
          "futureOutcomeId": 0,
          "participantId": 5432,
          "price": 4.25,
          "active": true,
          "priceAmerican": +325,
          "priceFractional": "13/4",
          "limit": 500,
          "changedAt": 1766940100000
        }
      }
    }
  },
  "ts": 1766940100023,
  "entryId": "1766940100023-456"
}
```

***

## 示例：带订单簿元数据的预测市场赔率

```json theme={null}
{
  "channel": "oddsFutures",
  "type": "UPDATE",
  "payload": {
    "futureId": "id11028543137888",
    "oddsFutures": {
      "polymarket": {
        "id11028543137888:polymarket:0:5432": {
          "bookmaker": "polymarket",
          "futureOutcomeId": 0,
          "participantId": 5432,
          "price": 3.25,
          "active": true,
          "bookmakerOutcomeId": "abc123xyz",
          "limit": 50,
          "meta": {
            "back": [
              { "price": 3.25, "size": 20 },
              { "price": 3.10, "size": 40 }
            ],
            "lay": [
              { "price": 3.40, "size": 15 }
            ]
          },
          "changedAt": 1766940123456
        }
      }
    }
  },
  "ts": 1766940123458,
  "entryId": "1766940123458-501"
}
```

***

## 实现指南

* 始终使用 `oddsId` 作为赔率的唯一ID —— 作为不透明字符串使用，不要解析它
* 根据需要归一化价格（小数 → 美式等）
* 将 `futureId` 关联到：
  * [`futures`](/zh/websocket/channels/futures)
  * [`bookmakersFutures`](/zh/websocket/channels/bookmakersFutures)
* 使用 `active=false` 暂停显示或投注逻辑
* 保留 `meta` 中的所有字段，即使未使用（以保持向前兼容性）
