> ## 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/index-price)。

它单独成为一个构造，理由很窄，但很重要：强平如果由本交易场所的最新成交触发，那么任何能在薄簿上打出一笔成交的人，都能强平别人的仓位。标记价格的设计目标就是：任何单一来源——包括本交易场所自己的订单簿——都没法独自把它推远。

<h2 id="four-prices-one-median">
  四个价格，取中位数
</h2>

<div className="dg" data-dg="mark-price-median">
  <div className="dg-c" style={{aspectRatio:"720 / 308"}}>
    <svg className="dg-w" viewBox="0 0 720 308" aria-hidden="true">
      <path className="dg-wire dg-soft" d="M 305.00 37.00 L 348.23 127.23" />

      <path className="dg-head" d="M 351.00 133.00 L 344.27 129.13 L 352.20 125.33 Z" />

      <path className="dg-wire dg-soft" d="M 305.00 101.00 L 345.75 129.35" />

      <path className="dg-head" d="M 351.00 133.00 L 343.23 132.96 L 348.26 125.73 Z" />

      <path className="dg-wire dg-soft" d="M 305.00 165.00 L 345.75 136.65" />

      <path className="dg-head" d="M 351.00 133.00 L 348.26 140.27 L 343.23 133.04 Z" />

      <path className="dg-wire dg-soft" d="M 305.00 229.00 L 348.23 138.77" />

      <path className="dg-head" d="M 351.00 133.00 L 352.20 140.67 L 344.27 136.87 Z" />

      <path className="dg-wire dg--green" d="M 470.00 133.00 L 499.60 133.00" />

      <path className="dg-head dg--green" d="M 506.00 133.00 L 499.60 137.40 L 499.60 128.60 Z" />
    </svg>

    <div className="dg-b dg--sky" style={{left:"0.0000%",top:"3.2468%",width:"41.6667%",height:"17.5325%"}}><span className="dg-t">预言机 + 平滑基差</span><span className="dg-s">外部现货，加上本所基差的 150 秒 EMA</span></div>
    <div className="dg-b dg--blue" style={{left:"0.0000%",top:"24.0260%",width:"41.6667%",height:"17.5325%"}}><span className="dg-t">本所自己的订单簿</span><span className="dg-s">最优买价与最优卖价的中间价</span></div>
    <div className="dg-b dg--yellow" style={{left:"0.0000%",top:"44.8052%",width:"41.6667%",height:"17.5325%"}}><span className="dg-t">预言机 + 资金费基差</span><span className="dg-s">由资金费率推导</span></div>
    <div className="dg-b dg--green" style={{left:"0.0000%",top:"65.5844%",width:"41.6667%",height:"17.5325%"}}><span className="dg-t">外部永续中间价</span><span className="dg-s">其他场所的永续市场</span></div>
    <div className="dg-b dg--brown dg-round" style={{left:"49.4444%",top:"34.0909%",width:"15.2778%",height:"18.1818%"}}><span className="dg-t">中位数</span></div>
    <div className="dg-b dg--green" style={{left:"70.8333%",top:"34.0909%",width:"29.1667%",height:"18.1818%"}}><span className="dg-t">标记价格</span><span className="dg-s">保证金 · 强制平仓 · 未实现盈亏</span></div>
    <div className="dg-free dg-mid" style={{left:"0.0000%",top:"88.3117%",width:"100.0000%"}}><div className="dg-n">中位数就是全部的防御：要推动它，四个刻意造得互不相似的输入里，你至少得推动两个。</div></div>
  </div>
</div>

中位数就是全部的防御。要推动中位数，四个独立输入里你至少得推动两个——而这些输入是刻意造得互不相似的：一个是外部现货，一个是本所自己的订单簿，一个由资金费率推导，一个来自外部永续市场。攻击者就算有能力扭曲其中一个，也什么都改变不了。

<h3 id="price-1-oracle-plus-a-smoothed-basis">
  价格 1 —— 预言机加平滑基差
</h3>

$$
P_1 = \text{指数价格} + \mathrm{EMA}_{150s}\!\left(\text{本所中间价} - \text{指数价格}\right)
$$

它跟踪的是本交易场所相对外部市场是否持续存在溢价或折价。中间价取最优买价与最优卖价的平均。

平滑正是它安全的地方。原始基差会在有人拉宽或者击穿订单簿的那一瞬间跳动；150 秒的指数移动平均意味着操纵者得把这个扭曲维持几分钟，而不是一个区块，而这要对所有跟他成交的人付出真金白银。

想复现这套计算的人，有两个细节要注意。EMA 里的经过时间取自**区块时间戳**，不是墙上时钟——这样各节点才能一致。另外，在一次异常长的间隔之后，经过时间很大，均值会直接跳向当前值，不再慢慢爬；暂停后恢复时，这正是正确的行为。

**平滑到底做了什么**。设想本所价格持续高于指数，基差从 0 一路走到 5，然后停在那里：

| 经过时间 | 基差样本 |    EMA |
| ---: | ---: | -----: |
|   0s |    0 | 0.0000 |
|  20s |    1 | 1.0000 |
|  60s |    2 | 1.7231 |
|  90s |    3 | 2.2319 |
| 120s |    4 | 2.8107 |
| 150s |    5 | 3.4360 |
| 210s |    5 | 4.1189 |
| 300s |    5 | 4.6189 |

