basic-option-strategies
October 18, 2023
By Paras Parkash
For learning more about option strategies and backtesting , Kindly visit
[Link]
[6]: import opstrat as op
import [Link] as plt
1. Bull Call Spread:
This strategy is used when you expect a moderate increase in the underlying asset’s price. By
buying a lower strike call and simultaneously selling a higher strike call, you limit your potential
profit but also reduce the initial investment.
• Buy a call option with a lower strike price.
• Sell a call option with a higher strike price.
• Example: Buy a $50 call for $3 and sell a $55 call for $1. The net premium cost is $2.
[16]: op1={'op_type': 'c', 'strike': 50, 'tr_type': 'b', 'op_pr': 3}
op2={'op_type': 'c', 'strike': 55, 'tr_type': 's', 'op_pr': 2}
op_list=[op1, op2]
op.multi_plotter(spot=50,spot_range=20, op_list=op_list)
1
2. Bear Put Spread:
This strategy is employed when you anticipate a moderate decrease in the underlying asset’s price.
Buying a higher strike put and selling a lower strike put helps mitigate the cost of the trade while
limiting potential profit.
• Buy a put option with a higher strike price.
• Sell a put option with a lower strike price.
• Example: Buy a $60 put for $4 and sell a $55 put for $2. The net premium cost is $2.
[18]: op1={'op_type': 'p', 'strike': 60, 'tr_type': 'b', 'op_pr': 4}
op2={'op_type': 'p', 'strike': 55, 'tr_type': 's', 'op_pr': 2}
op_list=[op1, op2]
op.multi_plotter(spot=60,spot_range=20, op_list=op_list)
2
3. Iron Condor:
The iron condor is implemented when you expect the underlying asset to trade within a specific
range. By selling an out-of-the-money put and an out-of-the-money call while buying a further
out-of-the-money put and call, you collect a net premium, but your potential profit is capped.
• Sell a put option with a lower strike price.
• Buy a put option with an even lower strike price.
• Sell a call option with a higher strike price.
• Buy a call option with an even higher strike price.
• Example: Sell a $50 put for $2, buy a $45 put for $1, sell a $55 call for $1, and buy a $60
call for $0.5. The net premium received is $1.5.
[30]: op1={'op_type': 'c', 'strike': 55, 'tr_type': 's', 'op_pr': 1}
op2={'op_type': 'c', 'strike': 60, 'tr_type': 'b', 'op_pr': 0.5}
op3={'op_type': 'p', 'strike': 50, 'tr_type': 's', 'op_pr': 2}
op4={'op_type': 'p', 'strike': 45, 'tr_type': 'b', 'op_pr': 1}
op_list=[op1, op2, op3, op4]
op.multi_plotter(spot=52,spot_range=20, op_list=op_list)
3
4. Butterfly Spread:
This strategy is used when you believe the underlying asset will experience minimal price movement.
By combining long and short calls at different strike prices, you create a trade that profits most
when the asset price remains close to the middle strike.
• Buy one call option with a strike price.
• Sell two call options with a higher strike price.
• Buy one call option with an even higher strike price.
• Example: Buy a $50 call for $2, sell two $55 calls for $1 each, and buy a $60 call for $0.5.
The net premium cost is $0.5.
[38]: op1={'op_type': 'c', 'strike': 55, 'tr_type': 's', 'op_pr': 1, 'contract':2}
op2={'op_type': 'c', 'strike': 60, 'tr_type': 'b', 'op_pr': 0.5}
op3={'op_type': 'c', 'strike': 50, 'tr_type': 'b', 'op_pr': 2}
op_list=[op1, op2, op3]
op.multi_plotter(spot=55,spot_range=15, op_list=op_list)
4
5. Long Straddle:
A straddle is employed when you expect significant price movement in the underlying asset but are
unsure of the direction. Buying both a call and a put at the same strike price allows you to profit
from substantial price swings.
• Buy a call and a put with the same strike price.
• Example: Buy a $50 call for $3 and buy a $50 put for $2. The net premium cost is $5.
[43]: op1={'op_type': 'c', 'strike': 50, 'tr_type': 'b', 'op_pr': 2.5}
op2={'op_type': 'p', 'strike': 50, 'tr_type': 'b', 'op_pr': 0.75}
op_list=[op1, op2]
op.multi_plotter(spot=50,spot_range=20, op_list=op_list)
5
6. Short Straddle:
[44]: op1={'op_type': 'c', 'strike': 50, 'tr_type': 's', 'op_pr': 2.5}
op2={'op_type': 'p', 'strike': 50, 'tr_type': 's', 'op_pr': 0.75}
op_list=[op1, op2]
op.multi_plotter(spot=50,spot_range=20, op_list=op_list)
6
7. Long Strangle:
Similar to the straddle, a strangle is used for significant price movement but at different strike
prices. Buying an out-of-the-money call and an out-of-the-money put enables you to profit if the
asset moves substantially, regardless of direction.
• Buy a call and a put with different strike prices.
• Example: Buy a $55 call for $2 and buy a $45 put for $1. The net premium cost is $3.
[45]: op1={'op_type': 'c', 'strike': 55, 'tr_type': 'b', 'op_pr': 2}
op2={'op_type': 'p', 'strike': 45, 'tr_type': 'b', 'op_pr': 1}
op_list=[op1, op2]
op.multi_plotter(spot=50,spot_range=20, op_list=op_list)
7
8. Short Strangle
[47]: op1={'op_type': 'c', 'strike': 55, 'tr_type': 's', 'op_pr': 2}
op2={'op_type': 'p', 'strike': 45, 'tr_type': 's', 'op_pr': 1}
op_list=[op1, op2]
op.multi_plotter(spot=50,spot_range=20, op_list=op_list)
8
9. Collar:
This strategy is employed when you want to protect an existing stock position while generating
some income. By buying a protective put and selling a covered call, you limit potential losses while
generating a premium.
• Buy a put option with a lower strike price.
• Sell a call option with a higher strike price.
• Example: Buy a $50 put for $2 and sell a $60 call for $1. The net premium cost is $1.
[77]: op1={'op_type': 'c', 'strike': 60, 'tr_type': 's', 'op_pr': 1}
op2={'op_type': 'p', 'strike': 50, 'tr_type': 'b', 'op_pr': 2}
op_list=[op1, op2]
op.multi_plotter(spot=50,spot_range=50, op_list=op_list)
9
10. Jade Lizard:
The jade lizard generates income while allowing for some upside potential. This strategy involves
selling an out-of-the-money put and call while simultaneously buying a further out-of-the-money
call, aiming to profit if the asset stays within a certain range.
• Sell a put option with a lower strike price.
• Sell a call option with a higher strike price.
• Buy a call option with an even higher strike price.
• Example: Sell a $50 put for $2, sell a $60 call for $1, and buy a $65 call for $0.5. The net
premium received is $1.5.
[68]: op1={'op_type': 'c', 'strike': 60, 'tr_type': 's', 'op_pr': 2}
op2={'op_type': 'c', 'strike': 63, 'tr_type': 'b', 'op_pr': 1}
op3={'op_type': 'p', 'strike': 50, 'tr_type': 's', 'op_pr': 3}
op_list=[op1, op2, op3]
op.multi_plotter(spot=55,spot_range=30, op_list=op_list)
10
11