SMART Yield allows users to tranche out the yield from the debt pools of other projects, such as Aave, Compound, Cream, or Yearn Finance to normalize the risk curve by creating derivatives for risk mitigation.
Users are able to buy junior or senior tokens which represent tranches. Junior token holders provide liquidity & buy risk from senior bond investors. The risk here is variable rate annuities going below the expected level. Investors that buy senior bonds will have a guaranteed yield/interest rate for the life of the bond.
At the same time, juniors will benefit from the extra rewards generated by tokens locked by seniors in cases where the variable APY of the underlying lending protocol (including the governance token rewards) are higher than the weighted average guaranteed yields of current seniors.
Junior tranches are ERC-20 fungible tokens. Senior tranches are ERC-721 (NFTs) non-fungible tokens.
Read more on our website.
Tranches are pieces of a pooled collection of securities, usually debt instruments, that are split up by risk or other characteristics in order to be marketable to different investors.
Tranches carry different maturities, yields, and degrees of risk - and privileges in repayment in case of default.
Junior tranches are represented by ERC-20 tokens (jTokens) which provide liquidity and buy risk from Senior bond investors. Junior tranches have variable APY and are more risky than senior tranches.
Read more about tranches here.
Senior tranches are represented by ERC-721 non-fungible tokens (sBONDs) that have a guaranteed yield for the life of the bond. Senior tranches have fixed APY and are less risky compared to junior tranches.
The set of features that a senior bond has is:
principal - the amount deposited in the bond
gain - the amount of token that will be gained (this is used to determine the APY)
issuedAt - the issuance date
maturesAt - the maturity date
liquidated - a flag used to determine if the senior bond was redeemed or not
Read more about tranches here.
The Junior Bonds are represented by ERC-721 non-fungible tokens that have a value denominated in junior tokens, and a maturity date equal to that of the ABOND. These special types of bonds are issued as part of the 2-step withdrawal process.
A junior is subject to Senior tranche risk. In order for a jToken holder to exit the pool, the current sBONDs need to mature. Because it is computationally intensive and gas inefficient to track each and every sBOND with each tx, we opt to use the Aggregated Bond (ABOND) as an approximation for the Senior tranche.
transfer Junior jTokenDAI (for example) to pool (lock)
mint a junior BOND token (NFT) and transfer to Junior
queue liquidation after ABOND.maturesAt. First tx after that timestamp will trigger the liquidation.
send junior's liquidated DAI
burn the jBOND NFT
The set of features that a senior bond has is:
tokens - the amount of jTokens deposited in the bond
maturesAt - the maturity date at which it can be redeemed
In order to provide the best UX for Juniors and encourage them to participate in our SMART Yield pools, we want the system to allow them to join the pool at any time. Moreover we want the possibility of instant withdrawal of at least part of their funds, without affecting the integrity of the system and keeping the guarantees.
To do that, we have to be able to calculate the profits and losses of the pool very efficiently. We do that by averaging all existing senior bonds into one "weighted average" ABOND with the following properties:
Principal locked (sum) -> ABOND.principal
Guaranteed rewards (sum) -> ABOND.gain
Start timestamp -> ABOND.issuedAt
Weighted average end timestamp -> ABOND.maturesAt
The aggregate sBOND (ABOND) represents the current Senior pool and it will help us calculate the health of the Senior pool at an instant. If the rewards generated by the Senior pool so far exceed the guaranteed rewards at this time (abond.paid), the extra reward can be considered profit for the junior pool (and loss if it's negative).
ABOND parameters are recalculated each time new Senior bonds are purchased.
Senior APY determines the annual percentage for senior bonds at the current time.
It can be derived for any and all senior bonds in existence by annualizing the percentage difference between the deposited value and the gained value using the following formula:
((gain/principal) / (maturesAt - issuedAt)) * 365 * 100
View the current senior APY here: app.barnbridge.com/smart-yield.
Junior APY determines the annual percentage yield for junior tokens at the current time.
The APY for your junior position is realized when selling your junior tokens for their respective underlying tokens, at whatever the current junior token-to-underlying token price is. The conversion rate of junior tokens starts at 1:1, and slowly grows (or drops) when interest accrues. Depending on the annualized difference between your purchase and sell price you can calculate your APY.
Whenever senior positions have to be filled by junior funds (in the case that the underlying lending protocol offers lower rates than current seniors get), the price drops.
Otherwise, whenever yield accrues to junior positions that leverage senior funds, the conversion rate increases.
View the current junior APY here: app.barnbridge.com/smart-yield.
On the junior side, fees are collected on jToken purchases. Current junior tranche fee is set to 0.3% and can be adjusted by the BarnBridge DAO.
On the senior side, fees are collected after maturity date, and only from the gains of the bond - when sBonds are redeemed.
Current senior tranche fee is set to 10% and can be adjusted by the BarnBridge DAO.
To buy senior bonds you need to own at least some amount of token from the markets list at app.barnbridge.com/smart-yield.
Check our detailed guide here: How to buy senior tokens?
To buy junior tokens you need to own at least some amount of token from the markets list at app.barnbridge.com/smart-yield.
Check our detailed guide here: How to buy junior tokens?
To redeem senior bonds you have to wait until the maturity date of the bond. If you want to withdraw your liquidity before that, you can try to sell it.
Check our guide here: How to redeem senior bonds?
If you want to withdraw your liquidity before the maturity date, you can sell the senior bonds on secondary markets. These will have a discount from the redeemable value of the senior bond, but should still be profitable even after the gains portion of the bond takes a haircut.
Check our guide here: How to sell senior bonds?
If you want to get your liquidity and profits you can withdraw it from the pool. To do so, you’ll have 2 options:
1. Instant Withdrawal
The sellTokens() function allows juniors to instantly withdraw their unlocked underlying tokens. The locked part of each jToken is burnt in favor of the existing jToken holders, increasing the price. Effectively using this function, a junior forfeits their locked underlying. This allows instant arbitrage opportunities between our pool and secondary markets where jTokens are traded, like Uniswap, creating a floor for the jToken price.
2. 2-step Withdrawal
The 2-step process allows a user to first signal the intention of exiting the pool. In return they receive an NFT that can be redeemed after the current ABOND ends. The first transaction after ABOND.maturesAt triggers the liquidation for all jTokens scheduled for liquidation. The user can come anytime after ABOND.maturesAt to withdraw their part of the liquidation.
Signal withdrawal = buy junior bond NFT
Redeem junior bond NFT
All jTokens locked in junior Bond NFTs after the 1st step are excluded from the junior pool when calculating new senior BOND rates, so these funds are not used to collateralize any further senior positions, but they will be subject to the profit and losses of the pool until the maturity date of the aggregate bond - in order to continue to guarantee the yields for the senior positions that were opened during their lifetime.
Each 2-step withdraw initiation will create a jBOND NFT with a maturity date for the second step. The second and final step of withdrawal, can be called publicly by anyone and it will burn the NFT and send the owed tokens to the NFT's owner.
Check our detailed guide here: How to withdraw junior tokens?
If you want to get your liquidity back another option you can use is selling them on secondary markets. These secondary venues will also serve to create a floor price for jTokens.
Check our detailed guide here: How to sell junior tokens?