VRP Strategy Scoring: How to Pick the Right Options Structure for Today's Market | FlashAlpha

VRP Strategy Scoring: How to Pick the Right Options Structure for Today's Market

The FlashAlpha VRP endpoint scores 4 options strategies in real-time: short put spread, short strangle, iron condor, and calendar spread. Learn what drives each score, when each strategy wins, and how to build a multi-symbol recommendation engine.

T
Tomasz Dobrowolski Quant Engineer
Mar 27, 2026
16 min read
VRP OptionsStrategy StrategySelection PutSpread Strangle IronCondor CalendarSpread

The Four Strategy Scores

The VRP endpoint returns a strategy_scores object with a 0 - 100 score for each of four premium selling structures. Higher scores mean the current market conditions favor that structure more strongly.

StrategyScore FieldBest WhenWorst When
Short Put Spreadshort_put_spreadHigh put VRP, steep skew, positive gamma, defined risk wantedSymmetric VRP, flat skew, bearish view
Short Strangleshort_strangleHigh VRP, moderate skew, positive gamma, wide expected rangeNarrow range, extreme skew, negative gamma
Iron Condoriron_condorSymmetric VRP, need defined risk, moderate VRPAsymmetric VRP (short put spread beats it)
Calendar Spreadcalendar_spreadSteep term structure (contango), low front VRP, positive gammaFlat/inverted term structure, high front VRP

What Drives Each Score

Short Put Spread Score

The directional, defined-risk premium selling trade - sell an OTM put, buy a further-OTM put as protection. It dominates when put VRP is significantly higher than call VRP:

  • Put VRP magnitude (35% weight): Raw put-side premium available. Higher = better score.
  • Put/call VRP asymmetry (30% weight): Higher ratio = higher score. At 4x+, this score peaks.
  • Skew steepness (20% weight): Steep skew means OTM puts are richly priced relative to ATM - ideal for put spreads.
  • Gamma regime (15% weight): Positive gamma means dealers buy at the put wall, supporting your short put.

A short put spread score above 75 means conditions strongly favor the put side. Below 40, consider a different structure.

Short Strangle Score

The short strangle sells OTM puts and OTM calls, giving a wider profit zone than the straddle at the cost of less premium. The score factors in:

  • Overall VRP magnitude (35% weight): The strangle benefits from VRP across the whole smile, not just ATM.
  • Expected move width (25% weight): Wider expected moves favor strangles over straddles because the profit zone matches the expected range.
  • Gamma regime (20% weight): Positive gamma compresses tails, making OTM options decay faster.
  • Wing VRP (20% weight): How much VRP exists in 20 - 30 delta options specifically.

Iron Condor Score

The iron condor adds long wings for defined risk. It scores highest when the VRP is symmetric and the trader needs capital efficiency or risk limits:

  • VRP symmetry (30% weight): The put/call VRP ratio. Closer to 1.0 = higher score. Above 3.0x, the iron condor score drops sharply because the call side has no edge.
  • Overall VRP level (25% weight): Enough premium to justify four legs of commissions.
  • Gamma regime (25% weight): Positive gamma favors the structure.
  • Term structure (20% weight): Normal contango supports iron condors. Inverted term structure penalizes.

Calendar Spread Score

Calendar spreads exploit term structure rather than absolute VRP. The score is driven by:

  • Term structure steepness (40% weight): The gap between front-month IV and back-month IV. Steeper contango = higher score.
  • Front-month VRP (25% weight): If front-month VRP is very high, selling it outright (straddle/strangle) beats the calendar. Calendars score higher when front VRP is moderate.
  • Gamma regime (20% weight): Positive gamma in the front month accelerates front-month theta decay.
  • Realized vol trend (15% weight): Declining realized vol favors calendars because the front month decays faster in quiet markets.

Get all 4 strategy scores for any symbol with one API call

No manual calculation - the endpoint returns scored recommendations updated in real-time.

Get API Access

The Strategy Selection Decision Tree

When multiple scores are close, use this decision tree to break the tie:

  1. Is VRP z-score > 1.5? If yes, favor the highest-premium structure (the strangle). You want maximum exposure to the rich premium.
  2. Is put VRP > 3x call VRP? If yes, eliminate the iron condor. The short put spread captures the asymmetric put-side edge with defined risk.
  3. Is term structure steep (contango > 3 vol points)? If yes, the calendar spread score is likely high. Compare it to the directional alternatives.
  4. Do you need defined risk? If yes, eliminate the strangle. Choose between the iron condor and the short put spread.
  5. Default: Pick the highest score. The scoring system already incorporates all the factors above.

Building a Multi-Symbol Recommendation Engine

The following script scans your watchlist and recommends the best strategy for each symbol based on the real-time scores:

import requests

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://lab.flashalpha.com"
WATCHLIST = ["SPY", "QQQ", "IWM", "AAPL", "TSLA", "NVDA", "AMZN", "META",
             "GOOGL", "MSFT", "AMD", "JPM"]

STRATEGIES = [
    ("short_put_spread", "Short Put Spread"),
    ("short_strangle", "Short Strangle"),
    ("iron_condor", "Iron Condor"),
    ("calendar_spread", "Calendar Spread"),
]

def get_vrp(symbol):
    resp = requests.get(
        f"{BASE_URL}/v1/vrp/{symbol}",
        headers={"X-Api-Key": API_KEY}
    )
    if resp.status_code != 200:
        return None
    return resp.json()

print(f"{'Symbol':<8} {'Best Strategy':<20} {'Score':>6} {'2nd Best':<20} {'Score':>6} {'Z':>6} {'VRP':>6}")
print("-" * 80)

opportunities = []