5 点的基差持续五分钟，EMA 只走到 4.62，走不到 5。这段滞后就是保护：攻击者把订单簿拉离指数，就得拉住好几分钟、实打实地花钱，标记价格还是走不满全程；真实的重新定价则会一直持续下去，很快就足额到位，标记价格也就不会脱离实际。

上面每一个数字都是按已公开的公式算出来的。它可以复现——把公式公开，图的正是这个。

<h3 id="price-2-this-venues-own-book">
  价格 2 —— 本所自己的订单簿
</h3>

$$
P_2 = \operatorname{median}\!\left(\text{最优买价},\; \text{最优卖价},\; \text{最新成交价}\right)
$$

这是对本地正在发生什么最直接的读数；取中位数而不取单一值，挡掉了两种常见的扭曲：单笔异常成交推不动它，一时的单边订单簿也推不动它。

<h3 id="price-3-oracle-plus-funding-basis">
  价格 3 —— 预言机加资金费基差
</h3>

$$
P_3 = \text{指数价格} \times \left(1 + F_{\text{last}} \times t_{\text{next}}\right)
$$

永续合约偏离现货的方式，可以用资金费率来解释。这个价格不去观测这层关系，而是用资金费率把它重建出来，因此成了对另外两个“观测型”价格的独立校验。

注意它的形态：随着资金费结算临近，这项调整逐渐衰减，在扣费那一刻归零。这与市场自身表现出的收敛是同一回事。

<h3 id="price-4-external-perpetual-markets">
  价格 4 —— 外部永续市场
</h3>

$$
P_4 = \sum_i w_i \cdot \text{中间价}_i , \qquad w_i = \frac{V_i}{\sum_j V_j}
$$

它和由现货构建的指数价格刻意拉开距离。永续市场自带基差，也有自己的资金费动态；把它们纳进来，标记价格反映的就是正在被交易的这个工具本身，不只是它的标的。权重按参考场所的 24 小时成交量分配，纳入哪些场所可配置。

<h2 id="update-timing">
  更新时机
</h2>

标记价格跟着指数价格一起更新——大约每三秒一次，而且在**同一区块内、排在指数之后**。顺序很重要：标记价格如果算在它的指数前面，从构造上就注定慢一拍。

EMA 分量每区块采样一次，其余部分按指数的节奏重算。指数要是六秒没更新，标记价格照样更新，不跟着一起变陈旧。

<h2 id="when-inputs-are-missing">
  输入缺失时
</h2>

这套设计按既定步骤往下降级，不会直接失效。

| 有效输入数  | 行为                                            |
| ------ | --------------------------------------------- |
| **4**  | 取四个的中位数                                       |
| **3**  | 取剩下三个的中位数                                     |
| **2**  | 引入第五个价格：本所订单簿中位数的 30 秒 EMA。标记价格取它与其余仍有效输入的中位数 |
| **≤1** | 触发严重告警；沿用最后一个有效的标记价格                          |

只剩两个输入的情形值得弄明白。系统没有退回单一来源——那恰恰是把中位数机制本要防住的那份控制权拱手交出去——而是把自己的订单簿做 30 秒平滑，造出第三个输入。窗口比正常运行时的 150 秒短，因为降级状态下响应速度更要紧；但又足够长，单笔成交仍然左右不了它。

<h2 id="cold-start">
  冷启动
</h2>

市场刚上市时，四个输入里有三个坍缩成指数价格：平滑基差从零开始，资金费基差从零开始，本所订单簿还没有历史。这三者的中位数就是指数价格。

所以新上市的市场按自己的指数价格标记，要等真实交易积累起来才开始分化——这是正确的起点，因为这时候还没有任何本场所特有的信息可反映。

<Warning>
  标记价格**抗**操纵，但不是不可操纵。如果构成它的那些外部市场一起动——因为一次真实的价格错位，或者数家场所协同的行动——中位数会跟着一起动。中位数限定的是任何单一来源能做到什么；它无法凭空造出市场并不具备的信息。参见[风险披露](/zh/protocol/security/risks)。
</Warning>

<h2 id="where-this-is-used">
  它被用在哪里
</h2>

| 用途                                      | 是否使用标记价格          |
| --------------------------------------- | ----------------- |
| 未实现盈亏                                   | 是                 |
| 保证金要求与强平触发                              | 是                 |
| [条件单](/zh/trading/conditional-orders)触发 | 可选——另一选项是最新成交价    |
| [资金费率](/zh/trading/funding)溢价           | 是                 |
| 成交执行                                    | **否**——成交按订单簿价格发生 |

最后一行是需要内化的那条。标记价格从不决定你为一笔成交付多少钱，它决定的是你的未平仓位*值*多少钱——这是另一个问题，也正是决定你能否保住这个仓位的那个问题。

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

<CardGroup cols={2}>
  <Card title="指数价格" href="/zh/trading/index-price">
    标记价格所锚定的外部基准。
  </Card>

  <Card title="强制平仓" href="/zh/trading/liquidations">
    标记价格向不利方向移动、侵蚀你的保证金时会发生什么。
  </Card>

  <Card title="资金费率" href="/zh/trading/funding">
    价格 3 所重建的那套溢价机制。
  </Card>

  <Card title="预言机" href="/zh/protocol/architecture/oracle">
    指数价格如何产生，以及如何在共识中被认证。
  </Card>
</CardGroup>
