AprOracle
Inherits: Governance
Author: Yearn.finance
Contract to easily retrieve the APR's of V3 vaults and strategies. Can be used to check the current APR of any vault or strategy based on the current profit unlocking rate. As well as the expected APR given some change in totalAssets. This can also be used to retrieve the expected APR a strategy is making, thats yet to be reported, if a strategy specific oracle has been added. NOTE: All values are just at the specific time called and subject to change.
State Variables
oracles
mapping(address => address) public oracles;
MAX_BPS
uint256 internal constant MAX_BPS = 10_000;
MAX_BPS_EXTENDED
uint256 internal constant MAX_BPS_EXTENDED = 1_000_000_000_000;
SECONDS_PER_YEAR
uint256 internal constant SECONDS_PER_YEAR = 31_556_952;
LEGACY_ORACLE
address internal constant LEGACY_ORACLE = 0x27aD2fFc74F74Ed27e1C0A19F1858dD0963277aE;
Functions
constructor
constructor(address _governance) Governance(_governance);
getStrategyApr
Get the current APR a strategy is earning.
Will revert if an oracle has not been set for that strategy.
This will be different than the getExpectedApr()
which returns
the current APR based off of previously reported profits that
are currently unlocking.
This will return the APR the strategy is currently earning that
has yet to be reported.
function getStrategyApr(address _strategy, int256 _debtChange) public view virtual returns (uint256 apr);
Parameters
Name | Type | Description |
---|---|---|
_strategy | address | Address of the strategy to check. |
_debtChange | int256 | Positive or negative change in debt. |
Returns
Name | Type | Description |
---|---|---|
apr | uint256 | The expected APR it will be earning represented as 1e18. |
setOracle
Set a custom APR _oracle
for a _strategy
.
Can only be called by the Apr Oracle's governance
or
management of the _strategy
.
The _oracle
will need to implement the IOracle interface.
function setOracle(address _strategy, address _oracle) external virtual;
Parameters
Name | Type | Description |
---|---|---|
_strategy | address | Address of the strategy. |
_oracle | address | Address of the APR Oracle. |
getCurrentApr
Get the current APR for a V3 vault or strategy.
This returns the current APR based off the current rate of profit unlocking for either a vault or strategy. Will return 0 if there is no profit unlocking or no assets.
function getCurrentApr(address _vault) external view virtual returns (uint256 apr);
Parameters
Name | Type | Description |
---|---|---|
_vault | address | The address of the vault or strategy. |
Returns
Name | Type | Description |
---|---|---|
apr | uint256 | The current apr expressed as 1e18. |
getExpectedApr
Get the expected APR for a V3 vault or strategy based on _delta
.
This returns the expected APR based off the current rate of profit unlocking for either a vault or strategy given some change in the total assets. Will return 0 if there is no profit unlocking or no assets. This can be used to predict the change in current apr given some deposit or withdraw to the vault.
function getExpectedApr(address _vault, int256 _delta) public view virtual returns (uint256 apr);
Parameters
Name | Type | Description |
---|---|---|
_vault | address | The address of the vault or strategy. |
_delta | int256 | The positive or negative change in totalAssets . |
Returns
Name | Type | Description |
---|---|---|
apr | uint256 | The expected apr expressed as 1e18. |
getWeightedAverageApr
Get the current weighted average APR for a V3 vault.
This is the sum of all the current APR's of the strategies in the vault.
function getWeightedAverageApr(address _vault, int256 _delta) public view virtual returns (uint256);
Parameters
Name | Type | Description |
---|---|---|
_vault | address | The address of the vault. |
_delta | int256 |
Returns
Name | Type | Description |
---|---|---|
<none> | uint256 | apr The weighted average apr expressed as 1e18. |