Porfolio Margin

The inner workings of GRVT's Portfolio Margin

The GRVT Docs are a living document that will be dynamically and continuously edited and updated as the GRVT product suite evolves.

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

Simulation Charge

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.

Regular Scans

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

Extreme Spot Scans

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

Parameters

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

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

Net Short Option Minimum

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.

Computing Net Short Option Size

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 PositionStrike PricePut 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 PriceCall PositionNet 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 PricePut PositionNet 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 RangeNet Calls In RangeNet Puts In RangeNet 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.

Minimum Charge

Minimum Charge

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 updated