Interest Rate Model

The platform uses a compounding interest model similar to Aave.

Each asset defines interest rate configuration with the following values:

  • target_utilization - the utilization rate targeted by the model, e.g. 80% borrowed comparing to the total supplied.

  • target_utilization_r - the constant to use as a base for computing compounding APR at the target utilization.

  • max_utilization_r - the constant to use as a base for computing compounding APR at the 100% utilization.

  • reserve_ratio - the percentage of the acquired interest reserved for the platform.

Based on these values we define 3 points of utilization: 0%, target utilization and 100%. For each of these points we have the r constant: 1.0, target_utilization_r and max_utilization_r respectively.

To compute the APR, we can use the following formula:

1 + APR = r ** MS_PER_YEAR, where MS_PER_YEAR is the number of milliseconds in a year equal to 31536000000.

Based on the current supplied, reserved and borrowed balances, the current utilization is defined using the following formula:

utilization = borrowed / (supplied + reserved)

To compute the current APR, we need to find the current r constant based on the linear interpolation between utilization points:

  • if utilization <= target_utilization, r = target_utilization_r * (utilization / target_utilization)

  • if utilization > target_utilization, r = target_utilization_r + (max_utilization_r - target_utilization_r) * (utilization - target_utilization) / (1 - target_utilization)

To calculate the amount of interest acquired for the duration of t milliseconds, we can use the following formula:

interest = (r ** t) * borrowed

The interest are distributed to reserved and supplied, based on reserve_ratio, so the new values are: reserved_interest = interest * reserve_ratio new_reserved = reserved + reserved_interest new_supplied = supplied + (interest - reserved_interest) new_borrowed = borrowed + interest

Last updated

Was this helpful?