Market Interest Model Configuration

Interest Rate Model Parameters for Launched Markets

The Silo protocol can manage interest rates differently for every token asset. In other words, the interest model is a a plugin that works on top of every market, enabling the protocol to use different configurations to control the utilization of assets in their respective markets.

A simple example of custom configurations can be exemplified in interest rates increasing faster for volatile assets than that of stable ones.

Reading the Interest Model Configuration for an Asset

Silos are deployed on the blockchain through on-chain votes. Take for example SIP-11. The vote proposes the deployment of CRV Silo with custom settings, including how the borrowing rate of CRV is managed (interest model configuration).

Let's take a look at CRV interest model configuration:

"uopt": "500000000000000000",
"ucrit": "900000000000000000",
"ulow": "300000000000000000",
"ki": "146805",
"kcrit": "317097919838",
"klow": "105699306613",
"klin": "4439370878",
"beta": "277777777777778",
"ri": "0",
"Tcrit": "0"

There are three key levels of utilization for the interest rate model:

  • uopt (optimal utilization) = 50%;

  • ucrit (critical utilization) = 90%;

  • ulow (low utilization) = 30%.

To understand the coefficients ki, kcrit, klin, and klow, it is best to convert them to annual interest rate via multiplying by 365*24*3600 (number of seconds in a year). Dividing by 10^18 to account for 18 decimal places, we obtain the following values:

ki = 0.00000462964248;
kcrit = 10;
klow = 3.33333;
klin = 0.14
  • “ki”: If utilization is near the optimal value (i.e., between ulow and ucrit), the interest rate is proportional to the integral of the difference between the current utilization and uopt. Such integrator works all the time, growing or falling depending on whether utilization is above or below the optimal level (uopt). The integrator's rate of change is governed by the coefficient ki = 0.00000462964248 = 0.4/(24*3600). The meaning is: if utilization deviates by X percentage points from uopt, then the integrator term will change by 0.4*X percentage points per day (24*3600 seconds).

  • “kcrit”: If utilization is close to 100% (i.e. above ucrit), the APR is jacked up by the additional term which is proportional to the difference between the current utilization and ucrit. At the first moment of exceeding the critical level of utilization (ucrit), the proportionality factor equals kcrit. For CRV kcrit = 10, so if utilization is X percentage points over ucrit, then the nominal value of the proportional term is 10*X percentage points.

  • “klow”: If utilization is lower than ulow, another additional term appears in the model, which is used to reduce the APR sharply. This term is proportional to the difference between the current utilization and ulow. For CRV the proportionality factor is klow = 3.33333, which means: if utilization is X percentage points under ulow, then the proportional term equals -3.33333*X percentage points. For example, at 0% utilization, the proportional term equals –100 percentage points.

  • “klin”: Borrowing APR can never drop below the lower bound which is proportional to the current utilization. This bound is defined by the proportionality factor klin. In the case of CRV, klin = 0.14, meaning: if utilization is X%, then the lower bound on the borrowing APR is 0.14*X%.

  • “beta”: While kcrit determines the proportional term only at the first moment of exceeding ucrit, the complete formula for the proportionality factor is kcrit*(1+Tcrit). The "time multiplier" Tcrit adds 1 every hour that utilization spends above ucrit. This is seen from the value of beta which equals 1/3600 (3600 seconds make up one hour). So, the value of proportionality factor after 1 hour over the critical level becomes 60, after 2 hours it's 90, etc. As utilization leaves the critical zone, Tcrit starts dropping at the same rate governed by beta.

  • “ri” = 0: The integrator described earlier is initialized to zero.

  • “Tcrit” = 0: The initial value for Tcrit is zero.

Existing Interest Model Configurations

All parameters for the assets that are available in the protocol are compiled in the following table. For convenience, the table shows the values of parameters ci, ccrit, clow, clin, cbeta. Formulas relating these values with ki, kcrit, klow, klin, beta are presented below.

IRM Type

stableLowCap

80%

90%

50%

10%

75%

50%

4%

10%

stableHighCap

80%

90%

60%

10%

75%

50%

4%

10%

volatileOpt50Base1

50%

90%

30%

20%

100%

100%

1%

100%

volatileOpt50Base3

50%

90%

30%

20%

100%

100%

3%

100%

volatileOpt50Base7

50%

90%

30%

20%

100%

100%

7%

100%

volatileOpt50Base15

50%

90%

30%

20%

100%

100%

15%

100%

volatileOpt80Base1

80%

90%

50%

20%

100%

100%

1%

100%

volatileOpt80Base3

80%

90%

50%

20%

100%

100%

3%

100%

volatileOpt80Base7

80%

90%

50%

20%

100%

100%

7%

100%

volatileOpt80Base15

80%

90%

50%

20%

100%

100%

15%

100%

bridgeXAI

80%

90%

50%

10%

75%

50%

4%

10%

bridgeETHv2

70%

90%

50%

20%

100%

50%

5.75%

100%

defaultAsset

50%

90%

30%

20%

100%

100%

7%

100%

List of Parameters

