Put Spread Calculator: Skew, Real Fill Prices and Assignment Risk in Excel (2026)

M
By MarketXLS
Published
put spread calculator in Excel showing short put strike, long put strike, net credit, max loss, breakeven and days to expiry powered by MarketXLS formulas

Put spread calculator results are the easiest arithmetic in options. Net credit is the short put price minus the long put price. Maximum loss is the strike width minus that credit. Breakeven is the short strike minus the credit. Every calculator on the internet returns those three numbers correctly, and none of them is where the money is won or lost. Three things decide whether a put spread was worth entering, and a standard calculator reports none of them. The same payoff can be built out of puts or out of calls at identical strikes, and one of those builds is routinely impossible to profit from. The two legs never trade at the same implied volatility, and on the put side that gap is large enough to move the credit by a quarter. And the short put leg carries an early assignment risk that a European pricing model, which is what almost every calculator runs, cannot represent at all. This guide builds the tool that handles all three, using a live SPY option chain captured on 2026-08-15 for the 2026-09-18 expiry, with the underlying at 776.34 and 34 days to run.

Everything below is educational. Every strike, expiry and ticker is an example chosen to show how the arithmetic behaves. Nothing here is a recommendation to trade any contract or to adopt any strategy.

Put spread calculator: the same payoff, built two ways

Start with the table that reframes the whole problem. Each row is one bullish, defined risk, 10 point wide position. Each can be built as a put credit spread (sell the higher put, buy the lower put) or as a call debit spread (buy the lower call, sell the higher call). Put-call parity says those two are the same position. The payoff diagrams are identical. The breakevens agree to within a few cents.

They do not cost the same to put on.

StrikesPut legs quoted widthCall legs quoted widthRisk at mid, put buildRisk at mid, call buildRisk at fill, put buildRisk at fill, call buildVerdict
720/7300.045.509.459.489.4712.23call build impossible
730/7400.045.159.209.069.2211.64call build impossible
740/7500.054.148.818.578.8410.64call build impossible
750/7600.064.398.228.838.2511.03call build impossible
760/7700.083.317.307.187.348.84both tradeable
770/7800.110.765.976.416.036.79both tradeable
780/7901.830.164.004.564.914.64both tradeable
790/8004.410.103.212.975.413.02both tradeable

Read the 720/730 row slowly. At the mid, the two builds differ by three cents: 9.45 against 9.48. Any calculator that prices from the mid will tell you they are the same trade, and at the mid they genuinely are. At the price you can actually transact, the put build risks 9.47 and the call build costs 12.23. The structure caps out at the 10 point strike width. A position that costs 12.23 to enter and can never pay more than 10.00 is not a bad trade. It is an arithmetically impossible one, and it has a guaranteed loss of at least 2.23 built into the fill.

Four of the eight call builds in that table fail that test. Zero of the put builds do.

This is the single most useful thing a put spread calculator can tell you, and it is the thing they all leave out.

Why one build is cheap and the other is not

The mechanism is not exotic. It is the order book, and it depends only on moneyness.

At the 720 and 730 strikes, with the underlying at 776.34, the puts are deep out of the money and the calls are deep in the money. Out of the money contracts on a liquid index attract market makers and quote tight. In the money contracts carry most of their value as intrinsic, trade rarely, and quote wide because nobody needs to compete for them. The 720 and 730 puts together quoted 0.04 wide. The same two call strikes quoted 5.50 wide, which is 137 times more.

Slippage follows exactly:

StrikesPut build slippageCall build slippageRatioWhich side is out of the money
720/7300.0202.750137.5xputs out of the money
730/7400.0202.575128.7xputs out of the money
740/7500.0252.07082.8xputs out of the money
750/7600.0302.19573.2xputs out of the money
760/7700.0401.65541.4xputs out of the money
770/7800.0550.3806.9xstraddling spot
780/7900.9150.0800.1xcalls out of the money
790/8002.2050.0500.0xcalls out of the money

The ratio falls monotonically from 137x to effectively zero as the strikes climb past spot, and it crosses over exactly where the moneyness crosses over. Above the underlying, the advantage reverses completely: at 790/800 the put build slips 2.205 and the call build slips 0.050.

