Skip to content

Cross Margining Across Asset Classes

cross-margining-across-asset-classessource

Use when correlated positions sit at different clearing houses and you want to estimate the initial-margin offset and capital efficiency an approved cross-margining arrangement would give. Not the clearing house's own number.

Version
1.1.0
Reading
4 min
Hands off to
5
Handed off from
5
License
Apache-2.0
CoversCME SPAN 2OCC STANSISDA SIMM (aggregation methodology)Python Dataclasses

When to Use

Use this skill in multi-asset trading firms, market makers, and treasury desks holding correlated positions across different clearing houses or asset classes (e.g. S&P 500 futures ES at CME vs. S&P 500 options SPX at OCC vs. ETF SPY; or Treasury futures ZN at CME vs. cash Treasuries cleared at FICC/GSD). Calculating standalone margin for each asset class in isolation traps idle collateral. This module estimates the cross-margin offset, quantifies the dollar margin saving, and reports the capital efficiency gain, with an audit trail of which offsets were applied.

The aggregation used is the ISDA SIMM cross-risk-class shape, $\sqrt{\sum_r IM_r^2 + \sum_{r \neq s} \psi_{rs} IM_r IM_s}$, applied across asset classes rather than SIMM risk classes.

When NOT to Use

  • As the clearing house's margin number. CME SPAN 2 derives margin from historical-VaR plus stress scenario revaluation across thousands of scenarios; OCC STANS uses full-portfolio Monte Carlo at a 99% Expected Shortfall measure. Neither aggregates standalone margins by a pairwise correlation. This module gives a planning estimate; reconcile against the CCP or clearing broker figure before committing collateral or sizing positions against released capital.
  • When no cross-margin arrangement covers the pair. Offsets are only realizable inside an active program with the required account structure. Without one the correct estimate is the standalone sum, which is what the module returns by default.
  • For intraday collateral sufficiency or margin-call decisions. The estimate is static and correlation-based; use the live broker/CCP requirement and margin-utilization-circuit-breaker for those.
  • As a stress or liquidation-risk measure. Offsets calibrated on normal-market correlations overstate protection precisely when correlations converge in a crisis.

Prerequisites

  • Position inventory with standalone initial margin requirements ($M_i$) per asset class, one aggregated figure per asset class (duplicated identifiers are rejected).
  • Pairwise correlation / offset credits ($\rho_{i,j}$) sourced from the governing clearing arrangement, not estimated from returns, and recorded with the program that grants them.
  • Account eligibility actually in place. For the CME-FICC/GSD arrangement, participation requires the same dually-registered FCM (CFTC) and broker-dealer (SEC) at both clearing houses, and a signed cross-margin participant agreement between the BD-FCM, CME Group and FICC. An unregistered account earns no offset regardless of how correlated the positions are.

Workflow

  1. Standalone Margin Summation:
    • Compute total un-offset margin: $M_{\text{standalone}} = \sum_i M_i$.
    • Reject non-finite, negative, or duplicated components before aggregating — a duplicated asset-class identifier would be looked up as a self-pair and silently mispriced.
  2. Register Only Contractually Granted Offsets:
    • Register $\rho_{i,j}$ per pair, tagged with the program (CME-OCC, CME-FICC/GSD). Any pair left unregistered receives default_correlation — 1.0, i.e. no offset — so the estimate degrades toward the standalone sum rather than inventing a benefit. default_correlation=0.0 is a deliberate, not a default, choice.
  3. Cross-Margined Risk Reduction:
    • Compute netted portfolio margin: $$M_{\text{cross}} = \sqrt{\sum_i M_i^2 + 2 \sum_{i < j} \rho_{i,j} M_i M_j}$$
    • If the radicand is materially negative, the pairwise offsets are jointly impossible (not positive semi-definite) — raise, do not clamp to zero. Three legs pairwise at $\rho = -0.9$ is arithmetically inconsistent, and clamping it would report a 100% margin saving.
    • Apply the model-risk floor $M_{\text{floor}} = f \times M_{\text{standalone}}$ (default $f = 0.20$). This is an internal prudential parameter, not a clearing house or regulatory rule — see Standards.
  4. Capital Savings & Efficiency Calculation:
    • $\text{Margin Savings USD} = M_{\text{standalone}} - M_{\text{cross}}$.
    • $\text{Capital Efficiency Gain Pct} = \frac{\text{Margin Savings}}{M_{\text{standalone}}} \times 100%$.
  5. Reconcile, Then Re-allocate: compare the estimate against the CCP/clearing-broker requirement, and release freed collateral to the capital pool only up to the reconciled figure.

Full procedure: see references/workflows.md. Standards reference: see references/standards.md. Printable pre-flight checklist: see assets/checklist.md.

Common Pitfalls

  • Treating the Estimate as the Clearing House Number: sizing positions against a correlation-aggregated estimate when the CCP computes margin by scenario revaluation (SPAN 2 HVaR + stress) or Monte Carlo Expected Shortfall (STANS). The two will not agree; the difference is a real collateral shortfall.
  • Defaulting Unregistered Pairs to $\rho = 0$: a missing offset entry silently grants $\sqrt{M_1^2 + M_2^2}$ instead of $M_1 + M_2$ — a fabricated diversification benefit for a pair with no arrangement behind it. Fail closed at $\rho = 1$ and log the unregistered pairs.
  • Assuming 100% Margin Offset: assuming perfectly negatively correlated positions (e.g. long futures vs. short stock) eliminate 100% of margin, ignoring clearing house model conservatism and short-option/per-contract minimums.
  • Clamping a Negative Radicand to Zero: with three or more asset classes, individually plausible pairwise offsets can be jointly inconsistent. max(0, variance) turns that inconsistency into a near-zero margin requirement instead of an error.
  • Unregistered Cross-Margin Accounts: computing savings without the dually-registered FCM/BD and signed participant agreement at CME-OCC / CME-FICC. The offset is an account-structure entitlement, not a property of the positions.
  • Ignoring Correlation Breakdown in Stress Tests: relying on normal-market correlation offsets during liquidity crises when correlations converge toward 1 and the offset evaporates.
  • Treating the 20% Floor as a Rule: it is a configurable model-risk guard with no CCP or regulator behind it; citing it to a risk committee as a clearing requirement is a compliance misstatement.

Verification

  • Instantiate CrossMarginingCalculator(minimum_floor_pct=0.20). Register $\rho = -0.80$ for EQUITY_FUTURES/INDEX_OPTIONS, then input $M_{\text{EquityFutures}} = $500{,}000$ and $M_{\text{IndexOptions}} = $400{,}000$. Since $500{,}000^2 + 400{,}000^2 + 2(-0.80)(500{,}000)(400{,}000) = 90 \times 10^9$, verify $M_{\text{cross}} = $300{,}000$ exactly, savings $$600{,}000$, and capital efficiency gain $66.67%$, with is_floor_applied false.
  • Verify that omitting the offset registration returns $$900{,}000$ (no saving) and populates unregistered_pairs — the fail-closed path.
  • Verify three equal legs registered pairwise at $\rho = -0.9$ raise InconsistentCorrelationError, while $\rho = -0.5$ (the PSD boundary) returns $0$ and is accepted.
  • Run python -m unittest discover -s skills/cross-margining-across-asset-classes/scripts and confirm a 100% pass rate.

Verify it, from the repository root

python -m unittest discover -s skills/cross-margining-across-asset-classes/scripts

Hands off to 5

Skills this document names, usually in When NOT to Use, as the owner of a case it excludes.

Handed off from 5

Skills that name this one as the place a case belongs. The reverse edges of the graph.