Stock Repair Strategy: A Real NKE Example
The stock repair strategy priced on a real NKE chain: which short strike makes the 1x2 call ratio free, and how far the breakeven drops versus hold and hope.
A stock repair strategy is an options position added to shares you already own at a loss: keep the stock, buy one call at the strike nearest the share price, and sell two calls at a higher strike, with the two short calls paying for the long one. Done for roughly zero cost, it moves the price at which you get back to even from your original purchase price down to about halfway between the current price and that purchase price, in exchange for giving up any gain above the short strike. The example below prices the whole structure on NKE from an actual 60 to 90 day option chain, rather than the invented $50-to-$40 numbers most explainers use.
Why NKE is a real stock repair example
A repair only applies to shares held below their purchase price, and NKE fits. Over the past year the stock's highest daily close was $74.57; its latest weekly close is $35.51, 52.4% below that high. For the rest of this post the purchase price is that highest close: the reader who bought at the top and is now sitting on the loss.
| week | weekly_close | high_52w_close | below_high_pct |
|---|---|---|---|
| 2025-09-15 | 70.89 | 74.57 | 4.9 |
| 2025-09-22 | 69.31 | 74.57 | 7.1 |
| 2025-09-29 | 71.93 | 74.57 | 3.5 |
| 2025-10-06 | 65.22 | 74.57 | 12.5 |
| 2025-10-13 | 67.37 | 74.57 | 9.7 |
| 2025-10-20 | 69.11 | 74.57 | 7.3 |
| 2025-10-27 | 64.59 | 74.57 | 13.4 |
| 2025-11-03 | 61.09 | 74.57 | 18.1 |
| 2025-11-10 | 64.17 | 74.57 | 13.9 |
| 2025-11-17 | 62.8 | 74.57 | 15.8 |
| 2025-11-24 | 64.63 | 74.57 | 13.3 |
| 2025-12-01 | 65.86 | 74.57 | 11.7 |
| 2025-12-08 | 67.47 | 74.57 | 9.5 |
| 2025-12-15 | 58.71 | 74.57 | 21.3 |
| 2025-12-22 | 60.93 | 74.57 | 18.3 |
| 2025-12-29 | 63.28 | 74.57 | 15.1 |
| 2026-01-05 | 65.92 | 74.57 | 11.6 |
| 2026-01-12 | 64.38 | 74.57 | 13.7 |
| 2026-01-19 | 65.04 | 74.57 | 12.8 |
| 2026-01-26 | 61.81 | 74.57 | 17.1 |
The exact SQL behind every number
SELECT
week,
weekly_close,
round(max(week_high_close) OVER (), 2) AS high_52w_close,
round((1 - weekly_close / max(week_high_close) OVER ()) * 100, 1) AS below_high_pct
FROM
(
SELECT
toString(toStartOfWeek(date, 1)) AS week,
round(toFloat64(argMax(close, date)), 2) AS weekly_close,
toFloat64(max(close)) AS week_high_close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'NKE'
AND date >= today() - 371
AND date < today()
GROUP BY week
)
ORDER BY weekThe flat line is the 52-week high close, and the gap between the two lines is the loss the repair is trying to close. Hold and hope, the do-nothing alternative, needs the stock to climb all the way back to that line.
How does the stock repair strategy lower the breakeven?
The structure is a covered 1x2 call ratio spread: 100 shares alongside one long call at the strike nearest the share price and two short calls at a higher strike, all in one expiration. Our ratio spreads guide covers the general 1x2; the repair is the special case where the extra short call is covered by the shares, the way a plain covered call is.
Between the two strikes, every dollar the stock rises is worth two dollars to the position: one from the shares and one from the long call. That doubling is the whole trick. With P for the purchase price, K1 for the long strike, K2 for the short strike and C for the net cost of the options, the position is back to even when the stock reaches (P + K1 + C) / 2. At zero cost and with K1 at the current price, that is the midpoint between where the stock is and where you bought it. Above K2 the two short calls cancel the shares and the long call, and the position stops growing: the most it can ever recover is 2 x K2 - K1 - C - P per share.
The ladder below prices that trade-off strike by strike, using each contract's closing price as of Sep 17, 2026 in the Nov 20, 2026 (64 days out) expiration, the most-traded expiry between 60 and 90 days out.
| strike | pct_above_spot | short_call_price | net_cost_1x2 | max_pnl_per_share | as_of | expiry_label |
|---|---|---|---|---|---|---|
| 40 | 10 | 1.4 | -0.45 | -31.62 | Sep 17, 2026 | Nov 20, 2026 (64 days out) |
| 42.5 | 16.9 | 0.85 | 0.65 | -27.72 | Sep 17, 2026 | Nov 20, 2026 (64 days out) |
| 45 | 23.8 | 0.5 | 1.35 | -23.42 | Sep 17, 2026 | Nov 20, 2026 (64 days out) |
| 47.5 | 30.6 | 0.31 | 1.73 | -18.8 | Sep 17, 2026 | Nov 20, 2026 (64 days out) |
The exact SQL behind every number
WITH
(
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NKE'
AND iv_converged = 1
AND volume > 0
) AS asof_date,
(
SELECT expiration_date
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NKE'
AND lower(toString(option_type)) IN ('call', 'c')
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 60 AND 90
AND date = (
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NKE'
AND iv_converged = 1
AND volume > 0
)
GROUP BY expiration_date
ORDER BY sum(volume) DESC, expiration_date
LIMIT 1
) AS expiry,
(
SELECT toFloat64(max(close))
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'NKE'
AND date >= today() - 371
AND date < today()
) AS purchase_price
SELECT
toString(k) AS strike,
round((k / spot - 1) * 100, 1) AS pct_above_spot,
round(px, 2) AS short_call_price,
round(atm_px - 2 * px, 2) AS net_cost_1x2,
round(2 * k - atm_k - (atm_px - 2 * px) - purchase_price, 2) AS max_pnl_per_share,
concat(formatDateTime(asof_date, '%b'), ' ', toString(toDayOfMonth(asof_date)), ', ', toString(toYear(asof_date))) AS as_of,
concat(formatDateTime(expiry, '%b'), ' ', toString(toDayOfMonth(expiry)), ', ', toString(toYear(expiry)),
' (', toString(dateDiff('day', asof_date, expiry)), ' days out)') AS expiry_label
FROM
(
SELECT
k,
px,
spot,
first_value(k) OVER (ORDER BY abs(k - spot), k ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS atm_k,
first_value(px) OVER (ORDER BY abs(k - spot), k ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS atm_px
FROM
(
SELECT
toFloat64(strike_price) AS k,
toFloat64(any(option_close)) AS px,
toFloat64(any(underlying_close)) AS spot
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NKE'
AND lower(toString(option_type)) IN ('call', 'c')
AND date = asof_date
AND expiration_date = expiry
AND iv_converged = 1
AND volume > 0
GROUP BY strike_price
)
)
WHERE k > atm_k
AND k <= atm_k * 1.30
ORDER BY kRead the net_cost_1x2 column first. A negative number means the two short calls bring in more than the long call costs (a credit); a positive number means the structure costs money. The lowest strike above the money, 40, nets -0.45 per share; the top of the ladder, 47.5, nets 1.73. The max_pnl_per_share column is the repaired position's profit or loss against the purchase price if the stock finishes at or above that strike. A negative value there means the repair, even at its cap, does not recover the whole loss. The higher the short strike, the more the structure can recover, and the more it costs.
Which short strike makes the 1x2 free?
The rule used here is simple: take the highest strike at which the two short calls still fully pay for the long call, a net cost at or below zero. That is the largest recovery cap the chain hands over for free.
| label | per_share | vs_spot_pct |
|---|---|---|
| Current share price | 36.36 | 0 |
| Long call strike (at the money) | 37.5 | 3.1 |
| Long call price | 2.35 | 6.5 |
| Short call strike (the recovery cap) | 40 | 10 |
| Short call price (each of the two) | 1.4 | 3.9 |
| Net cost of the 1x2 per share (negative = credit) | -0.45 | -1.2 |
| Repair breakeven | 55.81 | 53.5 |
| Original purchase price (hold-and-hope breakeven) | 74.57 | 105.1 |
| Crossover price (plain shares pull ahead above this) | 42.95 | 18.1 |
The exact SQL behind every number
WITH
(
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NKE'
AND iv_converged = 1
AND volume > 0
) AS asof_date,
(
SELECT expiration_date
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NKE'
AND lower(toString(option_type)) IN ('call', 'c')
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 60 AND 90
AND date = (
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NKE'
AND iv_converged = 1
AND volume > 0
)
GROUP BY expiration_date
ORDER BY sum(volume) DESC, expiration_date
LIMIT 1
) AS expiry,
(
SELECT toFloat64(max(close))
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'NKE'
AND date >= today() - 371
AND date < today()
) AS purchase_price
SELECT
label,
round(raw_value, 2) AS per_share,
round(raw_pct, 1) AS vs_spot_pct
FROM
(
SELECT
any(spot) AS spot_px,
any(atm_k) AS k1,
any(atm_px) AS k1_px,
max(k) AS k2,
argMax(px, k) AS k2_px
FROM
(
SELECT
k,
px,
spot,
first_value(k) OVER (ORDER BY abs(k - spot), k ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS atm_k,
first_value(px) OVER (ORDER BY abs(k - spot), k ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS atm_px
FROM
(
SELECT
toFloat64(strike_price) AS k,
toFloat64(any(option_close)) AS px,
toFloat64(any(underlying_close)) AS spot
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NKE'
AND lower(toString(option_type)) IN ('call', 'c')
AND date = asof_date
AND expiration_date = expiry
AND iv_converged = 1
AND volume > 0
GROUP BY strike_price
)
)
WHERE k > atm_k
AND k <= atm_k * 1.30
AND atm_px - 2 * px <= 0
) AS pick
ARRAY JOIN
[0, 1, 2, 3, 4, 5, 6, 7, 8] AS ord,
['Current share price',
'Long call strike (at the money)',
'Long call price',
'Short call strike (the recovery cap)',
'Short call price (each of the two)',
'Net cost of the 1x2 per share (negative = credit)',
'Repair breakeven',
'Original purchase price (hold-and-hope breakeven)',
'Crossover price (plain shares pull ahead above this)'] AS label,
[spot_px,
k1,
k1_px,
k2,
k2_px,
k1_px - 2 * k2_px,
(purchase_price + k1 + (k1_px - 2 * k2_px)) / 2,
purchase_price,
2 * k2 - k1 - (k1_px - 2 * k2_px)] AS raw_value,
[0,
(k1 / spot_px - 1) * 100,
k1_px / spot_px * 100,
(k2 / spot_px - 1) * 100,
k2_px / spot_px * 100,
(k1_px - 2 * k2_px) / spot_px * 100,
((purchase_price + k1 + (k1_px - 2 * k2_px)) / 2 / spot_px - 1) * 100,
(purchase_price / spot_px - 1) * 100,
((2 * k2 - k1 - (k1_px - 2 * k2_px)) / spot_px - 1) * 100] AS raw_pct
ORDER BY ordWith closing prices as of Sep 17, 2026, the shares sit at $36.36. The long call is the $37.5 strike at $2.35 per share, the short strike is $40, and each short call fetches $1.4. Net, the three legs price at -0.45 per share (a negative figure is a credit collected). The repair breakeven lands at $55.81, 53.5% above the current price, against a hold-and-hope breakeven of $74.57, 105.1% above it: at this chain's closing share price, the shares would need to more than double to get back to even on their own. In the vs_spot_pct column a price level reads as percent above the share price and a cost reads as percent of the share price.
Two cautions. These are daily closing prices for each contract, not live quotes, and a real fill sits somewhere inside the bid-ask spreads of three legs. And the last row deserves as much attention as the breakeven: above $42.95, plain shares would have finished ahead of the repaired position, since the repair stops gaining at the short strike while unhedged shares keep going.
Repair vs hold and hope at expiration
The payoff panel walks both positions through a range of share prices at expiration, from 20% lower to 30% higher, using the strikes and prices above.
| move | price_at_expiry | hold_pnl_per_share | repair_pnl_per_share |
|---|---|---|---|
| -20% | 29.09 | -45.48 | -45.03 |
| -15% | 30.9 | -43.67 | -43.22 |
| -10% | 32.72 | -41.85 | -41.4 |
| -5% | 34.54 | -40.03 | -39.58 |
| 0% | 36.36 | -38.21 | -37.76 |
| +5% | 38.18 | -36.39 | -35.27 |
| +10% | 39.99 | -34.58 | -31.63 |
| +15% | 41.81 | -32.76 | -31.62 |
| +20% | 43.63 | -30.94 | -31.62 |
| +25% | 45.45 | -29.12 | -31.62 |
| +30% | 47.27 | -27.3 | -31.62 |
The exact SQL behind every number
WITH
(
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NKE'
AND iv_converged = 1
AND volume > 0
) AS asof_date,
(
SELECT expiration_date
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NKE'
AND lower(toString(option_type)) IN ('call', 'c')
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 60 AND 90
AND date = (
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NKE'
AND iv_converged = 1
AND volume > 0
)
GROUP BY expiration_date
ORDER BY sum(volume) DESC, expiration_date
LIMIT 1
) AS expiry,
(
SELECT toFloat64(max(close))
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'NKE'
AND date >= today() - 371
AND date < today()
) AS purchase_price
SELECT
concat(if(m > 1, '+', ''), toString(toInt32(round((m - 1) * 100))), '%') AS move,
toString(round(spot_px * m, 2)) AS price_at_expiry,
round(spot_px * m - purchase_price, 2) AS hold_pnl_per_share,
round(spot_px * m - purchase_price
+ greatest(spot_px * m - k1, 0.0)
- 2 * greatest(spot_px * m - k2, 0.0)
- (k1_px - 2 * k2_px), 2) AS repair_pnl_per_share
FROM
(
SELECT
any(spot) AS spot_px,
any(atm_k) AS k1,
any(atm_px) AS k1_px,
max(k) AS k2,
argMax(px, k) AS k2_px
FROM
(
SELECT
k,
px,
spot,
first_value(k) OVER (ORDER BY abs(k - spot), k ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS atm_k,
first_value(px) OVER (ORDER BY abs(k - spot), k ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS atm_px
FROM
(
SELECT
toFloat64(strike_price) AS k,
toFloat64(any(option_close)) AS px,
toFloat64(any(underlying_close)) AS spot
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NKE'
AND lower(toString(option_type)) IN ('call', 'c')
AND date = asof_date
AND expiration_date = expiry
AND iv_converged = 1
AND volume > 0
GROUP BY strike_price
)
)
WHERE k > atm_k
AND k <= atm_k * 1.30
AND atm_px - 2 * px <= 0
) AS pick
ARRAY JOIN [0.80, 0.85, 0.90, 0.95, 1.00, 1.05, 1.10, 1.15, 1.20, 1.25, 1.30] AS m
ORDER BY mAt an unchanged share price the plain holding shows -38.21 dollars per share against the purchase price and the repair shows -37.76: the same loss, adjusted by the net cost. At 10% higher the repair reads -31.63 against -34.58 for shares alone; at 20% higher, -31.62 against -30.94; at 30% higher, -31.62 against -27.3. The chart shows two things. The repair line climbs twice as fast between the strikes, then goes flat. And on the left side the two lines sit on top of each other: at 20% lower the shares show -45.48 and the repair -45.03. The repair does nothing about the downside. It adds no protection if the stock keeps falling.
Why call skew decides whether the repair is cheap
The two short calls fund the structure, so the cost question is really a question about how the market prices upside calls relative to the at-the-money call. That relationship is volatility skew: implied volatility, the option's price expressed as an annualized expected move, plotted strike by strike. In most stocks implied volatility falls as strikes move above the share price, which leaves upside calls cheap and the 1x2 harder to fund. When upside calls are bid, as they often are in a stock that has already fallen hard, their implied volatility sits closer to the at-the-money level and the two shorts fund more. The panel shows the same expiration's calls from 10% below to 30% above the share price.
| strike | pct_vs_spot | iv_pct | delta |
|---|---|---|---|
| 35 | -3.7 | 45 | 0.63 |
| 37.5 | 3.1 | 45 | 0.49 |
| 40 | 10 | 43.5 | 0.35 |
| 42.5 | 16.9 | 43.9 | 0.24 |
| 45 | 23.8 | 44.3 | 0.15 |
The exact SQL behind every number
WITH
(
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NKE'
AND iv_converged = 1
AND volume > 0
) AS asof_date,
(
SELECT expiration_date
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NKE'
AND lower(toString(option_type)) IN ('call', 'c')
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 60 AND 90
AND date = (
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NKE'
AND iv_converged = 1
AND volume > 0
)
GROUP BY expiration_date
ORDER BY sum(volume) DESC, expiration_date
LIMIT 1
) AS expiry
SELECT
toString(toFloat64(strike_price)) AS strike,
round(toFloat64(strike_price) / toFloat64(any(underlying_close)) * 100 - 100, 1) AS pct_vs_spot,
round(any(implied_volatility) * 100, 1) AS iv_pct,
round(any(delta), 2) AS delta
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NKE'
AND lower(toString(option_type)) IN ('call', 'c')
AND date = asof_date
AND expiration_date = expiry
AND iv_converged = 1
AND volume > 0
AND toFloat64(strike_price) BETWEEN toFloat64(underlying_close) * 0.90 AND toFloat64(underlying_close) * 1.30
GROUP BY strike_price
ORDER BY strike_priceAs of Sep 17, 2026, implied volatility runs from 45% at the 35 strike (-3.7% versus the shares) to 44.3% at the 45 strike (23.8% above). The flatter that line across the upside strikes, the cheaper the repair: a short call priced at a volatility close to the long call's brings in more per dollar of distance. Delta, in the last column, doubles as the rough probability the market assigns to each strike finishing in the money, a useful check on how likely the cap is to bind.
What can go wrong with a stock repair?
Early assignment. The first short call is covered by the 100 shares and the second by the long call, so a broker treats the position as a covered call plus a call spread and asks for no naked-call margin. That is the good news. The catch is that equity options are American-style and can be exercised any day, and short in-the-money calls tend to be assigned the day before an ex-dividend date whenever the dividend is worth more than the call's remaining time value. Our guide on when short options get assigned early walks through that arithmetic. If both short calls are assigned, you deliver 200 shares: the 100 you own and 100 you do not have. You are now short 100 shares while still holding the long call, and a short stock position over an ex-dividend date owes the dividend on top of whatever the stock does next. NKE pays a quarterly dividend, so a 60 to 90 day expiration usually spans one ex-date; the ex-dividend dates and options guide covers how to check the date and what assignment on it does to a call position.
The cap. Above the short strike every further dollar of rally goes to the call buyer. The crossover row in the pricing panel, $42.95, marks where plain shares would have ended up ahead. The repair converts an open-ended recovery into a fixed maximum.
No downside protection. The repair is a position for a partial rebound, financed by selling the rest of the rebound. If the stock falls further, the loss matches holding the shares, adjusted only by the net cost. Anyone looking for protection is looking at a different structure, such as a collar, which spends a put on the downside rather than a call on the upside.
Three legs. Each option leg carries its own bid-ask spread and commission, and the chain's closing prices above are not fills. Brokers accept the whole structure as one spread order, and that single net price is the number to compare against the panel.
FAQ
What is a stock repair strategy?
A stock repair strategy adds a 1x2 call ratio spread to shares held at a loss: buy one call near the share price and sell two calls at a higher strike, ideally for no net cost. It lowers the price at which the position gets back to even, in exchange for capping the gain at the short strike.
Does a stock repair strategy cost anything?
Often little or nothing: the two short calls are chosen to cover the long call. Whether a zero-cost strike exists on a given day depends on the call skew, the gap between at-the-money and upside implied volatility. The panels above print the net cost strike by strike from the actual chain.
Is the second short call in a stock repair naked?
No. One short call is covered by the 100 shares and the other by the long call, so brokers treat the position as a covered call plus a bull call spread with no naked-call margin. The remaining risk is early assignment, which can leave you short stock, most often right before an ex-dividend date.
Does the stock repair strategy protect against further losses?
No. Below the long strike the repaired position loses what the shares lose, adjusted only by the small net cost of the options. It is built for a partial rebound and provides no hedge.
What happens if the stock rallies past the short strike?
The position stops gaining. Above the short strike the two short calls offset the shares and the long call, and the maximum recovery is fixed at two times the short strike, minus the long strike, minus the net cost, per share. Past the crossover price in the pricing panel, unhedged shares would have been worth more.
Every panel above carries the SQL that produced it; expand one to see how the chain was read. To price the same structure on another stock, or on a fresh chain, ask for it in plain English on the Strasmore terminal.