The Cibola protocol implements algorithmic interest that is calculated based on supply and demand of capital. Supply and demand are measured independently for each pool, and calculated as the utilization for that pool (Up). The formula is based on the total amount supplied (total_supplyp) and the total amount borrowed by Sivo (total_borrowedp). Both values are updated by the protocol every time that a liquidity operation occurs (these are the 4 operations mentioned before: supply, borrow, pay, or withdrawal). The utilization is then calculated as follows:
Up = total_borrowedp / total_supplyp
The interest to be applied is calculated based on two rates for each pool. The base interest rate (BIRp) is the minimum rate that the protocol applies regardless of supply or demand. The slope interest rate (SIRp) is the additional interest rate earned when utilization is at 100%. The total interest rate (IRp) is then calculated as follows:
IRp = BIRp + Up x SIRp
This rate is recalculated as liquidity events occur to properly adapt to supply and demand. If the protocol sees a large influx of supply that surpasses the demand, then utilization and interest rate goes down to discourage excess supply. Similarly as more funds are borrowed, the utilization and interest rate go up to attract additional supply. Since the Cibola protocol does not guarantee liquidity, this algorithmic approach to interest rates incentivises liquidity and participation. If suppliers withdraw funds, the increased interest rate attracts new users to make up for it.