Arrow’s option creation and settlement mechanism are based on a dual-pool structure consisting of a trading pool and a market-making pool. A dynamic hedging engine is embedded into the system to hedge the net delta of the options contracts in the trading pool. Options are cash-settled in units of stablecoin.
Diagram of Dual Pool Structure
The primary trading pool determines option prices for buy and sell orders. An internal dynamic hedging engine interacts with the primary pool to hedge the net delta of each option added or removed from the system.
The AMM also sets the indifference price according to the marginal contribution of each new contract to the risk profile of the trading pool. The indifference price is off-chain and is called by our own customized oracles to interact with the primary pool.
The primary trading pool collects the net premiums (longs-shorts) from options traded on the AMM. Our indifference pricing engine calculates the premiums from the trading pool, which works in conjunction with our hedging engine to price unhedged risk. The price can be thought of as the amount after hedging that is required by the protocol to make the market maker indifferent to taking on the additional risk of the new option position, given that the hedging engine offsets the exposure to the option’s delta risk.
The second pool is an insurance and financing pool for the primary trading pool. In this pool, liquidity providers provide a backstop for funding the option liabilities in the trading pool, as well as financing for the delta strategies.
Users can provide both USDC and Arrow in the LP pool. By depositing these funds into the pool, liquidity providers provide protection to the option liabilities in the primary trading pool as well as financing for the delta strategies. In return, Liquidity providers are compensated with the residuals from the trading pool plus transaction fees.
The hedging engine keeps the risk profile of the trading pool resistant to movements in the underlying asset price. Specifically, the AMM calculates a delta for each new position added or removed from the protocol.
For example, suppose the trading pool's net delta is positive. In that case, the position is obtained by programmatically swapping stablecoins for the underlying on a DEX such as Pangolin or Trader Joe. Otherwise, if the net delta is negative, the position is obtained by programmatically interacting with an on-chain lending protocol such as BenQi or Banker Joe.
After the hedging policy is established, our pricing engine simulates price paths forward to expiration, and the risk measure assesses the options payouts net of the hedging proceeds. The indifference price is then set to be the difference in the amount of capital required from our risk measure assessment for adding a liability vs. not, given as a quote to the user of a particular option.
For example, suppose a user comes to buy the ATM call option. In this case, we would implement a hedging strategy and simulate the paths of payouts net of the hedge. The AMM then assesses the amount of unhedged risk added to the AMMs book. Given the hedge, the risk is measured as the amount of capital required to make the market maker indifferent to adding the additional liability to its book. This additional amount of capital is the indifference price of that call option.