Adjust interest rate to account for APY over-approximation
01Summary
Update AMPL market interest rate parameters (optimal utilization to 80%, base rate to 1%, slope1 to 2%, slope2 to 750%) to account for an over-approximation in AAVE's interest computation formula that causes exponential discrepancies at high APYs. The new curve leverages this over-approximation to create more suitable borrowing incentives for AMPL.
- Type
- parameter change
Key changes
- Optimal utilization rate changed to 80% (from previous level supporting up to 10,002% max interest)(high)
- Base variable borrow rate set to 0%(medium)
- Variable rate slope1 set to 2%(medium)
- Variable rate slope2 reduced to 750% (from 10,002%) to account for over-approximation in compounded interest calculation(high)
- Interest rate curve restructured to use exponential growth above optimal utilization instead of linear(high)
Notable concerns
- The existing interest computation in AAVE's MathUtils contains an over-approximation that causes exponential deviation at high APYs (e.g., 638.91% effective vs 200% expected at 200% APY)
- AMPL market previously allowed rates up to 10,002% which created extreme over-approximation effects
- New curve creates extremely steep rate increases above 80% utilization (e.g., 186,210% APY at 100% utilization), which may create execution/liquidation risks
- AAVE Genesis team awareness of the discrepancy noted but no definitive guidance published yet
Generated by Kvorum
02Description
Simple Summary
- Update interest rate on AMPL market to account for over-approximation in compounded interest computation.
- Make use of the exponential curve due to the over-approximation to set higher max APY.
Motivation
In AAVEs MathUtils an over-approximation in the application of the interest rate for computing compounded interest was discovered.
In calculateCompoundedInterest method
Periodic rate (per second) is computed as:
uint256 ratePerSecond = rate / SECONDS_PER_YEAR;
in comparison to the exact computation.

derived from:

The deviation in the applied interest rate causes a small over-approximation for APYs <10%, but grows exponentially as can be seen below.
| Expected APY | Effective APY | Expected daily rate | Effective daily rate |
|---|---|---|---|
| 4.00% | 4.08% | 0.01% | 0.01% |
| 5.00% | 5.13% | 0.01% | 0.01% |
| 10.00% | 10.52% | 0.03% | 0.03% |
| 50.00% | 64.87% | 0.11% | 0.14% |
| 100.00% | 171.83% | 0.19% | 0.27% |
| 200.00% | 638.91% | 0.31% | 0.55% |
| 1000.00% | 2202543.09% | 0.68% | 2.78% |
| 10000.00% | 2.69E+43% | 1.30% | 31.52% |
This difference is especially noticeable in the AMPL market, where the configured interest rate can go up to 10,002% at max utilization.
The AAVE Genesis team has been made aware and they will publish more guidance on the discrepancy.
Specification
As mentioned in AIP-26, a nonlinear - logistic or exponential - interest curve is more suited for AMPL's market and potentially other assets on AAVE's platform.
The over-approximation mentioned above results in an exponential curve which allows for defining a more suitable interest curve for AMPL. We propose the following parameters, which produces the curve below.
- Optimal utilization = 80%
- Base rate = 1%
- Slope1 = 2%
- Slope2 = 750%

APY table above 80% Utilization:
| Utilization | APY |
|---|---|
| 80.00% | 3.05% |
| 81.00% | 49.93% |
| 82.00% | 118.15% |
| 83.00% | 217.40% |
| 84.00% | 361.82% |
| 85.00% | 571.94% |
| 86.00% | 877.67% |
| 87.00% | 1322.50% |
| 88.00% | 1969.72% |
| 89.00% | 2911.43% |
| 90.00% | 4281.60% |
| 91.00% | 6275.19% |
| 92.00% | 9175.85% |
| 93.00% | 13396.29% |
| 94.00% | 19536.98% |
| 95.00% | 28471.63% |
| 96.00% | 41471.48% |
| 97.00% | 60386.14% |
| 98.00% | 87906.81% |
| 99.00% | 127949.14% |
| 100.00% | 186210.38% |
The part of the curve under 80% Utilization:

Rationale
- Accounting for the over-approximation of the existing Slope2=10,000% interest curve requires reducing the slope2 parameter.
- Taking advantage of the exponential curve allows for: a. Setting a higher optimal utilization rate. b. Setting a higher maximum APY to reduce the potential for utilization being at 100% for extended periods without creating a too steep of an interest rate increase right above the optimal utilization rate.
Implementation
A deployment of the existing implementation of the Interest Strategy will be used, with the following parameters:
optimalUtilizationRate: new BigNumber(0.8).multipliedBy(oneRay).toFixed(),
baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(),
variableRateSlope1: new BigNumber(0.02).multipliedBy(oneRay).toFixed(),
variableRateSlope2: new BigNumber(7.5).multipliedBy(oneRay).toFixed(),
https://etherscan.io/address/0x84d1FaD9559b8AC1Fda17d073B8542c8Fb6986dd#readContract
Copyright
Copyright and related rights waived via CC0.
03Mismatch analysis
The decoded on-chain action is a single generic execute() (fallback) call to what appears to be an Aave governance executor/payload contract, with no decoded arguments. This is typical for Aave AIPs, where the actual logic (deploying a new interest rate strategy contract and setting it on the AMPL reserve) is embedded in the payload contract's bytecode rather than in the governance calldata. Because no parameters are exposed in the decoded action, it is not possible to directly verify that the on-chain execution matches the specific numeric parameters described (optimal utilization 80%, base rate 0-1%, slope1 2%, slope2 750%). I found one internal inconsistency within the description itself: the Specification section says 'Base rate = 1%' while the Implementation section codes baseVariableBorrowRate as 0. This is a minor issue but cannot be confirmed against the calldata due to lack of visibility. Given the opacity of the calldata, confidence in this comparison is low, and I found no evidence of a mismatch between the stated intent and the single decoded action (which is consistent with executing a governance-approved parameter update). No omissions, extra claims, or target mismatches are identifiable from the available calldata.
Discrepancies
- lowmisleading phrasing
The proposal's own Specification section states 'Base rate = 1%' while the Implementation section sets baseVariableBorrowRate to 0 (0 * oneRay). This is an internal inconsistency in the description, though it cannot be checked against the calldata since the on-chain action is an opaque execute() call with no visible parameters.
“Base rate = 1%”
Generated by Kvorum
04Actions
- Target
- 0x17ec…715c
- Value
- 0 wei
- Function
- fallback()
- Arguments
{}- Calldata
05Tally
Summed from votes
06Voters
No votes recorded yet.
07Forum
No forum thread is confidently linked to this proposal.
08Similar proposals
- aavecanceledAdjust interest rate to account for APY over-approximation100%
- aaveexecutedRaise Maximum Interest Rate on AMPL Market87%
- aaveexecutedAMPL Interest Rate Updates on V2 Ethereum83%
- aaveexecutedUpgrade AMPL implementation74%
- aaveexecutedLower Reserve Factor for AMPL73%
- aaveexecutedAave v2 ETH Interest Rate Curve Update72%
- aaveexecutedBAL Interest Rate Upgrade72%
- aaveexecutedAdding AMPL on AAVE70%
- aaveexecutedCRV Interest Rate Curve Upgrade69%
- aaveexecutedTUSD and BUSD Aave V2 Rate Amendments67%