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

# Funding Rates

> Understand when you pay funding, when you receive it, and how it is calculated.

export const LearnStyles = () => {
  useEffect(() => {
    const revealReference = () => {
      let id;
      try {
        id = decodeURIComponent(window.location.hash.slice(1));
      } catch {
        return;
      }
      if (!id) return;
      const target = document.getElementById(id);
      if (!target) return;
      let opened = false;
      for (let parent = target.parentElement; parent; parent = parent.parentElement) {
        if (parent.tagName === "DETAILS" && !parent.open) {
          parent.open = true;
          opened = true;
        }
      }
      if (opened) target.scrollIntoView({
        block: "start"
      });
    };
    const frame = requestAnimationFrame(revealReference);
    window.addEventListener("hashchange", revealReference);
    return () => {
      cancelAnimationFrame(frame);
      window.removeEventListener("hashchange", revealReference);
    };
  }, []);
  return <style>{`
.monaco-learn {
  --bg:#fff;
  --fg:#18261e;
  --body:#465149;
  --muted:#69756d;
  --line:#dce3dd;
  --accent:#233329;
  --callout:#f0f5ef;
  --amber:#9a6418;
}
.dark .monaco-learn {
  --bg:#0e1410;
  --fg:#edf3ed;
  --body:#c3cdc5;
  --muted:#9daa9f;
  --line:#344239;
  --accent:#c4dfc8;
  --callout:#1c2b20;
  --amber:#edc680;
}
.monaco-learn [data-as=p] {
  display: block;
  margin: 1.25em 0;
}
.monaco-learn .small-label {
  display: block;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 8px;
}
.monaco-learn .example,
.monaco-learn .formula {
  margin: 24px 0;
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--callout);
}
.monaco-learn .example strong {
  display: block;
  font-size: 19px;
  color: var(--fg);
}
.monaco-learn .example p {
  margin: 10px 0 0;
}
.monaco-learn .formula {
  font-family: monospace;
  overflow-x: auto;
}
.monaco-learn .callout {
  margin: 24px 0;
  padding: 18px 20px;
  border-left: 3px solid var(--accent);
  background: var(--callout);
  border-radius: 0 8px 8px 0;
}
.monaco-learn .callout.warning {
  border-color: var(--amber);
}
.monaco-learn .primary-link {
  display: inline-block;
  padding: 10px 18px;
  border-radius: 8px;
  background: #233329;
  color: white;
  text-decoration: none;
}
.monaco-learn .account-cards,
.monaco-learn .referral-levels {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin: 24px 0;
}
.monaco-learn .account-cards > div,
.monaco-learn .referral-levels > div {
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.monaco-learn .account-cards h3 {
  margin: 0 0 8px;
  font-size: 16px;
}
.monaco-learn .account-cards p {
  margin: 0;
  font-size: 14px;
}
.monaco-learn .referral-levels {
  text-align: center;
}
.monaco-learn .referral-levels strong {
  display: block;
  font-size: 32px;
  color: var(--accent);
}
.monaco-learn .referral-levels span {
  display: block;
  font-size: 12px;
}
.monaco-learn .flow {
  display: flex;
  gap: 12px;
  align-items: center;
  margin: 24px 0;
}
.monaco-learn .flow > div {
  flex: 1;
  min-width: 0;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.monaco-learn .flow b {
  display: block;
  color: var(--muted);
}
.monaco-learn .flow p {
  font-size: 13px;
  margin: 8px 0 0;
}
.monaco-learn .learn-reference {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 20px;
  margin-top: 36px;
}
.monaco-learn .learn-reference > summary {
  cursor: pointer;
  font-weight: 600;
  color: var(--accent);
}
.monaco-learn .fee-controls {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 18px;
}
.monaco-learn .fee-tabs {
  display: flex;
  gap: 8px;
}
.monaco-learn .fee-controls button {
  cursor: pointer;
  border: 1px solid var(--line);
  border-radius: 7px;
  padding: 8px 12px;
  font-size: 13px;
  color: var(--fg);
}
.monaco-learn .fee-tabs button[aria-selected=true] {
  background: var(--callout);
  font-weight: 600;
}
.monaco-learn .fee-panel {
  overflow-x: auto;
}
.monaco-learn .fees-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
  font-variant-numeric: tabular-nums;
}
.monaco-learn .fees-table th,
.monaco-learn .fees-table td {
  padding: 12px;
  text-align: right;
  border-bottom: 1px solid var(--line);
  white-space: nowrap;
}
.monaco-learn .fees-table th:first-child,
.monaco-learn .fees-table th:nth-child(2),
.monaco-learn .fees-table td:first-child,
.monaco-learn .fees-table td:nth-child(2) {
  text-align: left;
}
.monaco-learn .fees-table caption {
  text-align: left;
  font-weight: 600;
  margin-bottom: 10px;
}
.monaco-learn button:focus-visible,
.monaco-learn input:focus-visible,
.monaco-learn summary:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 4px;
}
@media (max-width: 600px) {
  .monaco-learn .account-cards {
    grid-template-columns: 1fr;
  }
  .monaco-learn .flow {
    flex-direction: column;
    align-items: stretch;
  }
  .monaco-learn .flow > span {
    display: none;
  }
  .monaco-learn .referral-levels > div {
    padding: 14px 6px;
  }
  .monaco-learn .referral-levels span {
    font-size: 10px;
  }
}
@media print {
  .monaco-learn .fee-controls {
    display: none;
  }
  .monaco-learn .fee-panel[hidden] {
    display: block;
    margin-top: 20px;
  }
}
.monaco-learn .referral-calculator {
  margin: 30px 0;
  border: 1px solid var(--line);
  border-radius: 13px;
  padding: 25px;
  background: var(--bg);
}
.monaco-learn .calculator-heading {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
}
.monaco-learn .calculator-heading h3 {
  font-size: 19px;
  margin: 0;
  letter-spacing: -.025em;
}
.monaco-learn .calculator-heading .small-label {
  margin-bottom: 5px;
}
.monaco-learn .unlimited-flag {
  display: inline-flex;
  align-items: center;
  border: 1px solid var(--line);
  border-radius: 30px;
  background: var(--callout);
  padding: 4px 9px;
  font-size: 10px;
  color: var(--accent);
  white-space: nowrap;
}
.monaco-learn .calculator-intro {
  font-size: 13px;
  line-height: 1.7;
  margin: 13px 0 25px;
}
.monaco-learn .calculator-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
  gap: 26px;
  align-items: start;
}
.monaco-learn .referral-control {
  margin: 0 0 20px;
}
.monaco-learn .slider-label {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
}
.monaco-learn .slider-label label {
  font-size: 13px;
  font-weight: 600;
  line-height: 1.5;
  color: var(--fg);
}
.monaco-learn .slider-label label span {
  display: block;
  font-weight: 400;
  font-size: 10px;
  color: var(--muted);
  margin-top: 2px;
}
.monaco-learn .slider-label output {
  font-size: 16px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--accent);
  flex: none;
}
.monaco-learn .referral-calculator input[type=range] {
  display: block;
  appearance: none;
  -webkit-appearance: none;
  width: 100%;
  height: 24px;
  margin: 0;
  background: transparent;
  cursor: pointer;
  --range-fill:0%;
}
.monaco-learn .referral-calculator input[type=range]::-webkit-slider-runnable-track {
  height: 5px;
  border-radius: 5px;
  background:
    linear-gradient(
      to right,
      var(--accent) var(--range-fill),
      var(--line) var(--range-fill));
}
.monaco-learn .referral-calculator input[type=range]::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 17px;
  height: 17px;
  border-radius: 50%;
  background: var(--accent);
  border: 3px solid var(--bg);
  box-shadow: 0 0 0 1px var(--accent);
  margin-top: -6px;
}
.monaco-learn .referral-calculator input[type=range]::-moz-range-track {
  height: 5px;
  border-radius: 5px;
  background: var(--line);
}
.monaco-learn .referral-calculator input[type=range]::-moz-range-progress {
  height: 5px;
  border-radius: 5px;
  background: var(--accent);
}
.monaco-learn .referral-calculator input[type=range]::-moz-range-thumb {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--accent);
  border: 3px solid var(--bg);
  box-shadow: 0 0 0 1px var(--accent);
}
.monaco-learn .slider-scale {
  display: flex;
  justify-content: space-between;
  font-size: 10px;
  line-height: 1.5;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.monaco-learn .referral-calculator .calculator-help {
  font-size: 10px;
  line-height: 1.7;
  color: var(--muted);
  margin: 6px 0 0;
}
.monaco-learn .calculator-inputs > .calculator-help {
  margin: -7px 0 20px;
}
.monaco-learn .volume-control {
  border-top: 1px solid var(--line);
  padding-top: 18px;
  margin-bottom: 0;
}
.monaco-learn .volume-control .slider-label {
  flex-wrap: wrap;
  gap: 4px;
}
.monaco-learn .volume-control label {
  font-size: 12px;
}
.monaco-learn .volume-control output {
  font-size: 17px;
}
.monaco-learn .earn-estimate {
  background: var(--callout);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 23px 20px;
  color: var(--accent);
  min-width: 0;
}
.monaco-learn .estimate-kicker {
  font-size: 10px;
  letter-spacing: .07em;
  text-transform: uppercase;
  font-weight: 600;
}
.monaco-learn .estimate-total,
.monaco-learn .estimate-annual {
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
  line-height: 1.25;
}
.monaco-learn .estimate-total {
  margin: 14px 0 15px;
}
.monaco-learn .estimate-total output {
  font-size: clamp(24px, 2.3vw, 34px);
  font-weight: 600;
  letter-spacing: -.045em;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.monaco-learn .estimate-total span,
.monaco-learn .estimate-annual span {
  font-size: 11px;
  color: var(--muted);
}
.monaco-learn .estimate-annual output {
  font-size: 23px;
  font-weight: 500;
  letter-spacing: -.03em;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.monaco-learn .estimate-breakdown {
  border-top: 1px solid var(--line);
  padding-top: 17px;
  margin-top: 23px;
}
.monaco-learn .breakdown-title {
  display: block;
  font-size: 10px;
  font-weight: 600;
  margin-bottom: 10px;
  color: var(--accent);
}
.monaco-learn .estimate-breakdown > div {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  font-size: 11px;
  margin: 9px 0;
  line-height: 1.5;
}
.monaco-learn .estimate-breakdown > div > span {
  color: var(--body);
}
.monaco-learn .estimate-breakdown output {
  font-variant-numeric: tabular-nums;
  text-align: right;
  overflow-wrap: anywhere;
  min-width: 0;
}
.monaco-learn .earn-estimate p {
  font-size: 10px;
  line-height: 1.7;
  color: var(--muted);
  margin: 20px 0 0;
}
.monaco-learn .calculator-assumptions {
  border-top: 1px solid var(--line);
  margin-top: 24px;
  padding-top: 16px;
  font-size: 12px;
}
.monaco-learn .calculator-assumptions summary {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  list-style: none;
  cursor: pointer;
  color: var(--fg);
  font-weight: 500;
}
.monaco-learn .calculator-assumptions summary > span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 400;
}
.monaco-learn .calculator-assumptions summary::-webkit-details-marker {
  display: none;
}
.monaco-learn .calculator-assumptions p {
  font-size: 11px;
  line-height: 1.8;
  margin: 12px 0 0;
}
.monaco-learn .referral-calculator .calculator-footnote {
  font-size: 10px;
  line-height: 1.8;
  color: var(--muted);
  margin: 13px 0 0;
}
@media (max-width: 600px) {
  .monaco-learn .referral-calculator {
    padding: 20px;
  }
  .monaco-learn .calculator-grid {
    grid-template-columns: 1fr;
    gap: 24px;
  }
  .monaco-learn .calculator-heading {
    gap: 10px;
  }
  .monaco-learn .calculator-heading h3 {
    font-size: 18px;
  }
  .monaco-learn .calculator-intro {
    font-size: 12px;
  }
  .monaco-learn .calculator-heading .small-label {
    font-size: 9px;
  }
  .monaco-learn .slider-label label {
    font-size: 13px;
  }
  .monaco-learn .slider-label output {
    font-size: 18px;
  }
  .monaco-learn .volume-control .slider-label {
    display: block;
  }
  .monaco-learn .volume-control output {
    display: block;
    font-size: 21px;
    margin: 6px 0;
  }
  .monaco-learn .earn-estimate {
    padding: 22px;
  }
  .monaco-learn .estimate-total output {
    font-size: 36px;
  }
  .monaco-learn .estimate-annual output {
    font-size: 27px;
  }
  .monaco-learn .estimate-breakdown > div {
    font-size: 12px;
  }
  .monaco-learn .calculator-assumptions summary {
    flex-wrap: wrap;
    gap: 4px;
  }
}
@media print {
  .monaco-learn .calculator-grid {
    grid-template-columns: 1.2fr 1fr;
  }
  .monaco-learn .referral-calculator {
    break-inside: avoid;
  }
  .monaco-learn .calculator-assumptions > * {
    display: block !important;
  }
  .monaco-learn .calculator-assumptions summary {
    display: flex !important;
  }
}
`}</style>;
};

