Deleveraging
Understanding Deleveraging
Deleveraging is the process of reducing your position's leverage by withdrawing collateral and repaying debt. This can be done in two ways:
Partial deleveraging: Reduce leverage while maintaining an active position.
Full deleveraging: Completely unwind the position by repaying all debt.
Preparing for Deleveraging
Before deleveraging, you need to:
Understand your current position: Review your collateral amount, debt amount, and health factor.
Set an appropriate slippage tolerance: Typically 0.5-2% depending on asset volatility.
Calculate the optimal deleveraging amounts: Determine how much collateral to withdraw and debt to repay.
Constructing the DeleverageStruct
Deleveraging requires constructing a DeleverageStruct that specifies how to unwind your position:
// Define how much collateral to withdraw
const collateralAmount = ethers.utils.parseUnits('300', 18);
const repayAmount = ethers.utils.parseUnits('200', 18); // Amount of debt to repay
// Create swap data to convert collateral to borrow asset
// Note: This is an array of swaps, allowing for multi-hop routes
const swapData = [{
target: '0x1111111254EEB25477B68fb85Ed929f73A960582', // 1inch router
inputToken: underlyingAsset,
outputToken: borrowUnderlying,
inputAmount: ethers.utils.parseUnits('250', 18), // Amount needed to convert to repay debt
call: '0x...', // Encoded swap call data
}];
// Construct deleverage data
const deleverageData = {
positionToken: P_TOKEN,
collateralAmount: collateralAmount,
borrowToken: E_TOKEN,
swapData: swapData,
repayAmount: repayAmount,
auxData: '0x' // Optional for specialized protocols
};
Executing the Deleverage Operation
With the DeleverageStruct prepared, execute the deleverage operation:
// Set slippage tolerance (1%)
const slippage = ethers.utils.parseUnits('0.01', 18);
// Execute the deleverage transaction
const tx = await positionManagement.deleverage(
deleverageData,
slippage,
2000000
);
const receipt = await tx.wait();
console.log(`Position deleveraged! Tx hash: ${receipt.transactionHash}`);
Important Considerations
Swap Data Configuration:
The
swapData
array can contain multiple swaps for complex routes.Each swap must specify the correct input/output tokens and amounts.
Slippage tolerance should be set appropriately for each swap.
Amount Calculations:
collateralAmount
: The amount of position tokens to withdraw.repayAmount
: The amount of debt to repay in the borrowed asset.Ensure these amounts are properly calculated to maintain desired position size.
Protocol-Specific Features:
Some protocols may require additional data in the
auxData
field.Check protocol documentation for specific requirements.
Consider using protocol-specific optimizations when available.
Last updated