Actor Functions

Traders

OptionMarket.openPosition

Open a new option position (of any type) or add to an exisiting position.

OptionMarket.closePosition

Reduce the size of an existing option position or close it fully.

OptionMarket.forceClosePosition

Same as closing a position, but priced using a different method. Can only be called when outside of delta cutoffs or after the trading cutoff for a given board has passed.

OptionMarket.addCollateral

Add collateral to any open short position. Does not need to be owned by the caller.

OptionToken.split

Split an OptionToken into two parts, specifying the new amount and collateral. For shorts this amount of collateral must be more than the minCollateral requirements

OptionToken.merge

Merge two or more positions of the same

Liquidity Providers

LiquidityPool.initiateDeposit

Initiate a deposit. This will take sUSD from the depositor and either immediately mint LiquidityTokens for the LP (if no boards are live), or will create an entry which will be processed by keepers after the deposit delay - at which point LiquidityTokens will be sent to the LP.

LiquidityPool.initiateWithdrawal

Initiate a withdrawal. This will take LiquidityTokens from the depositor and either immediately send sUSD to the LP (if no boards are live), or will create an entry which will be processed by keepers after the deposit delay - at which point sUSD will be sent to the LP.

Keepers

OptionMarket.settleExpiredBoard

After a board expiry has been passed, this public function will lock in the settlement price to the most recent settlement price and compute aggregated profits for LP and traders, reserving those amounts appropriately.

OptionMarket.liquidatePosition

Liquidate a short position who's collateral is less than minCollateral requirements for the position. This will pay the option premium to the LP, and then

LiquidityPool.processDepositQueue

Will iterate over deposit queue entries in order and process them if the deposit delay has passed and no circuit breakers are firing.

LiquidityPool.processWithdrawalQueue

Will iterate over withdrawal queue entries in order and process them if the withdrawal delay has passed and no circuit breakers are firing.

OptionGreekCache.updateBoardCachedGreeks

Will iterate over every strike on a board and update netDelta/netOptionValue/netStdVega for each strike, aggregating them for the entire system. To get an accurate picture of these values, all boards must be iterated over.

ShortCollateral.settlePositions

Will settle expired OptionTokens. Will burn the OptionTokens that are being settled, either paying out the settlement value of longs (difference in strike and spot, direction depending on call vs put); or will return the collateral to the trader minus any owed settlement value.

ShortPoolHedger.hedgeDelta

Will use LiquidityPool funds to hedge LPs against delta risk by either opening a short to counteract a long delta exposure or purchase the baseAsset to counteract a short delta exposure. Note, the delta exposure takes long collateral into account for LONG_CALLs purchased on the market.

Owner

The contract owner has several powers over the market. In short:
  • Adding and updating boards/strikes
  • Pausing the markets
  • Setting parameters
  • Updating PoolHedger address
  • Updating SynthetixAdapter implementation

Guardian

The guardian is a special actor in the system that has the authority to process deposits/withdrawals disregarding circuit breakers. They would come in to allow the deposits/withdrawals to go through in extreme scenarios, given the pool is priced properly.