Spread Scoring Algorithm
This document describes an algorithmic scoring methodology for educational purposes. Scores do not constitute trading recommendations. See Terms §17.
Every spread candidate passes through a three-stage scoring pipeline. Each stage applies a multiplicative adjustment so the stages interact rather than simply adding points.
Base Score
GPU scanner
Skew
±25% cap
Technical
±50% cap
Score
The base score is the primary signal — probability of profit times capital efficiency. Skew and technical layers are tiebreakers and regime-alignment filters, each capped so they cannot dominate the ranking.
The GPU-accelerated scanner evaluates every valid spread combination across all expiries in the live options chain.
- prob_profit — delta-based probability of the short leg expiring OTM. A 0.30-delta short put → 70% P(profit).
- prob_factor — penalises very-high-probability spreads (> 85%) where credit is too thin. Sweet spot is 60–80%.
- credit_pct — credit as % of spread width. Rewards capital efficiency: $0.50 on a $2-wide spread (25%) scores higher than $0.50 on a $10-wide spread (5%).
Iron condors
Credit calculation
All strategies use mid-price credit (short_mid − long_mid) rather than bid[short] − ask[long]. For illiquid chains with wide bid/ask spreads, the bid-based calculation frequently returns zero or negative credit even when a fair-value trade exists at the mid.
Uses the nearest-expiry skew metrics derived from the live options chain (same data shown in the Skew Metrics table on the quote page).
IV(25-delta call) − IV(25-delta put)
Measures which side the market is paying up for. Negative = put skew (fear / portfolio hedging). Most large-caps have mild negative RR as a structural baseline.
½ × (IV(25d call) + IV(25d put)) − IV(ATM)
Measures wing curvature — how much the market pays for tail hedges above ATM vol. High BF = fat tails priced in (earnings, catalysts).
Five signal groups computed from three data sources:
- Technical indicators — 252 days of daily OHLCV → RSI, MACD, SMAs, Stochastic, Williams %R, ATR, Bollinger Bands
- Options context — iv_rank, straddle_price (same source as IV Rank card on quote page)
- Spread-level data — min open interest across all legs, carried from the scanner
Five signals contribute ±1 each, normalised by signals available:
| Signal | Bullish (+1) | Bearish (−1) |
|---|---|---|
| RSI (14) | < 40 oversold | > 60 overbought |
| MACD vs signal | MACD above signal | MACD below signal |
| MACD histogram | Positive & growing | Negative & falling |
| Price vs SMA 50 | Price > SMA 50 | Price < SMA 50 |
| Price vs SMA 200 | Price > SMA 200 | Price < SMA 200 |
Shorter-period oscillators confirm or temper the Group 1 bias:
| Signal | Bullish (+1) | Bearish (−1) |
|---|---|---|
| Stochastic %K | < 20 oversold | > 80 overbought |
| Williams %R | < −80 oversold | > −20 overbought |
3a — Blended Expected-Move Penalty
√(DTE/30) before blending.3b — Bollinger Band Signal
3c — Bollinger Band Width (Iron Condor regime)
Source: iv_rank — same field shown on the IV Rank card on the quote page.
Source: min_oi — minimum open interest across all legs, carried from the spread scanner.
Both multipliers are stored on each spread in the API response for transparency and displayed as badges on the quote page.
| Field | Description |
|---|---|
| score | Final composite score after all adjustments |
| raw_score | Base score before skew adjustment |
| skew_multiplier | Stage 2 multiplier (e.g. 1.20 = skew boosted by 20%) |
| tech_multiplier | Stage 3 multiplier (e.g. 0.85 = penalised by 15%) |
| prob_profit | Delta-based probability of profit (not ATR-adjusted) |
| credit | Mid-price credit received |
| max_loss | Maximum loss = spread width − credit |
| risk_reward | credit / max_loss |
| min_oi | Minimum open interest across all legs of the spread |
- All caps are intentionally conservative. The base score (delta × capital efficiency) should remain the primary signal; Stages 2 and 3 are tiebreakers.
- ±50% tech cap: a spread with base score 0.30 can at most reach 0.45 or drop to 0.15 from technicals alone.
- If IV rank boost proves too aggressive, reduce Group 4 coefficients (0.15 → 0.10, 0.08 → 0.05).
- OI thresholds (100 / 500) suit liquid large-caps. For low-volume ETFs or small-caps, consider lowering or disabling Group 5.
- IC directional bias penalty (
|bias_factor| × 0.15) can be tuned independently — if the market is trending and ICs still perform, lower this. - BB width threshold (0.10 = 10%) is calibrated for large-cap stocks. High-beta names naturally have wider bands; consider raising to 0.15 for those.