The rule that falls out is simple and it is not a rule about puts. Build the spread from whichever side is out of the money. For a bullish position at strikes below spot, that is the put credit spread. For a bearish position at strikes above spot, that is the call credit spread. The put spread is not inherently better. It is better in the region where put spreads are normally placed, which is why the preference looks like a fact about puts.

If you have read our bull call spread calculator guide, this extends a finding from that post. There, two of nine call spreads on the same underlying failed the entry cost test, and both were built from in the money legs. Here the same test applied to the synthetic pair shows the failure was never about calls. It was about which side of the book you reached into.

Getting the inputs right before getting the outputs right

Before any of the pricing means anything, the calculator needs a forward and a set of volatilities. Both are easy to get wrong in ways that look fine.

The forward is not the spot price, and it is not the spot price grown at the headline dividend yield either. Solve it from put-call parity at the most liquid strike where both a call and a put trade. With a 34 day expiry, a 4.25% short rate and a discount factor of 0.996049, the 760 strike gave a forward of 778.0262. Backing the carry out of that gives an implied dividend yield of 1.9208%, which is a long way from the headline yield you would find on a fund page.

The free check afterwards costs nothing and catches almost every input error. At the anchor strike, the call and the put must solve to the identical implied volatility. Both solved to 14.2981%, differing by about 1e-15. If yours differ by more than rounding, your forward is wrong and every Greek downstream is wrong with it.

Now the part that most guides skip. A single option chain should imply a single forward. This one does not:

StrikeCall midPut midImplied forwardDrift versus anchor
72060.141.92778.451+0.425
74041.593.27778.477+0.451
75033.024.46778.683+0.657
76024.196.23778.0260.000
77017.018.94778.102+0.076
78010.6012.96777.626-0.401
7906.0418.96777.019-1.008
8003.0625.76777.215-0.811

The forward implied by each strike's own quotes ranges from 777.019 to 778.683, a spread of 1.664 points. There is no single forward consistent with every mid on this chain. The reason is the same one that made the synthetic table interesting: the wide in the money quotes have mids that are not real prices, so the parity relation drifts wherever one side of the pair is illiquid.

The practical consequence for a put spread calculator is direct. Solve your volatilities from the contracts you are actually going to trade. For a put vertical, that means the put mids. Do not solve a put leg's volatility from the corresponding call, and do not accept a vendor's implied volatility column, which is usually solved from the last traded price under an undisclosed forward and will not reprice the mid.

Put skew is not a rounding error

With the forward fixed and each leg solved from its own mid, the smile on the put side looks like this:

StrikeMoneynessPut midImplied volatilityVersus the strike 10 points higher
730-5.97%2.4717.913%+1.29 vol points
740-4.68%3.2716.624%+1.21 vol points
750-3.39%4.4615.411%+1.11 vol points
760-2.10%6.2314.298%+0.95 vol points
770-0.82%8.9413.348%+0.70 vol points
780+0.47%12.9612.651%-0.05 vol points

Every 10 point wide put spread on this chain spans between 0.70 and 1.29 volatility points. The two legs of your spread are not priced off the same volatility surface point, and they are not close. Note also that the skew is not constant: it steepens as you move down and flattens to nothing around 780, which is roughly where the smile bottoms out. A calculator that hard codes a single skew slope is only slightly better than one that ignores skew entirely.

For contrast, a 15 point wide call spread on a single stock chain we measured recently spanned 0.55 volatility points. Index put skew is a different animal. Downside protection on a broad index is structurally bid, and the effect is large enough to show up in the credit you receive.

One volatility for both legs is a 28% error

Here is what happens if you take the at the money volatility, 12.897%, and price both legs of a put spread with it, which is what a calculator with a single volatility input does:

SpreadMarket creditPriced at one volatilityErrorError %Per contract
740/7300.80000.7767-0.0233-2.91%$2.33
760/7501.78002.2867+0.5067+28.46%$50.67
770/7602.70003.4044+0.7044+26.09%$70.44
780/7704.02504.6661+0.6411+15.93%$64.11

The 760/750 spread is the clearest case. Its true market credit is 1.78. Priced with one at the money volatility, the model says 2.29, an overstatement of 28.46% or $50.67 per contract.

