Rates and Incentives
Markets Information appears on the Morpho Interface. As displayed in the following pictures, a market on Morpho has:
- a supply APY (Annual Percentage Yield),
- a borrow APY,
- potential additional rewards APR (Annual Percentage Rate).
Let's see how to retrieve those information.
Rates
At the smart contract level, the Interest Rate model (IRM) provides the borrowRate for each market.
The borrowRate is the rate at which borrowers pay interest on the borrowed amount. The supplyRate is the rate at which lenders earn interest on the supplied amount.
As interests are compounded, users are more interested in the Annual Percentage Yield (APY) for both borrowing and supplying. The APY takes into account the compounding interest to provide a standardized measure of yields over a one-year period.
The logic explaining how to go from the borrowRate to the borrowApy (and thus supplyApy) is explained in the calculation section of the Interest Rate Model.
Below are some guides to retrieve those rates.
Smart Contract
To manually retrieve the borrowRate for a market, you can use the borrowRateView function of the IRM contract. This section guides you through the process of obtaining the necessary parameters and executing the function call.
Jump into the Addresses section to get the contract addresses.
- Querying the Morpho Contract
First, obtain the marketParams by querying the idToMarketParams function. For example, for the wstETH/WETH (94.5%) market, use the following ID: 0xc54d7acf14de29e0e5527cabd7a576506870346a78a11a6762e2cca66322ec41.
Next, acquire the market values by querying the market function.
- Querying the AdaptiveCurveIRM Contract
Use the retrieved marketParams and market in the following format to query the contract:
Input:
marketParams(tuple)
["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0","0x2a01EB9496094dA03c4E364Def50f5aD1280AD72","0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC","945000000000000000"]
market(tuple)
["10004929554680902814569", "9991371195121664602574716119", "8810921364321507255452", "8796441127786542454899358360","1707318023",0]
API
One can get the supply and borrow APYs directly (no need to do the extra computation from borrowRate to borrowAPY as it is already done) for each market by using the Morpho API.
The data from the API are the same as the one displayed in the Morpho Interface.
Incentives
As explained in the incentives section, some Morpho markets might have incentives to attract more liquidity. These incentives are typically in the form of a token reward, transferable, or not.
Below is a guide to track the incentives of a given market.
To get the net APY as displayed in the Morpho Interface, one needs to understand the following.
Why Rewards APR?
The distinction between APY and APR is that APY takes into account the effect of compounding interest, while APR does not. In the case of rewards, the APR is the most relevant metric to consider, as rewards are not reinvested in users positions.
Smart Contract
An entire tutorial is available here to track emissions of a specific ERC20 token within a rewards program operated on Morpho.
API
One can jump in this api section to get more information about rewards:
-
Query Morpho markets rewards including the
supplyAprandborrowAprfor each market.The
supplyAprandborrowAprare the Annual Percentage Rates (APR) for supplying and borrowing respectively. This is extra incentives that one should add alongside the native ratessupplyApyandborrowApyto get the total incentives.- For suppliers:
netMarketApyof a market =supplyApyof a market +supplyAprof incentives. - For Borrowers:
netMarketApyof a market =borrowApyof a market -borrowAprof incentives.
- For suppliers: