Execution Risk Controls
Overview
SpiderRock Connect provides a robust framework for parent order arrival validation and continuous risk assessment and control of child orders generated by our execution engines. This framework enables multiple control parties to simultaneously apply risk controls at various levels:
- Individual orders
- Ticker (product group)
- Account
- User
- Client Firm
- Supervisory Client Firm
SpiderRock typically solicits guidance from clients regarding appropriate settings for risk controls under SpiderRock's exclusive control. However, all such guidance is subject to approval by the SpiderRock risk committee.
Risk Control Types
| Risk Control Type | Control Level | Description |
|---|---|---|
| MAR | Account, ClientFirm | These pre-trade limits are compliant with the 15c3-5 SEC Market Access Rule (MAR), which requires broker-dealers to establish parent order-level risk controls. Each trading account is subject to at least one and up to four separate MarRiskControl records: one mandatory record under SpiderRock's exclusive control, one controlled by the client's sponsoring firm (if applicable), and up to two additional records under the client's exclusive control (core- and sub-client firm levels). |
| MAR/Ticker | Symbol | Any MAR control party can set ticker-specific MAR limit controls that override the more general control levels in base MAR risk control records. These overrides can be used to set lower (or higher) arrival risk limits for specific tickers. |
| Supervisory | Account, Symbol, User | Optional tactical limits that enable clients to implement more restrictive controls at the account, symbol, and user levels. These controls can constrain child orders and potentially reject parent orders. |
| Soft/Dynamic | Symbol | Soft risk controls are used to establish system-wide (all clients, all orders) per-symbol maximum order size limits and are set dynamically based on metrics such as average daily trading volume and recent print activity. These limits are typically set to levels representing the maximum plausible trading size of the largest SpiderRock clients. These risk controls are not editable by clients. |
| Global/Override | Symbol | Global risk controls are used to establish system-wide per-symbol maximum order size limits. These limits can override Soft/Dynamic limits and are controlled exclusively by SpiderRock. |
| Risk Group | RiskGroupID | These limits are associated with a given Risk Group ID linked to a distinct set of parent orders. They dictate the size of the corresponding child orders being created, and can be implemented on expiry risk, symbol/day risk, and RiskGroup aggregate greeks and notional values. Some risk group controls are based on total (day) quantities, while others use short-term (EMA) risk counters. |
Risk Control Framework
Risk Counters
Risk counters are embedded in the SpiderRock Connect Execution Engine and aggregate risk across both executed and open orders. These risk counters, along with associated MAR risk limits, establish a risk control upper bound for all active parent orders. This upper bound is expressed in terms of shares or contracts and represents the most restrictive risk distance between the current risk counter value and any applicable risk limits.
Risk counters update each time a child order is created, gets filled, or changes its state. This process can be visualized as:
Note:
While SpiderRock Connect's risk controls are fast-acting, it may not always be possible to guarantee that risk control upper bounds will not be violated under all circumstances. These controls should be understood as best effort rather than absolute.
Arrival Risk Checks
All new parent orders undergo Arrival Risk Checks to verify that they originate from a recognized client firm and an active SpiderRock Connect account and have been submitted by an authorized user. These orders are then subject to all applicable Global, Soft/Dynamic, MAR, and Supervisory risk controls and are assessed for valid market access and compatibility with client-provided restricted lists.
Parent orders will be immediately rejected if any of the following conditions apply:
- The order exceeds maximum per parent order size limits
- Executing the order in full would violate any margin limits
- The client limit price exceeds collar thresholds (the limit price is too far through the current market)
- The order cannot be executed (and hedged, if auto-hedging is requested) while remaining compliant with applicable risk and regulatory controls
For orders (and their associated hedge, if any), this means that locate, short sale, and restricted list checks must all pass.
If a parent order fails initial arrival validation, it is immediately rejected back to the client with a detailed reason for the rejection. If a parent order passes initial validation, it becomes an active parent order prepared for child order generation.
Continuous Risk Size Constraints
SpiderRock Connect will subject all active parent orders (ParentBrokers) to Risk Size Constraints. These risk evaluations are continuously being performed throughout the life of a child order with a maximum child order size constraint derived from all applicable MAR limits, Supervisory limits, and Parent Risk Group controls. Child orders will not be generated that would breach these limits, and all active orders are regularly checked against these limits and cancelled if found to be in violation.
While a ParentBroker is active, the current most restrictive risk size limit and the associated metric name are visible in the SpdrParentBrkrState or SpdrMLegBrkrState record associated with the ParentBroker. This value is typically visible on SpiderRock Connect's OMS/EMS tools and via SRSE and MLink.
The most restrictive limit could, at any point in time, be from any of the MAR Risk controls, the client supervisory controls, and/or any parent order risk group controls that might be applicable.
MAR and Supervisory Risk Metrics
The MarRiskCounter, SupervisoryRiskCounter, and RiskGroupCounter records associated with the above controls are visible in the SpiderRock Connect Portal app and also accessible via SRSE and MLink APIs.
The MarRiskControl, MarRiskControlTkOverride, and SupervisoryRiskControl records for this framework can be viewed (and, in some cases, edited) via the same applications.
The SpiderRock Connect risk control framework (counters and controls) utilizes the following metrics when determining if parent orders should be accepted and also whether child order sizes should be constrained.
| Control Metric | Global | Soft | MAR | MAR.Tk | Supervisory | Description |
|---|---|---|---|---|---|---|
| orderMaxMargin | ✓ | Maximum (absolute) margin per parent order | ||||
| orderMaxStkQty | ✓ | ✓ | ✓ | Shares | ||
| orderMaxFutQty | ✓ | ✓ | ✓ | Contracts | ||
| orderMaxOptQty | ✓ | ✓ | ✓ | Contracts | ||
| orderMaxStkDDelta | ✓ | ✓ | ✓ | ✓ | +/-PnL per 1% price change | |
| orderMaxFutDDelta | ✓ | ✓ | ✓ | ✓ | +/-PnL per 1% price change | |
| orderMaxOptDDelta | ✓ | ✓ | ✓ | ✓ | +/-PnL per 1% underlier price change | |
| stkCollarPct | ✓ | ✓ | ✓ | % through threshold | ||
| futCollarPct | ✓ | ✓ | ✓ | % through threshold | ||
| optCollarPct | ✓ | ✓ | ✓ | % through threshold | ||
| marginLimitAcc | ✓ | Simplified SPAN / TIMMS margin (SOD + trades) | ||||
| marginLimitDay | ✓ | Simplified SPAN / TIMMS margin (trade day only) | ||||
| openExposureLimit | ✓ | ✓ | Abs Loss per 1% price/underlier change (all open child orders) | |||
| maxDayFutnCnBot | ✓ | ✓ | Contracts bought (trade day only) | |||
| maxDayFutCnSld | ✓ | ✓ | Contracts sold (trade day only) | |||
| maxDayFutCnAbs | ✓ | ✓ | Abs contracts traded (trade day only) | |||
| maxAccFutCnAbs | ✓ | ✓ | Abs contract position (SOD + trades) | |||
| allowStkOddLots | ✓ | Allow stock odd lots (sub-100 shares) | ||||
| allowLimitOnClose | ✓ | Allow stock limit-on-close orders | ||||
| allowMarketOnClose | ✓ | Allow stock market-on-close orders | ||||
| allowShrtSaleExempt | ✓ | Allow short sale exempt marking | ||||
| allowInterMktSweep | ✓ | Allow intermarket (NMS) sweeps | ||||
| blockShortSales | ✓ | ✓ | Block all stock short sales | |||
| maxDayDDeltaLn | ✓ | Max long $delta (+/- 100% price/uPrc change) | ||||
| maxDayDDeltaSh | ✓ | Max short $delta (+/- 100% price/uPrc change) | ||||
| maxDayDDeltaAbs | ✓ | Max abs $delta (+/- 100% price/uPrc change) | ||||
| maxDayWtVegaLn | ✓ | Max long weighted time vega traded (options only) | ||||
| maxDayWtVegaSh | ✓ | Max short weighted time vega traded (options only) | ||||
| maxDayWtVegaAbs | ✓ | Max abs weighted time vega traded (options only) | ||||
| maxDayNValueLn | ✓ | Max long notional traded | ||||
| maxDayNValueSh | ✓ | Max short notional traded | ||||
| maxDayNValueAbs | ✓ | Max abs notional trades |
Parent Order Risk Group Metrics
RiskGroup risk controls can be created in two ways:
- Via SpdrParentOrder parameters when submitting parent orders
- Via SpdrRiskGroupControl records, which can be uploaded independently via SRSE or MLink
How Risk Group Controls Work:
Risk Group counters aggregate all child order activity for all parent orders sharing a common RiskGroupID + Account combination. These aggregated values are then compared to control limits to determine available size. These limits:
- Prevent child orders from being created if they would breach limits
- Reduce child order size to stay within limits
- Cancel orders if they later violate limits
The following metrics are used by Risk Group controls to determine whether and how much child order sizes should be constrained:
| RiskGroup Metric | Description |
|---|---|
| expDayWtVegaOffset | max acct+symbol day wtVega offset (target) |
| maxExpDayWtVegaLn | max accnt+expiration day (time weighted) vega long (positive number; -1=no limit); risk limit = max limit - (current net counter - offset) |
| maxExpDayWtVegaSh | max accnt+expiration day (time weighted) vega short (positive number; -1=no limit); risk limit = max limit + (current net counter - offset) |
| maxExpDayRMetric6Ln | max acct+expiration day rMetric6 long (positive number; -1=no limit); risk limit = max limit - current net counter |
| maxExpDayRMetric6Sh | max acct+expiration day rMetric6 short (positive number; -1=no limit); risk limit = max limit + current net counter |
| symDayDDeltaOffset | max acct+symbol day $delta offset (target) |
| maxSymDayDDeltaLn | max acct+symbol day $delta long (positive number; -1=no limit); risk limit = max limit - (current net counter - offset) |
| maxSymDayDDeltaSh | max acct+symbol day $delta short (positive number; -1=no limit); risk limit = max limit + (current net counter - offset) |
| symDayVegaOffset | max acct+symbol day vega offset (target) |
| maxSymDayVegaLn | max acct+symbol day vega long (positive number; -1=no limit); risk limit = max limit - (current net counter - offset) |
| maxSymDayVegaSh | max acct+symbol day vega short (positive number; -1=no limit); risk limit = max limit + (current net counter - offset) |
| symDayWtVegaOffset | max acct+symbol day wtVega offset (target) |
| maxSymDayWtVegaLn | max acct+symbol day (time weighted) vega long (positive number; -1=no limit); risk limit = max limit - (current net counter - offset) |
| maxSymDayWtVegaSh | max acct+symbol day (time weighted) vega short (positive number; -1=no limit); risk limit = max limit + (current net counter - offset) |
| maxSymDayRMetric7Ln | max acct+symbol day rMetric7 long (positive number; -1=no limit); risk limit = max limit - current net counter |
| maxSymDayRMetric7Sh | max acct+symbol day rMetric7 short (positive number; -1=no limit); risk limit = max limit + current net counter |
| maxGrpDayContractsLn | max acct+riskGroup day opt contracts long (positive number; -1=no limit); risk limit = max limit - current net counter |
| maxGrpDayContractsSh | max acct+riskGroup day opt contracts short (positive number; -1=no limit); risk limit = max limit + current net counter |
| maxGrpDayContractsAbs | max acct+riskGroup day opt contracts abs (positive number; -1=no limit); risk limit = max limit - abs(current net counter) |
| maxGrpDayDDeltaLn | max acct+riskGroup day $delta long (positive number; -1=no limit); risk limit = max limit - current net counter |
| maxGrpDayDDeltaSh | max acct+riskGroup day $delta short (positive number; -1=no limit); risk limit = max limit + current net counter |
| maxGrpDayVegaLn | max acct+riskGroup day vega long (positive number; -1=no limit); risk limit = max limit - current net counter |
| maxGrpDayVegaSh | max acct+riskGroup day vega short (positive number; -1=no limit); risk limit = max limit + current net counter |
| maxGrpDayVegaAbs | max acct+riskGroup day vega abs (positive number; -1=no limit); risk limit = max limit - abs(current net counter) |
| grpDayVegaRatio | target bot / sld ratio (eg ratio=2.0 means that neutral is bot vega = 2x sld vega) |
| maxGrpDayRMetric1Ln | max acct+riskGroup day rMetric1 long (positive number; -1=no limit); risk limit = max limit - current net counter |
| maxGrpDayRMetric1Sh | max acct+riskGroup day rMetric1 short (positive number; -1=no limit); risk limit = max limit + current net counter |
| maxGrpDayRMetric1Abs | max acct+riskGroup day rMetric1 abs (positive number; -1=no limit); risk limit = max limit - abs(current net counter) |
| grpDayRMetric1Ratio | target bot / sld ratio (eg ratio=0.5 means that neutral is bot rMetric1 = 0.5x sld rMetric1) |
| maxGrpDayRMetric2Ln | max acct+riskGroup day rMetric2 long (positive number; -1=no limit); risk limit = max limit - current net counter |
| maxGrpDayRMetric2Sh | max acct+riskGroup day rMetric2 short (positive number; -1=no limit); risk limit = max limit + current net counter |
| maxGrpDayRMetric3Ln | max acct+riskGroup day rMetric3 long (positive number; -1=no limit); risk limit = max limit - current net counter |
| maxGrpDayRMetric3Sh | max acct+riskGroup day rMetric3 short (positive number; -1=no limit); risk limit = max limit + current net counter |
| maxGrpDayRMetric4Ln | max acct+riskGroup day rMetric4 long (positive number; -1=no limit); risk limit = max limit - current net counter |
| maxGrpDayRMetric4Sh | max acct+riskGroup day rMetric4 short (positive number; -1=no limit); risk limit = max limit + current net counter |
| maxGrpDayRMetric5Ln | max acct+riskGroup day rMetric5 long (positive number; -1=no limit); risk limit = max limit - current net counter |
| maxGrpDayRMetric5Sh | max acct+riskGroup day rMetric5 short (positive number; -1=no limit); risk limit = max limit + current net counter |
| accEmaCxlDDeltaLn | max acct 60s EMA $delta long (positive number; ≤ 0 is no limit) [will immediately cxl all option orders in a symbol if any order in the symbol breaches] |
| accEmaCxlDDeltaSh | max acct 60s EMA $delta short (positive number; ≤ 0 is no limit) |
| accEmaCxlWtVegaLn | max acct 60s EMA wtVega long (positive number; ≤ 0 is no limit) [will immediately cxl all option orders in a symbol if any order in the symbol breaches] |
| accEmaCxlWtVegaSh | max acct 60s EMA wtVega short (positive number; ≤ 0 is no limit) |
| symEmaCxlDDeltaLn | max acct+symbol 60s EMA $delta long (positive number; ≤ 0 is no limit) [will immediately cxl all option orders in a symbol if any order in the symbol breaches] |
| symEmaCxlDDeltaSh | max acct+symbol 60s EMA $delta short (positive number; ≤ 0 is no limit) |
| symEmaCxlWtVegaLn | max acct+symbol 60s EMA wtVega long (positive number; ≤ 0 is no limit) [will immediately cxl all option orders in a symbol if any order in the symbol breaches] |
| symEmaCxlWtVegaSh | max acct+symbol 60s EMA wtVega short (positive number; ≤ 0 is no limit) |
Risk Dimensions
This section describes the various risk dimensions and metrics used by SpiderRock Connect's risk control framework.
Risk Margin
SpiderRock Connect's execution engines calculate simplified client risk margin at two levels:
- Account Margin (Acc): Considers a client's activity over one trading period plus the client's start-of-day positions (if existing in the system)
- Trading Day Margin (Day): Considers only the current day's trading activity
Clients can opt to input their own start-of-day positions or use positions that SpiderRock Connect knows from the previous day.
For both account and day margins, SpiderRock Connect calculates margins from four slide points representing different market movement scenarios:
| Slide Point | Definition |
|---|---|
| UDn + VDn | Stock, future, or underlying price moves down and volatility moves down |
| UDn + VUp | Stock, future, or underlying price moves down and volatility moves up |
| UUp + VDn | Stock, future, or underlying price moves up and volatility moves down |
| UUp + VUp | Stock, future, or underlying price moves up and volatility moves up |
Margin Slide Increments
The increments used for margin slides depend on the instrument being traded:
- US NMS instruments: Use standard OCC TIMS slide increments
- Other instruments: Typically use native exchange SPAN slides for the product group
For stock and future positions, the VDn and VUp moves are both zero, so only two of the four slide point values are unique for these positions.
TIMS margins and the SPAN margins – as provided by an exchange – would normally include a per contract minimum charge and cross product adjustments. SpiderRock Connect's execution engine margins do not include these contract minimums or cross product adjustments. Also, SpiderRock Connect's execution engine margin uses only the two or four end points of the full TIMS/SPAN margin methodologies and not the interior points.
| Margin | Price Down | Price Up | Volatility Down | Volatility Up |
|---|---|---|---|---|
| Stock (NMS Index / Broad-based ETFs) | - 0.08 | + 0.06 | N/A | N/A |
| Stock (NMS Equity) | - 0.15 | + 0.15 | N/A | N/A |
| Option on Equity (NMS Index / Broad-based ETFs) | - 0.08 | + 0.06 | 0 | 0 |
| Option on Equity (NMS Equity) | - 0.15 | + 0.15 | 0 | 0 |
| Future | EXCH SPAN | EXCH SPAN | N/A | N/A |
| Option on Future | EXCH SPAN | EXCH SPAN | EXCH SPAN | EXCH SPAN |
| Option on Future (w/o SPAN) | - 0.15 | + 0.15 | 0 | 0 |
Margin is the loss associated with the slide point with the largest loss expressed as a positive number. If all four margin slides are positive (no loss), the margin result will be zero.
Margin Calculations
Equities:
uDnVDn and uDnVUp Slide Points = -uIncDn * shares
uUpVDn and uUpVUp Slide Points = +uIncUp * shareswhere:
- uIncDn: EquityPrice * PriceDnPct
- uIncUp: EquityPrice * PriceUpPct
- Contracts: either positive (+) or negative (-) if long or short
Futures:
uDnVDn and uDnVUp Slide Points = -uIncDn * pointValue * contracts
uUpVDn and uUpVUp Slide Points = +uIncUp * pointValue * contractswhere:
- uIncDn: FuturePrice * PriceDnPct
- uIncUp: FuturePrice * PriceUpPct
- Contracts: either positive (+) or negative (-) if long or short
Options:
uDnVDn Slide Point = [ OptionPrice(uPrc - uIncDn, vol - vIncrDn) - OptionPrice(uPrc, vol) ] * pointValue * contracts
uDnVUp Slide Point = [ OptionPrice(uPrc - uIncDn, vol + vIncrUp) - OptionPrice(uPrc, vol) ] * pointValue * contracts
uUpVDn Slide Point = [ OptionPrice(uPrc + uIncUp, vol - vIncrDn) - OptionPrice(uPrc, vol) ] * pointValue * contracts
uUpVUp Slide Point = [ OptionPrice(uPrc + uIncUp, vol + vIncrUp) - OptionPrice(uPrc, vol) ] * pointValue * contractswhere:
- uPrc: current underlier mid-market level
- vol: typically a SpiderRock surface volatility
- uIncDn: uPrc * PriceDnPct
- uIncUp: uPrc * PriceUpPct
- Contracts: either positive (+) or negative (-) if long or short
Margin Netting
SpiderRock Connect calculates live margin values by netting across trades at each risk level:
-
Supervisory-User — Nets across all trades made by a user:
- Calculate values for all four margin slides for each trade
- Sum each slide’s values across all trades for each ticker
- Use the slide with the largest loss as that ticker’s live margin value
- Sum all individual ticker margin values for the user’s live margin value
-
Supervisory-Account — Nets across all trades within an account:
- Determine the largest loss per ticker
- Sum across all tickers for the account’s live margin value
-
Supervisory-Client Firm — Nets across all trades within all accounts under the client firm:
- Determine the largest loss per ticker (same method as Account level)
- Sum all individual client firm ticker margins for the firm’s live margin value
Open Exposure
SpiderRock Connect's open exposure is computed by summing the absolute dollar delta (value change for +1% change in stock, future, or underlying price) of all open child orders for a given account or client firm. This control acts to prevent new child orders from being generated that would breach the limit but does not cancel existing child orders.
Order Max Controls
SpiderRock Connect takes a multi-layered approach to setting maximum risk protections throughout its system by implementing a platform-enforced limit through Global Risk Control and a client-specific limit through MAR Risk Control. For both Global and MAR risk control, the maximums are set for the maximum order size, or maximum DDelta (dollar delta) value. For just Global Risk Control, an additional maximum is set for order margin.
In Global Risk Control, SpiderRock Connect can set overall maximums that apply throughout the platform and are set on a ticker-based level. Simultaneously, in MAR Risk Control, clients can set their own maximum order restraints, and these restraints are set on the ticker level. Any violation of any of these maximum limits will result in a hard rejection of the parent order.
Future Position Max Controls
For futures, per contract position limits are required and are set in the MAR risk controls. These position limits will restrict the maximum contract position by side for an account or client firm. These contract position limits are typically set per product group (e.g., @ES, @ZN, @CL, etc.)
Price Control Collars
SpiderRock Connect's price control collar limits operate as fat finger checks on client-supplied parent order limit prices. They can be set individually for stocks, futures, and options, and they appear in both MAR Risk Controls and Global Risk Controls. Any violation of these collars will result in a rejection of the parent order on arrival.
Equity Order Permission Controls
Clients can specify permissions for certain order behaviors in MAR Risk Controls. These permissions are set on a yes/no toggle and include:
- Allowing stock orders under 100 shares (odd lots)
- Allowing limit-on-close or market-on-close orders
- Allowing intermarket sweeps
- Blocking short sales
Greeks and Notional Value Controls
Clients can set additional tactical controls in Supervisory Risk Controls (also referred to as Spider Risk Controls). These controls can be set for:
- DDelta (dollar delta) - measured as a 100% change in the underlying price multiplied by the size
- WtVega (weighted time vega) - measured as a 1% change in volatility with time normalized to one quarter of a year (0.25 year)
- Notional values
For each metric, controls can be set for long, short, and absolute values.
Important: Unlike Global and MAR risk controls, a breach of Supervisory limits does not result in parent order rejection. Instead, it constrains the quantity of child orders generated to stay within the bounds of the most restrictive limit.
User-Defined Risk Metrics
When submitting a parent order, clients can select up to seven additional risk metrics to be applied to their order.
Available Standard Risk Dimensions:
- Vega
- Weighted vega (WVega)
- Weighted time vega (WtVega)
- Time vega (TVega)
- Theta
- Gamma
- Delta gamma (DGamma)
- Implied volatility skew-adjusted dollar delta (DDeltaIvS)
- Beta dollar delta (BDDelta)
- Option dollar delta (OptDDelta)
- Premium price
- Notional value
Custom Risk Metrics: Clients can also upload user-defined or custom greek-like risk values and control limits if necessary.
The limits on any of these risk dimensions can be added through the option order gateway, the SRSE SRTrade.msgRiskGroupControl or SRControl.msgSpdrParentLimit tables, or in the option order ticket blotter on System Viewer (SV).
EMA Cancel Triggers
EMA (Exponential Moving Average) cancel triggers are an optional symbol-level control within risk group controls. These triggers monitor the EMA of net DDelta or WtVega. If any order in the symbol causes the metric to exceed the limit, then all child option orders in that symbol will be canceled and any current and new parent orders will be placed on risk hold. These risk holds last for typically 60 seconds but can last longer in some cases based on dollar delta counters.
Use Case: EMA cancel triggers are typically used as a safety measure when posting multiple orders simultaneously, helping to minimize potential damage in the event of getting swept.
Note:
In the SpiderRock V7 system, Total Open Exposure was calculated as the total account haircut plus 15% of the dollar delta (100% change in underlying price) on open child orders.
Risk Control Examples
This section provides practical examples of how risk controls operate within the SpiderRock Connect trading platform. Each example lists the risk controls and the values needed for the trade to pass the associated risk check before receiving a rejection or size constraint.
Example Structure
For each risk control, the examples include:
- Value: The calculated risk metric value
- Comments: Additional context about the calculation
- Calculations: The formula used to compute the listed value
Key Assumptions
The following assumptions apply to all examples:
Start-of-Day Positions: All examples use a brand-new account with no start-of-day positions. Therefore,
marginLimitDayandmarginLimitAccare equal.
Single Active Trade: Each trade is the only active trade in the account. Therefore,
openExposureLimitis only greater than zero while the order is active in the marketplace and returns to zero once the trade is complete. If an account has multiple active orders,openExposureLimitwill reflect the combined order states.
Option Parameters: For all option order examples, the options are at-the-money, have 90 days to expiration, and a volatility of 0.15.
Note:
Live Margin Day equals the most restrictive of the four margin slide values. The corresponding risk control field is marginLimitDay in MAR and Supervisory risk controls, and orderMaxMargin in Global risk control.
Single Security Examples
Buy 100 NMS SPY ETF Shares
SPY Shares at 512.00
| Risk Control | Value | Comments | Calculations |
|---|---|---|---|
| Day Margin UDn VDn | -4,096 | uIncDn: -8% | +100 * 512.00 * -0.08 |
| Day Margin UDn VUp | -4,096 | uIncDn: -8% | +100 * 512.00 * -0.08 |
| Day Margin UUp VDn | +3,072 | uIncUp: +6% | +100 * 512.00 * +0.06 |
| Day Margin UUp VUp | +3,072 | uIncUp: +6% | +100 * 512.00 * +0.06 |
| Live Margin Day | 4,096 | -1 * MIN(-4,096, -4,096, +3,072, +3,072) | |
| Net DDelta | +51,200 | +100 * 512.00 | |
| Absolute DDelta | +51,200 | ABS(.) | |
| Net Notional Value | +51,200 | +100 * 512.00 | |
| Absolute Notional Value | +51,200 | ABS(.) |
Buy 100 NMS AAPL Shares
AAPL Shares at 175.00
| Risk Control | Value | Comments | Calculations |
|---|---|---|---|
| Day Margin UDn VDn | -2,625 | uIncDn: -15% | +100 * 175.00 * -0.15 |
| Day Margin UDn VUp | -2,625 | uIncDn: -15% | +100 * 175.00 * -0.15 |
| Day Margin UUp VDn | +2,625 | uIncUp: +15% | +100 * 175.00 * +0.15 |
| Day Margin UUp VUp | +2,625 | uIncUp: +15% | +100 * 175.00 * +0.15 |
| Live Margin Day | 2,625 | -1 * MIN(-2,625, -2,625, +2,625, +2,625) | |
| Net DDelta | +17,500 | +100 * 175.00 | |
| Absolute DDelta | +17,500 | ABS(.) | |
| Net Notional Value | +17,500 | +100 * 175.00 | |
| Absolute Notional Value | +17,500 | ABS(.) |
Buy 1 CME ES Future
Future at 5,215.00
| Risk Control | Value | Comments | Calculations |
|---|---|---|---|
| Day Margin UDn VDn | -11,733 | uIncDn: -4.5% | |
| Day Margin UDn VUp | -11,733 | uIncDn: -4.5% | |
| Day Margin UUp VDn | +11,733 | uIncUp: +4.5% | |
| Day Margin UUp VUp | +11,733 | uIncUp: +4.5% | |
| Live Margin Day | +11,733 | -1 * MIN(-11,733, -11,733, +11,733, +11,733) | |
| Net DDelta | +260,750 | 1 * 50 * 5,215 | |
| Absolute DDelta | +260,750 | ABS(.) | |
| Net Notional Value | N/A | ||
| Absolute Notional Value | N/A |
Buy 1 CME ZN Future
Future at 110.00
| Risk Control | Value | Comments | Calculations |
|---|---|---|---|
| Day Margin UDn VDn | -2,200 | uIncDn: -2% | |
| Day Margin UDn VUp | -2,200 | uIncDn: -2% | |
| Day Margin UUp VDn | +2,200 | uIncUp: +2% | |
| Day Margin UUp VUp | +2,200 | uIncUp: +2% | |
| Live Margin Day | +2,200 | -1 * MIN(-2,200, -2,200, +2,200, +2,200) | |
| Net DDelta | +110,000 | 1 * 1,000 * 110 | |
| Absolute DDelta | +110,000 | ABS(.) | |
| Net Notional Value | N/A | ||
| Absolute Notional Value | N/A |
Buy 1 NMS SPX Call
Call Price = 160.78 (underlier at 5,150.00)
| Risk Control | Value | Comments | Calculations |
|---|---|---|---|
| Day Margin UDn VDn | -13,247 | uIncDn: -8% | 1 * 100 * (28.30 - 160.78) Cn * PV * [ OptPrc(uPrc * (1-0.08), vol - 0) - OptPrc(uPrc, vol) ] |
| Day Margin UDn VUp | -13,247 | uIncDn: -8% | 1 * 100 * (28.30 - 160.78) Cn * PV * [ OptPrc(uPrc * (1-0.08), vol + 0) - OptPrc(uPrc, vol) ] |
| Day Margin UUp VDn | +20,342 | uIncUp: +6% | 1 * 100 * (364.21 - 160.78) Cn * PV * [ OptPrc(uPrc * (1+0.06), vol + 0) - OptPrc(uPrc, vol) ] |
| Day Margin UUp VUp | +20,342 | uIncUp: +6% | 1 * 100 * (364.21 - 160.78) Cn * PV * [ OptPrc(uPrc * (1+0.06), vol + 0) - OptPrc(uPrc, vol) ] |
| Live Margin Day | +13,247 | -1 * MIN(-13,247, -13,247, +20,342, +20,342) | |
| Net DDelta | +265,740 | 1 * 100 * 5,150 * 0.516 Cn * PointValue * uPrc * Delta | |
| Absolute DDelta | +265,740 | ABS(.) | |
| Net Vega | +1,069 | 1 * 100 * 10.69 Cn * PointValue * Vega | |
| Absolute Vega | +1,069 | ABS (.) | |
| Net WtVega | +154 | 1 * 100 * 10.69 * 0.15 * 0.96 Cn * PointValue * Vega * Vol * SQRT(years / 0.25) | |
| Absolute WtVega | +154 | ABS(.) | |
| Net Notional Value | +16,078 | 1 * 100 * 160.78 Cn * PointValue * Premium | |
| Absolute Notional Value | +16,078 | ABS(.) |
Buy 1 CME ES Put
Put Price = 162.44 (underlier at 5,215.00)
| Risk Control | Value | Comments | Calculations |
|---|---|---|---|
| Day Margin UDn VDn | +5,796 | uIncDn: -4.5% vIncDn: -2% | 1 * 50 * (278.36 - 162.44) Cn * PV * [ OptPrc(uPrc * (1-0.045), vol * (1-0.02)) - OptPrc(uPrc, vol) ] |
| Day Margin UDn VUp | +8.441 | uIncDn: -4.5% vIncUp: +2% | 1 * 50 * (331.26 - 162.44) Cn * PV * [ OptPrc(uPrc * (1-0.045), vol * (1+0.02)) - OptPrc(uPrc, vol) ] |
| Day Margin UUp VDn | -5,776 | uIncUp: +4.5% vIncDn: -2% | 1 * 50 * (46.92 - 162.44) Cn * PV * [ OptPrc(uPrc * (1+0.045), vol * (1-0.02)) - OptPrc(uPrc, vol) ] |
| Day Margin UUp VUp | -2,965 | uIncUp: +4.5% vIncUp: +2% | 1 * 50 * (103.14 - 162.44) Cn * PV * [ OptPrc(uPrc * (1+0.045), vol * (1+0.02)) - OptPrc(uPrc, vol) ] |
| Live Margin Day | +5,776 | -1 * MIN(+5,796, +8.441, -5,776,-2,965) | |
| Net DDelta | -126,307 | 1 * 50 * 5,215 * -0.4844 Cn * PointValue * uPrc * Delta | |
| Absolute DDelta | +126,307 | ABS(.) | |
| Net Vega | +541 | 1 * 50 * 10.82 Cn * PointValue * Vega | |
| Absolute Vega | +541 | ABS (.) | |
| Net WtVega | +78 | 1 * 50 * 10.82 * 0.15 * 0.96 Cn * PointValue * Vega * Vol * SQRT(years / 0.25) | |
| Absolute WtVega | +78 | ABS(.) | |
| Net Notional Value | +8,122 | 1 * 50 * 162.44 Cn * PointValue * Premium | |
| Absolute Notional Value | +8,122 | ABS(.) |
Buy 1 CME ZN Put
Put Price = 3.427 (underlier at 110.00)
| Risk Control | Value | Comments | Calculations |
|---|---|---|---|
| Day Margin UDn VDn | -460 | uIncDn: -2% vIncDn: -5% | 1 * 1,000 * (2.9667 - 3.4265) Cn * PV * [ OptPrc(uPrc * (1-0.02), vol * (1-0.05)) - OptPrc(uPrc, vol) ] |
| Day Margin UDn VUp | +2,795 | uIncDn: -2% vIncUp: +5% | 1 * 1,000 * (6.2212 - 3.4265) Cn * PV * [ OptPrc(uPrc * (1-0.02), vol * (1+0.05)) - OptPrc(uPrc, vol) ] |
| Day Margin UUp VDn | -2,555 | uIncUp: +2% vIncDn: -5% | 1 * 1,000 * (4.1944 - 3.4265) Cn * PV * [ OptPrc(uPrc * (1+0.02), vol * (1-0.05)) - OptPrc(uPrc, vol) ] |
| Day Margin UUp VUp | +768 | uIncUp: +2% vIncUp: +5% | 1 * 1,000 * (4.1944 - 3.4265) Cn * PV * [ OptPrc(uPrc * (1+0.02), vol * (1+0.05)) - OptPrc(uPrc, vol) ] |
| Live Margin Day | +2,555 | -1 * MIN(-460, +2,795, -2,555, +768) | |
| Net DDelta | -53,284 | 1 * 1,000 * 110 * -0.4844 Cn * PointValue * uPrc * Delta | |
| Absolute DDelta | +53,284 | ABS(.) | |
| Net Vega | +228 | 1 * 1,000 * 0.2283 Cn * PointValue * Vega | |
| Absolute Vega | +228 | ABS (.) | |
| Net WtVega | +33 | 1 * 1000 * 0.2283 * 0.15 * 0.96 Cn * PointValue * Vega * Vol * SQRT(years / 0.25) | |
| Absolute WtVega | +33 | ABS(.) | |
| Net Notional Value | +3,427 | 1 * 1,000 * 3.427 Cn * PointValue * Premium | |
| Absolute Notional Value | +3,427 | ABS(.) |
Composite Portfolio Examples
The following examples demonstrate how risk controls operate for portfolios with multiple positions. In each example:
- All trades are executed within the same account
- Risk values are shown at the account level
- All options are at-the-money, have 90 days to expiration, and a volatility of 0.15
Buy 1 NMS SPX Call, Buy 1 SPY ETF
SPX Call Price = 160.78 (underlier at 5,150.00)
SPY Put Price = 15.93 (underlier at 512.00)
| Risk Control | SPX Call Value | SPY Put Value | Combined |
|---|---|---|---|
| Day Margin UDn VDn | -13,247 | +2,779 | N/A |
| Day Margin UDn VUp | -13,247 | +2,779 | N/A |
| Day Margin UUp VDn | +20,342 | -1,050 | N/A |
| Day Margin UUp VUp | +20,342 | -1,050 | N/A |
| Live Margin Day | +13,247 | +1,050 | +14,297 |
| Net DDelta | +265,740 | -24,778 | +240,962 |
| Absolute DDelta | +265,740 | +24,778 | +290,518 |
| Net Vega | +1,069 | +106 | +1,175 |
| Absolute Vega | +1,069 | +106 | +1,175 |
| Net WtVega | +154 | + 15 | +169 |
| Absolute WtVega | +154 | +15 | +169 |
| Net Notional Value | +16,078 | +1,592 | +17,671 |
| Absolute Notional Value | +16,078 | +1,592 | +17,671 |
Buy 1 CME ES Put, Buy 1 NMS SPX Call
ES Put Price = 162.44 (underlier at 5,215)
SPX Call Price = 160.78 (underlier at 5,150)
| Risk Control | ES Put Value | SPX Call Value | Combined |
|---|---|---|---|
| Day Margin UDn VDn | +5,796 | -13,247 | N/A |
| Day Margin UDn VUp | +8,441 | -13,247 | N/A |
| Day Margin UUp VDn | -5,776 | +20,342 | N/A |
| Day Margin UUp VUp | -2,965 | +20,342 | N/A |
| Live Margin Day | +5,776 | +13,247 | +19,023 |
| Net DDelta | -126,307 | +265,740 | +139,433 |
| Absolute DDelta | +126,307 | +265,740 | +392,047 |
| Net Vega | +541 | +1,069 | +1,610 |
| Absolute Vega | +541 | +1,069 | +1,610 |
| Net WtVega | +78 | +154 | +232 |
| Absolute WtVega | +78 | +154 | +232 |
| Net Notional Value | +8,122 | +16,078 | +24,200 |
| Absolute Notional Value | +8,122 | +16,078 | +24,200 |
Buy 1 CME ES Put, Buy 1 ES Future
ES Put Price = 162.44
ES Future = 5,215
| Risk Control | ES Put Value | ES Future Value | Combined |
|---|---|---|---|
| Day Margin UDn VDn | +5,796 | -11,733 | -6,004 |
| Day Margin UDn VUp | +8,441 | -11,733 | -3,360 |
| Day Margin UUp VDn | -5,776 | +11,733 | +6,024 |
| Day Margin UUp VUp | -2,965 | +11,733 | +8,835 |
| Live Margin Day | N/A | N/A | +6,004 |
| Net DDelta | -126,307 | +260,750 | +134,443 |
| Absolute DDelta | +126,307 | +260,750 | +387,057 |
| Net Vega | +541 | N/A | +541 |
| Absolute Vega | +541 | N/A | +541 |
| Net WtVega | +78 | N/A | +78 |
| Absolute WtVega | +78 | N/A | +78 |
| Net Notional Value | +8,122 | +260,750 | +268,872 |
| Absolute Notional Value | +8,122 | +260,750 | +268,872 |
Buy 1 CME ZN Put, Buy 1 CME ZN Future
ZN Put Price = 3.427
ZN Future Price = 110.00
| Risk Control | ZN Put Value | ZN Future Value | Combined |
|---|---|---|---|
| Day Margin UDn VDn | -460 | -2,200 | -2,585 |
| Day Margin UDn VUp | +2,795 | -2,200 | +670 |
| Day Margin UUp VDn | -2,555 | +2,200 | -430 |
| Day Margin UUp VUp | +768 | +2,200 | +2,893 |
| Live Margin Day | N/A | N/A | +2,893 |
| Net DDelta | -53,284 | +110,000 | +56,716 |
| Absolute DDelta | +53,284 | +110,000 | +163,284 |
| Net Vega | +228 | N/A | +228 |
| Absolute Vega | +228 | N/A | +228 |
| Net WtVega | +33 | N/A | +33 |
| Absolute WtVega | +33 | N/A | +33 |
| Net Notional Value | +3,427 | 110,000 | +113,427 |
| Absolute Notional Value | +3,427 | 110,000 | +113,427 |
Buy 1 NMS SPX Call, Buy 1 NMS SPX Put
SPX Call Price = 160.78
SPX Put Price = 160.20
SPX (forward) = 5,150
Note:
This example showcases an edge case for Live Margin Day. If all four of your day margin values are positive, Live Margin Day defaults to 0. This occurs because SpiderRock Connect doesn't use contract minimums.
| Risk Control | Call Value | Put Value | Combined |
|---|---|---|---|
| Day Margin UDn VDn | -13,247 | +27,952 | +14,705 |
| Day Margin UDn VUp | -13,247 | +27,952 | +14,705 |
| Day Margin UUp VDn | +20,342 | -10,556 | +9.786 |
| Day Margin UUp VUp | +20,342 | -10,556 | +9.786 |
| Live Margin Day | N/A | N/A | 0 |
| Net DDelta | +265,740 | -249,232 | +16,508 |
| Absolute DDelta | +265,740 | +249,232 | +514,972 |
| Net Vega | +1,069 | +1,069 | +2,138 |
| Absolute Vega | +1,069 | +1,069 | +2,138 |
| Net WtVega | +154 | +154 | +308 |
| Absolute WtVega | +154 | +154 | +308 |
| Net Notional Value | +16,078 | +16,020 | +32,098 |
| Absolute Notional Value | +16,078 | +16,020 | +32,098 |
Buy 1 SPY ETF Call, Sell 1 SPY ETF Put, Sell 100 NMS SPY ETF Shares
SPY Call Price = 15.98
SPY Put Price = 15.90
SPY ETF = 512.00
| Risk Control | SPY Call Value | SPY Put Value | SPY Stock | Combined |
|---|---|---|---|---|
| Day Margin UDn VDn | -1,317 | -2,779 | +4,096 | 0 |
| Day Margin UDn VUp | -1,317 | -2,779 | +4,096 | 0 |
| Day Margin UUp VDn | +2,022 | +1,050 | -3,072 | 0 |
| Day Margin UUp VUp | +2,022 | +1,050 | -3,072 | 0 |
| Live Margin Day | +1,317 | +2,779 | +4,096 | 0 |
| Net DDelta | +26,425 | +24,775 | -51,200 | 0 |
| Absolute DDelta | +26,425 | +24,775 | +51,200 | +102,400 |
| Net Vega | +106 | -106 | N/A | 0 |
| Absolute Vega | +106 | +106 | N/A | +212 |
| Net WtVega | +15 | -15 | N/A | 0 |
| Absolute WtVega | +15 | +15 | N/A | +30 |
| Net Notional Value | +1,598 | -1,592 | -51,200 | -51,194 |
| Absolute Notional Value | +1,598 | +1,592 | +51,200 | +54,390 |