Fetching Current FLI Parameters

Contract Addresses:

View the latest FLI contract addresses here.

How to fetch the latest FLI parameters:

All parameters are stored in the FlexibleLeverageStrategyAdapter contract and are stored in 4 structs: ContractSettings, ExecutionSettings, MethodologySettings, and IncentiveSettings.

struct ContractSettings {
ISetToken setToken; // Instance of leverage token
ICompoundLeverageModule leverageModule; // Instance of Compound leverage module
IComptroller comptroller; // Instance of Compound Comptroller
ICompoundPriceOracle priceOracle; // Compound open oracle feed that returns prices accounting for decimals. e.g. USDC 6 decimals = 10^18 * 10^18 / 10^6
ICErc20 targetCollateralCToken; // Instance of target collateral cToken asset
ICErc20 targetBorrowCToken; // Instance of target borrow cToken asset
address collateralAsset; // Address of underlying collateral
address borrowAsset; // Address of underlying borrow asset
}
struct MethodologySettings {
uint256 targetLeverageRatio; // Long term target ratio in precise units (10e18)
uint256 minLeverageRatio; // In precise units (10e18). If current leverage is below, rebalance target is this ratio
uint256 maxLeverageRatio; // In precise units (10e18). If current leverage is above, rebalance target is this ratio
uint256 recenteringSpeed; // % at which to rebalance back to target leverage in precise units (10e18)
uint256 rebalanceInterval; // Period of time required since last rebalance timestamp in seconds
}
struct ExecutionSettings {
uint256 unutilizedLeveragePercentage; // Percent of max borrow left unutilized in precise units (1% = 10e16)
uint256 twapMaxTradeSize; // Max trade size in collateral base units
uint256 twapCooldownPeriod; // Cooldown period required since last trade timestamp in seconds
uint256 slippageTolerance; // % in precise units to price min token receive amount from trade quantities
string exchangeName; // Name of exchange that is being used for leverage
bytes leverExchangeData; // Arbitrary exchange data passed into rebalance function for levering up
bytes deleverExchangeData; // Arbitrary exchange data passed into rebalance function for delevering
}
struct IncentiveSettings {
uint256 etherReward; // ETH reward for incentivized rebalances
uint256 incentivizedLeverageRatio; // Leverage ratio for incentivized rebalances
uint256 incentivizedSlippageTolerance; // Slippage tolerance percentage for incentivized rebalances
uint256 incentivizedTwapCooldownPeriod; // TWAP cooldown in seconds for incentivized rebalances
uint256 incentivizedTwapMaxTradeSize; // Max trade size for incentivized rebalances in collateral base units
}

To retrieve this data simply call the associated getter function. This can be done simply in the read tab on Etherscan. E.g. BTC FLI Adapter. The fetched data in each returned struct will correspond to the order above.

/**
* Explicit getter functions for parameter structs are defined as workaround to issues fetching structs that have dynamic types.
*/
function getStrategy() external view returns (ContractSettings memory) { return strategy; }
function getMethodology() external view returns (MethodologySettings memory) { return methodology; }
function getExecution() external view returns (ExecutionSettings memory) { return execution; }
function getIncentive() external view returns (IncentiveSettings memory) { return incentive; }