Profit probability of an Iron Butterfly: Evaluating the cumulative distribution function
A recap: What the Options Chain tells us
In the 1st article of this series, we extracted the options chain of a particular security and investigated the price ranges that the the market expected it to trade at, at a particular point in the future.
Given that the projected price range is a bullish, we can reasonably expect to enter a long position on the underlying security and end up with a likely outcome that is profitable.
Alternatively, another way to profit from this scenario is to enter an option position: a Short Iron Butterfly
In the 2nd article, we shall explain what exactly is a Short Iron Butterfly and attempt to calculate the likelihood of profit of this spread.
Why bother to use a spread?
If an asset has a reasonable probability of rising in the near future, a logical course of action would be to simply buy the asset itself. Why bother yourself with added complexity?
- Less downside risk
In the event of adverse price moves, the maximum losses are capped at the net debit to establish the spread.
- Less upfront capital required to establish a position
For spot assets that are extremely expensive, for instance, pre-stock split equities.
- Leverage
In comparison to the net debit required to establish the position, the profit margins can significantly exceed the the percentage move in the underlying asset.
What our Iron Butterfly looks like
Using the data from the options chain in the previous article, lets establish what the key values of our Short Iron Cond.
Using the data from our options chain generated in the previous article, lets calculate the various key points in our diagram.
- Disclaimer: Rigorous PnL calculations for options involving accounting for the difference in the bid-offer spread, which can vary across different options exchanges. Unfortunately, free data sources are frequently devoid of such information. We shall be using the “last transacted price” for our calculation.
Calls
Puts
From the previous article, we have established that a spread can be established in the vicinity of 195–205.
A short iron butterfly can be summarised with the saying: Long the Wings, Short the Guts
The components of our Spread are:
- 1 Long Put at 195
- 1 Short Put at 200
- 1 Short Call at 200
- 1 Long Call at 205
Net premiums: 100 contracts * (Difference in premiums)
= 100 *(-4.42+7.35+1.94–0.80) = $567
Maximum loss: 100 contracts * (Upper strike — middle strike — premium)
= 100 *[(205–200)-5.67] = $670
Break Event points:
Low: Middle strike — net premium = $200 -$5.67 = $194.33
High: Middle strike+net premium = $200 +$5.67 = $205.67
By putting all these together, we can see that the best case scenario is if AAPL is at $200, where the 100% of the premium of $567 is collected.
Anywhere between 194.33 to 205.67, will result in a favourable outcome that will allow us to pocket a proportion of our premiums between 0% and 100%.
Calculating the likelihood of profit
For this segment, we shall be using an open source Python library to do our calculation. Fellow medium author Robert Gomes has written the library OptionLab, enabling us all to perform a huge variety of options related calculation and strategies.
He has also written many wonderful articles that delve deeper into option theory.
Obtaining the Cumulative Distribution Function
For the purposes of this calculation, we are concerned with the likelihood of the price falling in a particular price range.
We need to calculate the difference between 2 probability distributions.
Thankfully, we are able to easily do so using the codes provided with OptionLab.
The addition of parameters are as follows:
- Range where position is in profit => $194.33 to $205.67
2. Distribution => Statistical distribution to use. Currently available inputs are: “black-scholes”, “normal”, “laplace” or “array”.
3. stock price => Current price of the spot asset
4. Volatility => Annualized Volatility of the asset
5. Interest rate => Current risk free rate usually the yield of 10 year USD treasuries. At time of writing it is 3.90%
6. Time2Maturity => 33 trading days in this example.
#Run "pip install optionlab" in terminal instance
from optionlab.support import getPoP
import yfinance as yf
import numpy as np
ticker = "AAPL"
data = yf.download(ticker,
start="2022-12-23",
end="2023-12-23")["Adj Close"].tolist()
daily_returns = []
for i in range(1, len(data)):
daily_pnl = round((data[i]-data[i-1])/data[i], 3)
daily_returns.append(daily_pnl)
daily_vol = np.std(daily_returns)
annual_vol = daily_vol * np.sqrt(252)
stock_price = 193
interest_rate = 0.039
days_to_expiry = 33
pop=getPoP([[194.33,
205.67]],
"black-scholes",
stockprice=stock_price,
volatility=annual_vol,
interestrate=interest_rate,
time2maturity=days_to_expiry/365)
print("Probablity of profit: "+"%.3f"%pop)
#Terminal output:
#Probablity of profit: 0.307
Using the function getPoP (Get probability of profit) provided by option lab, we are able to calculate the likelihood of the short iron butterfly resulting in profit is a decent at 30.7%.