Perennial V2
Comment on page

Payoff & Positions

When initializing a market, the market operator will select a payoff function. A payoff function describes the logic the smart contracts should use to divide the money between the two sides of the market: long & short, when the market settles.
Perennial allows for developers to define any payoff function they desire — everything from simple long <asset> markets to 3x short <asset> markets to options & exotic payoffs. Below are some examples of possible payoff functions:
Example Payoff Functions
3x Leveraged Ether
3 * ETH
Chainlink ETH Feed
Chainlink ETH Feed
sqrt( ETH )
Chainlink ETH Feed
The payoff function for a market can be any function over an available oracle feed. This function is the definition of the exposure one (1e18) taker position represents within the market.
In the case of the "3x Leveraged ETH" payoff function, the payoff function itself is leveraged. This is independent of Maker positions that can also be leveraged (Ex. a Maker could be 2x leveraged on a 3*ETH market). For more information on Maker/Taker leverage, see the Maintenance (& Leverage) section.


Positions in Perennial are represented as units of a payoff function. This means exposure is tethered to the payoff function, not in terms of USD.
For example, say one wanted to open a 1 ETH long position (payoff = 1 * ETH). This will open a taker position for 1 * market_payoff, so 1 * ETH. This position would keep 1 ETH of exposure until closed or liquidated.
Conversely, if a user is trying to open a position in terms of some $USD amount, they would have to estimate the USD value in units of the underlying payoff and open a position accordingly.
For example, if ETH is about $1000, and a user wants to open a $2500 long-eth position, they could call openTake(2.5), which will open a position that tracks 2.5*ETH, which will be approximately (but not exactly, because of delayed settlement) equal to $2500.
​Funding & fees are debited from a position's collateral account.