# Как рассчитывается почасовая ставка фандинга Hyperliquid

> Hyperliquid рассчитывает восьмичасовой эквивалент ставки из премии по impact-ценам и фиксированной процентной части, а затем каждый час проводит одну восьмую. Выплата считается от позиции по oracle price, а текущие, прогнозные и исторические данные читаются разными запросами Info API.

- Источник: https://papaproxy.net/ru/blog/hyperliquid-funding-rate.php
- Опубликовано: 2026-08-07
- Автор: Alex Young
- Рубрика: API и данные · Блог PapaProxy.net

---

## Ключевые выводы

- Hyperliquid использует формулу в восьмичасовом выражении, но каждый час проводит одну восьмую; при положительной ставке платят лонги, при отрицательной — шорты.
- Премия считается по impact bid/ask относительно oracle price, снимается каждые пять секунд и усредняется за час; простого `(mark - oracle) / oracle` в формуле нет.
- Фиксированная процентная часть равна `0,01%` за 8 часов, clamp ограничен ±`0,05%`, а общий funding отдельно ограничен `4%` в час.
- Денежный поток считается как размер позиции × oracle price × часовая ставка, поэтому плечо меняет его относительный размер к марже, но не номинальную базу расчёта.
- Для текущих ставок используйте `metaAndAssetCtxs`, для прогноза — `predictedFundings`, для истории рынка — `fundingHistory`, для фактических начислений аккаунта — `userFunding`.

## Почему выплаты происходят каждый час

Hyperliquid одновременно использует два временных масштаба. Формула определена как восьмичасовая для совместимости с привычной моделью рынков бессрочных контрактов, но фактически площадка каждый час проводит одну восьмую вычисленного значения.

Если восьмичасовой эквивалент равен `0,01%`, на одно часовое начисление приходится `0,00125%`. Сумма автоматически прибавляется к балансу либо вычитается из него. Hyperliquid описывает фандинг как перевод непосредственно между сторонами позиции и не взимает с него отдельную комиссию.

Знак показывает направление платежа. При положительной ставке лонги платят шортам, при отрицательной — шорты лонгам.

Сумма рассчитывается от номинала позиции, а не от внесённой маржи:

TextКопировать код

```text
выплата = размер позиции × oracle price × часовая ставка
```

Поэтому плечо увеличивает относительное влияние фандинга на маржу, но не умножает саму ставку, применяемую к номиналу. Для перевода размера позиции в денежное выражение используется oracle price, а не mark price.

## Формула использует impact-цены, а не mark price

Базовая формула выглядит так:

TextКопировать код

```text
F = P + clamp(I - P, -0.0005, 0.0005)
```

`I` — фиксированная процентная часть `0,0001`, то есть `0,01%` за восемь часов. `P` — средняя премия.

Ключевой нюанс состоит в том, откуда берётся `P`. Hyperliquid не использует простое `(mark price - oracle price) / oracle price`. Вместо этого площадка смотрит на impact execution prices:

TextКопировать код

```text
impact_price_difference =
    max(impact_bid_px - oracle_px, 0)
  - max(oracle_px - impact_ask_px, 0)

premium = impact_price_difference / oracle_price
```

`impact_bid_px` и `impact_ask_px` — средние цены исполнения заданного номинала по bid- и ask-стороне книги. В актуальной спецификации impact notional составляет 20 000 USDC для BTC и ETH и 6 000 USDC для остальных стандартных бессрочных контрактов.

Премия снимается каждые пять секунд, после чего значения усредняются за час. Поэтому краткий скачок не становится всей ставкой, а тонкая книга способна создать заметную премию даже при небольшом расхождении mark и oracle.

У clamp есть ещё одно практическое следствие. Пока средняя премия находится между `-0,04%` и `+0,06%`, результат остаётся на фиксированных `0,01%` за восемь часов.

Например, при средней премии `+0,08%`:

TextКопировать код

```text
P = 0.0008
I = 0.0001
I - P = -0.0007
clamp(I - P) = -0.0005

F = 0.0003
  = 0.03% за 8 часов

часовая выплата = 0.03% / 8
                = 0.00375%
```

