# Porfolio Margin

The inner workings of GRVT's Portfolio Margin

The Portfolio Margin algorithm takes a Value-at-Risk (VaR) approach to compute margins.

**Simulation Charge**— It simulates the max loss that the portfolio will suffer during spot/volatility movements and applies the max loss as a charge.**Calendar Spread Charge**— To account for the basis risk of calendar spread positions, GRVT applies a Calendar Spread charge.**Intermarket Spread Credits**— To recognize the risk-reducing aspects of portfolios containing off-setting positions in highly correlated instruments, GRVT reduces margins via Intermarket Spread Credits.**Net Short Option Minimum**— To capture the risk of deep out-of-the-money short options, which are not well covered by other aspects of the Portfolio Margin algorithm.

# GLOBAL CONFIGS

PORTFOLIO_INITIAL_MULTIPLIER = 1.2

# MARGIN OVERVIEW

maintenance_margin = max(

# simulation_charge takes intermarket spread simulation into account

simulation_charge + calendar_charge - intermarket_credits,

net_short_options_minimum

)

initial_margin = maintenance_margin * PORTFOLIO_INITIAL_MULTIPLIER

Max Loss Simulations subjects the portfolio to a series of spot/volatility movements, determines the max loss that the portfolio will suffer in these simulations, and uses the results to determine the appropriate charge.

The table below simulates a 20% price move scan and 45% vol move scan.

After simulating all 10 scenarios, the max-loss amount is selected as the maintenance margin requirement. (289k)

The max-loss simulations will compute a total of 14 standard scans:

- 7 Spot Move Scans
`[-100%, -67%, -33%, 0%, 33%, 67%, 100%]`

of configured`SPOT_MOVE`

- e.g. For
`SPOT_MOVE = 20%`

,`[-20%, -13.33 %, -6.67%, 0%, 6.67%, 13.33%, 20%]`

- 2 Vol Move Scans
`[-100%, 100%]`

of configured`VOL_MOVE`

Further out-of-the-money short options may pose a significant risk, as unusually large price changes may result in unexpectedly large losses, particularly as expiration nears. GRVT accounts for this risk by including Extreme Scenarios in the max-loss simulations.

This is done by adding on 2 extreme range scans:

`-300% EXTREME_SPOT_MOVE, +100% VOL_MOVE`

`+300% EXTREME_SPOT_MOVE, +100% VOL_MOVE`

The resulting gain or loss is then multiplied by

`EXTREME_DISCOUNT`

to determine the potential exposure.To demonstrate how this works, consider the following scenario:

- Parameters
`SPOT_MOVE = 20%`

`VOL_MOVE = 45%`

`EXTREME_SPOT_MOVE = 60%`

`EXTREME_DISCOUNT = 33%`

- Computed Max Loss
`Regular Scan Max Loss = -289k`

`Extreme Scan 1 PnL = -600k`

`Extreme Scan 2 PnL = 550k`

- Resultant Max Loss
`Max Loss = min(-289k, -600k * 0.33, 550k * 0.33) = -289k`

The following parameters are used in our max-loss simulations (per asset config):

# PER ASSET CONFIGS

SPOT_MOVE = 0.2

VOL_MOVE_DOWN = 0.45

VOL_MOVE_UP = 0.45

EXTREME_SPOT_MOVE = 0.7

EXTREME_DISCOUNT = 0.4

Calendar Spread Charge ensures that the GRVT risk engine takes the basis risk of calendar spread positions into account. When an option/future contract expires, the portfolio’s delta may shift substantially, and result in a large spike in risk.

Consider a portfolio with the following positions:

- +1000 BTC perps
- -1000 BTC futures (expires in 1 days)

The max loss simulations will require the portfolio to post 0 margins since it is perfectly delta & vega hedged; It is incapable of computing calendar/expiration/theta risk. As such, GRVT applies a calendar spread charge to account for calendar risk.

Our algorithm only applies spread charges for portfolio delta shifts in a 1-day lookahead period. The spread charge is proportional to the portfolio delta, and unit charge amount increases linearly from 0 to future position charge as expiring positions approach.

It works as follows:

- For each market (BTC/ETH/etc)
- Compute Portfolio Delta for the next 1-day of expiry
- Day 0 + 10 Portfolio Delta
- Day 1 - 60 Portfolio Delta

- Gravity will apply a futures charge based on the difference in absolute delta (eg. +50 Delta)

time_to_expiry = (time_expire - time_now) / time_day

size = max(0, abs(day_1_delta) - abs(day_0_delta))

# futures_charge follows the simple margin position charge (P * M)

calendar_charge = size * futures_charge * time_to_expiry

