Yield Enhancement Strategy API
Income overlay selection: finds the best covered call or cash-secured put on the chain at a target delta, with annualized yield, assignment probability, breakeven, roll candidate, and an earnings filter.
Endpoint
X-Api-Key)
Rate Limited: Yes
Growth plan+
Parameters
| Name | In | Required | Default | Description |
|---|---|---|---|---|
symbol | path | yes | - | Underlying symbol. |
expiry | query | no | nearest upcoming expiry | yyyy-MM-dd. Restricts selection to a single expiry. |
targetDelta | query | no | 0.25 | Target delta for the short option. |
minOpenInterest | query | no | 250 | Minimum OI a candidate must have. |
structure | query | no | covered_call | covered_call or cash_secured_put. |
excludeEarningsBeforeExpiry | query | no | true | When true, penalises/flags picks whose expiry spans an earnings event. |
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://lab.flashalpha.com/v1/strategies/yield-enhancement/SPY?structure=cash_secured_put&targetDelta=0.20"
import requests
resp = requests.get(
"https://lab.flashalpha.com/v1/strategies/yield-enhancement/SPY",
params={"structure": "cash_secured_put", "targetDelta": 0.20},
headers={"X-Api-Key": "YOUR_API_KEY"}
)
data = resp.json()
print(f"{data['decision']} ({data['regime']}) score={data['score']}")
const resp = await fetch(
"https://lab.flashalpha.com/v1/strategies/yield-enhancement/SPY?structure=cash_secured_put&targetDelta=0.20",
{ headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log(`${data.decision} (${data.regime}) score=${data.score}`);
Response
Returns the standard strategy decision envelope. Every Strategy Signals endpoint returns this same shape; only metrics and regime change per strategy.
{
"strategy": "yield_enhancement",
"symbol": "SPY",
"timestamp": "2026-06-05T14:32:11Z",
"decision": "candidate",
"score": 72,
"confidence": 0.83,
"regime": "cash_secured_put_income",
"best_structures": [
{
"rank": 1,
"structure": "cash_secured_put",
"expiry": "2026-06-19",
"legs": [
{ "action": "sell", "type": "put", "strike": 580, "delta": -0.20, "premium": 3.10, "quantity": 1 }
],
"credit": 3.10,
"debit": null,
"max_profit": 3.10,
"max_loss": 576.90,
"breakevens": [576.90],
"edge_score": 72,
"liquidity_score": 0.91
}
],
"metrics": {
"structure": "cash_secured_put",
"strike": 580,
"delta": -0.20,
"premium": 3.10,
"annualized_yield_pct": 14.2,
"assignment_probability": 0.20,
"underlying_price": 589.12
},
"risk_flags": [],
"why": ["20-delta cash-secured put yields 14.2% annualized with 20% assignment risk."],
"avoid_if": ["You are unwilling to be assigned at the strike."],
"data_quality": { "score": 92, "warnings": [] }
}
Strategy-specific fields
Notable metrics keys (in addition to the always-present underlying_price):
| Metric |
|---|
structure |
strike |
delta |
premium |
annualized_yield_pct |
assignment_probability |
upside_surrender_pct |
dte |
earnings_before_expiry |
ex_dividend_risk |
breakeven_price |
iv_rank_30d |
roll_candidate |
next_earnings_date |
days_to_next_earnings |
underlying_price |
regime values: covered_call_income, cash_secured_put_income, no_yield_candidate.
Errors
| Status | error |
When |
|---|---|---|
400 | invalid_structure | structure is not covered_call or cash_secured_put. |
400 | invalid_expiry | expiry is present but not yyyy-MM-dd. |
403 | tier_restricted | Caller is below the Growth plan. |
404 | symbol_not_found | No market data for the symbol. |
About
This strategy scores income overlays on the chain. Given a target delta and structure (covered call or cash-secured put), it picks the best candidate and reports annualized yield, assignment probability, breakeven, and a roll candidate, while filtering or flagging picks whose expiry spans an earnings event.
It returns the standard strategy decision envelope shared by all Strategy Signals endpoints, so the score, decision, and best_structures shape match every other strategy. The yield-specific detail lives in metrics, and risk flags such as EARNINGS_BEFORE_EXPIRY and EX_DIVIDEND_RISK_NOT_MODELED appear in risk_flags where applicable.
Common Use Cases
- Drop in the proposed overlay - pull
best_structures[]for a covered-call or cash-secured-put at a fixed target delta - Trade only clean signals - act when
decisioniscandidateand skipno_setupreads where the yield is thin - Rank income across a watchlist - sort by
scoreto surface the richest overlays for the risk taken - Screen out event risk - drop picks where
risk_flags[]flags an earnings event inside the tenor - Size on conviction - scale the overlay by
scoreandconfidencerather than a fixed contract count - Respect the guardrails - require a clean
data_qualityand readregimebefore writing premium, and surface a roll candidate as expiry approaches
Related
Related reading
- VRP strategy scoring: pick the right options structure - how the score selects the income overlay
- ML on options data: a quant guide - feed the yield envelope into a systematic model
- Alpha decay: which signals erode - how an income edge fades over time
Complementary endpoints
- Strategy Signals overview - the shared decision envelope across every strategy
- Vol Carry - confirm the carry edge that makes the overlay worth writing
- Term Structure - pick the tenor where the yield is richest
Ready to build?
Get your free API key and start pulling live options data in 30 seconds.