Moving a position between lenders without selling it
Migrating a leveraged position between Morpho, Aave v3 and Aave v4 builds no route, quotes no price and uses no slippage tolerance. Nothing is sold.
Rates move. The lender that was cheapest when you opened a position is routinely not the cheapest six weeks later, and the gap is rarely small enough to ignore — two points on a borrowing position is two points a year, every year, for as long as it stays open.
Almost nobody moves. The reason is not ignorance of the rate.
Why people stay put
To repay the old loan you need your collateral back. To get your collateral back you must repay the loan. There is no order in which you can do those two things, so the manual route is to find the entire loan amount somewhere else first — a strange requirement for the act of ending up with less debt.
And if you do find it, the usual path sells your collateral and buys it back on the other side. That is the spread, twice, plus slippage on both legs, to end up holding exactly what you were already holding.
Nothing is sold
When both ends take the same collateral token, the migration sells nothing at all.
- No route is built
- There is no trade to route, so no path through any pool is chosen
- No price is quoted
- Nothing is being priced, so there is no floor to agree and no quote to go stale
- Slippage tolerance is ignored
- The setting is not consulted, because there is no execution for it to bound
Your wstETH leaves one protocol and arrives at the other as wstETH. The debt is carried across. The position is the same position, at a different address, and the only thing that changed is who you owe.
Where it can go
- Morpho
- The default at both ends, and the source of the flash loan regardless of where the position lives
- Aave v3
- Either end. Note the market is still named by its Morpho name, even when the position is an Aave one
- Aave v4
- We reach it on Ethereum. A different protocol from v3 rather than a newer version, organised into spokes, and a v4 move stays inside one of them
Both ends are named by curated market. That is a real limit and a deliberate one: the step reaches listed pairs, not arbitrary ones.
And when the collateral does change
The same step handles it, and then it does sell — your wstETH out, the destination market’s collateral in, debt carried across. That is a different operation in spirit: you are changing what the position is made of, not just where it lives, and the slippage tolerance you set starts mattering again because there is finally something to execute.
Why it fits in one transaction
The deadlock at the start is broken with borrowed money you never touch.
- Borrow the full repayment amount
From Morpho, which lends flash for nothing while Aave charges a premium.
- Repay the old debt, take the collateral back
These two only deadlocked because they needed an order.
- Deposit at the new lender and borrow again
Same collateral, same debt, different protocol.
- Repay the borrowing
Out of what the new position borrows.
Either all of it happens or none of it does. There is no window where your collateral is out and your position is at neither lender.
What it will not do
- You cannot take the flash loan yourself. There is no
flash.borrowoperation — it is a means inside fourteen of the sixty-one operations, never a step of its own. - A Safe cannot do it. A Safe runs batched calls with nothing installed, but cannot receive a flash-loan callback without installing a module.