Deep out-of-the-money short options may incur zero or minimal simulation charge, and similarly, its risk is not captured on the calendar spread charge. When market volatility is extreme, these options may move closer to-the-money or in-the-money, thereby generating potentially large losses. To capture this risk adequately, Gravity introduces a

**Net Short Option Minimum**component.Whilst most other exchanges would implement a

**Short Option Minimum**component, Gravity has opted to only charge a minimum for short options positions without fully hedged downsides. In other words, Gravity’s algorithm considers the risk-reducing aspects of long options positions.# GLOBAL CONFIGS

PORTFOLIO_INITIAL_MULTIPLIER = 1.2

# MARGIN OVERVIEW

maintenance_margin = max(

# simulation_charge takes intermarket spread simulation into account

simulation_charge + calendar_charge - intermarket_credits,

net_short_options_minimum

)

initial_margin = maintenance_margin * PORTFOLIO_INITIAL_MULTIPLIER

As the above formulas show, the

**Net Short Option Minimum**component is typically not charged along with the rest of the portfolio margin components. It behaves purely as a safety buffer to properly capture the risk of portfolios that hold a large net short option position.The net short option size describes the number of short options positions without fully hedged downsides. It is computed using the below methodology.

Consider the following portfolio:

Call Position | Strike Price | Put Position |
---|---|---|

+40 | 1100 | +160 |

-90 | 1200 | +40 |

+70 | 1300 | |

1400 | -60 | |

-30 | 1500 |

First, we calculate the

**Net Calls Above Strike**. This is done by cumulatively rolling up the call positions at each strike from the lowest strike to the highest strike.It takes advantage of the following property: A long call option at a lower strike price will completely cover the downside risk of a short call option at a higher strike price.

Strike Price | Call Position | Net Calls Above Strike |
---|---|---|

1100 | +40 | +40 |

1200 | -90 | -50 |

1300 | +70 | +20 |

1400 | +20 | |

1500 | -30 | -10 |

The

**Net Calls Above Strike**metric measures the number of in-the-money/out-of-the-money call option contracts if the option were to settle above the strike price.- If the option settles in the range of [1201 - 1299], a net of 50 call option contracts settles out-of-the-money.
- If the option settles in the range of [1301 - 1499], a net of 20 call option contracts settles in-the-money.

Then, we calculate the

**Net Puts Below Strike**. This is done by cumulatively rolling up the put positions at each strike from the highest strike to the lowest strike.It takes advantage of the following property: A long put option at a higher strike price will completely cover the downside risk of a short put option at a lower strike price.

Strike Price | Put Position | Net Puts Below Strike |
---|---|---|

1100 | +160 | +180 |

1200 | +40 | +20 |

1300 | -60 | |

1400 | -60 | -60 |

1500 | 0 |

The

**Net Puts Below Strike**metric measures the number of in-the-money/out-of-the-money put option contracts if the option were to settle below the strike price.- If the option settles in the range of [1101 - 1199], a net of 20 put option contracts settles in-the-money.
- If the option settles in the range of [1201 - 1399], a net of 60 put option contracts settles out-of-the-money.

Lastly, we compute the

**Net Short Option Size**. This is done by adding the Net Calls Above Strike and Net Puts Below Strike values for each settled price range, then taking the minimum size seen.Settled Price Range | Net Calls In Range | Net Puts In Range | Net Options In Range |
---|---|---|---|

[<=1099] | +180 | +180 | |

[1101 - 1199] | +40 | +20 | +60 |

[1201 - 1299] | -50 | -60 | -110 |

[1301 - 1399] | +20 | -60 | -40 |

[1401 - 1499] | +20 | 0 | +20 |

[>=1501] | -10 | -10 |

The

**Net Options In Range**metric measures the number of in-the-money/out-of-the-money option contracts if the options were to settle in the defined settled price range.- If the option settles in the range of [1101 - 1199], a net of 60 option contracts settles in-the-money.
- If the option settles in the range of [1201 - 1299], a net of 110 option contracts settles out-of-the-money.

Hence, the

**Net Short Option Size**will take on the minimal size seen of 110.The minimum charge applied by the

**Net Short Option Minimum**component takes on the following simple formula.# e.g.

# net_short_option_size = 110

# underlying_price = 1000

# NET_SHORT_OPTION_CHARGE = 12.5%

# net_short_option_minimum = 110 * 1000 * 0.125

net_short_option_minimum =

net_short_option_size *

underlying_price *

NET_SHORT_OPTION_CHARGE

In other words, given that

`NET_SHORT_OPTION_CHARGE = 12.5%`

, portfolios that purely short deep out-of-the-money options can still receive up to 8x leverage.Last modified 2mo ago