Home › Templates › Options profit spreadsheet

Options Profit Calculator Spreadsheet

A free options payoff spreadsheet for Excel and Google Sheets. Build a position of up to four legs (calls, puts or stock), and it shows the net debit or credit, the profit or loss at expiration across a range of prices, the maximum profit and loss (marked Unlimited where they are), every break-even price and a payoff chart, plus an optional Black-Scholes value today.

Download Excel template (.xlsx) 171 KB · no macros · Excel 2016+ and Google Sheets · v1.0, 4 Nov 2026

Use it in Google Sheets: choose File → Import → Upload in Sheets and pick the .xlsx, or upload it to Google Drive and open it with Google Sheets. No sign-up, no add-in, no live data: you type the strikes and premiums from your broker's option chain.

Preview: the Example tab with the iron condor preset. Stock XYZ, its $100 price and every premium and fee are fictional.
$115.00net credit received
$109.80max profit at expiration, after $5.20 fees
−$390.20max loss at expiration, after fees
$88.902, $111.098break-even prices
LegActionTypeStrikePremium / shareQtySigned unitsModel value today
1BuyPut$85.00$0.2511000.2305
2SellPut$90.00$0.751−1000.7581
3SellCall$110.00$1.201−1001.1936
4BuyCall$115.00$0.5511000.5347
−$400−$350−$300−$250−$200−$150−$100−$50$0$50$100$50$60$70$80$90$100$110$120$130$140$150price now $100.00BE $88.90BE $111.10Price of XYZ at expiration

P/L at expirationP/L today, Black-Scholes model (30% vol, 4% rate, 45 days)

Want a quick answer in the browser instead? The options profit calculator covers six common one- and two-leg strategies with no download. This spreadsheet is for custom positions of up to four legs, strategies such as iron condors and straddles, a model value before expiration, and a file you can save and edit. To log trades you have already placed, use the options trading journal or the options trading tracker.

What's inside the spreadsheet

TabWhat you typeWhat it calculates
Start hereNothingSteps, the five presets with their numbers, the formulas, the model's assumptions, limits, disclaimer
BuilderPrice now; grid Auto or Custom (lowest price, step); opening and closing fees; up to 4 legs: Buy/Sell, Call/Put/Stock, strike, premium per share, quantity, multiplier (blank = 100), implied vol (optional); for the model: default vol, rate, days to expirationA status check per leg and overall; net debit or credit; max profit and max loss at expiration or "Unlimited"; up to 5 break-evens; P/L if the price is unchanged; Black-Scholes d1, d2, value and P/L today per leg; a 205-row payoff grid (each leg, total at expiration, total today); a native line chart of both
ExamplePick one of 5 presets in B3The same Builder sheet, filled from the Presets tab with fictional numbers
PresetsNothing (copy a block into Builder to start from it)The legs of each preset and the textbook max gain, max loss and break-even formulas from OIC and Cboe, before fees
SummaryNothingYour Builder results next to the Example, and the P/L at expiration if the price moves −30% to +30%

How to use it

  1. Open Builder and type the underlying price now in B5. Leave Price grid on Auto (about half to one and a half times the price, widened to cover every strike), or pick Custom and set the lowest price and the step.
  2. Add one row per leg: Buy or Sell, Call, Put or Stock, the strike, the premium per share and the number of contracts. For a stock leg, put the price per share in the premium column and the number of shares as the quantity.
  3. Leave Multiplier blank for standard contracts (100 shares) and stock (1). Column I must say OK or Not used.
  4. Type your total opening and closing fees in B9 and B10. If you plan to let options expire, the closing fee may be zero; exercise and assignment fees vary by broker.
  5. Read the results from B20 down and the chart. Break-evens are listed from low to high. The grid underneath shows each leg's P/L at each price.
  6. Optional: enter a default implied volatility, the risk-free rate and the days to expiration in E5:E7 to get a model value per leg and a dashed "today" line. A leg with its own implied vol in column H uses that instead.

