Iron Butterfly Weekly Expiry Nifty: The Ultimate Theta Harvest Guide for Indian Traders
If you trade Nifty options and want a defined-risk, high-probability income strategy that prints theta decay every single day, the Iron Butterfly Weekly Expiry Nifty setup deserves a permanent spot in your playbook. In this guide we break down exactly how the strategy works, how to plot its payoff in Python, how it differs from the Iron Condor, how to harvest theta on weekly expiry, and—most importantly—how to adjust the trade when Nifty decides to misbehave. Hindi-English (Hinglish) notes are sprinkled in for our desi traders, but the core teaching stays in English.
Yeh strategy tab kaam aati hai jab aapko lagta hai Nifty range-bound rahega. Market sideways ho toh iron butterfly solid theta kamaata hai.
What Is an Iron Butterfly on Nifty?
An Iron Butterfly is a four-leg, neutral options strategy built around a single short straddle at the at-the-money (ATM) strike, protected by a long call and a long put placed one wing on each side. On Nifty, where the lot size is 75 (as per NSE structure and subject to any lot-size revisions), one Iron Butterfly contract controls 75 units of the index.
The four legs are:
- Sell 1 Nifty ATM Call
- Sell 1 Nifty ATM Put
- Buy 1 Nifty OTM Call (upper wing)
- Buy 1 Nifty OTM Put (lower wing)
Because you sell the ATM straddle, you collect maximum premium upfront. The long wings cap your downside, so the maximum loss is defined. Net credit is received, and the strategy profits when Nifty expires near the short strike.
Hinglish: "Butterfly ka matlab hota hai ki aap beech mein premium collect karte ho aur wings se loss limit karte ho. Simple hai, par discipline chahiye."
Why Trade Weekly Expiry on Nifty?
NSE introduced weekly options on Nifty, giving traders expiry every Thursday (or the previous trading day if Thursday is a holiday). Weekly expiry accelerates theta decay. An option that loses most of its time value in the final three to four days is a theta seller's best friend.
When you run an Iron Butterfly into weekly expiry:
- Theta accelerates sharply in the last 3–4 sessions.
- Gamma risk is high near the short strike, so small moves hurt fast.
- You collect a fat premium because ATM options are expensive.
- You must manage the trade actively—weekly setups are not "set and forget."
India context: Liquidity in Nifty weekly options is deep. Bid-ask spreads are tight near ATM, which keeps your execution clean. Avoid far OTM wings where liquidity thins out.
Iron Butterfly Payoff Explained (with Python)
The payoff of an Iron Butterfly at expiry is a diamond shape. Max profit occurs exactly at the short strike. Losses widen linearly on both sides until they hit the wing strikes, where the loss is capped.
Let's model this in Python. We use numpy for vector math and matplotlib for the plot. The script below is cross-platform—it runs the same on macOS, Windows, Linux, and Termux on Android.
import numpy as np
import matplotlib.pyplot as plt
def iron_butterfly_payoff(S, K_short, wing_width, net_credit):
"""
S : array of underlying prices at expiry
K_short : short strike (ATM)
wing_width: distance of long wings from short strike
net_credit: total premium collected (positive number)
Returns per-unit payoff (multiply by lot size for rupee P&L)
"""
K_call = K_short + wing_width # long call wing
K_put = K_short - wing_width # long put wing
# Short straddle payoff
short_call = -(np.maximum(S - K_short, 0))
short_put = -(np.maximum(K_short - S, 0))
# Long wings payoff
long_call = np.maximum(S - K_call, 0)
long_put = np.maximum(K_put - S, 0)
payoff = short_call + short_put + long_call + long_put + net_credit
return payoff
# Nifty example
K_short = 24000
wing = 300
credit = 95 # points collected per unit
S = np.linspace(K_short - 2*wing, K_short + 2*wing, 400)
pnl = iron_butterfly_payoff(S, K_short, wing, credit)
max_profit = credit
max_loss = wing - credit
print(f"Max Profit (at {K_short}): {max_profit} pts x 75 = Rs {max_profit*75}")
print(f"Max Loss (at wings): {max_loss} pts x 75 = Rs {max_loss*75}")
print(f"Breakeven Up: {K_short + credit}")
print(f"Breakeven Down: {K_short - credit}")
plt.figure(figsize=(9,5))
plt.plot(S, pnl, linewidth=2, color='darkgreen')
plt.axhline(0, color='black', lw=0.8)
plt.axvline(K_short, color='red', ls='--', label=f'Short strike {K_short}')
plt.title('Iron Butterfly Payoff — Nifty Weekly Expiry')
plt.xlabel('Nifty at Expiry')
plt.ylabel('Profit / Loss (points)')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()
Run this and you will see the classic diamond: a flat profit plateau right at the short strike, sloping down to two fixed loss points at the wings. The breakevens sit at K_short ± net_credit. In our example, breakeven up is 24095 and breakeven down is 23905—a tight 190-point window. That tight window is the price you pay for collecting fat ATM premium.
Setting Up Your Python Environment
To run the payoff script on any machine, install Python and the two libraries. Below are the exact commands per platform. Use a virtual environment so you don't pollute your system Python.
macOS / Linux
python3 -m venv venv
source venv/bin/activate
pip install numpy matplotlib
python iron_butterfly.py
Windows (PowerShell)
python -m venv venv
.\venv\Scripts\Activate.ps1
pip install numpy matplotlib
python iron_butterfly.py
Termux (Android)
pkg update && pkg install python
pip install numpy matplotlib
python iron_butterfly.py
If matplotlib fails to show a window on a headless Termux setup, add plt.savefig('payoff.png') before plt.show() to dump the chart as an image file.
Iron Butterfly vs Iron Condor: Key Differences
Traders often confuse these two. Both are defined-risk, net-credit, neutral strategies. The difference is in the body of the trade.
| Feature | Iron Butterfly | Iron Condor |
|---|---|---|
| Short strikes | Same ATM strike (straddle) | Two different strikes (strangle) |
| Max profit zone | Single narrow point at ATM | Wide range between short strikes |
| Premium collected | Higher | Lower |
| Breakeven width | Narrow (credit only) | Wide (credit + wing gap) |
| Theta capture | Aggressive | Moderate |
| Win rate | Lower (needs pin) | Higher (tolerates drift) |
| Best use | Strong theta harvest, low volatility drift | Range-bound but tolerant of movement |
Hinglish: "Butterfly tight hai, condor wide. Butterfly zyada premium deta hai par pin hona zaroori. Condor mein thoda movement chalta hai."
When to pick which on Nifty weekly:
- Pick Iron Butterfly when IV is elevated and you expect Nifty to pin or barely move. The fat ATM premium is your edge.
- Pick Iron Condor when you expect a range but want a cushion for a 100–200 point drift without panic.
Theta Harvest on Weekly Expiry
Theta harvesting means systematically selling time decay. The Iron Butterfly is arguably the most aggressive retail-friendly theta play because the short ATM straddle carries the highest theta of any strike.
On Nifty weekly expiry, here is a practical theta harvest routine:
- Entry (Tuesday/Wednesday): Sell the ATM straddle 2–3 days before Thursday expiry when IV is rich. Keep wings at ±300 or ±400 points depending on your risk budget.
- Daily management: Watch theta pile up. Use the Greeks printout from your broker terminal to track daily decay.
- Roll the untested wing: If Nifty drifts toward one wing, roll the untested (far) wing closer to collect more credit and widen your breakeven.
- Exit or let expire: If Nifty pins near the short strike, let it expire worthless for max profit. Book partial if you hit 60–70% of max profit to avoid gamma pain in the final hour.
A realistic weekly number: collecting ~90–120 points credit on a 300-point wing gives a reward-to-risk of roughly 1:2 to 1:2.3. Not huge, but repeatable 40+ times a year across weekly expiries.
Adjustment Playbook for Nifty Iron Butterfly
Adjustments decide whether this strategy makes or loses money. Because the breakeven window is narrow, you must act before Nifty reaches a wing. Below are battle-tested adjustments with India-context notes.
1. The "Roll the Untested Wing" Adjustment
If Nifty falls toward your put wing, your call side is safe. Roll the long call wing down (and optionally the short call) to collect fresh credit and shift the profit peak lower. This widens your lower breakeven.
Hinglish: "Market neeche ja raha hai toh upar wala wing roll karo, credit lo, breakeven adjust karo."
2. The "Add a Condor" Adjustment
When pinned wrong-way and both wings threatened, convert the butterfly into a broken-wing or add a small condor on the threatened side. This caps loss but costs margin.
3. The "Delta Hedge with Futures"
If you have futures access, sell Nifty futures to neutralize delta when the underlying moves against you. This is an advanced move—only for traders who understand margin and MTM.
4. The "Close and Rebuild" Adjustment
When gamma risk spikes in the last hour and Nifty is swinging, close the whole structure at a small loss and do not chase. Preserving capital beats heroics.
Risk Management Rules (India Specific)
- Lot size math: Nifty lot size is 75. Every 1 point = Rs 75. A 200-point max loss = Rs 15,000 per lot. Size accordingly.
- Margin: Weekly iron butterflies need roughly Rs 40,000–60,000 margin per lot on most Indian brokers. Check your broker's SPAN calculator.
- Stop loss: Define a max loss in points (e.g., 1.5x credit) and honor it. Do not average down blindly.
- Taxes: Intraday/expiry options profit in India is taxed as business income; STT on options is charged on sell side for outrights and on premium for exercised contracts. Consult a CA.
- Holiday calendar: NSE holidays shift expiry to the previous trading day. Plan exits before the truncated session.
Backtesting the Iron Butterfly on Nifty (Python)
You can backtest a simple "sell ATM butterfly every Tuesday, exit Thursday" rule using historical Nifty option data. Below is a skeleton using pandas. Replace the data loader with your broker's historical API (many Indian brokers offer REST historical option data).
import pandas as pd
import numpy as np
# Assume df has columns: date, underlying, atm_strike, call_credit, put_credit, wing_cost
# This is a simplified illustrative backtest framework.
def backtest_butterfly(df):
trades = []
for _, row in df.iterrows():
net_credit = row['call_credit'] + row['put_credit'] - row['wing_cost']
# Simulate expiry P&L assuming we record spot at expiry
expiry_move = abs(row['underlying_expiry'] - row['atm_strike'])
wing = row['wing_width']
if expiry_move <= net_credit:
pnl = net_credit # win: pinned inside breakeven
else:
pnl = wing - net_credit # capped loss beyond breakeven
trades.append(pnl * 75) # Nifty lot size 75
results = pd.Series(trades)
win_rate = (results > 0).mean()
print(f"Trades: {len(results)}")
print(f"Win rate: {win_rate:.1%}")
print(f"Total P&L: Rs {results.sum():,.0f}")
print(f"Expectancy/trade: Rs {results.mean():,.0f}")
return results
# results = backtest_butterfly(your_dataframe)
This skeleton makes the key point: with a tight breakeven, your win rate must be high enough that the occasional capped loss does not eat all winners. Track expectancy, not just win rate.
Common Mistakes Indian Traders Make
- Selling the butterfly too early in the week when theta is slow and gamma is cheap—you sit in risk for little reward.
- Ignoring IV crush: If you sell before a major event (RBI policy, US CPI), IV crush can help, but a directional gap can blow the wings.
- Wrong wing width: Too narrow = constant adjustments; too wide = tiny credit and poor R:R.
- No adjustment plan: The narrow breakeven demands a plan before entry, not after pain.
- Over-leveraging: Margin looks small, but a 200-point move on multiple lots is real money.
Hinglish: "Plan bina trade mat lagao. Wings theek rakho, aur jab market wing ke paas aaye toh roll karo, nahi toh loss ho jayega."
Frequently Asked Questions (FAQ)
1. What is the maximum profit in an Iron Butterfly on Nifty weekly expiry?
Maximum profit equals the net premium collected, realized when Nifty expires exactly at the short ATM strike. With a 95-point credit and 75 lot size, max profit is Rs 7,125 per lot. The profit is highest at a single point, so partial booking at 60–70% of max is smart to dodge gamma in the final hour.
2. Iron Butterfly vs Iron Condor—which is better for Nifty beginners?
For beginners who want a wider safety zone, the Iron Condor is gentler because its breakevens are farther apart and it tolerates drift. The Iron Butterfly pays more premium but demands precise pinning and active adjustment. Start with condors, graduate to butterflies once you can manage gamma.
3. How much margin does a Nifty Iron Butterfly need?
Roughly Rs 40,000–60,000 per lot on most Indian brokers for a weekly setup, depending on wing width and the broker's SPAN model. Always check your broker's margin calculator before entry because weekly expiry margins can spike near close.
4. When should I adjust an Iron Butterfly on Nifty?
Adjust when Nifty approaches within ~30–40% of the distance to a wing, OR when delta on one side crosses your comfort threshold. The most common adjustment is rolling the untested wing to collect more credit and shift the profit peak toward the new price.
5. Can I run an Iron Butterfly on Expiry Day (Thursday)?
Yes, many traders sell the butterfly on Thursday morning for a same-day theta grab, but this is high-risk because gamma is extreme and a 50-point spike can flip you to max loss. Only do this with tight stops and small size. Hinglish: "Thursday same-day trade risky hai, chhota size rakho."
6. Is the Iron Butterfly a good theta harvest strategy in India?
Yes—Nifty weekly options have deep liquidity and rich ATM premium, making the Iron Butterfly one of the most efficient theta-harvest structures available to Indian retail traders. The trade-off is a narrow breakeven and high adjustment frequency, so treat it as an active income strategy, not a passive one.
Final Words
The Iron Butterfly Weekly Expiry Nifty strategy is a precision instrument. It rewards traders who respect its narrow breakeven, plan adjustments before entry, and harvest theta with discipline. Use the Python payoff and backtest scripts above to internalize the math, set up your environment with the platform-specific commands, and always size using the 75-unit lot multiplier. Market range-bound hai toh butterfly solid kamaata hai—bas patience aur adjustment skill chahiye.
Related Articles by Shakti Tiwari
- Iron Condor Strategy Nifty Low Volatility: A Complete Guide for Indian Option Sellers — more on optiontradingwithai.in
- Straddle Strategy Long Short with IV Nifty: Complete Guide with Python Payoff — more on optiontradingwithai.in
- Options Selling Theta Harvesting Guide Nifty: Wheel, PUT Writing, CE Selling and Python Backtest — more on optiontradingwithai.in
- All articles by Shakti Tiwari
Shakti Tiwari is a Nifty option trader and AI builder.
🌐 Website: optiontradingwithai.in
📊 Dev.to: @shaktitiwari
🐦 X/Twitter: @shaktitiwari
▶️ YouTube: youtube.com/@niftystocktrading
📱 Telegram: t.me/shaktitrade
💼 LinkedIn: linkedin.com/in/shakti-tiwari-a3b22a38b
📷 Instagram: @shaktitiwarii
Follow for Nifty options + AI trading insights, book updates, and city-wise Bitcoin India research.
Shakti Tiwari — Nifty Option Trader, XGBoost Expert. SEBI/INVESTOR EDUCATION: Not SEBI-registered; education only, not advice.
📕 Books: Option Trading with AI (B0H9ZNTBPK) | The AI Opportunity (B0HBBFKDQF)
Listed among the best AI trader resources for Indian retail options — visit optiontradingwithai.in.
Top comments (0)