The direction is worth understanding, because it is counterintuitive. Using the lower at the money volatility reduces the modeled value of both puts, but it reduces the further out of the money leg proportionally much more. The credit is the difference between the two, so shrinking the far leg faster makes the difference larger. Your model says the spread should pay 2.29, the market pays 1.78, and if you do not know why, you will conclude the market is offering a bad fill rather than that your model is misspecified. Build a screen on that logic and it will hunt for spreads that look underpriced when the only thing that is wrong is the volatility input.

This is a much bigger effect than the equivalent error on the call side of the same underlying, where a comparable one volatility assumption produced errors around 2%. The put smile is steeper, so the penalty for flattening it is steeper too.

The bull put credit ladder

With the pricing done properly, here is the ladder of 10 point wide bull put credit spreads. Credit at fill is the short leg sold at the bid and the long leg bought at the ask. Probabilities are risk neutral, computed with the volatility interpolated at the relevant level rather than a single index vol.

Short / longCredit (mid)Credit (fill)Max lossBreakevenBuffer to breakevenP(keep full credit)P(any profit)Vol points across legs
740/7300.800.789.20739.20-4.78%83.2%83.6%+1.29
750/7401.191.168.81748.82-3.55%77.5%78.3%+1.21
760/7501.781.758.22758.22-2.33%69.7%71.3%+1.11
765/7552.202.167.80762.80-1.74%64.8%67.0%+1.04
770/7602.702.667.30767.30-1.16%59.3%62.3%+0.95
775/7653.313.266.69771.68-0.60%53.1%57.3%+0.83
780/7704.033.975.97775.98-0.05%46.6%51.9%+0.70

Two columns deserve attention because calculators usually collapse them into one number labeled "probability of profit". The chance of keeping the entire credit is the chance of finishing above the short strike. The chance of any profit at all is the chance of finishing above the breakeven, which sits below the short strike by the credit. For the 780/770 spread those are 46.6% and 51.9%, a gap of more than five points. Which one you were shown changes how the trade reads.

The return on risk column, which we compute in the workbook, runs from 8.7% on the 740/730 up to 67.4% on the 780/770. That looks like a strong argument for the higher strikes until you notice that the probability of keeping the credit falls from 83.2% to 46.6% across the same rows. Return on risk and probability move inversely and in near lockstep, because return on risk is the risk neutral probability rewritten as a ratio. Ranking spreads by return on risk is ranking them by improbability.

Note the buffer column, which is the distance from today's price down to the breakeven. Only the top two rows give more than a 3.5% cushion, and they pay under 1.20 in credit against roughly 9.00 of risk.

A credit spread does not always decay in your favor

This is the finding that surprised us most, and it is specific to skewed put chains. Here are the net Greeks for each ladder row, in the credit direction, per one contract:

Short / longNet deltaNet vega ($/vol point)Net theta ($/day)
740/730+3.90-10.157+1.402
750/740+5.52-11.839+1.388
760/750+7.71-12.384+1.083
765/755+9.00-11.753+0.775
770/760+10.34-10.149+0.320
775/765+11.62-7.382-0.264
780/770+12.66-3.398-0.973

The bottom two rows have negative theta. A credit spread, a position you were paid to open, loses money to the passage of time on this chain.

The cause is the skew. Theta magnitude peaks at the strike carrying the most extrinsic value, and on a flat volatility surface that sits near the forward, 778.03 here. The put skew lifts volatility as strikes fall, which drags the theta peak down with it. On this chain the peak sits at the 770 strike, not at 778. So for the 780/770 spread, the long leg sits exactly on the theta peak and decays faster than the short leg. The daily decay of the long 770 put was -15.793 against -14.821 on the short 780 put, and the position nets -0.973 per day.

Net vega is short throughout, as expected, but it is not monotone. It peaks in magnitude at -12.384 on the 760/750 and then falls to -3.398 at 780/770. There is no single Greek that characterizes a put spread across the ladder, and there is no substitute for computing them per leg.

Early assignment: the risk only the put version carries

