Interest & Fees
How interest accrues to tranches each epoch, how the performance fee is split between rKSU holders and the protocol, and the rate formats used.
Interest Accrual#
Interest accrues to lending pool tranches on a per-epoch basis. During Step 1 of each clearing, the lending pool mints USDC-IOUs proportional to the tranche interest rates and distributes them to each tranche.
Each tranche has an independently configurable interest rate, set by the Pool Manager via LendingPoolManager.updateTrancheInterestRate(). Interest rate changes take effect after a configurable epoch delay (default: 4 epochs). The Kasu Admin can override this delay.
Interest Rate Format#
Interest rates use 18-decimal precision (INTEREST_RATE_FULL_PERCENT = 1e18 = 100%):
| Value | Interest Rate |
|---|---|
100000000000000000 | 10% per epoch |
10000000000000000 | 1% per epoch |
1000000000000000 | 0.1% per epoch |
100000000000000 | 0.01% per epoch |
The Kasu Admin can set a maximum interest rate via SystemVariables.setMaxTrancheInterestRate().
Performance Fee#
A configurable performance fee is taken from tranche interest during clearing. The fee is calculated as a percentage of the gross interest accrued.
Current configuration: 10% performance fee (FULL_PERCENT = 100_00, value: 10_00)
The performance fee is split between:
| Component | Description |
|---|---|
| Ecosystem Fee | Distributed to KSU token lockers pro-rata by rKSU balance |
| Protocol Fee | Retained by the Kasu Protocol wallet |
The fee split is configured via SystemVariables.setFeeRates(). The performance fee percentage is set via SystemVariables.setPerformanceFee().
Fee Payment Flow#
- During clearing Step 1, the performance fee is calculated on the epoch's interest
- The fee amount is recorded as Owed Fees on the lending pool
- After clearing,
LendingPool.payOwedFees()attempts to pay fees from excess funds - Fees are also deducted when the Pool Funds Manager calls
LendingPoolManager.repayOwedFunds() - The Fee Manager distributes ecosystem fees to the
KSULockingcontract for rKSU holders - Protocol fees are stored in the Fee Manager until claimed by the protocol fee claimer
Percentage Format#
Pool-level percentages (tranche ratios, excess liquidity) use FULL_PERCENT = 100_00 (100% with 2 decimal places):
| Value | Percentage |
|---|---|
10 | 0.1% |
100 | 1% |
1000 | 10% |
1550 | 15.5% |
10000 | 100% |
Contracts Involved#
SystemVariables.sol— Performance fee, fee rates, max interest rate, loyalty thresholdsFeeManager.sol— Fee collection and distribution (ecosystem fees to rKSU holders, protocol fees to claimers)LendingPool.sol— Owed fees tracking, fee payment from excess fundsKSULocking.sol— Ecosystem fee distribution to lockers