Optimal Roll
Ranked roll candidates for an option position, credit spread or LEAP, and the best roll for each of your open positions, scored by the same engine as the Wheel Roll tab.
Rolls for your positions
/positions/rollsThe Wheel Roll tab as data. Every rollable position you hold (cash-secured puts, covered calls, collars, PMCCs, short and long puts and calls, bull put and bear call spreads) comes back with its roll leg, days to expiry, how far in the money it is, and bestRoll. That is the highest-rated roll to a better strike for a net credit, narrowed by your roll suggestion preferences, or null when none qualifies. Pass findRollsArgs as query parameters to /optimal-roll for the full table. The MCP tool get_roll_suggestions returns the same payload.
symbolstringaccountIdstringcurl -H "Authorization: Bearer qw_live_YOUR_KEY" \
"https://quantwheel.com/api/v1/positions/rolls"{
"asOf": "2026-10-22T14:59:12.000Z",
"positions": [
{
"ticker": "SPY",
"strategy": "Cash Secured Put",
"accountId": "acc_1",
"accountName": "Schwab",
"rollLeg": {
"strike": 550, "expiration": "2026-10-24", "optionType": "PUT", "side": "short",
"contracts": 1, "daysToExpiry": 2, "underlyingPrice": 546.1, "itmPercent": 0.71
},
"supported": true,
"bestRoll": {
"newStrike": 545, "netPremium": 0.42, "daysExtension": 7,
"yearlyYield": 18.4, "equityReleasedPercent": 0.91, "alternativesCount": 6
},
"findRollsArgs": {
"kind": "single", "ticker": "SPY", "expiration": "2026-10-24",
"strike": 550, "optionType": "put", "side": "short"
}
}
]
}supported: false: US options data cannot price their rolls.Get roll candidates
/optimal-rollsymbolstringrequiredstrikenumberrequiredexpirationdaterequiredoptionTypestringrequiredput or call.positionSidestringshort (default) or long.strikeExtensionnumberticker and side work as aliases of symbol and positionSide, so findRollsArgs passes straight through. The MCP tool find_rolls takes the same fields.
curl -H "Authorization: Bearer qw_live_YOUR_KEY" \
"https://quantwheel.com/api/v1/optimal-roll?symbol=NVDA&strike=120&expiration=2026-08-15&optionType=put"Response
Candidates come from live options chains and are ranked best-first. Fields vary slightly between short and long positions.
{
"ticker": "NVDA",
"currentExpiration": "2026-08-15",
"currentStrike": 120,
"optionType": "put",
"positionSide": "short",
"stockPrice": 124.9,
"currentBid": 1.85,
"currentAsk": 1.95,
"currentMid": 1.9,
"opportunities": [
{
"newExpiration": "2026-09-19",
"newStrike": 115,
"netPremium": 1.45,
"yield": 0.42,
"yearlyYield": 15.3,
"rating": 91,
"riskOfAssignment": 0.12,
"equityReleased": 500,
"pnlImprovement": 145.0
}
// ranked candidates; rows also carry indicative bid/ask, IV and greeks
// for the specific contracts being evaluated
]
}Spreads and LEAPs
Add kind to roll a credit spread as a unit or a long call LEAP to another LEAP, the same tables the Wheel Roll tab shows for those positions. Both need a Pro plan. Results are the best 20 by rating; pass limit for fewer.
kindstringsingle (default), spread or leap.spreadKindstringPUT_CREDIT (bull put) or CALL_CREDIT (bear call).shortStrike / longStrikenumberstrikenumberquantitynumberallowWidthChange / minWidth / maxWidthboolean / numberstrikeExtensionnumberallowShorterDtebooleanlimitnumbercurl -H "Authorization: Bearer qw_live_YOUR_KEY" \
"https://quantwheel.com/api/v1/optimal-roll?kind=spread&symbol=QQQ&expiration=2026-10-24&spreadKind=PUT_CREDIT&shortStrike=480&longStrike=470&quantity=2"Spread candidates carry closeCost, newCredit and netCredit per share (natural and Mid), netCreditDollars, the new strikes and width, and daysExtension. LEAP candidates carry the new strike, expiration and DTE, netCredit (positive means cash out), the delta and breakeven change, and a rating.
What the score weighs
| Input | Why it matters |
|---|---|
| netPremium | Rolls should pay you, not the market maker. |
| yearlyYield | Time added vs. credit received, annualized. |
| riskOfAssignment | Derived assignment probability at the new strike. |
| equityReleased / pnlImprovement | Collateral freed and P&L improvement vs. holding. |