Options Profit Calculator
Calculate profit and loss for call and put options at expiration. Shows breakeven, max profit, and max loss.
| Stock Price | P&L |
|---|---|
| $70.00 | -$300.00 |
| $76.65 | -$300.00 |
| $83.30 | -$300.00 |
| $89.95 | -$300.00 |
| $96.60 | -$300.00 |
| $103.25 | -$300.00 |
| $109.90 | +$190.00 |
| $116.55 | +$855.00 |
| $123.20 | +$1,520.00 |
| $129.85 | +$2,185.00 |
| $136.50 | +$2,850.00 |
For educational purposes only. Not financial advice.
About this tool
The Options Profit Calculator helps traders and investors quickly determine the financial outcome of options positions at expiration. Whether you're analyzing a simple call or put strategy or evaluating a more complex multi-leg position, this tool calculates profit and loss across the full range of underlying asset prices, showing you exactly where your breakeven point lies and what your maximum gain or loss could be.
To use the calculator, enter the option strike price, the premium you paid or received, and the current price of the underlying asset at expiration. The tool instantly displays your profit or loss at that price point, along with critical thresholds like breakeven, maximum profit (for short positions), and maximum loss (for long positions). This makes it easy to understand the risk-reward profile of any options trade before or after execution.
Frequently Asked Questions
Code Implementation
from dataclasses import dataclass
@dataclass
class OptionResult:
breakeven: float
max_loss: float
max_profit: float | None # None = unlimited (call)
def call_option(stock_price, strike, premium, contracts=1):
total_cost = premium * contracts * 100
breakeven = strike + premium
return OptionResult(
breakeven=breakeven,
max_loss=-total_cost,
max_profit=None, # unlimited for calls
)
def put_option(stock_price, strike, premium, contracts=1):
total_cost = premium * contracts * 100
breakeven = strike - premium
max_profit = (strike - premium) * contracts * 100
return OptionResult(
breakeven=breakeven,
max_loss=-total_cost,
max_profit=max_profit,
)
def pnl_at_expiration(option_type, strike, premium, price_at_exp, contracts=1):
"""Calculate P&L if held to expiration."""
if option_type == "call":
intrinsic = max(0, price_at_exp - strike)
else:
intrinsic = max(0, strike - price_at_exp)
return (intrinsic - premium) * contracts * 100
# Example: Buy 1 call contract
result = call_option(100, 105, 3)
print(f"Breakeven: ${result.breakeven}") # $108.0
print(f"Max loss: ${result.max_loss}") # $-300
for price in [95, 100, 105, 108, 115, 120]:
pnl = pnl_at_expiration("call", 105, 3, price)
print(f" At ${price}: P&L = ${pnl:+.2f}")Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.