The five presets, with fictional numbers

All five use made-up stock XYZ at $100, 45 days to expiration, 30% implied volatility and a 4% rate. The premiums are the Black-Scholes values at those inputs rounded to $0.05, and the fees are a fictional $0.65 per contract each way. The sheet's figures include fees; the last column shows the textbook formulas from the Options Industry Council and Cboe, before fees, computed on the Presets tab.

Preset and legs (fictional)Payoff shapeNet premiumFeesMax profitMax lossBreak-even(s)Textbook, before fees: max gain / max loss / break-even
Long call
Buy 1 × 105 call at $2.40
$240.00 debit$1.30Unlimited−$241.30$107.413Unlimited / −$240.00 / $107.40
Bull call spread
Buy 1 × 100 call at $4.45; Sell 1 × 110 call at $1.20
$325.00 debit$2.60$672.40−$327.60$103.276$675.00 / −$325.00 / $103.25
Iron condor
Buy 1 × 85 put at $0.25; Sell 1 × 90 put at $0.75; Sell 1 × 110 call at $1.20; Buy 1 × 115 call at $0.55
$115.00 credit$5.20$109.80−$390.20$88.902, $111.098$115.00 / −$385.00 / $88.85, $111.15
Protective put
Buy 100 shares at $100.00; Buy 1 × 95 put at $1.90
$10,190.00 debit$1.30Unlimited−$691.30$101.913Unlimited / −$690.00 / $101.90
Long straddle
Buy 1 × 100 call at $4.45; Buy 1 × 100 put at $3.95
$840.00 debit$2.60Unlimited−$842.60$91.574, $108.426Unlimited / −$840.00 / $91.60, $108.40

What each one is

The formulas, explained

Payoff at expiration

At expiration an option is worth only what it would pay if exercised: a call MAX(price − strike, 0) per share, a put MAX(strike − price, 0). Each leg's P/L is its signed units × (value at expiration − premium), where signed units = +1 for Buy or −1 for Sell × quantity × multiplier. The total subtracts opening and closing fees. Exact formulas from the Builder tab:

FieldFormula
Signed units, leg 1 (J14)=IF(I14="OK",IF(B14="Buy",1,-1)*F14*IF(G14="",IF(C14="Stock",1,100),G14),0)
Grid point, regular (M42)=IF($B$20<>"OK","",$B$34+0*$B$36)
Grid point, a strike (M243)=IF(AND($B$20="OK",$I$14="OK",$C$14<>"Stock"),$K$14,"")
Price at expiration, sorted (A43)=IF($B$20<>"OK","",SMALL($M$42:$M$246,MIN(2,COUNT($M$42:$M$246))))
Leg 1 P/L at that price (B43)=IF($A43="","",IF($I$14<>"OK",0,$J$14*(IF($C$14="Call",MAX($A43-$K$14,0),IF($C$14="Put",MAX($K$14-$A43,0),$A43))-$L$14)))
Total P/L at expiration (F43)=IF($A43="","",SUM(B43:E43)-(N($B$9)+N($B$10)))
Break-even in the step (L43)=IF(OR($A43="",$A43=$A42),"",IF(OR(AND(N42<0,N43>=0),AND(N42>0,N43<=0)),IF(N43=0,$A43,$A42-N42*($A43-$A42)/(N43-N42)),""))
Net premium (B21)=IF($B$20<>"OK","",-SUM($M$14:$M$17))
Max profit (B24)=IF($B$20<>"OK","",IF(SUM($N$14:$N$17)>0.000000001,"Unlimited",MAX(MAX($F$42:$F$246),$B$38)))
Max loss (B25)=IF($B$20<>"OK","",IF(SUM($N$14:$N$17)<-0.000000001,"Unlimited",MIN(MIN($F$42:$F$246),$B$38)))
Break-even 1 (B27)=IF($B$20<>"OK","",IFERROR(SMALL($L$42:$L$249,1),""))
Break-even above the grid (L249)=IF($B$20<>"OK","",IF(N246*$B$37<0,$A$246-N246/$B$37,""))
d1 at the price now (Q14)=IF(OR(I14<>"OK",C14="Stock",$E$9<>"OK",N($E$8)=0),"",(LN($B$5/K14)+($E$6+P14^2/2)*$E$8)/(P14*SQRT($E$8)))

