An Aastra (Sanskrit: अस्त्र) was a supernatural weapon and also the first set of products launched under Brahma.
TLDR;
This paper introduces new structured strategies based on Uniswap v3 to generate sustainable yield. Our work builds upon the research done by Guillaume Lambert (link).
Brahma has developed a new framework to analyze the Uniswap v3 LP token. Our strategy is akin to selling a perpetual short-put position on ETH-USDC pair on Uniswap to generate sustainable yield.
Motivation
De-Fi users are on the lookout for strategies that help them develop sustainable yield and are moving away from the inflationary rewards handed out via liquidity mining dependent farms due to their volatile APR/APY's. This problem was addressed by Ribbon Finance through their structured products over ETH which confirmed the need for similar instruments to aid this requirement.
Ribbon Finance leverages structured strategies using options, that are minted and executed over platforms like Opyn and Hegic. They abstract the complexities involved in executing such an operation for the users and help generate yield. Building on a similar approach, Brahma has been developing structured instruments that emulate the same pay-off structure of a Put selling strategy but have added benefits that include deep liquidity, autonomous execution, and swap premiums of Uniswap V3.
Our Approach:
We are modeling the Pay-off structure of a Put selling strategy, by leveraging the concentrated liquidity mechanism of Uniswap V3.
Uniswap V3, which was released in May 2021 introduced the concept of concentrated liquidity on AMM's (Automated Market Makers)(paper). This improvement gave Liquidity Providers (LP's) the potential to deploy liquidity over a selective price range contrary to Uniswap v2 (0 - infinity).
Let us have a look at the value of Uniswap V3 LP position over different price ranges.
Let $LP_{value}$ = value of lp position holdings
$$LP_{value} = \begin{cases} LP(1/\sqrt(P_{l}) - 1/\sqrt(P_{u})), P < P_{l} \\ 2L\sqrt(P) - L(\sqrt(P_{l}) + P/\sqrt(P_{u})), P_{l} < P < P_{u}, \\ L(\sqrt(P_{u}) - \sqrt(P_{l})), P \geq P_{u} \end{cases}$$
where
L = Liquidity of the position,
P = Current Price
$P_{u}$ = Price at upper tick
$P_{l}$ = Price at lower tick
This gives us a payoff structure which can be represented as follows:

An LP's position acts as a synthetic short put option, something you can read more about here. The difference to be noted is that there is no premium paid at the time of taking an LP position on Uniswap V3 as opposed to a normal short put option where you are paid the premium on the sale of the option. The premiums for the LP positions are compensated via swap fees.
Strategy
Enter synthetic short put strategy on Uniswap V3. We would like to explore if the top trading pool on Uniswap V3 i.e., ETH-USDC 0.3%
pool can collect enough premium via swap fees to compensate for the risk of the short put option. To test let's build a strategy:
- Every week we select a defined price range for taking our LP position on Uniswap v3
- At the end of the week i.e. the time of expiry, if the price defined at the upper tick is less than the market price at the time your option expires out of money. However, during this period if the market price lies between the range selected, you are eligible to collect the swap fees.
- Coming to other extreme case, If the price defined at the upper tick is greater than the market price at the end of our duration, the option expires out of money. This leads to loss in your position as you start holding ETH in your LP position.
- These fees earned are added to an underlying LP position over a fixed schedule (i.e., every 3 days). This adds a compounding factor, allowing us to earn a higher amount in fees.
Let's take a look at a basic example of how this would work. Let's say the current price of ETH is $3,000. Based on this, the manager selects the variables as follows:
- Lower-tick of ETH (Strike) = $2,700
- Upper-tick of ETH = $2,900 during the same period.
- Duration until Expiry: 7 days
Now, the LP generates yield as long as the price of ETH falls within the above-mentioned price range in the span of the next 7 days. Post this, the LP can create a new position for a certain period of time-based on the current price of ETH.

Methodology
The clear factors that influence our success at generating sustainable yield is the duration of the LP position and the strike price at the end of it. So, how do we select these factors for the LP position? In order to do that let's define the range
parameter which selects the strike price at x% lower than the current price and another parameter known as the duration
which controls the duration until the time of expiry.
With these parameters defined let us test our strategy on Uniswap V3 live data from May 2021 to September 2021. We accounted for gas costs and swap fees while conducting the backtest to keep it as realistic as possible. Here are portfolio values over the duration:

Check: https://github.com/Brahma-fi/uniswap_backtester/blob/master/notebooks/backtest.ipynb
Inferring the Results:
- The longer the duration, the lower is the loss incurred over a tight range. This could be due to 2 reasons, the first one is that the cost of rebalancing goes down due to a longer duration until expiry. The second one implies that the fees collected are higher simply due to the longer duration of time. Both of these reasons can be inferred from the max drawdowns in the 14 day duration.
- When we have a wider range, the amount of ETH being held is low. This ensures that the losses are reduced significantly by giving the user a lesser exposure to the lower price of ETH. This can be inferred from the return on a range of 30%.
From the above result, our thesis has validated a positive return on our strategy. However, there is one problem with our current analysis based on the time duration of testing. Our strategy has only been tested on very limited data as it has only been 4 months since the inception of v3. There is a possibility that our analysis may be flawed due to the price of ETH fluctuating in our favour.
To verify that, we conducted a Monte-Carlo analysis which tests our strategy on multiple random price paths. The price paths are generated using Gaussian distribution on the returns of the pool. With the assumption that price distribution is similar to that of the 4 month period. Next, we performed the backtest on these price paths with following assumptions:
- We assume that volume on Uniswap v3 stays the same as that of duration we back-tested it on.
- The percentage of fees we earn from swap is 50% of that during the back-testing period.
- We aren't accounting for any swap fees or gas costs involved in the strategy execution.
With these assumptions in place here are the different simulated price paths for ETH-USDC using the Monte- Carlo analysis:

Based on the price paths, visualized in the above diagram, we performed the back-test for our strategy. A graphical analysis of the portfolio value over an average of all the paths has been pictured below:

check: https://github.com/Brahma-fi/uniswap_backtester/blob/master/notebooks/monte_carlo_simulation.ipynb
Here is a distribution of returns along all the price paths:

Avg Return: 18.86%
We can infer that the returns are positively skewed. This confirms that irrespective of the price path taken our strategy is able to collect premium from swap fees.
Worst Case Scenario
Let's take the worst-performed price path from the monte-Carlo. Here is the portfolio plot:

From the above data, we can see that the strategy suffers huge drawdowns during the time period in reference. Based on this let us analysis how the price of ETH compares to our selected price ranges.

Observations:
- Due to the plummeting ETH prices during this period the portfolio suffered huge drawdowns.
- The LP position was unable to collect any swap fees for a majority of the duration, resulting in a lower yield.
Conclusion:
- The put selling strategy will always have the risk of a downside due to the price of ETH going down by a very large margin at the time of expiry. However, with enough time to recover, the yield collected from the swap fees compensates for these drawdowns resulting in a positive return. This can be confirmed through the Monte-Carlo analysis with large drawdowns in the 1st week of May 2021.
- It must be noted that the main source of earning yield with the strategy is through the swap fees collected from Uniswap. If the volume on Uniswap reduces by a large margin or the uni-governance enables a fee collection there will be a sharp decrease in the yield rendering the strategy unviable.
We built Aastra for users wishing to generate better yield while allocating their assets more efficiently. Check out our first vault here.
You find the source code used for the above analysis: here
Feel free to get in touch with us for any questions you might have regarding the above analysis or have some other strategies to deploy on Uniswap v3. Join us on our discord.
Legal Disclaimers
The aforementioned contents in this blog are based on numerous assumptions and uncertainties which are subject to change periodically. The effect of such changes may result in alterations in premise, risks, and uncertainties and may cause actual results or developments to differ from the results and progressions anticipated by brahma.fi
Even if our anticipated results and progressions are materialised, such results and developments may yet still fail to achieve any or all of the anticipated benefits anticipated by this statement. Brahma reserves the right to alter the plans, and intentions recorded at any time and for any reason or no reason, in sole discretion. Brahma undertakes no obligation to update the decision publicly or revise any forward-looking statement as to future developments or otherwise.
All contents and graphics used in the material intend no religious impairment and do not superintend its interpretation. This blog is not aiming to provide legal, financial or investment, or other advice. We recommend users stack their information sources basis their own personal research and not draw tangents from the materials or contents mentioned.