<LearnStyles />

<div className="monaco-learn">
  Funding is a recurring payment between long and short position holders. It encourages perpetual prices to stay close to the underlying index, despite having no expiry date.

  ## At A Glance

  | Rule | Monaco behavior |
  | - | - |
  | Settlement | Fixed 60-minute windows, aligned to hour boundaries. |
  | Positive funding | Longs pay shorts. |
  | Negative funding | Shorts pay longs. |
  | Who participates | Positions open at the settlement timestamp. |
  | Payment value | Funding rate × position size × mark price. |
  | Protocol share | Monaco takes no part of funding payments. |

  Close a position before settlement and it does not pay or receive funding for that window.

  ## What The Payment Means

  <div className="example"><span className="small-label">Illustrative calculation</span><strong>\$10,000 × 0.01% = \$1</strong><p>For a position worth \$10,000 at the mark, a positive 0.01% settlement rate means a long pays \$1 and a short receives \$1. The position must be open at settlement.</p></div>

  The displayed implied rate is an estimate for the current window. It refreshes with each accepted premium sample, rather than as a continuous real-time stream.

  ## How The Rate Is Set

  Monaco measures the premium or discount using **impact prices**: the average execution prices for buying or selling a specified quote notional through the order book. The input is not the last trade, the best bid/ask, the arithmetic midpoint, or trade VWAP.

  Each accepted sample is first bounded to the maximum funding rate. The bounded samples are then averaged with equal weight across the window, so a sample near settlement counts no more than one at the start. The interest-rate, or carry, component is **zero**. Funding follows the signed premium or discount directly, subject to a cap.

  The cap is a single platform-wide setting, **0.75% per settlement by default**, applied to every market. It is not derived from a market’s margin ladder.

  ## Low-Sample Windows And Downtime

  If too few samples are accepted, the window uses the last settled funding rate. A market with no previous settled rate uses zero. Settlement records include a flag identifying carried rates, along with timestamps, sample counts, and the mark price used for payment.

  <div className="callout">The next funding time is the scheduled boundary. Settlement occurs at or shortly after it while the market is alive. Boundaries that pass during downtime are skipped, not settled retroactively.</div>

  ## Rates And History

  Use the [Markets reference](/developers/markets) for public funding state and history, and [Positions](/developers/positions) for position risk. The full calculation reference retains the impact-price formula, per-sample bounds, uniform weighting, cap, and settlement fields.

  <Accordion title="Full Funding Calculation" id="full-reference" className="learn-reference">
    The funding mechanism is a recurring payment that keeps a perpetual futures market (perp) anchored to its index price. In traditional markets, a dated futures contract (with a fixed term) converges to the underlying spot price at expiry, as arbitrageurs are incentivized to do so. A perp has no fixed expiry, and so, funding rates enable this convergence through payments between long and short position holders.

    <h2 id="funding-mechanics-at-a-glance">Funding Mechanics at a Glance</h2>

    * Funding windows are fixed 60-minute windows aligned to hour boundaries, with payments settled at each boundary
    * The interest-rate (carry) component $I$ is set to 0% (as opposed to the legacy 1bp/8h convention).
    * Impact Bid and Impact Ask prices are sampled throughout the funding window and used to compute the signed funding premium/discount, which is aggregated over the window.
    * If funding is positive, the perp is at a premium to the index, and longs pay shorts. If funding is negative, the perp is at a discount, and shorts pay longs.
    * Funding is exchanged directly between position holders. Monaco does not collect any portion of funding payments.

    This creates an incentive for traders, arbitrageurs, and market makers to bring the perp price back toward the index.

    <h2 id="funding-formula">Funding Formula</h2>

    For market $m$, a funding window ending at time $t$ is computed as:

    $$
    F_m(t) = \operatorname{cap}(\bar{P}_m(t), -F_{\max,m}, F_{\max,m})
    $$

    Where:

    * $F_m(t)$ is the final funding rate applied at settlement
    * $\bar{P}_m(t)$ is the weighted average signed premium or discount over the funding window, computed from samples that are each individually bounded to $\pm F_{\max,m}$ (see [Window Aggregation](#window-aggregation)).
    * $F_{\max,m}$ is the absolute maximum funding rate — a single platform-wide configured bound (0.75% per settlement by default), applied identically to every market
    * $\mathrm{cap(x, a, b)}$ means $\min(\max(x, a), b)$, with $a < b$

    The sign convention is:

    * $F_m(t) > 0$: longs pay shorts.
    * $F_m(t) < 0$: shorts pay longs.

    The cap is a risk bound, not a pricing rule. Inside the cap, every change in the signed premium/discount passes directly into the funding rate. $F_{\max, m}$ is a single platform-wide operational parameter — it is not derived from any market's margin schedule, and every market shares the same bound.

    <h2 id="interest-rate-carry">Interest Rate (Carry)</h2>

    The protocol's funding mechanism sets the interest-rate, or carry, component to zero:

    $$
    I_m(t) = 0
    $$

    Funding is driven purely by the observed premium/discount, rather than a fixed interest-rate assumption.

    Legacy funding formulas often combine premium/discount with an interest-rate anchor, such as:

    $$
    F = P + \mathrm{clamp}(I - P, -0.05\%, 0.05\%)
    $$

    When $(I - P)$ sits inside that clamp band, the final funding rate is pinned to $I$: changes in the premium/discount have no effect exactly where the signal is most informative. Monaco avoids that dead zone by using the signed premium/discount directly and setting carry to zero. This does not mean carry is theoretically irrelevant; it means the mechanism avoids importing a stale universal carry constant.

    <h2 id="impact-prices">Impact Prices</h2>
    Monaco does not use the last traded price, best bid/ask, arithmetic mid-price, or trade VWAP as the premium input. Those values can be stale or easy to distort. Funding should not disappear because a market has no recent trades, nor should it be dominated by a few small prints. Instead, the mechanism asks: if someone tried to buy or sell a specified quote notional $(Q_m)$ at a given moment, what average execution price would they get?

    That produces two "impact prices":

    * **ImpactAsk:** the average execution price to buy $Q_m$ through the ask side of the order book
    * **ImpactBid:** the average execution price to sell $Q_m$ through the bid side of the order book

    The relevant question is where meaningful exposure can be executed relative to the index price. Impact prices answer that from the order book, and are averaged over time.

    <h2 id="premiumdiscount-sample">Premium/Discount Sample</h2>

    At each accepted sampling time $i$, a signed premium/discount sample is computed:

    $$
    P_i =
    \frac{
      \max(0, B_i^{impact} - S_i)
      -
      \max(0, S_i - A_i^{impact})
    }{
      S_i
    }
    $$

    Where:

    * $S_i$ is the index price.
    * $B_i^{impact}$ is the impact bid price.
    * $A_i^{impact}$ is the impact ask price.

    In a well-functioning order book, $\mathrm{ImpactBid} \leq \mathrm{best\ bid} < \mathrm{best\ ask} \leq \mathrm{ImpactAsk}$ for any quote notional $Q_m$. The sample is divided by the index price, so the result is dimensionless and comparable across markets with different price levels.

    <h2 id="window-aggregation">Window Aggregation</h2>

    Every accepted sample is first bounded to the same maximum funding rate that bounds the settled rate:

    $$
    \tilde{P}_i = \operatorname{cap}(P_i, -F_{\max,m}, F_{\max,m})
    $$

    The impact prices behind a sample are read from live resting orders, which can be placed and cancelled at will. Bounding each sample means no single sample — and so no brief burst of resting depth — can contribute more than one window's worth of the maximum rate to the average. A book that genuinely sustains a premium beyond $F_{\max,m}$ still settles at the cap, because every one of its samples contributes the cap.

    The bounded samples are then aggregated over the funding window as a uniformly weighted time average:

    $$
    \bar{P}_m(t) =
    \frac{1}{N}\sum_{i=0}^{N-1} \tilde{P}_i
    $$

    Every accepted sample in the window counts the same, whenever it arrived. A window is a long sequence of samples (720 of them per hour at the default cadence), so an equal weighting both smooths short-lived order book noise and makes the whole window equally expensive to influence — a burst of resting depth placed just before settlement counts no more than the same burst placed at the top of the hour. If a window contains fewer accepted samples than the configured minimum (`FUNDING_MIN_SAMPLES`), the window settles at the last settled funding rate; a market with no previously settled rate settles at zero.

    <h2 id="settlement">Settlement</h2>

    At the end of each window, Monaco applies the funding rate. The payment for a position is:

    $$
    \mathrm{Funding\ Payment} = F_m(t) \times \mathrm{Position\ Size} \times \mathrm{Mark\ Price}
    $$

    Positive funding means longs pay shorts; negative funding means shorts pay longs. Only positions open at the settlement timestamp pay or receive funding; a position closed before settlement is not charged for that window.

    Alongside each settlement, Monaco publishes the final rate $F_m(t)$, the per-unit funding delta it produced, the window's timestamps and accepted-sample count, the reference price (the mark price used for payments), and a `carried` flag marking windows that settled at the carried last rate under the minimum-sample rule, so the rate is fully auditable. The current implied rate for the in-progress window is an estimate refreshed on each accepted premium sample — roughly every sampling interval — rather than a continuous real-time stream. Likewise, `nextFundingTime` is the scheduled window boundary, not a guarantee: settlement lands at or shortly after it while the market is alive, and boundaries that pass during downtime are skipped rather than settled retroactively.

    For integration details, use [Markets](/developers/markets) to query public funding state and funding history, and [Positions](/developers/positions) to monitor your position risk.
  </Accordion>
</div>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.