Why the break-evens are exact. The payoff only bends at strikes. The grid holds 201 evenly spaced prices plus every strike, sorted with SMALL, so between two neighbouring grid prices the P/L is a straight line. Where it changes sign, linear interpolation (price₁ − P/L₁ × (price₂ − price₁) / (P/L₂ − P/L₁)) gives the exact crossing. Two extra cells catch a break-even below the grid (between $0 and the lowest price) or above it (using the slope beyond the highest strike).

Unlimited, or not. Above the highest strike the P/L changes by the number of long calls and shares minus short calls and shares (each × multiplier) for every $1. If that slope is positive, max profit is "Unlimited"; if negative, max loss is "Unlimited" (a short call with nothing covering it, short stock, or a 1×2 ratio spread). Otherwise the extremes are the grid's maximum and minimum or the P/L at a price of $0, whichever is further out.

Black-Scholes value today (optional)

For each option leg: d1 = (LN(S/K) + (r + σ²/2)·T) / (σ·√T), d2 = d1 − σ·√T, call = S·N(d1) − K·e−rT·N(d2), put = K·e−rT·N(−d2) − S·N(−d1), with N = NORM.S.DIST(x, TRUE) and T = days ÷ 365. The full cell for leg 1's value today:

=IF(OR(I14<>"OK",$E$9<>"OK"),"",IF(C14="Stock",$B$5,IF($B$5<=0,IF(C14="Call",0,K14*EXP(-$E$6*$E$8)),IF($E$8=0,IF(C14="Call",MAX($B$5-K14,0),MAX(K14-$B$5,0)),IF(C14="Call",$B$5*NORM.S.DIST(((LN($B$5/K14)+($E$6+P14^2/2)*$E$8)/(P14*SQRT($E$8))),TRUE())-K14*EXP(-$E$6*$E$8)*NORM.S.DIST(((LN($B$5/K14)+($E$6+P14^2/2)*$E$8)/(P14*SQRT($E$8)))-P14*SQRT($E$8),TRUE()),K14*EXP(-$E$6*$E$8)*NORM.S.DIST(P14*SQRT($E$8)-((LN($B$5/K14)+($E$6+P14^2/2)*$E$8)/(P14*SQRT($E$8))),TRUE())-$B$5*NORM.S.DIST(-((LN($B$5/K14)+($E$6+P14^2/2)*$E$8)/(P14*SQRT($E$8))),TRUE()))))))

Checked against Hull. John C. Hull's Options, Futures, and Other Derivatives works a Black-Scholes-Merton example with S₀ = 42, K = 40, r = 10%, σ = 20% and six months to expiry: d1 = 0.7693, d2 = 0.6278, call 4.76, put 0.81. With 182.5 days the Builder gives d1 0.7693, d2 0.6278, call 4.7594 and put 0.8086. A separate Python model (math.erf) and scipy.stats.norm give the same values to 9 decimal places, and the call minus the put equals 42 − 40·e−0.05, as put-call parity requires.

A model, not a price. Black-Scholes assumes European exercise, no dividends, and one constant volatility. Most US stock options are American-style and can be exercised early, and real premiums move with supply, demand and each strike's own implied volatility. Use the dashed line to see the shape of time decay, and your broker's bid and ask for actual prices.

Worked example: the iron condor