При номинале позиции 100 000 USDC это соответствует 3,75 USDC за один час при условии, что вычисленная ставка сохранилась на этом уровне. Это пример механики, а не прогноз.

Отдельно действует верхнее ограничение в 4% за час. В документации указано, что этот cap и часовой период выплаты не зависят от конкретного актива.

## Что добавляет фиксированная процентная часть

Фиксированная часть равна `0,01%` за восемь часов, то есть `0,00125%` в часовом выражении до влияния премии. Hyperliquid связывает её с разницей стоимости заимствования USD и базового криптоактива.

Внутри диапазона clamp премия полностью сокращается:

TextКопировать код

```text
P + (I - P) = I
```

Если средняя премия уходит за границу диапазона, clamp может компенсировать только `0,05%` разницы. Остаток начинает двигать итоговую ставку.

При положительном результате платит лонг, получает шорт. При отрицательном — наоборот. Поэтому направление устойчивой премии важнее самого факта, что фиксированная процентная часть положительная.

## Как читать ставки через Info API

У Hyperliquid нет одного универсального запроса для всех данных о фандинге. Текущая ставка, прогноз, рыночная история и фактические начисления кошелька читаются разными типами запросов к `POST https://api.hyperliquid.xyz/info`.

| Что нужно | Тип запроса | Поля |
| --- | --- | --- |
| Текущая ставка по perpetuals | `metaAndAssetCtxs` | `funding`, `premium`, `oraclePx`, `markPx`, `impactPxs`, `openInterest` |
| Прогноз следующей выплаты по площадкам | `predictedFundings` | coin → venue → `fundingRate`, `nextFundingTime` |
| История ставок рынка | `fundingHistory` | `coin`, `fundingRate`, `premium`, `time` |
| Фактические начисления кошелька | `userFunding` | `delta.fundingRate`, `delta.szi`, `delta.usdc`, `time` |

Ответ `predictedFundings` имеет вложенную структуру:

JSONКопировать код

```json
[
  [
    "AVAX",
    [
      [
        "BinPerp",
        {
          "fundingRate": "0.0001",
          "nextFundingTime": 1733961600000
        }
      ],
      [
        "HlPerp",
        {
          "fundingRate": "0.0000125",
          "nextFundingTime": 1733958000000
        }
      ],
      [
        "BybitPerp",
        {
          "fundingRate": "0.0001",
          "nextFundingTime": 1733961600000
        }
      ]
    ]
  ]
]
```

Сравнивать эти цифры без нормализации нельзя. Разные площадки могут использовать разные периоды расчёта и выплаты, поэтому сначала приведите ставки к одному часовому или восьмичасовому масштабу.

Для `fundingHistory` обязательны `coin` и `startTime` в миллисекундах. `endTime` необязателен и включается в диапазон. Общие правила Info API ограничивают time-range ответы 500 элементами, поэтому длинную историю нужно получать постранично, двигая `startTime` от последней полученной точки.

Есть и ограничение для HIP-3. `metaAndAssetCtxs` позволяет выбрать конкретный perp DEX, а исторические данные доступны для DEX-qualified названий рынков. `predictedFundings` на текущий момент документирован только для первого perp DEX.

Минимальный Python-клиент:

PythonКопировать код

```python
import time
import requests

INFO = "https://api.hyperliquid.xyz/info"
session = requests.Session()

def post(payload):
    r = session.post(INFO, json=payload, timeout=10)
    r.raise_for_status()
    return r.json()

def current_funding():
    meta, contexts = post({"type": "metaAndAssetCtxs"})
    names = [asset["name"] for asset in meta["universe"]]

    return {
        coin: {
            "funding": ctx["funding"],
            "premium": ctx.get("premium"),
            "oraclePx": ctx.get("oraclePx"),
            "markPx": ctx.get("markPx"),
        }
        for coin, ctx in zip(names, contexts)
    }

def predicted_funding():
    rows = post({"type": "predictedFundings"})

    return {
        coin: {
            venue: details
            for venue, details in venues
            if details is not None
        }
        for coin, venues in rows
    }

def funding_history(coin, start_ms, end_ms=None):
    payload = {
        "type": "fundingHistory",
        "coin": coin,
        "startTime": start_ms,
    }

    if end_ms is not None:
        payload["endTime"] = end_ms

    return post(payload)

now_ms = int(time.time() * 1000)

print(current_funding()["BTC"])
print(predicted_funding().get("BTC", {}))
print(
    funding_history(
        "BTC",
        now_ms - 24 * 60 * 60 * 1000,
    )[:3]
)
```

