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

# 指数价格

> 网络对某项资产在外部市场值多少钱的判断——数据源如何加权、异常值如何被约束，以及数据源失效时它如何降级运行。

指数价格回答的是*这项资产此刻在更广阔的市场上值多少钱*。它是输入，不是成交价：没有任何订单按指数价格成交。它锚定[标记价格](/zh/trading/mark-price)，为[资金费率](/zh/trading/funding)设定基准，并通过这两者决定仓位能不能活下来。

所以它是系统接受的所有外部输入里，后果最重的一个。下面这一整套之所以存在，就是因为价格只要能被推动，强平机器就能被瞄准。

<h2 id="why-the-venue-builds-its-own">
  为什么自己构建
</h2>

另一种做法是直接消费别人的预言机，而这种安排的失效模式早有充分记录。交易场所引用的价格，如果反过来又受自己这个市场影响，就形成了一个闭环——某处的一次扭曲，会在另一处变成一连串强制平仓。

自己构建意味着数据源、权重和阈值全部可查、可调，而且没有任何一项回指本交易场所自己的订单簿。

<h2 id="from-venue-quotes-to-one-number">
  从各家报价到一个数
</h2>

<div className="dg" data-dg="index-price-build">
  <div className="dg-c" style={{aspectRatio:"720 / 406"}}>
    <svg className="dg-w" viewBox="0 0 720 406" aria-hidden="true">
      <path className="dg-wire" d="M 165.00 78.00 L 165.00 89.60" />

      <path className="dg-head" d="M 165.00 96.00 L 160.60 89.60 L 169.40 89.60 Z" />

      <path className="dg-wire" d="M 165.00 148.00 L 165.00 159.60" />

      <path className="dg-head" d="M 165.00 166.00 L 160.60 159.60 L 169.40 159.60 Z" />

      <path className="dg-wire" d="M 165.00 218.00 L 165.00 229.60" />

      <path className="dg-head" d="M 165.00 236.00 L 160.60 229.60 L 169.40 229.60 Z" />

      <path className="dg-wire" d="M 165.00 288.00 L 165.00 299.60" />

      <path className="dg-head" d="M 165.00 306.00 L 160.60 299.60 L 169.40 299.60 Z" />
    </svg>

    <div className="dg-b dg--sky" style={{left:"0.0000%",top:"7.3892%",width:"45.8333%",height:"10.8374%"}}><span className="dg-t">归一化并换算计价货币</span></div>
    <div className="dg-b dg--sky" style={{left:"0.0000%",top:"24.6305%",width:"45.8333%",height:"10.8374%"}}><span className="dg-t">把每个数据源限幅至中位数 ± 带宽</span></div>
    <div className="dg-b dg--sky" style={{left:"0.0000%",top:"41.8719%",width:"45.8333%",height:"10.8374%"}}><span className="dg-t">按成交量、价差与稳定性加权</span></div>
    <div className="dg-b dg--sky" style={{left:"0.0000%",top:"59.1133%",width:"45.8333%",height:"10.8374%"}}><span className="dg-t">给单一场所的权重设上限</span></div>
    <div className="dg-b dg--green" style={{left:"0.0000%",top:"76.3547%",width:"45.8333%",height:"10.8374%"}}><span className="dg-t">指数价格</span></div>
    <div className="dg-b dg-plain dg-left" style={{left:"50.0000%",top:"7.3892%",width:"50.0000%",height:"10.8374%"}}><span className="dg-s">这样接下来取的中位数才是在可比的数之间取的</span></div>
    <div className="dg-b dg-plain dg-left" style={{left:"50.0000%",top:"24.6305%",width:"50.0000%",height:"10.8374%"}}><span className="dg-s">主流加密资产 1% · 稳定币 0.5% · 其他 3%</span></div>
    <div className="dg-b dg-plain dg-left" style={{left:"50.0000%",top:"41.8719%",width:"50.0000%",height:"10.8374%"}}><span className="dg-s">稳定性拿近期成交量对比更长周期，某家场所的突然放量买不到影响力</span></div>
    <div className="dg-b dg-plain dg-left" style={{left:"50.0000%",top:"59.1133%",width:"50.0000%",height:"10.8374%"}}><span className="dg-s">报价再好看也一样</span></div>
    <div className="dg-b dg-plain dg-left" style={{left:"50.0000%",top:"76.3547%",width:"50.0000%",height:"10.8374%"}}><span className="dg-s">它是输入，不是成交价——没有订单按指数成交</span></div>
    <div className="dg-free" style={{left:"0.0000%",top:"0.0000%",width:"45.8333%"}}><div className="dg-n">交易所行情源进，一个数出</div></div>
    <div className="dg-free" style={{left:"50.0000%",top:"0.0000%",width:"50.0000%"}}><div className="dg-n">这一步去掉了什么</div></div>
    <div className="dg-free" style={{left:"0.0000%",top:"91.1330%",width:"100.0000%"}}><div className="dg-n">选限幅不选剔除：剔除等于让攻击者把某一家推远就能缩小样本，剩下每个数据源的权重反而被抬高。</div></div>
  </div>