for sym in WATCHLIST:
    data = get_vrp(sym)
    if not data or not data.get("strategy_scores"):
        continue

    scores = data["strategy_scores"]
    z = (data.get("vrp") or {}).get("z_score") or 0
    vrp_20d = (data.get("vrp") or {}).get("vrp_20d") or 0

    # Sort strategies by score
    ranked = sorted(
        [(key, label, scores.get(key, 0)) for key, label in STRATEGIES],
        key=lambda x: x[2],
        reverse=True
    )

    best_key, best_label, best_score = ranked[0]
    second_key, second_label, second_score = ranked[1]

    print(f"{sym:<8} {best_label:<20} {best_score:>5.0f} {second_label:<20} {second_score:>5.0f} {z:>+5.1f} {vrp_20d:>+5.1f}%")

    if best_score >= 70 and z > 0.5:
        opportunities.append({
            "symbol": sym,
            "strategy": best_label,
            "score": best_score,
            "z_score": z,
            "vrp": vrp_20d
        })

if opportunities:
    print(f"\n{'='*60}")
    print(f"TOP OPPORTUNITIES ({len(opportunities)} symbols with score >= 70 and z > 0.5):")
    print(f"{'='*60}")
    for opp in sorted(opportunities, key=lambda x: x["score"], reverse=True):
        print(f"  {opp['symbol']:<8} {opp['strategy']:<20} score={opp['score']:.0f}  z={opp['z_score']:+.1f}  VRP={opp['vrp']:+.1f}%")

Run this script with your own API key to see live strategy scores and recommendations for your watchlist. The output will rank the best and second-best strategy for each symbol, along with the score, z-score, and current VRP - highlighting the top opportunities where scores are 70+ and z-scores are above 0.5.

Validate with history. Archive daily snapshots from the live /v1/vrp endpoint to build your own history - a simple cron job is all you need. Run your own backtest before deploying capital - every symbol and time period behaves differently.

A Full Week of Recommendations

To illustrate how the scoring system adapts to changing conditions, here is a hypothetical week for SPY where different strategies win on different days:

DayMarket ConditionTop StrategyScoreWhy It Won
MondayLow vol, steep term structure, positive gammaCalendar Spread74Front VRP is thin but term structure is steep. Calendar captures the roll-down.
TuesdayFed surprise, VIX +5, negative gammaShort Put Spread68VRP spiked asymmetrically (put VRP 5x call). Even in negative gamma, the put side has edge with defined risk.
WednesdayRecovery day, VIX fading, positive gamma returnsShort Strangle83High VRP across the smile, low skew (both sides elevated), positive gamma. Maximum premium capture.
ThursdayContinued recovery, VRP normalizing, symmetricIron Condor72VRP still above average but declining and balanced. Defined-risk condor fits the calmer, symmetric setup.
FridayQuiet, moderate skew, put VRP 4x callShort Put Spread71Put VRP dominant and skew steep. The put side carries the edge with capped downside.

Notice: the same symbol (SPY) rotated through every one of the four scored structures across the week. This is why a fixed strategy (always iron condors, always strangles) underperforms an adaptive approach.

When Scores Conflict with Your View

The scoring system is quantitative. It does not know about your portfolio, risk tolerance, or market thesis. Here is how to handle disagreements:

Scores say strangle, you want defined risk

Look at the iron condor and short put spread scores. If they are above 60, use the defined-risk version of the strangle thesis. You sacrifice some edge for capital protection. If the defined-risk scores are below 50, the structure does not suit the environment - either accept the strangle risk or sit out.

Scores say short put spread, you are bearish

The short put spread score is bullish-to-neutral. If you are actively bearish, the VRP endpoint is not your signal source - use directional analysis instead. Do not fight a bearish view by selling puts just because the score is high.

All scores are below 50

This means no structure has a strong edge in current conditions. Do not force a trade. Low scores across the board typically occur in Cell D (negative gamma + low VRP) or during VRP inversions. Wait for conditions to improve.

Optimizing Across a Portfolio

When running the scanner across many symbols, diversification matters. Here are portfolio-level considerations:

  • Do not stack the same strategy across correlated symbols. If SPY, QQQ, and IWM all recommend short put spreads, that is one trade with 3x the size - not three independent trades. Treat index ETF put spreads as a single position.
  • Mix strategies. A portfolio with a strangle on AAPL, a put spread on SPY, and a calendar on MSFT has better diversification than three strangles, even if the strangle score was highest for all three.
  • Respect sector correlation. NVDA + AMD + AVGO are effectively the same trade. Pick the one with the highest score and skip the others.
  • Limit total vega exposure. Each premium selling position is short vega. A portfolio of 10 short vega positions will blow up simultaneously in a vol spike. Cap total portfolio vega at a level you can survive.

Scan your entire watchlist for the best premium selling opportunities

VRP z-scores, strategy scores, and directional decomposition for 6,000+ symbols.

View SPY Scores

Related Reading

The right options structure changes daily based on VRP magnitude, skew, term structure, and gamma regime. A strangle that scores 85 on Wednesday might score 40 on Friday. The FlashAlpha strategy scoring system evaluates all four premium selling structures against current conditions and returns a ranked recommendation - no manual calculation, no guesswork. Combine the top strategy score with the z-score tier and gamma regime from the other VRP sub-articles, and you have a complete decision framework: when to sell, how much to sell, and which structure to use.

Live Market Pulse

Get fast visibility into market shifts with full-chain analytics over low-latency REST and MCP polling.

Intelligent Screening

Screen millions of option pairs per second using your custom EV rules, filters, and setups.

Export-Ready

Export structured signals to your own execution stack or broker integration - FlashAlpha delivers the analytics, you keep control of order routing.

Join the Community

Discord

Engage in real time conversations with us!

Twitter / X

Follow us for real-time updates and insights!

GitHub

Explore our open-source SDK, examples, and analytics resources!