Pulse strategy
Strategy for volatile pools
Strategy
Abstract
Pulse strategy will maintain a position for the wstETH-USDC Uniswap V3 pool with a 0.3% fee. This strategy utilizes an interval with a width of 4200 ticks. When the price of the wstETH-USDC pair approaches the current interval margin, the strategy automatically rebalances the liquidity to a new interval by swapping funds and providing liquidity to a new interval. If there is no need to rebalance, the strategy collects and compounds the fees into the current position. The strategy utilizes integration with 1inch, which leads to reduced swap fees for rebalances.
Rebalance
Rebalancing happens like this:
If the spot tick deviates from the weighted average over the last timespanForAverageTick seconds, then the transaction is reverted. Otherwise, the current position of the spot tick relative to the interval boundaries is checked.
If the tick is not farther than the tickNeighborhood to any boundary of the interval, then a new position is minted, the center of which is equal to the nearest tick on the tickSpacing grid of the given pool, and the width of the interval remains the same.
For the exchange of tokens, 1inch AggregationRouterV5 is used, the data for which is received by the bot off-chain and transferred to the rebalance function. After the swap, the received number of tokens is compared with the expected one. The swap price should not deviate by more than swapSlippageD, and the number of swapped tokens should not deviate more than by swappingAmountsCoefficientD.
Olympus rebalance
A key feature of Olympus Pulse strategy lies in its ability to dynamically select the boundaries of the interval based on the values provided by the Olympus RBS, enabling the maintenance of an active position not reliant on manipulated market prices, but instead on the price limits set for the OHM token.
Parameters
ImmutableParams
Name | Description | Value in strategy |
---|---|---|
router | address of 1inch AggregationRouterV5 | 0x1111111254EEB25477B68fb85Ed929f73A960582 |
erc20Vault | address of buffer vault of the root vault system | 0x749b85100D66525Eec385638b46bD3Ee590c0c79 |
uniV3Vault | address of vault that holds Uniswap V3 position | 0x3D120987e85C1C294577a1c39C96693A6F9be97b |
tokens | arrays of strategy tokens | [0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0, 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48] |
MutableParams
Name | Description | Value in strategy |
---|---|---|
priceImpactD6 | Additional coefficient for expected price impact of swap of tokens | 0 |
intervalWidth | Width of UniswapV3 position | 4200 |
tickNeighborhood | Minimal required difference between tick and current position border to call rebalance | 500 |
maxDeviationForVaultPool | If the spot tick in UniswapV3Pool deviates from the average tick by a larger value, then rebalance reverts with LIMIT_OVERFLOW error | 50 |
timespanForAverageTick | The time interval in seconds used to determine the average tick values and prices in UniswapV3Pool | 60 |
amount0Desired | Required number of tokens (wstETH in weis) that must be on the balance of the strategy to make a mint of a new Uniswap V3 position during the rebalance | 1000000000 |
amount1Desired | Required number of tokens (USDC in weis) that must be on the balance of the strategy to make a mint of a new Uniswap V3 position during the rebalance | 1000000 |
swapSlippageD | Permissible slippage level during swap | 1000000000 (1.0%) |
swappingAmountsCoefficientD | Permissible level of difference between the amount of expected tokens for swap and the exchanged ones during swap | 1000000000 (1.0%) |
minSwapAmounts | Thresholds that cut off swap of an insignificant amount of tokens (in weis) | [10000000000000,10000] |
Last updated