</div>

每一步都堵掉一条能推动结果的路径。

**归一化**：各家行情源有自己的数据结构和计价货币。不是按结算货币计价的价格，会先换算，再进后面的步骤，这样接下来取的中位数才是在可比的数之间取的。

**异常值限幅**：先在所有数据源上算出中位数，再把每个数据源拉进围绕中位数的一条带宽里。市场越深，带宽越窄。

| 标的类别   | 中位数附近的带宽 |
| ------ | -------- |
| 主流加密资产 | 1%       |
| 稳定币    | 0.5%     |
| 其他     | 3%       |

选*限幅*不选*剔除*是刻意的。剔除异常值，等于让攻击者只要把某一家推远就能缩小样本，剩下每个数据源的权重反而被抬高。限幅则让每个数据源都还算数，同时限定任何一家能拉动多远。

**按质量加权**：各数据源按加权平均合并，不是等权，依据三个因子：

* **成交量**——真实换手更多的场所携带更多信息
* **价差**——订单簿越窄，报价越有把握
* **稳定性**——近期成交量与更长周期均值的对比，这样某家场所的突然放量买不到影响力

**单场所权重上限**：一个数据源就算三个因子全都拔尖，权重照样封顶；报价再好看，也没有哪一家能主导结果。

综合效果是给操纵设了一条成本下限：要有意义地推动指数，你必须同时推动数家彼此独立的场所，在它们真实的深度上推，而且还得撑住。

<h2 id="when-a-source-misbehaves">
  数据源出问题时
</h2>

三道防线持续运行，各自应对一种不同的失效。

| 防线           | 触发条件           | 响应                    |
| ------------ | -------------- | --------------------- |
| **异常值限幅**    | 某数据源偏离中位数超出其带宽 | 被拉回带宽边缘               |
| **陈旧降权**     | 某数据源停止更新       | 宽限期内沿用最后一个有效价格，之后权重归零 |
| **订单簿有效性检查** | 买卖盘交叉，或任一侧不足三档 | 拒绝该次更新，保留上一个价格        |

当某个数据源的权重归零时，其余权重按比例放大。指数不会因为一家场所断线而跳空。

<Note>
  买卖盘交叉——买价等于或高于卖价——不是可交易的市场，是坏掉的行情源。接受它，等于让一家发生故障的场所往聚合结果里塞一个任意的中间价。
</Note>

<h2 id="update-cadence-and-staleness">
  更新节奏与陈旧判定
</h2>

指数大约每三秒重算一次，并在共识内被认证，因此一笔交易结算所依据的价格，是由提交该交易的同一组验证者法定人数签名的。认证如何运作参见[预言机](/zh/protocol/architecture/oracle)。

验证者签名之前会检查新鲜度：读数陈旧就宁可不提交，也不把一个旧值报上去。到了下游，[标记价格](/zh/trading/mark-price)会把超过约十秒的指数当作这个区块内不可用，没有它照样往下算。

<h2 id="index-price-is-not-mark-price">
  指数价格不是标记价格
</h2>

|           | 指数价格          | 标记价格           |
| --------- | ------------- | -------------- |
| 回答的问题     | 它在外部值多少？      | 这个仓位在这里值多少？    |
| 构建自       | 外部场所行情源       | 四个输入，其中之一是指数   |
| 用于        | 资金费率基准、标记价格输入 | 保证金、强制平仓、未实现盈亏 |
| 是否反映本所订单簿 | 否             | 是，部分反映         |

正因为把两者分开，标记价格才能反映本地状况——本交易场所上真实存在的溢价或折价——同时又不至于只反映本地状况。

<Warning>
  这些机制限定的是单一数据源能把指数推多远，它们并不能让指数正确。在全市场范围的价格错位中，或者在数家主要场所协同推动的行情中，指数会跟着市场走——因为到那个地步，它不是被操纵，而是在如实报告。参见[风险披露](/zh/protocol/security/risks)。
</Warning>

<h2 id="where-to-go-next">
  后续阅读
</h2>

<CardGroup cols={2}>
  <Card title="标记价格" href="/zh/trading/mark-price">
    指数如何变成那个主宰你仓位的数字。
  </Card>

  <Card title="资金费率" href="/zh/trading/funding">
    标记价格与指数之间的差距如何定价与结算。
  </Card>

  <Card title="预言机" href="/zh/protocol/architecture/oracle">
    共识内的认证，以及为什么价格可用性会限制出块。
  </Card>

  <Card title="风险披露" href="/zh/protocol/security/risks">
    还剩下哪些价格风险，以及它们可能带来的代价。
  </Card>
</CardGroup>
