DocsAPI ReferenceWheelOptimal Roll
Optimal Roll
Ranked roll candidates for an option position, scored by the same engine as the dashboard's Optimal Roll table.
Get roll candidates
GET
/optimal-rollParameters
symbolstringrequiredUnderlying ticker.
strikenumberrequiredCurrent strike.
expirationdaterequiredCurrent expiration (YYYY-MM-DD).
optionTypestringrequiredput or call.positionSidestringshort (default) or long.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.
200 OK (abridged)
{
"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
]
}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. |