v1.0.0 to v1.1.0
43 added, 19 removed. Audit A to A.
---
name: cross-margining-across-asset-classes
- description: Quantitative multi-asset treasury and margin optimization module for
- computing cross-margining offsets across clearing houses (CME, OCC, FICC), reducing
- initial margin, and calculating capital efficiency.
+ description: Quantitative multi-asset treasury module that estimates cross-margining
+ offsets across clearing houses (CME, OCC, FICC), the initial-margin reduction they
+ imply, and the resulting capital efficiency — for planning, not as a substitute
+ for the clearing house's own margin calculation.
domain: Treasury & Clearing Operations
subdomain: Portfolio & Cross Margining
tags:
- cross-margining
- portfolio-margin
- cme
- occ
- ficc
- margin-offset
- capital-efficiency
brokers_frameworks:
- - CME SPAN
+ - CME SPAN 2
- OCC STANS
+ - ISDA SIMM (aggregation methodology)
- Python Dataclasses
- version: "1.0.0"
+ version: "1.1.0"
author: algo-trading-skills-contributors
license: Apache-2.0
---
## 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` vs. Interest Rate Swaps). Calculating standalone margin for each asset class in isolation traps idle collateral. This module computes cross-margin offset discounts, quantifies dollar margin savings, and evaluates capital efficiency gains.
+ 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 margin requirements ($M_i$) per asset class.
- - Pairwise correlation / offset credit matrix ($\rho_{i,j}$) established by clearing agreements (e.g., CME-OCC joint cross-margining program).
+ - 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 Sumation**:
+ 1. **Standalone Margin Summation**:
- Compute total un-offset margin: $M_{\text{standalone}} = \sum_i M_i$.
- 2. **Cross-Margined Risk Reduction**:
+ - 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}$$
- - Apply clearing house minimum risk floor $M_{\text{floor}} = 0.20 \times M_{\text{standalone}}$.
- 3. **Capital Savings & Efficiency Calculation**:
+ - 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\%$.
- 4. **Collateral Re-allocation**: Release freed collateral to capital pool.
+ 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
- - **Assuming 100% Margin Offset**: Assuming perfectly negatively correlated positions (e.g., Long Futures vs Short Stock) eliminate 100% of margin, ignoring clearing house model risk floors.
- - **Unregistered Cross-Margin Accounts**: Computing cross-margin savings without opening a formal joint clearing account at CME-OCC / CME-FICC.
- - **Ignoring Correlation Breakdown in Stress Tests**: Relying on normal-market correlation offsets during liquidity crises when correlations collapse.
+ - **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`. Input standalone margin requirements: $M_{\text{EquityFutures}} = \$500,000$, $M_{\text{IndexOptions}} = \$400,000$. Input cross-asset correlation offset $\rho = -0.80$. Compute cross-margined requirement and verify $M_{\text{cross}} \approx \$250,998$ ($49.8\%$ capital savings).
- - Run `python scripts/test_cross_margining_across_asset_classes.py`.
+ - 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 scripts/test_cross_margining_across_asset_classes.py` (or `python -m unittest discover -s skills/cross-margining-across-asset-classes/scripts`) and confirm a 100% pass rate.
## Related Skills
- `capital-efficiency-across-cross-margined-strategies`
- `broker-account-margin-call-handling`
- ---
+ - `multi-leg-strategy-margin-optimization`
+ - `options-margin-span-calculation-global`
+ - `margin-utilization-circuit-breaker`