[Pending] Portfolio Manager
These changes are due to go live 20 August 2026.
Portfolio Margin Scenarios
These are the scenarios used when computing portfolio margin. Note all regular scenarios have dampening 1.
All combinations in the table below are of the form (Spot Shock (%), Volatility Shock).
| Scenario | BTC | ETH | SOL/XRP | HYPE/ZEC | XAUT | ADA/CC |
|---|---|---|---|---|---|---|
| 1 | (+14%, Up) | (+16%, Up) | (+24%, Up) | (+27%, Up) | (+10%, Up) | (+33%, Up) |
| 2 | (+10.5%, Up) | (+12%, Up) | (+18%, Up) | (+20.25%, Up) | (+7.5%, Up) | (+24.75%, Up) |
| 3 | (+10.5%, Static) | (+12%, Static) | (+18%, Static) | (+20.25%, Static) | (+7.5%, Static) | (+24.75%, Static) |
| 4 | (+10.5%, Down) | (+12%, Down) | (+18%, Down) | (+20.25%, Down) | (+7.5%, Down) | (+24.75%, Down) |
| 5 | (+7%, Up) | (+8%, Up) | (+12%, Up) | (+13.5%, Up) | (+5%, Up) | (+16.5%, Up) |
| 6 | (+7%, Static) | (+8%, Static) | (+12%, Static) | (+13.5%, Static) | (+5%, Static) | (+16.5%, Static) |
| 7 | (+7%, Down) | (+8%, Down) | (+12%, Down) | (+13.5%, Down) | (+5%, Down) | (+16.5%, Down) |
| 8 | (+3.5%, Up) | (+4%, Up) | (+6%, Up) | (+6.75%, Up) | (+2.5%, Up) | (+8.25%, Up) |
| 9 | (+3.5%, Static) | (+4%, Static) | (+6%, Static) | (+6.75%, Static) | (+2.5%, Static) | (+8.25%, Static) |
| 10 | (+3.5%, Down) | (+4%, Down) | (+6%, Down) | (+6.75%, Down) | (+2.5%, Down) | (+8.25%, Down) |
| 11 | (+0%, Up) | (+0%, Up) | (+0%, Up) | (+0%, Up) | (+0%, Up) | (+0%, Up) |
| 12 | (+0%, Static) | (+0%, Static) | (+0%, Static) | (+0%, Static) | (+0%, Static) | (+0%, Static) |
| 13 | (+0%, Down) | (+0%, Down) | (+0%, Down) | (+0%, Down) | (+0%, Down) | (+0%, Down) |
| 14 | (-3.5%, Up) | (-4%, Up) | (-6%, Up) | (-6.75%, Up) | (-2.5%, Up) | (-8.25%, Up) |
| 15 | (-3.5%, Static) | (-4%, Static) | (-6%, Static) | (-6.75%, Static) | (-2.5%, Static) | (-8.25%, Static) |
| 16 | (-3.5%, Down) | (-4%, Down) | (-6%, Down) | (-6.75%, Down) | (-2.5%, Down) | (-8.25%, Down) |
| 17 | (-7%, Up) | (-8%, Up) | (-12%, Up) | (-13.5%, Up) | (-5%, Up) | (-16.5%, Up) |
| 18 | (-7%, Static) | (-8%, Static) | (-12%, Static) | (-13.5%, Static) | (-5%, Static) | (-16.5%, Static) |
| 19 | (-7%, Down) | (-8%, Down) | (-12%, Down) | (-13.5%, Down) | (-5%, Down) | (-16.5%, Down) |
| 20 | (-10.5%, Up) | (-12%, Up) | (-18%, Up) | (-20.25%, Up) | (-7.5%, Up) | (-24.75%, Up) |
| 21 | (-10.5%, Static) | (-12%, Static) | (-18%, Static) | (-20.25%, Static) | (-7.5%, Static) | (-24.75%, Static) |
| 22 | (-10.5%, Down) | (-12%, Down) | (-18%, Down) | (-20.25%, Down) | (-7.5%, Down) | (-24.75%, Down) |
| 23 | (-14%, Up) | (-16%, Up) | (-24%, Up) | (-27%, Up) | (-10%, Up) | (-33%, Up) |
Two further scenarios are evaluated at zero spot shock with the skew shocks applied (linear and abs), described under Skew Shock Parameters.
Tail Scenarios
These are the tail scenarios which involve large spot shocks and non trivial dampening. All cases involve volatility spot shock up.
Pairs in the table below are of the form (spot shock (%), dampening factor).
| Scenario | BTC | ETH | SOL | HYPE | XRP | ZEC | XAUT | ADA/CC |
|---|---|---|---|---|---|---|---|---|
| 1 | (-66%, 0.122624) | (-66%, 0.14) | (-66%, 0.272711) | (-66%, 0.3273) | (-66%, 0.290933) | (-66%, 0.327273) | (-66%, 0.091667) | (-66%, 0.4) |
| 2 | (-33%, 0.245) | (-33%, 0.28) | (-33%, 0.545422) | (-33%, 0.6545) | (-33%, 0.581778) | N/A (captured in vanilla scenario) | (-33%, 0.181667) | N/A (captured in vanilla scenario) |
| 3 | (+50%, 0.161741) | (+50%, 0.1848) | (+50%, 0.36) | (+50%, 0.432) | (+50%, 0.384) | (+50%, 0.432) | (+50%, 0.12) | (+50%, 0.528) |
| 4 | (+100%, 0.080871) | (+100%, 0.0924) | (+100%, 0.18) | (+100%, 0.216) | (+100%, 0.192) | (+100%, 0.216) | (+100%, 0.06) | (+100%, 0.264) |
| 5 | (+200%, 0.020218) | (+200%, 0.0231) | (+200%, 0.045022) | (+200%, 0.05065) | (+200%, 0.045022) | (+200%, 0.054) | (+200%, 0.015) | (+200%, 0.132) |
| 6 | (+300%, 0.008976) | (+300%, 0.010267) | (+300%, 0.02) | (+300%, 0.024) | (+300%, 0.021333) | (+300%, 0.024) | (+300%, 0.006667) | (+300%, 0.088) |
| 7 | (+400%, 0.005044) | (+400%, 0.005775) | (+400%, 0.011244) | (+400%, 0.0135) | (+400%, 0.012) | (+400%, 0.0135) | (+400%, 0.00375) | (+400%, 0.066) |
| 8 | (+500%, 0.003228) | (+500%, 0.003696) | (+500%, 0.0072) | (+500%, 0.00864) | (+500%, 0.00768) | (+500%, 0.00864) | (+500%, 0.0024) | (+500%, 0.0528) |
Account Details
These parameters govern the size and supported expiries of a PMRM subaccount.
| Parameter | Contract Variable | All markets | Range | Description |
|---|---|---|---|---|
| MAX_ACCOUNT_SIZE | maxAccountSize | 500 | No bounds | This is the maximum number of assets (options, cash, base, perpetuals) that can be supported by a single portfolio margined subaccount. This is constrained by gas requirements. |
| MAX_EXPIRIES | maxExpiries | 16 | No bounds | This is the maximum number of unique expiries that can be held by a single portfolio margined subaccount. |
Contingency Margin
These parameters govern various pieces of contingency margin which account for possibilities not encoded in the spot and IV shocks.
| Parameter | Contract Variable | BTC/ETH | SOL/XAUT | HYPE | XRP | ZEC | ADA | CC | Range | Description |
|---|---|---|---|---|---|---|---|---|---|---|
| PEG_FACTOR | OtherContingencyParameters.pegLossFactor | 4.0 | 4.0 | 4.0 | 4.0 | 4.0 | 4.0 | 4.0 | [0.0, 20.0] | Increases IM_FACTOR when USDC depegs beyond a threshold value. |
| INITIAL_PERP_FACTOR | OtherContingencyParameters.perpPercent | 0.015 | 0.0175 | 0.0175 | 0.02 | 0.027 | 0.04 | 0.045 | [0.0, 1.0] | This is used to compute the perp contingency for initial margin, simply a small percentage (given by PERP_FACTOR) of the spot price. |
| MAINTENANCE_PERP_FACTOR | OtherContingencyParameters.perpPercent | 0.0075 | 0.01 | 0.01 | 0.01 | 0.015 | 0.025 | 0.025 | [0.0, 1.0] | As above but for maintenance margin |
| MM_OPTION_FACTOR | OtherContingencyParameters.optionPercent | 0.0015 | 0.0025 | 0.003 | 0.0045 | 0.006 | 0.007 | 0.01 | [0.0, 1.0] | A small percentage (OPTION_FACTOR) of the spot price is added per net short contract per strike to the asset contingency. |
| IM_OPTION_FACTOR | OtherContingencyParameters.optionPercent | 0.0025 | 0.004 | 0.005 | 0.0075 | 0.0102 | 0.012 | 0.017 | [0.0, 1.0] | As above but for initial margin. I.e. for SOL, an extra 0.4% of spot is added per naked short option. |
Volatility Shocks
These parameters govern the shock IVs used when computing portfolio margin.
| Parameter | Contract Variable | BTC/ETH | SOL/HYPE/XRP | ZEC | XAUT | ADA/CC | Range | Description |
|---|---|---|---|---|---|---|---|---|
| VOL_RANGE (up) | VolShockParameters.volRangeUp | 0.40 | 0.50 | 0.55 | 0.30 | 0.60 | [0.01, 2.0] | Multiplicative scaling of the implied volatility when considering an increase in volatility. |
| VOL_RANGE (down) | VolShockParameters.volRangeDown | 0.25 | 0.30 | 0.30 | 0.15 | 0.30 | [0.01, 1.0] | Multiplicative scaling of the implied volatility when considering a decrease in volatility. |
| VEGA_POWER (< 30 DTE) | VolShockParameters.shortTermPower | 0.3 | 0.3 | 0.3 | 0.3 | 0.3 | [0.0, 0.5] | A power scaling of the multiplicative volatility shock (for short dated expiries). |
| VEGA_POWER (> 30 DTE) | VolShockParameters.longTermPower | 0.13 | 0.13 | 0.13 | 0.13 | 0.13 | [0.0, 0.5] | A power scaling of the multiplicative volatility shock (for long dated expiries). |
| DTE_FLOOR | VolShockParameters.dteFloor | 1 day | 1 day | 1 day | 1 day | 1 day | [0.01, 100] days | A floor on the time-to-expiry used when computing the volatility shock. Avoids divergence arising from dividing by near 0 values. |
| minVolShockUp | VolShockParameters.minVolShockUp | 0.50 (50%) | 0.60 (60%) | 0.60 (60%) | 0.20 (20%) | 0.60 (60%) | [0, 20] | Minimum evaluated (shock) volatility for the vol up scenario |
Discounting
These parameters govern how long sub-portfolios are discounted.
| Parameter | Contract Variable | All markets | Range | Description |
|---|---|---|---|---|
| shortRateMultScale | MarginParameters.shortRateMultScale | 0.0 | [0.0, 10.0] | Multiplicative scaling of the risk free rate used when computing the discounting for a short sub-portfolio. |
| shortRateAddScale | MarginParameters.shortRateAddScale | 0.10 | [0.0, 10.0] | Additive scaling of the risk free rate used when computing the discounting for a short sub-portfolio. |
| longRateMultScale | MarginParameters.longRateMultScale | 0.0 | [0.0, 10.0] | Multiplicative scaling of the risk free rate used when computing the discounting for a long sub-portfolio. |
| longRateAddScale | MarginParameters.longRateAddScale | 0.10 | [0.0, 10.0] | Additive scaling of the risk free rate used when computing the discounting for a long sub-portfolio. |
| STATIC_SCALE_POS | MarginParameters.baseStaticDiscountPos | 0.98 | [0.0, 1.1] | A flat scaling of the sub-portfolio's shocked marked value (only applies if positive). |
| STATIC_SCALE_NEG | MarginParameters.baseStaticDiscountNeg | 1.02 | [0.9, 10.0] | A flat scaling of the sub-portfolio's shocked marked value (only applies if negative). |
Forward Contingency
These are parameters that govern the forward contingency. This accounts for forward basis movements against the trader.
| Parameter | Contract Variable | BTC/ETH/XAUT | SOL/HYPE | XRP/ZEC/ADA/CC | Range | Description |
|---|---|---|---|---|---|---|
| ADD_FACTOR | BasisContingencyParameters.basisContAddFactor | 0.5 | 0.25 | 0.35 | [0, 5.0] | Additive scaling factor when computing the basis contingency |
| MULT_FACTOR | BasisContingencyParameters.basisContMultFactor | 2.0 | 2.0 | 2.0 | [0, 5.0] | Multiplicative scaling factor when computing the basis contingency. |
The two spot scenarios used for the basis contingency are the smallest magnitude spot up scenario and the largest magnitude spot down scenario, both with IV static:
| Market | UP_SCENARIO_MOVE (scenarioSpotUp) | DOWN_SCENARIO_MOVE (scenarioSpotDown) |
|---|---|---|
| BTC | 1.035 | 0.965 |
| ETH | 1.04 | 0.96 |
| SOL / XRP | 1.06 | 0.94 |
| HYPE / ZEC | 1.0675 | 0.9325 |
| XAUT | 1.025 | 0.975 |
| ADA / CC | 1.0825 | 0.9175 |
Initial Margin and Oracle Contingency
These govern how initial margin is typically defined, as well as circumstances where it may increase due to stable coin depeggings and/or low data confidence.
| Parameter | Contract Variable | BTC/ETH/SOL/HYPE/XRP/ZEC/XAUT/ADA | CC | Range | Description |
|---|---|---|---|---|---|
| IM_FACTOR | MarginParameters.imFactor | 1.0 | 1.15 | [0.5, 10.0] | This scales the maxLoss and contingencies when computing the initial margin for a portfolio margined subaccount. |
| MM_FACTOR | MarginParameters.mmFactor | 0.80 | 0.95 | [0.5, 10.0] | As above, but for maintenance margin. |
| USDC_THRESHOLD | OtherContingencyParameters.pegLossThreshold | 0.99 | 0.99 | [0.0, 1.05] | Value of USDC beneath which the depeg contingency comes into effect. |
| CONFIDENCE_THRESHOLD | OtherContingencyParameters.confThreshold | 0.55 | 0.55 | [0.0, 1.0] | Value of the confidence beneath which the relevant data is considered low confidence (thereby attracting additional initial margin). |
| CONFIDENCE_SCALE | OtherContingencyParameters.confMargin | 0.4 | 0.4 | [0, 2.0] | Percentage of the spot price added when considering the oracle contingency. |
Skew Shock Parameters
| Parameter | All markets | Range | Description |
|---|---|---|---|
| linearBaseCap | 0.25 | <= 10 | Sets the maximum multiple of the volatility for the linear scenario |
| absBaseCap | 0.25 | <= 10 | As above for the abs scenario |
| linearCBase | -0.1 | >= -10 | Sets how much to lower the maximum multiple for longer dated expiries |
| absCBase | -0.1 | >= -10 | As above for the abs scenario |
| minKStar | 0.01 | >= 0 | Minimum width before flattening the vol increase for the skew scenarios |
| widthScale | 4.0 | <= 10 | How many std deviations based on ATM vol after which we cap the increase in IV |
| volParameterStatic | 0.60 | [0, 10] | Estimate of IV used to approximate Kstar |
| volParameterScale | 0.0 | [-20, 20] | Corrects vol for longer timescales |
Risk Cancellation
Risk cancelling collateral has its spot exposure shocked together with the market's derivatives, rather than simply being haircut. Each portfolio margin manager recognises the collateral of its own market:
| Manager | Risk cancelling collateral |
|---|---|
| ETH PM | (w)ETH, wstETH, weETH |
| BTC PM | (w)BTC, cbBTC, LBTC |
| SOL PM | (w)SOL, jitoSOL |
| HYPE PM | HYPE, kHYPE |
| XRP PM | fXRP |
| ADA PM | cbADA |
| XAUT PM | XAUT |
| ZEC PM, CC PM | None |
Haircuts applied to risk cancelling collateral (both are totals, i.e. the full haircut applied at that margin level):
| Asset | Manager | MM Haircut | IM Haircut |
|---|---|---|---|
| ETH | ETH PM | 6% | 7% |
| wstETH | ETH PM | 8.6% | 10% |
| weETH | ETH PM | 15.6% | 23.5% |
| wBTC | BTC PM | 12.6% | 14% |
| cbBTC | BTC PM | 12.6% | 14% |
| LBTC | BTC PM | 18.6% | 22.5% |
| wSOL | SOL PM | 11% | 16% |
| jitoSOL | SOL PM | 11% | 21% |
| HYPE | HYPE PM | 10% | 23% |
| kHYPE | HYPE PM | 10% | 23% |
| fXRP | XRP PM | 18% | 20% |
| cbADA | ADA PM | 10% | 13% |
| XAUT | XAUT PM | 5% | 7% |
Other collateral is haircut rather than risk cancelled, and the haircut depends on which manager holds it. The BTC and ETH managers accept the widest range:
| Asset | BTC PM MM / IM | ETH PM MM / IM |
|---|---|---|
| USDT | 2% / 4% | 2% / 4% |
| AUSD | 15% / 20% | 15% / 20% |
| USDe | 15% / 20% | 15% / 20% |
| sUSDe | 20% / 30% | 20% / 30% |
| DRV | 85% / 90.1% | 85% / 90.1% |
| ETH | 20% / 25% | risk cancelling |
| wstETH | 20% / 28% | risk cancelling |
| weETH | 30% / 34.9% | risk cancelling |
| BTC | risk cancelling | 25% / 30.25% |
| cbBTC | risk cancelling | 30% / 34.9% |
| LBTC | risk cancelling | 30% / 34.9% |
Open Interest Caps
Open interest caps on options, base and perpetual instruments, as configured for the portfolio margin managers.
| Market | UNDERLYING_OI_CAP (baseAsset.totalPositionCap) | OPTION_OI_CAP (option.totalPositionCap) | PERP_OI_CAP (perp.totalPositionCap) |
|---|---|---|---|
| ETH | 6,000 | 2,000,000 | 250,000 |
| BTC | 160 | 100,000 | 12,000 |
| SOL | 2,000 | 2,000,000 | 500,000 |
| HYPE | 500,000 | 20,000,000 | 1,000,000 |
| XRP | N/A | 20,000,000 | 5,000,000 |
| ZEC | N/A | 10,000 | 20,000 |
| XAUT | 250 | 5,000 | 5,000 |
| ADA | N/A | 120,000,000 | 30,000,000 |
| CC | N/A | 10,000,000 | 7,000,000 |
Caps are set per manager, so the standard manager's caps for the same market can differ — see Standard Margin Parameters. Collateral assets (cbBTC, LBTC, jitoSOL, kHYPE, cbADA, fXRP, …) carry their own base caps.
Fees
These are fees charged by the managers on the protocol layer.
| Parameter | Contract Variable | All markets | Range | Description |
|---|---|---|---|---|
| SPOT_FACTOR | manager.OIFeeRateBPS | 0.70 (70%) | [0, 5.0] | Percentage of the spot price charged when the trade increases the open interest. |
| MIN_OI_FEE | minOIFee | $50 USDC | [0, 10,000] | Minimum fee charged when open interest is increased. |
Updated about 1 hour ago