Options profit calculator
Compare option profit and loss at expiration.
| Stock price at expiration | Profit / loss |
|---|---|
| $70.00 | −$250.00 |
| $75.00 | −$250.00 |
| $80.00 | −$250.00 |
| $85.00 | −$250.00 |
| $90.00 | −$250.00 |
| $95.00 | −$250.00 |
| $100.00 | −$250.00 |
| $105.00Strike | −$250.00 |
| $107.50Breakeven | $0.00 |
| $110.00 | +$250.00 |
| $115.00 | +$750.00 |
| $120.00 | +$1,250.00 |
| $125.00 | +$1,750.00 |
| $130.00 | +$2,250.00 |
Calculation rules
Results show profit and loss at expiration for one or two option legs on the same underlying stock with the same expiration. Values before expiration are not calculated.
Each contract is assumed to cover 100 shares, and premiums are entered per share. Adjusted contracts can have different terms and are outside this calculation.
A call's intrinsic value is max(stock price − strike, 0); a put's is max(strike − stock price, 0). For each bought leg, profit or loss is (intrinsic value − premium) × 100 × contracts; for each sold leg, it is (premium − intrinsic value) × 100 × contracts. The result adds all legs.
Maximum profit and loss consider every nonnegative stock price at expiration, not just the graph's range. Unlimited loss means losses keep growing as the stock price rises, when sold call contracts outnumber bought call contracts. A short put's maximum loss is finite and occurs at a stock price of zero.
Breakeven means total profit or loss is zero. It can be a price, a range, every price or no price. Offsetting intrinsic values do not remove the net premium from the result. Prices that do not fall on a whole cent are rounded once to the nearest cent, with halfway values rounded up, and marked ≈; profit or loss at a rounded breakeven price may not be zero.
The table starts from 30% below to 30% above Stock price now, in 5% steps, and includes strikes, breakeven points or range boundaries, and your optional price. Table prices are rounded to cents before profit or loss is calculated, so each row uses the price shown. Duplicate prices share one row.
Fees, early assignment, dividends, taxes and margin requirements are excluded. Stock positions and legs with different expirations are not included. The prefilled values are examples, not market quotes; all prices and premiums come from your inputs.
Frequently asked questions
- Does this calculate the value before expiration?
- No. It calculates profit and loss at expiration from your entered strikes, premiums and contract counts.
- Why does breakeven sometimes show a range?
- Total profit or loss can be zero across a range of stock prices, rather than at just one price; the result shows that whole range.
- Why do offsetting legs still show a loss?
- Their intrinsic values can offset while their premiums differ; the net premium remains as profit or loss at every stock price.
- What does Unlimited mean?
- Profit or loss has no finite bound as the stock price rises under the stated assumptions; the visible graph is only part of that price range.
- Why is profit or loss not zero at an approximate breakeven?
- The exact breakeven lies between whole cents; the table calculates profit or loss at the rounded price shown.
- Can Price at expiration be zero?
- Yes. Zero is valid for that optional field, although Stock price now and each strike must be above zero.
Privacy on this page
Calculations run in your browser. The values you enter are not sent to the server or saved in browser storage. Reloading the page returns the inputs to their initial state.
To understand how the page is used and to improve the service, this page sends semku’s own usage statistics and automatic error reports. They go only to the dedicated endpoint under semku.com/api/telemetry/v1/. They are not used for advertising or third-party tracking.
The usage statistics include the stage of use (such as starting an operation or requesting a copy), the time it happened and fixed identifiers that distinguish the page and feature. They do not include the values you enter, the results shown or the text you copy. Inputs are not sent as hashes or as size categories either. The full URL and search terms are not sent.
Operations and sessions are distinguished by randomly generated identifiers. In the browser these exist only in temporary memory and are not written to cookies or browser storage. No identification based on cookies or combined device characteristics is used.
Error reports contain the error type, code and time, and, where available, a registered program-source identifier with the line and column number. The error message text and stack traces are not sent. Usage statistics and error reports also carry the site identifier, the published build and a random record identifier. For access records such as IP addresses, browser signals (User-Agent Client Hints), region and language, see the paragraph below.
The feedback form sends the rating you chose and the text you typed in the free-text field when you press the send button. A random ID that distinguishes the submission, the page, site and published build, and the type of request are also sent. There are no fields for your name, email address or phone number, and the values you enter are not attached automatically. Whatever you write in the free-text field is sent as is. Please do not enter personal data, passwords, authentication keys or payment details.
To improve the service, we record the country and state/province-level region at the time of your visit (an estimate based on the connecting network), which site you came from including the page path, and one display-language setting announced by your browser (for example, en-US). Location is kept to country and region only; no city or precise position is recorded. When you use the service, connection records, including your IP address, are automatically generated and retained to maintain service security and identify abnormal access. Cloudflare is the data processor for this site. Collection of this item is enabled only after this notice is published; we do not collect it retrospectively for use before collection is enabled. Query strings such as search terms are not recorded, and neither is the full list of preferred languages or the raw request headers. To identify bots, we may collect and use signals your browser reports about its type and version, along with an indication of whether automation tools are being used. These browser signals are estimates and do not conclusively identify your browser's type or version or whether automation tools are being used. Collection of this information is currently disabled and will only be enabled after this notice is published. We do not collect it retrospectively for use before collection is enabled. The raw User-Agent request header is not recorded. These records are per visit only and use no identifier that links one visit to another. Recording starts only with visits after this notice is published and is not applied retroactively to earlier visits. The region and the referring site have been recorded since 2026-09-20; the display language since 2026-09-24. Browser signals are not recorded yet.
Separately, when you visit the site, the hosting provider records your IP address, the time of the request and user-agent information about your browser and device in Cloudflare Pages’ standard access logs.
For details, see the privacy policy in Korean.
Calculations run in your browser without sending the financial values you enter to the server or storing them. See “Privacy on this page” for information about access data.