On the Example tab the iron condor buys the 85 put at $0.25, sells the 90 put at $0.75, sells the 110 call at $1.20 and buys the 115 call at $0.55, one contract each. The net credit is 0.75 + 1.20 − 0.25 − 0.55 = $1.15 a share, $115.00 in total. Fees are $5.20 ($2.60 to open, $2.60 to close).

Switch B3 to another preset and the whole tab, including the chart, recalculates. The long call shows max profit Unlimited and a break-even of $107.413 after fees; the protective put shows a max loss of −$691.30; the straddle shows two break-evens, $91.574, $108.426.

Common mistakes

Limits

Options carry real risks. OCC: "Prior to buying or selling an option, investors must read a copy of the Characteristics and Risks of Standardized Options", the options disclosure document (OCC, Options Disclosure Document). The SEC's investor bulletin adds that "Option holders risk the entire amount of the premium paid to purchase the option" and that some contracts "can expose writers to unlimited potential losses" (Investor.gov, An Introduction to Options). The Cboe Options Institute has free courses on how calls and puts work.

FAQ

How do you calculate options profit in Excel?

Work out each leg's value at expiration, subtract the premium, and scale it. A call is worth MAX(price − strike, 0) per share and a put MAX(strike − price, 0). Multiply by +1 for a bought leg or −1 for a sold leg, by the number of contracts and by the multiplier (usually 100), then add the legs and subtract fees. This spreadsheet does that for up to four legs at about 200 prices and draws the result as a line chart.

How do you find the break-even of an options strategy?

A break-even is a price at expiration where the total P/L is zero. For one long call it is the strike plus the premium; the Investor.gov bulletin's example call needs the stock "to rise to $72.20" to break even. For multi-leg positions there can be two or more. The sheet finds every point where the P/L changes sign and interpolates between the two prices around it. Because every strike is a grid price, the payoff is a straight line in between, so the answer is exact.

What is the maximum loss on an iron condor?

The difference between the strikes of the calls or the puts, minus the net premium received, times the multiplier. That is the OIC and Cboe formula. In the example, 5.00 − 1.15 = 3.85 a share, or $385 for one contract before fees. The maximum gain is the credit, $115, kept if the price ends between the short strikes.

Why does one options contract cost 100 times the quoted price?

Because a standard equity option covers 100 shares. Investor.gov: "An option contract generally represents 100 shares of the underlying stock." A premium quoted at $2.40 costs $240 per contract. The multiplier column defaults to 100; change it for adjusted or mini contracts, and use 1 for a stock leg, where the quantity is the number of shares.

Can the spreadsheet show the value before expiration?

Yes, as an estimate. Enter an implied volatility, the risk-free rate and the days left, and each leg gets a Black-Scholes value today, with a dashed "today" line on the chart. The model assumes European-style options and no dividends, while US stock options are usually American-style, so treat it as a rough guide, not a quote. The formula reproduces Hull's textbook example: a call worth 4.76 and a put worth 0.81.

Does this options payoff spreadsheet work in Google Sheets?

Yes. In Google Sheets choose File → Import → Upload and pick the .xlsx, or upload it to Google Drive and open it with Google Sheets. The file uses only ABS, AND, COUNT, COUNTIF, EXP, IF, IFERROR, INDEX, ISNUMBER, LN, MATCH, MAX, MIN, NORM.S.DIST, NOT, OR, ROUND, SMALL, SQRT, SUM, SUMPRODUCT, which exist in Excel 2016+, Google Sheets and LibreOffice. No macros, no add-in, no market data connection.

Related tools and templates

Educational template only, not investment, tax or legal advice. Example data is fictional: stock XYZ, its price, the premiums, volatility and fees are made up to show the formulas and are not a recommendation. Strategy formulas are quoted from The Options Industry Council (optionseducation.org) and Cboe; risk statements from the OCC and the SEC's Investor.gov; all retrieved on 4 November 2026. The Black-Scholes check uses the worked example in John C. Hull's Options, Futures, and Other Derivatives.