We’re not in Kansas anymore.
The days of reaper.farm as simply an auto compounder are long gone. For some time now, the Reaper team has expanded its services, keeping pace with partner protocols and their new offerings. Nevertheless, there is one special protocol within the Fantom Ecosystem that our strategists have been itching to optimize: Tarot. Long been an internal favorite, we are champing at the bit to get Crypts live for the protocol.
Wait a minute…they are live!
Well, not exactly. For a number of days now we have been testing, in production on pain.finance, some novel strategies to optimize yield for Tarot Single Sided Lending Pools. These Crypts currently have a deposit cap that will be removed once we launch them on the Reaper front-end.
A quick refresher on Tarot
Before we go any further, if this is your first time hearing about Tarot.to, it is an awesome protocol with a great tech stack and multiple services. Mainly, leveraged yield farming, and single-sided lending and borrowing..
The important thing to note here is Tarot’s interest rate model for their isolated lending pool. Interest rates are adaptive and being that pools are isolated, each borrowable pool uses its own rate. Tarot uses a kinked interest rate with a single adjustable parameter –utilizationrate, that can be adjusted by governance. The adaptive interest rate model in Tarot determines Borrow and Supply APRs for each lending pool.
Utilization rate is the percentage of tokens supplied by lenders to a lending pool that are currently utilized by borrowers in outstanding loans. Depending on the current utilization rate (utilizationRate) of a borrowable pool, the borrow rate (borrowRate) is determined by the following parameters:
- utilizationRate = 0 implies borrowRate = 0;
- utilizationRate = kinkUtilizationRate implies borrowRate = kinkBorrowRate;
- utilizationRate = 100% implied borrowRate = 5 * kinkBorrowRate.
The kinkBorrowRate is updated between blocks on a per-second basis using the previous borrowRate.
By depositing in a lending pool, users get a bToken in return. The bToken represents the underlying deposit and the accrued interest, which continuously builds up over time. By withdrawing their assets, the protocol exchanges the interest-bearing bToken for the underlying asset plus the accrued rewards, provided there is enough liquidity to do so.
Capitalizing on isolated lending pools
A really cool feature of Tarot is that each and every lending pool is isolated. This allows pools to be shielded from the volatility, liquidations and supply expansions and contractions of other pools, which is a great thing! Additionally, all lending pools are completely permissionless, so anyone can make their own pool.
Venturing over to their platform, you’ll see the number of different pools that have been deployed speak to the quality of their product. It was only natural for our Strategists to look for the best way to optimize these lending pools, that inherently minimize adjacent market risks.
Given the quality of the product and the permissionless nature of creating pools, there are just too many pools with the same asset and each pools’ yield fluctuates too much to pick the best one. The yields are high but not optimized.
But…what if we could have the benefits of isolated lending pools AND the best yield generated from each and every one of them aggregated into one simple solution that manages everything from the click of a button?
That’s a question mighty Strategist Degenicus set out to answer.
*Spoiler Alert: He did!*
How are the yields for these pools optimized?
Essentially, there are certain assets that pop up in multiple pools that meet our criteria of selection based on our risk assessment framework and the yields generated.
Degenicus built an algorithm that scans every lending pool where the asset is present.
The script runs simulations of what the overall APR would be for different combinations of allocations, then moves the funds to get the best overall yield.
Because depositing a sizable amount of assets into a pool can create some dilution of the APR, the algorithm also takes into account the amount of liquidity available in each pool. The decisions made from these simulations truly represent the best allocation possible for depositors.
And the best part? The script is running off-chain! Running this much code on-chain is basically impossible, if not, extremely impractical. Having it run off-chain means that it doesn’t require any gas to run the scan. The only gas paid will be for the rebalancing of pools and deposits/withdrawals.
In terms of security, the script is impossible to run without the proper role assigned from the strategy’s smart contract and so there is no way for anyone but our Strategists to take control of this process.
Users can just sit back and relax and let the Crypt do all the work for them. The best possible single-sided APR money can buy…
Now that is optimized!
You can go test these sweet yields out for the following assets: FTM, TOMB, BTC, BASED, MAI and USDC on pain.finance or wait for the full uncapped launch on Reaper next week, we will be having an AMA on Wednesday, May 11th at 12:00pm EST detailing the migration!