"IRMTypes": {
	"defaultAsset": {
		"uopt": "500000000000000000",
		"ucrit": "900000000000000000",
		"ulow": "300000000000000000",
		"ki": "146805",
		"kcrit": "317097919838",
		"klow": "105699306613",
		"klin": "4439370878",
		"beta": "277777777777778",
		"ri": "0",
		"Tcrit": "0"
	},
	"stableLowCap": {
		"uopt": "800000000000000000",
		"ucrit": "900000000000000000",
		"ulow": "500000000000000000",
		"ki": "183506",
		"kcrit": "237823439878",
		"klow": "31709791984",
		"klin": "1585489599",
		"beta": "27777777777778",
		"ri": "0",
		"Tcrit": "0"
	},
	"stableHighCap": {
		"uopt": "800000000000000000",
		"ucrit": "900000000000000000",
		"ulow": "600000000000000000",
		"ki": "183506",
		"kcrit": "237823439878",
		"klow": "26424826653",
		"klin": "1585489599",
		"beta": "27777777777778",
		"ri": "0",
		"Tcrit": "0"
	},
	"volatileOpt50Base1": {
		"uopt": "500000000000000000",
		"ucrit": "900000000000000000",
		"ulow": "300000000000000000",
		"ki": "146805",
		"kcrit": "317097919838",
		"klow": "105699306613",
		"klin": "634195840",
		"beta": "277777777777778",
		"ri": "0",
		"Tcrit": "0"
	},
	"volatileOpt50Base3": {
		"uopt": "500000000000000000",
		"ucrit": "900000000000000000",
		"ulow": "300000000000000000",
		"ki": "146805",
		"kcrit": "317097919838",
		"klow": "105699306613",
		"klin": "1902587519",
		"beta": "277777777777778",
		"ri": "0",
		"Tcrit": "0"
	},
	"volatileOpt50Base7": {
		"uopt": "500000000000000000",
		"ucrit": "900000000000000000",
		"ulow": "300000000000000000",
		"ki": "146805",
		"kcrit": "317097919838",
		"klow": "105699306613",
		"klin": "4439370878",
		"beta": "277777777777778",
		"ri": "0",
		"Tcrit": "0"
	},
	"volatileOpt50Base15": {
		"uopt": "500000000000000000",
		"ucrit": "900000000000000000",
		"ulow": "300000000000000000",
		"ki": "146805",
		"kcrit": "317097919838",
		"klow": "105699306613",
		"klin": "9512937595",
		"beta": "277777777777778",
		"ri": "0",
		"Tcrit": "0"
	},
	"volatileOpt80Base1": {
		"uopt": "800000000000000000",
		"ucrit": "900000000000000000",
		"ulow": "500000000000000000",
		"ki": "367011",
		"kcrit": "317097919838",
		"klow": "63419583968",
		"klin": "396372400",
		"beta": "277777777777778",
		"ri": "0",
		"Tcrit": "0"
	},
	"volatileOpt80Base3": {
		"uopt": "800000000000000000",
		"ucrit": "900000000000000000",
		"ulow": "500000000000000000",
		"ki": "367011",
		"kcrit": "317097919838",
		"klow": "63419583968",
		"klin": "1189117199",
		"beta": "277777777777778",
		"ri": "0",
		"Tcrit": "0"
	},
	"volatileOpt80Base7": {
		"uopt": "800000000000000000",
		"ucrit": "900000000000000000",
		"ulow": "500000000000000000",
		"ki": "367011",
		"kcrit": "317097919838",
		"klow": "63419583968",
		"klin": "2774606799",
		"beta": "277777777777778",
		"ri": "0",
		"Tcrit": "0"
	},
	"volatileOpt80Base15": {
		"uopt": "800000000000000000",
		"ucrit": "900000000000000000",
		"ulow": "500000000000000000",
		"ki": "367011",
		"kcrit": "317097919838",
		"klow": "63419583968",
		"klin": "5945585997",
		"beta": "277777777777778",
		"ri": "0",
		"Tcrit": "0"
	},
	"bridgeXAI": {
		"uopt": "800000000000000000",
		"ucrit": "900000000000000000",
		"ulow": "500000000000000000",
		"ki": "183506",
		"kcrit": "237823439878",
		"klow": "31709791984",
		"klin": "1585489599",
		"beta": "27777777777778",
		"ri": "0",
		"Tcrit": "0"
	},
	"bridgeETH": {
		"uopt": "700000000000000000",
		"ucrit": "900000000000000000",
		"ulow": "500000000000000000",
		"ki": "244674",
		"kcrit": "317097919838",
		"klow": "31709791984",
		"klin": "2604732913",
		"beta": "277777777777778",
		"ri": "0",
		"Tcrit": "0"
	},
	"fixedXAI2point0": {
		"uopt": "500000000000000000",
		"ucrit": "900000000000000000",
		"ulow": "300000000000000000",
		"ki": "0",
		"kcrit": "0",
		"klow": "0",
		"klin": "0",
		"beta": "0",
		"ri": "634195840",
		"Tcrit": "0"
	}
	"fixedXAI0point1": {
		"uopt": "500000000000000000",
		"ucrit": "900000000000000000",
		"ulow": "300000000000000000",
		"ki": "0",
		"kcrit": "0",
		"klow": "0",
		"klin": "0",
		"beta": "0",
		"ri": "31709792",
		"Tcrit": "0"
	}
},

Last updated