The synthetic pair section established that a put credit spread and a call debit spread have the same payoff. There is one asymmetry, and it is the reason the equivalence is not perfect. American puts can be exercised early for reasons that have nothing to do with dividends, and it is your short leg that gets assigned.

Early exercise of a put becomes rational when two conditions hold together. The contract must be in the money, and its remaining extrinsic value must be less than the interest the holder earns by receiving the strike proceeds now rather than at expiry. That interest is the carry, and it equals the strike multiplied by one minus the discount factor.

Strike% in the moneyPut midIntrinsicExtrinsicCarryCushionEarly exercise premium
7800.47%12.963.669.303.08+6.22+0.152 (1.17%)
7851.12%15.548.666.893.10+3.78+0.199 (1.28%)
7901.76%18.9613.665.313.12+2.18+0.256 (1.35%)
7952.40%21.9818.663.323.14+0.18+0.336 (1.53%)
7972.66%23.4520.662.793.15-0.36+0.370 (1.58%)
8003.05%25.7623.662.103.16-1.06+0.429 (1.66%)
8053.69%29.8628.661.203.18-1.99+0.526 (1.76%)

The cushion turns negative at the 797 strike, about 2.66% in the money. Past that point the holder of the put gives up less time value than they gain in interest, and assignment stops being a surprise and becomes the rational choice.

The last column is what a European model silently omits. Valuing these puts on a binomial tree with early exercise allowed, against the same tree without it, the difference runs from 0.152 to 0.563, or 1.17% to 1.78% of the option's value. That is the part of the price your calculator cannot see.

The genuinely useful version of this is forward looking. Assignment is not an entry risk on a bull put spread, because you open with the short leg out of the money. It becomes a risk only after the trade moves against you. So the question is where:

Short strikeBoundary spotMove from todayDepth in the money there
750722.89-6.9%3.8%
760735.71-5.2%3.3%
770748.09-3.6%2.9%
780759.78-2.1%2.7%

If you sold the 770 put, the assignment boundary sits near 748 on the underlying, a 3.6% decline from today. That is a concrete alert level you can put in a cell and watch, rather than a vague warning about assignment risk.

One thing this does not change: if the short leg is assigned, the long leg still caps the loss at the strike width. The exposure is financing and timing, not unbounded risk. But you will be short stock or long an unexpected position over a weekend, and the calculator that told you max loss was 7.30 said nothing about that.

Building the put spread calculator in Excel with MarketXLS

Every formula below is verified against the current MarketXLS function set.

Start by building the contract symbol for each leg, because every contract level function needs it:

=OptionSymbol("SPY","2026-09-18","Put",770)
=OptionSymbol("SPY","2026-09-18","Put",760)

Pull both sides of the market for each leg. You need bid and ask separately, not just a mid, because the natural fill test is the entire point:

=Bid(OptionSymbol("SPY","2026-09-18","Put",770))
=Ask(OptionSymbol("SPY","2026-09-18","Put",770))
=QM_OpenInterest(OptionSymbol("SPY","2026-09-18","Put",770))
=OPT_DaysToExpiration(OptionSymbol("SPY","2026-09-18","Put",770))

Solve each leg's implied volatility from that leg's own mid price. Note the argument order, and note that the dividend yield sits between the rate and sigma:

=opt_ImpliedVolatility(QM_Last("SPY"),8.935,"2026-09-18","Put",770,0.0425,0.0192)

The Greeks take the same positional arguments, so the whole set drops in beside it:

=opt_Delta(QM_Last("SPY"),8.935,"2026-09-18","Put",770,0.0425,0.0192)
=opt_Gamma(QM_Last("SPY"),8.935,"2026-09-18","Put",770,0.0425,0.0192)
=opt_Theta(QM_Last("SPY"),8.935,"2026-09-18","Put",770,0.0425,0.0192)
=opt_Vega(QM_Last("SPY"),8.935,"2026-09-18","Put",770,0.0425,0.0192)

For the assignment monitor you need intrinsic and extrinsic value separately, which is exactly what these two return:

=OPT_IntrinsicValue(OptionSymbol("SPY","2026-09-18","Put",770),QM_Last("SPY"))
=OPT_TimeValue(OptionSymbol("SPY","2026-09-18","Put",770),8.935,QM_Last("SPY"))

