Options Profit Calculator
Calculate profit and loss for call and put options at expiration. Shows breakeven, max profit, and max loss.
-$300.00
Max Loss
Unlimited
Max Profit
108.00
Breakeven Price
Out of the Money
Moneyness
| 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.
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.