Risk Management

Managing Risk

Unlike a Compound LP position where LPs take on no directional/price risk or a Uniswap (V2) LP position where LPs take on minimal directional/price risk (impermanent loss), in Perennial, LPs take the other sides of trades, fully exposing them to the outcome of that trade. If traders win, Perennial LPs lose; if traders lose, Perennial LPs win.
Perennial is designed to make as few assumptions for LPs as possible — as such, hedging is not baked into the core protocol. We expect that LPs will choose to hedge outside of the protocol and/or by building vaults and higher-level protocols on top. In Perennial, risks/exposure is separated & requires LP opt-in, allowing LPs to specifically tailor the exposure they want and don’t want, making hedging (or offsetting risk) straightforward.
This is in contrast to other similar protocols that attempt to build this all in-protocol, batching many risks and a uniform-hedging model. Doing so fundamentally limits how LPs can interact with the system, especially more sophisticated LPs.

There are a few types of Risk to call out...

Directional Risk  The LP pool takes the other side of trades, so LPs are exposed to some directional risk through protocol. (ex. An LP in a Long ETH market will take on some Short ETH exposure… Conversely, an LP in a Short BTC pool will take on Long BTC exposure. Note: This risk is quite easy to hedge.
Liquidation risk — Some LPs may need to manage their position to keep their collateral level above the minimum requirement.
Smart Contract Risk — Perennial has insurance through Sherlock for up to $5mn in TVL that offers protection for all code audited by Sherlock (which will be all code to start). We intend to have the vast majority of upgrades & future changes run by Sherlock auditors as well (though in some cases, for simple changes, we may forgo this). Aside from this, Perennial was audited by Code Arena & Sherlock, and we will have bug bounties through Immunefi.


The key challenge is matching the amount to hedge with the current pool exposure, which depends on the pool utilization (LPs can run a bot to watch this). Ex. If a Long ETH market has a utilization of 75%, then 75% of an LPs position is taking on Short ETH exposure & 25% of the LPs capital is sitting idle in USD. Then, each time a subsequent trader opens or closes a position, this utilization (and thus the LP’s exposure) changes. As such, LPs would need to offset that exposure on another venue.
Perennial makes no assumptions about how LPs will hedge in the protocol. This is left entirely up to them. Some will hedge on centralized exchanges. Some will basis trade using spot. In the future, we will have simple delta-neutral vaults that passive LPs can deposit capital into. For an LP who offsets exposure off-chain, here’s a high-level strategy.

An algorithm for Hedging Off-chain

Some sophisticated LPs may choose to cancel out exposure within the protocol by hedging on a centralized exchange.
A naive method of hedging: check utilization for each market every block and update hedge if utilization changes.
A less-naive method of hedging: Listen for open/close position events for each market and update hedge if utilization changes.
However, a more efficient hedging algorithm: Because utilization can only occur when price updates occur, an LP can just listen for oracle update events, and then check to see if utilization has changed.
Hedging by tracking oracle events:
  1. 1.
    Create a bot that watches the protocol for events that correspond to oracle updates (an event that has the potential to alter utilization of the pool of capital)
  2. 2.
    When an oracle update event occurs, this may trigger settlement of positions (opens/closes) which could alter utilization. Call the Lens Contract product snapshot to get the data associated with that specific market, which returns information about the market, including total taker positions (Open interest) and total maker positions (total liquidity).
  3. 3.
    Calculate and store the pool utilization, where Utilization is equal to [Total taker positions / Total Maker positions].
  4. 4.
    If the current utilization of the pool is not equal to the previous stored utilization, this indicates that an LPs exposure in the protocol has changed.
  5. 5.
    Calculate new exposure by multiplying the notional size of your position (also in the Lens snapshot) with the current utilization.
  6. 6.
    Inversely mirror that exposure on another venue. Also note that an LP in multiple pools may be able to net out some exposure. Ex. An LP in both the Long-ETH & Short-ETH pool can cancel out some utilization, where long exposure is directly offset by short exposure.