Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 34 additions & 11 deletions site/content/overview/cover-pools.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,15 @@
<!-- Cover Position alongside Range Position -->
Cover Pools allow you to create positions to increase exposure to a specific token conditional on it increasing in price on a given pair.</br>

* If the ETH price increases, the pool sells DAI and increases the amount of ETH exposure
* If the ETH price decreases, the pool sells ETH and increases the amount of DAI exposure
A position on a cover pool can be considered a stop-loss (SL) order. In this case, you can view your range as the ranged version of the “trigger point” for the order.

If a position is or has been in range on a [bidirectional automated market maker](/docs/overview/glossary/#bidirectional-automated-market-maker) it increases the exposure to the token dropping in price or has all exposure to the token dropping in price.</br>
Like other AMM positions, the cover pool works with discrete price ticks that in this case define the liquidity to be auctioned, the trigger point for the liquidity, and the starting price for the auction of the liquidity within that price tick.

When you provide liquidity to a cover pool position across a range it is split across the ticks within the trigger range you have selected.

So when the reference price reaches or passes a price tick with liquidity it initiates the Dutch Auction for the liquidity within that price tick.

If a position is or has been in range on a [bidirectional automated market maker](https://docs.poolshark.fi/overview/glossary/#bidirectional-automated-market-maker) it increases the exposure to the token dropping in price or has all exposure to the token dropping in price.</br>

* If the market wants ETH, the pool takes DAI and increases the ETH to DAI price
* If the market wants DAI, the pool takes ETH and decreases the ETH to DAI price.
Expand All @@ -16,13 +21,17 @@ This allows them to function as a hedging tool if the user wants to enter or exi

If this was attempted using a position with a fixed price such as a limit order (as done when providing liquidity) the position will either underprice the assets or it won't be filled.

Cover pools allow you to create a position to provide liquidity at a set price and when the TWAP price nears the liquidity becomes available to trade. The liquidity is then a part of a [dutch auction](/docs/overview/glossary/#dutch-auction).
Cover pools allow you to create a position to provide liquidity at a set price and when the TWAP price nears the liquidity becomes available to trade. The liquidity is then a part of a [Dutch Auction](https://docs.poolshark.fi/overview/glossary/#dutch-auction).

Cover Pools operate with a [Gradual Dutch Auction (GDA)](https://www.paradigm.xyz/2022/04/gda) meaning that you can start at the price indicated by the current price tick of your position and begin to offer a more discounted price until it is accepted by the market.

<<<<<<< HEAD
As a **Range Order**, Cover Positions will unlock periodically unlock liquidity across a price range as the [**Time-Weighted Average Price**](https://docs.poolshark.fi/overview/glossary/#time-weighted-average-price-twap) (TWAP) increases or decreases (indicated by the user).
=======
As a **Range Order**, Cover Positions will periodically unlock liquidity across a price range as the [**Time-Weighted Average Price**](/docs/overview/glossary/#time-weighted-average-price-twap) (TWAP) increases or decreases (indicated by the user).
>>>>>>> 94205ba6628a18052b01e0bafb09cf08fe21fa8e

This is because we don't want the pool to unlock liquidity due to high frequency market volatility which will be closed out in an extremely short time period due to arbitrage.
This is because we don't want the pool to unlock liquidity due to high-frequency market volatility which will be closed out in an extremely short time due to arbitrage.

## Applications (non-exhaustive)

Expand All @@ -32,7 +41,7 @@ If you are seeking to cover impermanent loss dynamically as the price moves, it

If the user wants to increase capital efficiency, they can either increase the lower bound or decrease the upper bound so that less upfront capital is required.

Rather, Cover positions are meant to decrease exposure of one asset and increase exposure to another as the price of the initial asset becomes worse. This is a way for LPs to hedge a portion of their portfolio in the case the market price moves against a given asset.
Rather, Cover positions are meant to decrease the exposure of one asset and increase exposure to another as the price of the initial asset becomes worse. This is a way for LPs to hedge a portion of their portfolio in the case that the market price moves against a given asset.
</br></br></br><br/><br/>
![Range Order 1](cover_position.png){: style="width:100%"}
</br></br>
Expand All @@ -46,12 +55,26 @@ The Cover Pool will unlock liquidity at each price point based on the total amou

Capital efficiency can be improved by selecting a smaller range over which to trade to the desired output token.

Cover LP Positions can also be used to deleverage long or short positions prior to getting liquidated.
Cover LP Positions can also be used to deleverage long or short positions before getting liquidated.

### Dynamic Rebalancing of Positions

A position on a cover pool can also be used to dynamically rebalance your portfolio while prices change.

For example, if you are looking to rebalance your portfolio as Token A is decreasing in value to reduce exposure to Token A or expressed inversely increase exposure to Token B due to Token B increasing in value. The key point is that it rebalances from one token into another due to the price change.

### Deleveraging to Avoid Liquidation

Deleveraging is the process of reducing leverage or borrowing to decrease the risk of liquidation. When users borrow against their collateral on DeFi protocols, they are susceptible to liquidation if the value of their collateral falls below a certain threshold. By deleveraging, users reduce their borrowing and decrease the likelihood of their positions being liquidated.

By moving from a more risky asset into a more stable asset it increases the required price decrease to be liquidated. All this can be accomplished while the position changes its composition from a risky asset to a stable asset without needing to remove the collateral.

With lending protocols that accept cover pool positions as collateral, you can use them to lend a risky asset while being able to keep the upside potential of the collateral without needing to remove liquidity and interrupt the loan.


## How Auctions Work

In order to be competitive with the current market rate, the pool must have a dynamic pricing mechanism so the position is filled as soon as possible while keeping any discount at a minimum. For this, Cover Pools use Gradual Dutch Auctions to raise or lower the pool price (depending on buying or selling a token) to satisfy market demand for an asset within a trading pair at that point in time.
To be competitive with the current market rate, the pool must have a dynamic pricing mechanism so the position is filled as soon as possible while keeping any discount at a minimum. For this, Cover Pools use Gradual Dutch Auctions to raise or lower the pool price (depending on buying or selling a token) to satisfy market demand for an asset within a trading pair in that instance.

From Paradigm's Gradual Dutch Auction article:
```
Expand All @@ -62,11 +85,11 @@ And the starting price of the first auction is given by some `initial price`.

Combining these values gives us an exponentially changing market price for each tick of liquidity we auction off. The price will never deviate by more than one price tick (e.g. 0.1% for the ETH-USDC 0.05% tier).

## How Volatility Tiers work
## How Volatility Tiers Work

Volatility tiers set a few different parameters when a pool is created: the auction length, syncing fee, minimum position size, minimum position width.
Volatility tiers set a few different parameters when a pool is created. These variables include the auction length, syncing fee, minimum position size, and minimum position width.

Auction length is the amount of blocks until the next auction can be triggered by a price change.
Auction length is the number of blocks until the next auction can be triggered by a price change.

A syncing fee is for when an auction goes unfilled and it needs to be moved to the next price tick in which liquidity is added to the auction at the new price tick.

Expand Down
2 changes: 1 addition & 1 deletion site/content/overview/glossary.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Liquidity pools which facilitate both buying and selling on a token pair.

## **Directional Automated Market Maker**

Liquidity pools which facilitate only buying or only selling on a token pair.
Liquidity pools which facilitate only buying or only selling on a token pair. They iterate through liquidity

> Example: Poolshark

Expand Down
20 changes: 10 additions & 10 deletions site/content/overview/limit-pools.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Limit Positions operate as a limit order consolidated to an invariant curve. The
The main difference is that there is a split buy and sell side.
The best priced liquidity for each respective trading direction is aggregated to be accessed first.

This enables Limit Pools to enforce [**price priority**](/docs/overview/glossary/#price-priority).
This enables Limit Pools to enforce [**price priority**](https://docs.poolshark.fi/overview/glossary/#price-priority).

</br>
![Limit Pool Range Order](price-pools.png){: .center style="width:85%"}
Expand All @@ -20,37 +20,37 @@ In offloading a large position before a large market move, it would be ideal to
</br>
> **<em>Use Case #1: Quick Exit/Entry</em>**
> </br></br>
> <em>Alice wants to sell ETH from 1998 to 1999.99 DAI per ETH.</em>
> <em> Alice wants to sell ETH to DAI.</em>
> </br>
> <em>The current price of ETH is 2000 DAI per ETH.</em>
> <em>The current price of ETH is 2000 DAI per ETH.
</em>

</br>
For this `Limit` position:

* `lower` bound would be 1998
* `upper` bound would be 1999.99
* `lower` bound would be 1999.87
* `upper` bound would be 1999.87

This position would start offering up DAI to the market at a price of 1999 moving towards 1999.99 as their liquidity is filled.
If this is the best price on the market, traders will naturally gravitate towards the Limit Pool in order to source their liquidity.
This position starts offering up ETH to the market at a price of 1999.87. If this is the best price on the market, traders will naturally gravitate towards the Limit Pool in order to source their liquidity.

It is key to have enough of a better price on the market to incentivise the volume to come and arbitrage vs the price offered by a Bidirectional AMM.
It is key to have enough of a better price on the market to incentivize the volume to come and arbitrage vs the price offered by other pools on this and other AMMs.

If the depth of the liquidity isn't deep enough a market order will move to the liquidity offered by an AMM due to the high depth.
If the depth of the liquidity isn't deep enough a market order will move to the liquidity offered by another pool of greater depth as this will equate to a better avg price for the trader.

This is great for large traders who are unwilling to accept slippage and paying for trading fees on the market, as they can wait until their liquidity is prioritized in order to capture the exact execution price they desire. In addition, due to being on the provider side the position will collect a premium (in the form of a trading fee) based on the fee tier of the order in the pool.

In this case the average price ETH is sold at by Limit Pool is xx.xx DAI per ETH. In addition to this if the fee tier of the pool is 0.3% then we can take the average price sold and multiply it by (1 + fee tier) to get the average price sold inclusive of the premium.

In summary: In this example Alice is better off providing liquidity to a Limit Pool than swapping due to collecting the fee instead of paying it and having a predetermined execution price instead of being subject to slippage.

Finally, in terms of benefits from the MEV side, positions on limit pools cannot be sandwiched in the typical way that affects AMMs because this is not on the taker side as you are providing liquidity. This creates a bid-ask spread where users compete for execution by undercutting each other aka it forces the users to compete for order flow by offering better prices.

Mechanism to understand:
```
- Choosing a Range Bound
- Claiming Position Rewards
```


### Taking Profit
<!-- add subtext below image -->
If you are seeking to take profit over some price range, Limit Pools are ideal given all the liquidity traded into your position will be retained. The `lower` and `upper` bound will mark the starting and ending price across which your position will trade from the input token to the output token.
Expand Down
3 changes: 1 addition & 2 deletions site/content/tutorials/how-to-cover.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ If you are looking to cover and existing range pool position please move to [Sel

![Input fields](Cover 11.png){: style="width:100%"}

- [x] **11.** Finally, click “Approve” to approve the spend of your tokens.
- [x] **11.** Finally, click “Approve” to approve the spending of your tokens.

![Approve ](Cover 12.png){: style="width:100%"}

Expand All @@ -98,5 +98,4 @@ If you are looking to cover and existing range pool position please move to [Sel

- [x] **17.** Congratulations you have just created your Cover position on Poolshark! Click the pop-up to view on Arbiscan.


<br><br><br>
2 changes: 1 addition & 1 deletion site/content/tutorials/how-to-range.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ title: How to Range

![Range Pool Page](Range 5.png){: style="width:100%"}

- [x] **7.** Repeat the same process for ```token 1``` by clicking selecting the second token.
- [x] **7.** Repeat the same process for ```token 1``` by selecting the second token.

![Range Pool Page](Range 6.png){: style="width:100%"}

Expand Down
4 changes: 2 additions & 2 deletions site/content/tutorials/how-to-swap.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ title: How to Swap

- [x] **3.** Navigate to the “Swap” page (It should be selected by default).

- [x] **4.** Select your desired input token by clicking on the drop down arrow.
- [x] **4.** Select your desired input token by clicking on the drop-down arrow.

![Input token dropdown](Swap 3.png){: style="width:100%"}

Expand All @@ -30,7 +30,7 @@ title: How to Swap

- [x] **7.** Enter the amount of the input token you wish to swap.

- [x] **8.** Cick “Swap” to Approve the router to swap your tokens (only applies if this has been your first time swapping this input token on Poolshark).
- [x] **8.** Cick “Swap” to Approve the router to swap your tokens (this applies if this has been your first time swapping this input token on Poolshark).

![Approval for token](Swap 5.png){: style="width:100%"}

Expand Down