Box Spread Options and the Implied Loan Rate
A box spread is a synthetic zero coupon loan built from four options. See how the payoff locks to the strike width and how to solve for the implied loan rate.
A box spread is four option contracts that behave together like a zero coupon loan: a fixed amount of cash changes hands today, and a fixed amount, the distance between the two strikes, changes hands at expiration. Where the underlying finishes has no effect on that final payout. The only open question in the price of a box spread is the interest rate buried inside it.
What is a box spread?
A box uses two strike prices and one expiration date on a single underlying. Call the lower strike K1 and the higher strike K2. A long box holds four legs:
- long one call at K1
- short one call at K2
- long one put at K2
- short one put at K1
The first two legs form a bull call spread. The last two form a bear put spread. Buying both at once costs a net debit, which is cash out of the account today. Every listed US equity option covers 100 shares, so a box on strikes ten points apart settles for $1,000 per contract.
Selling those same four legs is a short box. It pays a net credit today and owes the strike width at expiration.
Why a box spread pays the strike width at expiration
Split the finish into three regions. Below K1, both calls expire worthless and the put spread is worth the full width. Above K2, both puts expire worthless and the call spread is worth the full width. Between the strikes, the long call at K1 is worth the distance up from K1 and the long put at K2 is worth the distance down from K2, and those two distances add to the width.
The panel below takes every $5 price level SPY closed at during June 2026 and values the two spreads at that level, with the strikes set five points either side of the month's average close.
The exact SQL behind every number
WITH
daily AS
(
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
toFloat64(argMax(close, window_start)) AS spy_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= '2026-06-01 00:00:00'
AND window_start < '2026-07-01 00:00:00'
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
GROUP BY d
),
strikes AS
(
SELECT
round(avg(spy_close) / 5) * 5 - 5 AS lower_strike,
round(avg(spy_close) / 5) * 5 + 5 AS upper_strike
FROM daily
),
levels AS
(
SELECT DISTINCT round(spy_close / 5) * 5 AS settle
FROM daily
)
SELECT
concat('$', toString(toUInt32(settle))) AS settle_level,
concat('$', toString(toUInt32(lower_strike)), ' / $', toString(toUInt32(upper_strike))) AS box_strikes,
round(greatest(settle - lower_strike, 0) - greatest(settle - upper_strike, 0), 2) AS call_leg_value,
round(greatest(upper_strike - settle, 0) - greatest(lower_strike - settle, 0), 2) AS put_leg_value,
round(greatest(settle - lower_strike, 0) - greatest(settle - upper_strike, 0)
+ greatest(upper_strike - settle, 0) - greatest(lower_strike - settle, 0), 2) AS box_value
FROM levels
CROSS JOIN strikes
ORDER BY settleThe call_leg_value and put_leg_value columns trade off against each other level by level. The box_value column does not move: 10 at the lowest level SPY visited and 10 at the highest, on the $740 / $750 strikes. That constant is the whole structure. The formal statement of the same identity is put call parity, which fixes the relationship between a call and a put sharing one strike. A box applies parity at two strikes and takes the difference.
How to calculate the implied loan rate on a box spread
Two numbers set the rate: the net debit paid today, and the strike width collected at expiration. Take a hypothetical ten point box with 200 days left, quoted at a net debit of $9.70. Per contract that is $970 out today against $1,000 back at expiration, a gain of $30.
Divide the gain by the amount advanced, then scale it to a year. Thirty dollars on $970 is 3.09 percent over 200 days, and 3.09 percent multiplied by 365 divided by 200 comes to roughly 5.6 percent a year. Compounding instead of scaling, which raises the ratio 1000 over 970 to the power 365 over 200, gives about 5.7 percent. Both versions answer one question: what rate does this price imply?
Is a long box lending or borrowing?
A long box is lending. Cash leaves the account today, a larger fixed amount arrives at expiration, and the difference is interest earned.
A short box is borrowing. The credit arrives today, the strike width is owed at expiration, and the identical calculation gives the rate paid rather than the rate earned. This direction is often stated backwards. Anchor it on the cash: money received today against a fixed repayment later is a loan taken, and money paid today against a fixed receipt later is a loan made.
Does a box spread have any delta?
Delta measures how much an option's price moves for a one dollar move in the underlying. The four legs of a box each carry a large delta of their own, and they cancel. The panel below reads the greeks for SPY contracts expiring December 18, 2026, as they stood on June 1, 2026. It fixes K1 at the strike nearest spot and widens K2 upward.
The exact SQL behind every number
WITH
chain AS
(
SELECT
toFloat64(strike_price) AS strike,
avg(toFloat64(underlying_close)) AS spot,
round(avgIf(delta, delta > 0), 4) AS call_delta,
round(avgIf(delta, delta < 0), 4) AS put_delta
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date = '2026-06-01'
AND expiration_date = '2026-12-18'
AND iv_converged = 1
AND volume > 0
GROUP BY strike
HAVING countIf(delta > 0) > 0
AND countIf(delta < 0) > 0
),
lower_leg AS
(
SELECT
strike AS k1,
call_delta AS c1,
put_delta AS p1
FROM chain
ORDER BY abs(strike - spot)
LIMIT 1
)
SELECT
toUInt32(strike - k1) AS strike_width,
round(c1 - call_delta, 4) AS call_leg_delta,
round(put_delta - p1, 4) AS put_leg_delta,
round(c1 - call_delta + put_delta - p1, 4) AS box_net_delta
FROM chain
CROSS JOIN lower_leg
WHERE strike > k1
AND strike <= k1 + 60
ORDER BY strikeAt the widest pairing in the panel, 50 points apart, the call leg carries a delta of 0.2208 and the put leg -0.1977. The two net to 0.0231. At the narrowest pairing the net is 0.0005. Those residuals are model noise around zero. A box holds no view on direction, which is why it prices as financing rather than as a position.
What is the real risk in a box spread?
American style options can be exercised by whoever holds them on any business day before expiration. European style options cannot. That distinction, set out in American versus European options, decides whether a box behaves like a loan or like a live margin position.
The sequence runs like this:
- Long boxes and short boxes both contain two short legs, and on a stock or an ETF those legs are American style.
- A long box keeps its short legs at the outer edges, out of the money whenever the underlying sits between the strikes. A short box does the reverse: both of its short legs are in the money across that same region.
- An in the money short option with almost no time value left is the one a holder exercises early. An upcoming dividend is a common occasion on short calls, covered in ex dividend dates and options.
- Exercise converts that leg into 100 shares per contract, long or short, while the other three legs stay where they are.
- The share position carries a margin requirement sized on the stock price, not on the width of the box. An account sized for a few hundred dollars of net credit can wake up to a requirement in the tens of thousands, and a forced liquidation follows if it cannot be met.
That sequence emptied a widely discussed retail brokerage account in 2018. The mechanism did the damage: the underlying never had to move at all.
Cash settled index options sit on the other side of the line. They are European style, which means no holder can exercise before expiration. Settlement is a cash payment against a calculated index level rather than a delivery of shares, and its timing carries a wrinkle of its own described in AM versus PM settled options.
Why commissions and the bid ask usually eat the edge
The legs of a wide box sit at strikes well away from spot. The panel below splits SPY option turnover for June 2026 into five moneyness buckets, one row for each.
The exact SQL behind every number
WITH
chain AS
(
SELECT
multiIf(
toFloat64(strike_price) / toFloat64(underlying_close) < 0.85, 1,
toFloat64(strike_price) / toFloat64(underlying_close) < 0.95, 2,
toFloat64(strike_price) / toFloat64(underlying_close) < 1.05, 3,
toFloat64(strike_price) / toFloat64(underlying_close) < 1.15, 4,
5) AS bucket_key,
multiIf(
bucket_key = 1, 'more than 15% below spot',
bucket_key = 2, '5% to 15% below spot',
bucket_key = 3, 'within 5% of spot',
bucket_key = 4, '5% to 15% above spot',
'more than 15% above spot') AS moneyness_bucket,
volume
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date >= '2026-06-01'
AND date < '2026-07-01'
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 30 AND 400
),
totals AS
(
SELECT
sum(volume) AS all_volume,
count() AS all_rows
FROM chain
)
SELECT
moneyness_bucket,
round(100 * count() / any(all_rows), 2) AS contracts_pct,
round(100 * sum(volume) / any(all_volume), 2) AS turnover_pct
FROM chain
CROSS JOIN totals
GROUP BY bucket_key, moneyness_bucket
ORDER BY bucket_keyAcross SPY expirations of a month or longer in June 2026, strikes within 5% of spot took 43% of the contracts traded while covering 34.99% of the contract days that printed at all. The bucket furthest below spot took 25.03% of turnover across 23.06% of contract days; those strikes hold the deep in the money calls a wide box is built on and, at the same prices, the far out of the money puts. Volume pooled in a bucket is not volume sitting in the one contract a box needs, and every leg is quoted with a spread around it. A box crosses four of those spreads going on, and four more if it comes off before expiration.
Execution error also scales with the term. Ten cents of slippage on a ten point box is 1% of the strike width, and 1% annualised over a short life is enormous. The panel prices that hypothetical ten cents against the monthly SPY expirations listed on June 1, 2026.
The exact SQL behind every number
SELECT
concat(formatDateTime(expiration_date, '%b %e, %Y'),
' (', toString(toUInt32(any(days_to_expiry))), 'd)') AS expiry_label,
round(100 * (0.10 / 10) * (365 / any(days_to_expiry)), 2) AS annual_cost_pct
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date = '2026-06-01'
AND iv_converged = 1
AND volume > 0
AND toDayOfWeek(expiration_date) = 5
AND toDayOfMonth(expiration_date) BETWEEN 15 AND 21
AND days_to_expiry BETWEEN 30 AND 800
GROUP BY expiration_date
ORDER BY any(days_to_expiry)
LIMIT 12On Jul 17, 2026 (46d) that ten cents costs 7.93% a year. On Jun 16, 2028 (746d) the same ten cents costs 0.49%. Financing trades run long dated for exactly this reason, which is why box legs look a lot like deep in the money LEAPS. Commissions land on top, four legs at a time, and the per contract and per leg charges are broken down in what it costs to trade options.
FAQ
Is a box spread risk free?
The payout at expiration is fixed at the strike width, and the position carries no directional exposure. Two exposures survive that: early assignment on American style contracts, and the cost of getting four legs filled and later closed.
What is the difference between a long box and a short box?
A long box is paid for with a net debit today and collects the strike width at expiration, which puts the buyer in the lender's seat. A short box collects a net credit today and pays the strike width at expiration, which puts the seller in the borrower's seat.
Can a box spread be assigned early?
Yes, when it is built from American style options on a stock or an ETF. Either short leg can be exercised by its holder on any business day, which converts that leg into a share position with its own margin requirement. A box built from European style cash settled index options cannot be assigned early.
Why do brokers restrict short box spreads?
Many brokers limit or block short boxes on American style contracts. One early assignment replaces a small options position with a large share position and the margin requirement attached to it.
How do I work out the implied rate on a box spread?
Divide the strike width by the net debit, raise the result to the power of 365 divided by the days to expiration, then subtract one. The simple version divides the gain by the debit and multiplies by 365 over the days.
Every panel here ships with the SQL that produced it. Open one, swap the ticker or the expiration, and run it yourself on the Strasmore terminal.