> For the complete documentation index, see [llms.txt](https://ch-docs.aftermath.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ch-docs.aftermath.finance/yong-xu-he-yue/architecture/funding.md).

# 资金费率

## 什么是资金费率？

资金费率是交易者之间直接交换的周期性付款，主要作用是让永续合约价格贴近标的资产的现货价格。

与交易手续费不同，资金费用是点对点的。交易所不收取这笔费用；它在持有多头仓位和持有空头仓位的用户之间直接划转。

### 工作原理

资金费率根据订单簿价格（永续合约价格）与预言机价格（资产的真实世界价格）之间的偏离计算。

* 正资金费率（看涨行情）：永续合约价格\_高于\_预言机价格时，多头向空头支付。这会激励交易者卖出，推动价格向现货价格回落。
* 负资金费率（看跌行情）：永续合约价格\_低于\_预言机价格时，空头向多头支付。这会激励交易者买入，推动价格向现货价格回升。

因此，资金费用是一种激励机制，促使永续合约价格与其标的保持一致。

{% hint style="info" %}
Aftermath 不对这些付款收取任何费用。
{% endhint %}

#### 资金费率间隔与折算

资金费用**按小时支付**，但界面显示和计算的费率基于 **8 小时周期**。

* \*\*显示费率：\*\*8 小时费率（例如 0.01%）。
* \*\*每小时支付：\*\*用户每小时支付/收取计算所得费率的 1/8。

{% hint style="info" %}
资金费率因市场而异。请在前端对应市场核实各自的资金费率频率和周期。
{% endhint %}

### 与中心化交易所的区别

在中心化交易所，资金费用每 8 小时结算并重置一次——所有仓位从那一刻重新开始计算。Aftermath 采用累计模型：资金费率永不重置，每个仓位从开仓那一刻起持续累计资金费用。

界面上显示的市场资金费率是对下一周期的估计，由过去 8 小时的价格偏离计算得出，并不代表您的具体仓位当前正在累计的费率。

每个仓位都存储着其上次结算时的累计资金费率（CF）。您的未实现资金费用按该存储值计算——而不是按当前的市场估计值。这意味着可能出现这种情况：市场显示多头向空头付费，而一个在空头向多头付费时期开立的仓位却显示相反方向。两个数值在数学上都正确：市场费率是对下一周期的前瞻估计，而您的仓位反映的是实际的历史累计。

## 未实现资金费用

未实现资金费用是指已在仓位上累计、但尚未结算的资金费用。这一机制让合约能够高效地跟踪累计的资金费用义务。

为了节省 Gas 和计算量，协议不会每秒更新每个用户的余额，而是跟踪一个全局累计资金费率（$$CF$$）值。您的个人义务通过比较当前的全局 $$CF$$ 值与您的仓位上次被触及（结算）时的值来计算。

仓位未实现资金费用的公式为：

$$
UnrealizedFundings(p) = BaseAmount(p) \* (CF - LCF(p)),
$$

其中 𝐶𝐹 ∈ 𝑅 是市场当前的累计资金费率，𝐿𝐶𝐹 ( 𝑝 ) ∈ 𝑅 是该仓位上次在该市场结算资金费用时的累计值。

换句话说，合约维护一个累计资金费率，每当某个仓位结算资金费用时，就把当时的累计值存入该仓位。

## 资金费率的计算

资金费率决定多头与空头之间付款的速度，由盘口价格（市场价格）与指数价格（预言机价格）之差驱动。

一个市场的资金费率为：

$$
Funding =
\text{TWA}\_{\nu,\omega}(BookPrice - IndexPrice)
\frac{ f }{ \rho }
$$

*TWA* 𝜈 , 𝜔 ( 𝑋 ) ∈ 𝑅 是时间加权平均值（见下文 TWA 一节）。参数 𝜈 和 𝜔 在市场创建时设定，之后也可由协议管理员调整。资金费率的常用取值为 𝜈=1 𝑚 和 𝜔=1 ℎ 。

资金费率频率 𝑓 是两次资金费率更新之间的时间跨度，例如 1 小时。换言之，前述某市场的累计资金费率（𝐶 𝐹）每隔 𝑓 更新一次。

资金费率周期 𝜌 是资金费用（盘口价格与指数价格之差）被支付所覆盖的时间段。

资金费率周期设得过长，可能导致永续合约价格严重偏离指数——因为基差套利者需要承担更长时间的基差风险，把价格拉回的动力就更弱。周期设得过短，则可能导致没人愿意交易该永续合约——一旦资金费率翻转方向，代价过于惩罚性。

{% hint style="info" %}
我们还默认把差值 𝐵𝑜𝑜𝑘 𝑃𝑟𝑖𝑐𝑒 − 𝐼𝑛𝑑𝑒𝑥 𝑃𝑟𝑖𝑐𝑒 限制在 𝐼𝑛𝑑𝑒𝑥 𝑃𝑟𝑖𝑐𝑒 的最多 5%（按绝对值计）——该上限是每个市场单独的参数。这是为了避免资金费率过于惩罚性。
{% endhint %}

采样资金费率后（每个 𝑓 间隔一次），市场的累计资金费率简单地更新为：

$$
CF \gets CF + Funding
$$

{% hint style="info" %}
𝐶 𝐹 在市场创建时初始化为 0
{% endhint %}

实际上市场会跟踪两个累计资金费率——多头一个、空头一个。常规资金费率更新会让两者移动相同的量，因此它们平时表现得就像上文描述的单一 $$CF$$。只有当清算产生的坏账被分摊时它们才会分叉——分摊通过对手方向的累计资金费率施加。详情见[清算](/yong-xu-he-yue/architecture/liquidations.md)。

## TWA（时间加权平均值）

时间加权平均（TWA）机制确保用于资金费率的价格数据平滑且抗操纵。TWA 采用惰性（按需）更新，而不是每个区块都更新。

上文使用的 TWA 会在用户于某市场执行以下任一操作时更新：

* 开启交易会话（任何下单或清算都会开启会话，因此常规交易活动会让 TWA 保持新鲜）
* 触发止损触发单的执行
* 显式调用 `update_funding` 函数
* 显式调用 `update_twaps` 函数

`update_funding` 和 `update_twaps` 都是无许可的——任何人可以随时调用。

TWA 更新公式是一个加权平均：

$$
(TWA\_{\nu,\omega}(X), t\_{\text{last}}) \leftarrow \left( \frac{X\_t \cdot (t - t\_{\text{last}}) + TWA\_{\nu,\omega}(X) \cdot (t\_{\text{last}} - (t - \omega))}{\omega}, t \right) \quad \textbf{if } t \ge t\_{\text{last}} + \nu
$$

𝑡 是当前时间戳，由链上的 `Clock` 对象提供。𝑡 last 是上一次计算 TWA 的时间戳。𝑋 𝑡 是在时间 𝑡 观测到的随机变量，例如经过限幅的盘口价格与指数价格之差。

𝜔 是 **TWAP 周期**，控制 TWA 的平滑程度：𝜔 越大，历史观测值的权重越高。

𝜈 是 TWAP 频率，控制 TWA 的更新频率。例如若 𝜈=5 𝑠，则 TWA 更新后，接下来 5 秒内的交易都会使用同一个值。\\

{% hint style="info" %}
TWA 总是在资金费率之前更新
{% endhint %}
