Option Basics - Calls, Puts, and Payoffs › Combining Options: Basic Strategies
Quantitative FinanceAll chapters Option Basics - Calls, Puts, and Payoffs › Combining Options: Basic StrategiesOne section · Sections in this chapter9 / 15 ↓
Reading tools Definitions & inline links
Choose your expertise level to adjust how many terms are explained. Beginners see more tooltips, experts see fewer to maintain reading flow. Hover over underlined terms for instant definitions.
Article links
Make inline references clickable
Individual options can be combined to create strategies with specific risk-reward profiles. These combinations isolate different sources of return, including volatility and time decay, while limiting gains or losses to chosen price ranges. Rather than simply betting that a stock will go up or down, option strategies allow you to profit from volatility, benefit from time decay, or define precise profit zones.
Straddle
A straddle involves buying both a call and a put at the same strike price and expiration. It profits from large moves in either direction. In a straddle, you are essentially betting that the stock will move significantly but are uncertain about the direction. This makes straddles popular around earnings announcements, FDA decisions, or other binary events where large moves are expected.
import numpy as np
K = 100
C = 5
P = 4
total_cost = C + P
S_range = np.linspace(70, 130, 200)
call_payoff = np.maximum(S_range - K, 0)
put_payoff = np.maximum(K - S_range, 0)
straddle_profit = call_payoff + put_payoff - total_cost
The straddle's V-shape shows its volatility bet. You pay a combined premium of and need the stock to move beyond the breakeven points () to profit. Maximum loss occurs if the stock finishes exactly at the strike, where both options expire worthless. The V-shape illustrates that the straddle buyer doesn't care which direction the stock moves, only that it moves enough to cover the combined premiums paid.
Bull Call Spread
A bull call spread involves buying a call at a lower strike (paying premium ) and selling a call at a higher strike (receiving premium ). It's a directional bet with limited risk and limited reward. By selling the higher-strike call, you reduce the cost of the position but also cap the potential upside.
import numpy as np
K1 = 95 # Lower strike (buy)
K2 = 105 # Higher strike (sell)
C1 = 8 # Premium paid for K1 call
C2 = 3 # Premium received for K2 call
net_cost = C1 - C2
S_range = np.linspace(80, 120, 200)
long_call = np.maximum(S_range - K1, 0) - C1
short_call = C2 - np.maximum(S_range - K2, 0)
spread_profit = long_call + short_call
The spread's characteristics are:
- Maximum loss: Net premium paid (), occurring if
- Maximum profit: , occurring if
- Breakeven:
Spreads reduce cost (and risk) compared to outright calls but also cap potential gains. They're appropriate when you expect a moderate move rather than a dramatic one.