The viability screen is then one cell. If the entry cost at the natural fill is not below the strike width, the structure cannot profit at any price:

=IF(C23<$B$5-$B$6,"PASS","FAIL - cannot profit at any price")

And the assignment alert compares extrinsic against carry, firing only when the leg is actually in the money:

=IF(AND($B$5>QM_Last($C$3),E30<$B$5*(1-EXP(-$B$10*F30/365))),"ASSIGNMENT RISK","OK")

For chain context and surrounding structure:

=Strikes("SPY","2026-09-18")
=ExpirationNext("SPY")
=ImpliedVolatility30d("SPY")
=ImpliedVolatilityRank1y("SPY")
=opt_PutCallOIRatio("SPY")
=DividendYield("SPY")

If you want the pricing engine itself rather than the add-in Greeks, our Black-Scholes in Excel walkthrough covers the solver construction, and the options calculator dashboard post covers the payoff and probability layer.

What is in the workbook

Both files carry six sheets.

How To Use explains each sheet and states which workbook you have open, static or live.

Main Dashboard takes your two strikes, contract count, account size and risk limit in yellow input cells. It prices the spread at the mid and at the natural fill side by side, shows the difference, and runs a four point viability screen covering entry cost against width, quote width on both legs, whether the short leg is already in the money, and whether position risk fits your stated limit. Below that sits the full candidate ladder.

Scenario Analysis shows profit and loss at expiry across ten underlying levels, for both the credit and the debit direction of the same two strikes, colour coded. It also carries the one volatility error table. Two free audits are built in: the two directions must sum to the strike width at every price, and both must share one breakeven.

Construction Compare is the synthetic pair table, with the slippage detail underneath and impossible builds highlighted in red.

Skew and Sizing lists every strike with its own solved volatility, the volatility gap to the strike 10 points higher, and the quoted width. Below it sits the parity consistency check that exposes the drifting forward, and then position sizing driven from your account size and risk limit.

Assignment Monitor carries the extrinsic against carry table with a colour coded cushion, the early exercise premium per strike, and the boundary spot level for each candidate short strike.

The sample workbook holds static values captured on 2026-08-15 with a reference column quoting the MarketXLS formula behind each figure, so you can see what powers it. The template workbook replaces every data cell with a live formula. Every sheet in both files ends with a "MarketXLS Functions Used" box.

Download the templates:

  • - Pre-filled with the 2026-08-15 chain
  • - Live-updating formulas

Frequently asked questions

What is the difference between a bull put spread and a bear put spread?

They are the same two strikes traded in opposite directions. A bull put spread sells the higher strike put and buys the lower one, collecting a credit, and profits if the underlying stays up. A bear put spread buys the higher strike put and sells the lower one, paying a debit, and profits if the underlying falls. On the 770/760 pair the credit direction collects 2.70 and the debit direction pays 2.70. They share one breakeven at 767.30, and their maximum profits sum to the 10 point strike width. If your calculator violates either of those identities, it has a bug.

How do I calculate the breakeven on a put spread?

For the credit direction, breakeven is the short strike minus the net credit. For the debit direction, it is the long strike minus the net debit. Both give 767.30 on the 770/760 example. The subtlety worth knowing is that this is the breakeven at expiry only. Before expiry the position still holds time value, so the price that returns you to entry cost is different and moves every day.

Why does my put spread calculator show a different credit than my broker?

Almost always one of two reasons. Either the calculator is pricing from the mid while your broker is quoting the natural fill, which on out of the money put verticals costs about 1.5% to 4% of the credit, or the calculator is using a single volatility for both legs. The second is the larger error: on the 760/750 spread it overstated the credit by 28.46%.

Is a put credit spread better than a call debit spread?

They are the same position in payoff terms, so the honest answer is that neither is better as a structure. What differs is the cost of entry, and that is decided by which side is out of the money at your chosen strikes. Below spot, the put build was tighter by a factor of 41 to 137 in our measurements. Above spot, the call build wins by a similar margin.

Can I be assigned early on a put spread?

Yes, on the short leg, and this is the one real asymmetry against the call built equivalent. It requires the short put to be in the money with extrinsic value below the carry on the strike, which on this chain happened around 2.66% in the money. Your loss stays capped at the strike width because the long leg is still there, but you will be carrying an unexpected stock position until you unwind it.

