Skip to content

Interest rates

XPower Banq uses a piecewise-linear interest rate model with a kink, the same broad design as Compound and Aave. The rate is a function of pool utilization — the fraction of supplied tokens that have been borrowed.

Interest rate curve

The model

Let U be utilization, U* be the optimal utilization (default 90%), and R* be the rate at the kink (default 10%). The base rate is:

R(U)={UR/Uif UUU(1R)(UR)1Uotherwise

The implementation caps R at 200% to bound interest in extreme post-kink scenarios.

The borrow and supply rates derive from the base rate by adding/subtracting the spread (default s = 10%):

  • Borrow rate = base × (1 + s)
  • Supply rate = base × (1 − s)

The 2s difference (default 20% of the base rate) is the protocol's margin.

Why a kink?

Below the kink, rates rise gently. Liquidity providers earn a modest yield; borrowers face manageable costs. The pool is in its normal operating regime.

Above the kink, rates rise steeply. This serves two purposes:

  1. It pushes borrowers to repay (debt becomes expensive), reducing utilization.
  2. It pushes new suppliers into the pool (yield becomes attractive), again reducing utilization.

The kink isn't a hard cap — utilization can exceed U* — but the steep slope discourages that for long.

Default values

ParameterDefaultRange
Optimal utilization (U*)90%0–100%
Rate at kink (R*)10%0–100%
Spread (s)10%0–50%
Maximum rate cap200%(compile-time)

All four are governable via lethargic governance, so they can change over time but only slowly.

How rates apply

Rates are quoted as annualised continuous compounding rates (in WAD precision, 18 decimals). They're not block-by-block discrete rates — interest accrues continuously based on elapsed time.

When you interact with the protocol, the global index updates from your last touchpoint to now using the elapsed time and the rate active over that period. If utilization changed during that window, the rate is integrated piecewise.

What you actually pay (or earn)

For most users, the easy answer:

  • Look up the current borrow APY and current supply APY in the app at app.xpowerbanq.com.
  • These are the current rates. They will change as utilization changes.
  • For a quick estimate: borrow APY ≈ R(U) × 1.10, supply APY ≈ R(U) × 0.90.

Locked positions adjust this — locked suppliers earn more, locked borrowers pay less. See Bonus and malus.

Locked-position adjustments

The lock bonus/malus modifies effective rates based on a user's lock ratio λ ∈ [0, 1]:

  • Locked supplier effective rate ≈ base × (1 − s + s · λ) → at full lock, supply rate approaches the base rate.
  • Locked borrower effective rate ≈ base × (1 + s − s · λ) → at full lock, borrow rate approaches the base rate.

At full lock adoption, the effective spread compresses toward zero — the protocol margin trades off against incentivising lock adoption.

Why this design?

The kinked model is well-understood, easy to reason about, and works well in practice. Alternatives (Euler's reactive controller, dynamic models) have stronger theoretical properties but are harder to predict.

XPower Banq's contribution isn't a new rate model; it's the log-space accumulation of interest over time, which avoids overflow in the index storage and improves precision. This is invisible to users — your APYs are quoted exactly the same way as in any other protocol — but it matters for protocol longevity. See Log-space index if you want the gory details.

Where to go next