Long Strangle Option Strategy In Python

5 min read

Option Long Strangle Strategy In Python

By Nitin Thapar

Introduction

Traders dealing in options enjoy the leverage of choosing the size of investment that they make and reducing the risk of losing a lot in the trading process. Options are believed to be cost-efficient and less risky in comparison to a lot of other instruments in the market. What I like the most about Options trading is that there are numerous strategies that one can practice and follow. However, a lot of traders fail to understand the range of strategies that are available at their disposal that best suits their trading style.

To name a few

Option trading strategies

Today, we are going to talk about the Long Strangle trading strategy.

What is ‘Long Strangle’ in Options trading?

Long Strangle is one of the most popular Options trading strategy that allows the trader to hold a position in both call and put with the same expiration cycle but with the different strike price.

Strategy highlights

Moneyness of the options to be purchased:

  1. Out of the money put
  2. Out of the money call option

Profit Potential: Unlimited

Maximum Loss: Call Premium + Put Premium

Breakeven: Breakeven on the Upside = Strike Price + Call Premium + Put Premium

Breakeven on the Downside = Strike Price - Call Premium - Put Premium

How to implement this strategy?

I will use Fortis Healthcare Ltd. (Ticker – NSE: FORTIS) option for this example. Traders benefit from a long strangle strategy if the underlying asset moves a lot, regardless of which way it moves. The same has been witnessed in the share price of Fortis if you have a look at the chart below:

Last 1-month stock price movement (source – Google Finance)

Fortis stock price

There has been a lot of movement in the stock price of Fortis, the highest being INR 157.30 and lowest being 114.20 in last 1 month. The current value being INR 138.90 as per Google Finance and an IV of 83.35%

For the purposes of this example; I will buy 1 out-of-the-money put and 1 out-of-the-money call Options.

Here is the option chain of Fortis for the expiry date of 22nd February 2018.

Fortis Option Chain

Fortis call chain

Fortis put chain

Source: nseindia.com

I will pay INR 4 for the put with a strike price of INR 135 and INR 3.50 for the call with a strike price of INR 145. The options will expire on 22nd February 2018 and in order for me to make a profit out of it, there should be a substantial movement in the Fortis stock before the expiry.

The net premium paid to initiate this trade will be INR 7.50 hence the stock needs to move down to INR 127.5 on the downside or INR 152.50 on the upside before this strategy will break even. Considering the massive amount of volatility in the market due to various factors and taking into account the market recovery process from the recent downfall we can assume that there can be an opportunity to book a profit here.

How to calculate the strategy payoff in Python?

Now, let me take you through the Payoff chart using the Python programming code.

Importing libraries

import numpy as np
import matplotlib.pyplot as plt
import seaborn

Defining parameters

# Fortis stock price 
spot_price = 138.90

# Long put
strike_price_long_put = 135
premium_long_put = 4

# Long call
strike_price_long_call = 145 
premium_long_call = 3.50

# Stock price range at expiration of the put
sT = np.arange(0.7*spot_price,1.3*spot_price,1)

Call payoff

We define a function that calculates the payoff from buying a call option. The function takes sT which is a range of possible values of the stock price at expiration, the strike price of the call option and premium of the call option as input. It returns the call option payoff.

def call_payoff(sT, strike_price, premium):
       return np.where(sT > strike_price, sT - strike_price, 0) – premium
payoff_long_call = call_payoff(sT, strike_price_long_call, premium_long_call)

# Plot
fig, ax = plt.subplots()
ax.spines['bottom'].set_position('zero')
ax.plot(sT,payoff_long_call,label='Long Call',color='r')
plt.xlabel('Stock Price')
plt.ylabel('Profit and loss')
plt.legend()
plt.show()

Long Call Payoff

Put payoff

We define a function that calculates the payoff from buying a put option. The function takes sT which is a range of possible values of the stock price at expiration, the strike price of the put option and premium of the put option as input. It returns the put option payoff.

def put_payoff(sT, strike_price, premium):
      return np.where(sT < strike_price, strike_price - sT, 0) – premium
payoff_long_put = put_payoff(sT, strike_price_long_put, premium_long_put)

# Plot
fig, ax = plt.subplots()
ax.spines['bottom'].set_position('zero')
ax.plot(sT,payoff_long_put,label='Long Put',color='g')
plt.xlabel('Stock Price')
plt.ylabel('Profit and loss')
plt.legend()
plt.show()

Put Payoff

Strangle payoff

payoff_strangle = payoff_long_call + payoff_long_put

print ("Max Profit: Unlimited")
print ("Max Loss:", min(payoff_strangle))

# Plot
fig, ax = plt.subplots()
ax.spines['bottom'].set_position('zero')

ax.plot(sT,payoff_long_call,'--',label='Long Call',color='r')
ax.plot(sT,payoff_long_put,'--',label='Long Put',color='g')

ax.plot(sT,payoff_strangle,label='Strangle')
plt.xlabel('Stock Price')
plt.ylabel('Profit and loss')
plt.legend()
plt.show()

Strangle payoff

As you can see in the above Payoff plot the maximum anyone can lose is the total premium paid for holding both call and put positions i.e. INR 7.50 in my case. This is when the strike price falls between the two options that we have purchased at the time of its expiry.

On the other hand, there is no limit for the profit that you can gain once the stock price moves significantly in any direction.

In my next post, I will be talking about the ‘Bull Call Spread Strategy’

Next Step

If you want to learn various aspects of Algorithmic trading then check out the Executive Programme in Algorithmic Trading (EPAT™). The course covers training modules like Statistics & Econometrics, Financial Computing & Technology, and Algorithmic & Quantitative Trading. EPAT™ equips you with the required skill sets to be a successful trader. Enroll now!

Disclaimer: All investments and trading in the stock market involve risk. Any decisions to place trades in the financial markets, including trading in stock or options or other financial instruments is a personal decision that should only be made after thorough research, including a personal risk and financial assessment and the engagement of professional assistance to the extent you believe necessary. The trading strategies or related information mentioned in this article is for informational purposes only.

Download Data File

  • Option_Strangle_Strategy.ipynb

 Advanced Momentum Trading: Machine Learning Strategies Course