`metaAndAssetCtxs` подходит для текущего дашборда, `predictedFundings` — для сравнения следующей выплаты между площадками, а `fundingHistory` — для графиков и исследования истории.

Пример намеренно не реализует пагинацию, нормализацию периодов других площадок, постоянное хранилище и retry. Эти функции нужны уже полноценному сборщику.

Запросы расходуют REST-бюджет. Большинство документированных Info-запросов сейчас имеют weight 20 в общем лимите 1 200 весов в минуту на IP. Для `fundingHistory` и `userFunding` дополнительно начисляется единица веса на каждые 20 элементов ответа.

## Как фактический фандинг попадает в состояние аккаунта

Начисления записываются в HyperCore как часть состояния аккаунта, а не как отдельная комиссия площадки. Реализованные события конкретного адреса можно получить через `userFunding`.

Пример записи:

JSONКопировать код

```json
{
  "delta": {
    "type": "funding",
    "coin": "ETH",
    "usdc": "-3.625312",
    "szi": "49.1477",
    "fundingRate": "0.0000417"
  },
  "time": 1681222254710,
  "hash": "0x..."
}
```

Для бухгалтерского учёта важнее всего `delta.usdc`. Отрицательное значение означает списание с аккаунта, положительное — начисление. Исторический денежный поток лучше сверять по этим событиям, а не пытаться восстановить его из текущей или прогнозной ставки.

Отдельная транзакция со стороны трейдера для часового начисления не требуется. Изменение баланса происходит в состоянии HyperCore автоматически.

Это имеет и практическое влияние на риск позиции. В документации по ликвидациям прямо указано, что funding payments могут изменять расчётную цену ликвидации уже открытой позиции.

## Что нужно нормализовать для funding arbitrage

Большая положительная ставка на одной площадке и меньшая ставка на другой ещё не образуют готовую арбитражную возможность. Сначала обе цифры нужно привести к одному периоду и убедиться, что сравниваются выплаты, которые действительно относятся к сопоставимым временным окнам.

Например, нельзя напрямую вычитать часовое значение Hyperliquid из восьмичасового значения другой площадки. `nextFundingTime` показывает ближайшее время выплаты, но период конкретной площадки всё равно нужно брать из её актуальной документации.

Затем появляются издержки исполнения. Для межбиржевой позиции нужно открыть и закрыть обе ноги, поэтому комиссии, spread и slippage способны съесть несколько привлекательных на экране funding periods. Кроме того, прогнозная ставка может измениться до settlement, а сам spread — перевернуться уже после входа.

В коде стоит хранить четыре разных сущности:

TextКопировать код

```text
текущая ставка       → что начисляется сейчас
прогнозная ставка    → что может быть начислено следующим
историческая ставка  → что было зафиксировано рынком
начисление кошелька  → что реально записано на баланс
```

Если смешать их в одной временной серии, funding-arbitrage backtest легко покажет доход, которого невозможно получить при реальном исполнении.

Для одиночного дашборда сначала достаточно программных мер: кешировать метаданные, правильно листать историю и не запрашивать повторно уже известные данные. Если оставшаяся задача — множество независимых collectors, которым нужен постоянный и воспроизводимый egress с раздельными per-IP бюджетами запросов, [прокси для криптопроектов](/ru/individual.php) закрывают именно сетевую часть. Они не меняют формулу Hyperliquid, состояние аккаунта или торговые ограничения площадки.