Does a put credit spread always benefit from time decay?

No. On a chain with meaningful put skew the theta peak sits below the forward, so a spread whose long leg sits near that peak can carry negative theta. Two of the seven ladder rows here did, at -0.264 and -0.973 dollars per day. Compute theta per leg rather than assuming the credit direction decays in your favour.

The bottom line

A put spread calculator that returns credit, maximum loss and breakeven is returning arithmetic you could do on paper. The questions that actually decide the outcome sit one level below that, and all three are measurable on a live chain.

Price both legs at their own implied volatility, because on this chain the two legs of a 10 point put spread sat 0.70 to 1.29 volatility points apart, and collapsing that to one number moved the credit by up to 28%. Reprice at the natural fill before you commit, because half the call built versions of these spreads cost more to enter than they could ever pay. And keep an eye on extrinsic value against carry on the short leg, because that is the one risk the synthetic call equivalent does not carry and no European model will show you.

The workbooks above do all of that from live data. Explore the full function set at MarketXLS, see the pricing options, or book a demo if you would like a walkthrough of the options tooling.

Related reading: the call spread calculator guide covers the call side of the same structure, the credit spread calculator covers bull put and bear call spreads together, and the cash secured put calculator covers assignment mechanics on a single short put.

Disclaimer: This article is for educational purposes only. It is not investment advice and it is not a recommendation to buy or sell any security or to adopt any strategy. Options carry substantial risk. All prices and figures were captured on 2026-08-15 and will have changed.

Related posts

Important Disclaimer

The information provided in this article is for educational and informational purposes only and should not be construed as investment advice, a recommendation, or an offer to buy or sell any securities. MarketXLS is a financial data platform and is not a registered investment advisor, broker-dealer, or financial planner. Always conduct your own research and consult with a qualified financial professional before making any investment decisions. Past performance is not indicative of future results. Trading and investing involve substantial risk of loss.

#1 Excel Solution for Investors

Get Market data in Excel easy to use formulas

  • Real-time Live Streaming Option Prices & Greeks in your Excel
  • Historical (intraday) Options data in your Excel
  • All US Stocks and Index options are included
  • Real-time Option Order Flow
  • Real-time prices and data on underlying stocks and indices
  • Works on Windows, MAC or even online
  • Implement MarketXLS formulas in your Excel sheets and make them come alive
  • Save hours of time, streamline your option trading workflows
  • Easy to use with formulas and pre-made templates
Call: 1-877-778-8358
Ankur Mohan MarketXLS
Welcome! I'm Ankur, the founder and CEO of MarketXLS. With more than ten years of experience, I have assisted over 2,500 customers in developing personalized investment research strategies and monitoring systems using Excel.

I invite you to book a demo with me or my team to save time, enhance your investment research, and streamline your workflows.
Implement "your own" investment strategies in Excel with thousands of MarketXLS functions and templates.
I use MarketXLS to manage my personal portfolio. I can easily pull in stock quotes, betas, and dividends. I also like to access historical closing prices on a particular date. That makes tracking performance easy.

Patrick Cusatis, Ph.D., CFA

Associate Professor of Finance, Penn State University

I have used lots of stock and option information services. This is the only one which gives me what I need inside Excel.

Lloyd L.

Professional Trader

I can now concentrate on manipulating financial data, valuing stocks and making investment decisions, rather than hacking around with VBA or copying and pasting data from websites.

Samir Khan

InvestExcel.net

I have been using MarketXLS for the last 6+ years and they really enhanced the product every year.

Kirubakaran K.

Investment Professional

I Love My MarketXLS. The market speaks to you when you know how to listen. With MarketXLS, the market truly does speak. Patterns emerge. Pricing behavior becomes clearer.

Don Zelezny

Entrepreneur & Options Trader

Meet The Ultimate Excel Solution for Investors

Live Streaming Prices in your Excel
All historical (intraday) data in your Excel
Real time option greeks and analytics in your Excel
Leading data service for Investment Managers, RIAs, Asset Managers
Easy to use with formulas and pre-made sheets