OCC TIMS Methodology
Theoretical Intermarket Margining System — the regulatory baseline for all US portfolio margin.
Overview
The Theoretical Intermarket Margining System (TIMS) is the margin methodology developed and maintained by the Options Clearing Corporation (OCC). It serves as the regulatory minimum for portfolio margin accounts in the United States, as mandated by FINRA Rule 4210.
Every broker-dealer offering portfolio margin must compute TIMS as a floor. Firms layer proprietary "house" add-ons (concentration charges, liquidity surcharges, singleton requirements) on top of TIMS to arrive at their actual margin requirements.
Key Characteristics
- Risk-based: Margin is derived from the worst-case portfolio loss across a defined set of stress scenarios, not from fixed percentages.
- Published parameters: Scan ranges, product groups, and offset percentages are publicly available from the OCC.
- Regulatory floor: No broker may set portfolio margin below the TIMS requirement.
- Product-group netting: Correlated positions across related indexes receive margin credit.
Scan Range Parameters
TIMS evaluates each position at equidistant price points across a defined scan range. The scan range varies by asset class.
Equity Securities (Individual Stocks)
| Direction | Scan Range |
|---|---|
| Downside | -15% |
| Upside | +15% |
| Scan Points | 10 equidistant |
A stock position is scanned from 0% to -15% and from 0% to +15% in 10 equal steps (1.5% increments). The worst-case loss across all 21 evaluation points (10 down + 10 up + flat) determines the margin requirement.
Broad-Based Index Products
| Direction | Scan Range |
|---|---|
| Downside | -8% |
| Upside | +6% |
| Scan Points | 10 equidistant |
Broad-based indexes receive narrower scan ranges because diversified indexes exhibit lower volatility than individual stocks. The asymmetry (-8% down vs. +6% up) reflects the empirical observation that markets fall faster than they rise.
Recognized Broad-Based Index Products
The following tickers are classified as broad-based indexes and receive the narrower -8%/+6% scan:
| Category | Tickers |
|---|---|
| S&P 500 | SPY, SPX, IVV, VOO, SPYG, SPYV, RSP |
| Nasdaq | QQQ, NDX |
| Dow Jones | DIA |
| Russell | IWM, IWB |
| Total Market | VTI, ITOT, SPTM |
| Mid-Cap | MDY |
| Small-Cap | IJR, VB |
| Value | VTV, VUG |
| Sector ETFs | XLK, XLF, XLE, XLV, XLI, XLP, XLY, XLB, XLC, XLRE, XLU |
| International | EEM, EFA, VEA, VWO, IEMG, ACWI |
Scan Algorithm
For each position, the algorithm evaluates P&L at every scan point and selects the worst outcome.
Step 1: Position-Level Scan
For a position with market value MV (positive for long, negative for short):
For i = 0 to SCAN_POINTS:
fraction = i / SCAN_POINTS
moveDown = scanRangeDown × fraction
PnL_down = MV × moveDown
moveUp = scanRangeUp × fraction
PnL_up = MV × moveUp
worstLoss = min(worstLoss, PnL_down, PnL_up)
marginRequirement = |worstLoss|
Example: A long position worth $10M in AAPL (equity scan: +/-15%):
- At scan point 10/10 (full downside): PnL = $10M × (-0.15) = -$1.5M
- Margin requirement = $1.5M (15% of position value)
Example: A short position worth -$5M in SPY (broad-based index scan: -8%/+6%):
- At scan point 10/10 (full upside): PnL = -$5M × 0.06 = -$0.3M
- At scan point 10/10 (full downside): PnL = -$5M × (-0.08) = +$0.4M (profit for short)
- Margin requirement = $0.3M (6% of position value)
Step 2: Portfolio Aggregation
Position-level margin requirements are summed to get the total base requirement:
totalBaseRequirement = Σ |worstLoss_i| for all positions
Product Group Netting
TIMS provides margin credit for positions in correlated products. If one product group has a directional exposure that offsets another, the OCC publishes cross-offset percentages that reduce the total requirement.
Product Groups
Positions are classified into product groups based on their underlying index:
| Group | Members | Description |
|---|---|---|
| SP500 | SPY, SPX, IVV, VOO, SPYG, SPYV, RSP | S&P 500 family |
| NASDAQ | QQQ, NDX, TQQQ, SQQQ | Nasdaq-100 family |
| RUSSELL | IWM, IWB, IWN, IWO, IWF | Russell family |
| DOW | DIA | Dow Jones Industrial Average |
| TOTAL_MKT | VTI, ITOT, SPTM | Total US market |
| MIDCAP | MDY, IJH, VO | US mid-cap |
| SMALLCAP | IJR, VB, VIOO | US small-cap |
| VALUE | VTV, IVE, VLUE | US value factor |
| SECTOR | XLK, XLF, XLE, XLV, XLI, XLP, XLY, XLB, XLC, XLRE, XLU | SPDR sector ETFs |
| INTL | EEM, EFA, VEA, VWO, IEMG, ACWI | International / emerging markets |
Cross-Offset Matrix
When two product groups have opposing directional exposure (one long, one short), the OCC allows a percentage of the smaller exposure's profit to offset the larger exposure's loss.
| SP500 | NASDAQ | RUSSELL | DOW | TOTAL_MKT | MIDCAP | SMALLCAP | VALUE | SECTOR | INTL | |
|---|---|---|---|---|---|---|---|---|---|---|
| SP500 | — | 90% | 85% | 95% | 98% | 80% | 70% | 90% | 75% | 60% |
| NASDAQ | 90% | — | 80% | 85% | 90% | 75% | 65% | 75% | 70% | 55% |
| RUSSELL | 85% | 80% | — | 80% | 90% | 90% | 95% | 85% | 70% | 55% |
| DOW | 95% | 85% | 80% | — | 95% | 75% | 65% | 90% | 70% | 60% |
| TOTAL_MKT | 98% | 90% | 90% | 95% | — | 90% | 85% | 92% | 78% | 65% |
| MIDCAP | 80% | 75% | 90% | 75% | 90% | — | 90% | 80% | 65% | 50% |
| SMALLCAP | 70% | 65% | 95% | 65% | 85% | 90% | — | 70% | 55% | 45% |
| VALUE | 90% | 75% | 85% | 90% | 92% | 80% | 70% | — | 70% | 55% |
| SECTOR | 75% | 70% | 70% | 70% | 78% | 65% | 55% | 70% | — | 50% |
| INTL | 60% | 55% | 55% | 60% | 65% | 50% | 45% | 55% | 50% | — |
Example: Long $8M in SPY (SP500 group), Short -$6M in QQQ (NASDAQ group).
The SP500-NASDAQ cross-offset is 90%. Since the positions are directionally opposing:
nettingBenefit = min(|$8M|, |$6M|) × 15% × 90% = $6M × 0.15 × 0.90 = $0.81M
Netting Algorithm
For each pair of product groups (g1, g2):
If g1 and g2 have opposing directional exposure:
offsetPct = CROSS_OFFSETS[g1][g2]
benefit = min(|MV_g1|, |MV_g2|) × 15% × offsetPct
totalNettingBenefit += benefit
finalRequirement = max(0, totalBaseRequirement - totalNettingBenefit)
Individual equities receive no cross-offset. Only positions in recognized index products participate in netting.
Relationship to Broker House Margin
TIMS is the floor. Every broker sets their own margin at or above TIMS. The table below shows how major brokers layer add-ons.
| Broker | Base | House Add-Ons | Source |
|---|---|---|---|
| OCC TIMS | +/-15% equity, -8%/+6% index | None (regulatory minimum) | Published |
| Interactive Brokers | TIMS base | Concentration (+/-30% top 2), singleton (+30%/-25%), per-contract min, liquidity surcharge | Published |
| Charles Schwab | TIMS base | RBC concentration (EPR-based), PNR monitoring, 30% maintenance floor | Published |
| A Prime Stress | Proprietary stress | 200 DMA reversion, cap-bucket minimums, vol shock (1-3 SD), SPAC trust | Proprietary |
| Goldman Sachs | Wider scan (+/-20%) | Aggressive concentration (+/-35% top 5), liquidity surcharge | Estimated |
| JP Morgan | +/-18% scan | VaR overlay (99%, 10-day), moderate concentration | Estimated |
| Morgan Stanley | +/-20% scan | Aggressive concentration, high liquidity multiplier (1.20x) | Estimated |
In the PrimeRisk margin comparison table, every broker row shows the TIMS Base column — the OCC TIMS requirement for the same portfolio. Click the TIMS Base link to see full methodology detail.
FINRA Rule 4210 Reference
FINRA Rule 4210 governs margin requirements for broker-dealer accounts. Key provisions for portfolio margin:
| Requirement | Value |
|---|---|
| Minimum account equity | $5,000,000 (institutional) / $125,000 (retail) |
| Stress test range (equities) | +/-15% |
| Stress test range (broad-based indexes) | -8% / +6% |
| Reporting frequency | Daily |
| House requirements | May exceed TIMS but never fall below |
Eligible Securities
Portfolio margin under Rule 4210 applies to:
- Listed equities
- Listed options (equity and index)
- Broad-based index products
- ETFs tracking recognized indexes
Ineligible Securities
The following are NOT eligible for TIMS-based portfolio margin:
- OTC/pink sheet stocks
- Bonds and fixed income (covered by FICC/NSCC rules)
- Futures (covered by CME/exchange margin)
- Unlisted options
Implementation in PrimeRisk
PrimeRisk implements TIMS as a shared utility module (tims-scan.ts) that serves as the foundation for all margin calculations.
Architecture
tims-scan.ts ← Core scan algorithm, product groups, netting
├── occ-tims.ts ← Standalone OCC TIMS methodology
├── ibkr.ts ← IBKR (imports scanPosition, getScanRange)
├── schwab.ts ← Schwab (imports scanPosition, getScanRange, isBroadIndex)
├── standard-prime.ts ← Standard Prime Broker Stress (wraps proprietary stress engine)
└── parameterized.ts ← GS, JPM, MS, Citi, BofA, BNP, Jefferies
(imports scanPosition, getCustomScanRange)
Key Functions
| Function | Description |
|---|---|
scanPosition(mv, range, points) | Scan a single position and return worst-case loss |
getScanRange(ticker) | Return published scan range for a ticker (equity vs. index) |
getCustomScanRange(down, up) | Create a custom scan range for house methodologies |
computeTimsBaseScan(positions, quotes) | Full portfolio TIMS computation with netting |
computeTimsResult(positions, quotes) | Returns a complete MarginResult object |
isBroadIndex(ticker) | Check if a ticker qualifies for narrower index scan |
getProductGroup(ticker) | Look up which product group a ticker belongs to |
Performance
- Product group lookup uses a pre-built
Mapfor O(1) access (vs. iterating over group arrays) - Broad-based index recognition uses a
Setfor O(1) membership testing - Cross-offset matrix is symmetric; only upper-triangle pairs are computed
- TIMS baseline is computed once per API call and attached to all margin results
Limitations and Assumptions
-
Equity-only P&L: The current implementation uses linear P&L (
MV × priceMove). Options positions benefit from non-linear payoffs that would reduce margin under a full TIMS model with theoretical pricing. Future versions will incorporate Black-Scholes repricing at each scan point. -
Simplified product groups: The OCC publishes 28+ product groups with granular correlation data. PrimeRisk uses 10 representative groups covering the most commonly held ETFs.
-
No inter-month spread credits: TIMS provides additional netting for calendar spreads in options. This is not yet implemented.
-
No short option minimum: OCC imposes a short option minimum charge that is not included in this implementation.
-
Static scan ranges: The OCC may temporarily widen scan ranges during periods of extreme volatility. PrimeRisk uses the standard published ranges.
Sources
- OCC Risk Management — Margin Methodology
- FINRA Rule 4210 — Margin Requirements
- OCC Product Group Definitions
- CBOE Portfolio Margin FAQ
- Archegos Capital Management — Credit Suisse Board Report (Paul, Weiss), SEC Exhibit, 2021
- AIMA/S3 Partners — "PB Margin Policy Changes Survey," 2022