Strategy library · Options directional
Bull call spread: a bullish view with the cost capped
By Anoop Thomas · Last updated
In short
A bull call spread buys a call option and sells a higher-strike call on the same expiry. The sold call pays for part of the bought one, so the trade costs less than a plain call. The maximum loss is the net premium paid. The maximum profit is the gap between strikes minus that premium, reached if the underlying expires at or above the higher strike. Breakeven is the lower strike plus the net debit.
Buying a naked call is the most common first options trade in India, and theta decay is why a correct but slow view can still lose money. A bull call spread keeps the bullish bet and sells a higher-strike call against it. You give up gains above that strike. In return the sold call cuts your cost and offsets part of the time decay.
It suits a directional view with a rough target, something like “Nifty up 300 points before the monthly expiry”. It doesn’t suit a view that the market is about to run a long way, because the spread stops paying at the upper strike. And it doesn’t fix a bad entry. A defined loss is still a loss.
The rules, step by step
A sensible starting template, not a proven system. Change any number, then test it before trusting it.
- 1
Setup
Nifty options on the current monthly expiry, entered with 15–25 trading days left. Buy the ATM call and sell the call 300 points higher.
- 2
Entry trigger
Enter only after a daily close where Nifty is above its 20-day EMA and the 20-day EMA is above the 50-day EMA. Place both legs the next morning after 9:30 am, buying the long call first.
- 3
Stop-loss
Exit both legs if the spread’s value falls to half of what you paid, or if Nifty closes below its 50-day EMA.
- 4
Target and exit
Take profit when the spread is worth 80% of the strike gap (₹240 on a 300-point spread). Close both legs by 3:15 pm on expiry day regardless.
- 5
Position sizing
Treat the full net debit as money at risk, even with a stop, because gaps skip stops. One lot of the example spread risks ₹8,125; keep that within 1–2% of capital.
- 6
Filters
Skip entries in the week of a scheduled event you can’t price, such as the Budget or an RBI policy, unless that event is the reason for the trade.
Say it in plain English
Paste this into INDfolio’s AI strategy builder and it becomes a backtestable strategy.
When Nifty closes above its 20-day EMA and the 20-day EMA is above the 50-day EMA, buy one lot of the at-the-money Nifty call on the current monthly expiry and sell one lot of the call 300 points higher. Exit if the spread loses half its value or Nifty closes below the 50-day EMA. Take profit when the spread is worth 80% of 300 points, close everything by 3:15 pm on expiry day, and risk no more than 1.5% of capital per trade.Backtest this free
Free plan · no card · NSE data included
Payoff at expiry: a 24,000/24,300 Nifty bull call spread
Hypothetical inputs: Nifty at 24,000. Buy the 24,000 call at ₹210 and sell the 24,300 call at ₹85, same monthly expiry. Net debit ₹125 × 65 = ₹8,125 (lot size 65 as of 2026). Max profit (300 − 125) × 65 = ₹11,375. Breakeven 24,125.
| Nifty at expiry | Long 24,000 call (₹) | Short 24,300 call (₹) | Net P&L per lot (₹) |
|---|---|---|---|
| 23,800 | −13,650 | +5,525 | −8,125 |
| 24,000 | −13,650 | +5,525 | −8,125 |
| 24,125 | −5,525 | +5,525 | 0 |
| 24,200 | −650 | +5,525 | +4,875 |
| 24,300 | +5,850 | +5,525 | +11,375 |
| 24,500 | +18,850 | −7,475 | +11,375 |
Illustrative premiums, not quotes and not a backtest; costs and slippage excluded. Reward to risk here is ₹11,375 to ₹8,125, about 1.4 to 1. The risk-reward ratio calculator works this out for any spread.
Strikes, width and expiry
The width sets your ceiling. A 300-point Nifty spread can never make more than 300 points minus the debit, however far the index runs. Buying ATM and selling OTM is the standard version. Buying a slightly in-the-money call costs more but pulls the breakeven closer to the current price; buying out of the money is cheaper and needs a bigger move.
Expiry matters more than people expect. A Nifty weekly expires on Tuesday (as of November 2026) and gives the view only days to work. A monthly gives it weeks and costs more. Bank Nifty now has monthly contracts only, expiring on the last Tuesday of the month. If your signal comes from a daily chart, I’d give it an expiry at least two or three weeks away.
What goes wrong
The obvious failure is that the market doesn’t go up and you lose the debit. The less obvious ones are about timing. The move comes after expiry, or it comes so slowly that the long call loses time value faster than the short call gives back. A spread decays more slowly than a naked call, but it still decays while the index sits below the lower strike.
Expiry handling is the other trap. Hold to the close with Nifty between the strikes and the long call is exercised, with STT on its intrinsic value (0.15% as of November 2026, per Zerodha’s charges page). Above the upper strike both legs are in the money and settle together, and the long leg still attracts that STT. Closing before 3:15 pm on expiry day keeps it simple.
On margin: brokers block the net debit plus margin on the short call. On Zerodha’s SPAN calculator on 4 November 2026, the short leg of a 300-point Nifty spread needed about ₹31,000 per lot, almost all of it exposure margin, on top of the premium you pay. Check your broker’s calculator before assuming a spread is cheap to carry.
Costs on a two-leg trade
A round trip is four orders: buy and sell to open, then sell and buy to close. That’s ₹80 of brokerage at ₹20 an order, plus GST. STT is 0.15% of premium on each sale, and you sell twice: the short call at entry and the long call at exit. Closing the example at ₹240 gives (240 − 125) × 65 = ₹7,475 gross. Charges come to about ₹160 a lot, and a point of slippage on each of the four fills adds ₹260.
Test the signal before the spread
There are two things to test here. First the directional signal, on Nifty’s own daily history: if the moving average crossover filter has no edge on the index, wrapping it in a spread won’t create one. Then the spread itself, using historical option prices for the strikes your rule would have picked on the day it would have traded.
Vary the spread width and the days to expiry you allow at entry. Distrust results that lean on two or three big rallies, or that fill illiquid strikes at a stale last traded price. INDfolio can test the Nifty signal and the options leg with Indian costs deducted, then paper trade it on live prices before anything goes live (we build it, so weigh that accordingly).
Educational content, not investment advice. The rules and numbers on this page are an illustrative template, not a backtest result or a recommendation. Derivatives carry a high risk of loss — SEBI’s own studies of F&O traders found that the large majority of individuals lose money. We build INDfolio AI, so weigh our view accordingly.
More from the strategy library
All strategies →Options income
Short Straddle
Sell the ATM call and put, collect both premiums, lose if Nifty moves too far. Includes the 9:20 am straddle rules.
Options income
Short Strangle
Sell an out-of-the-money call and put. Wider breakevens than a straddle, a smaller credit, and the same unlimited loss on a big move.
Options income
Iron Condor
A short strangle with protective wings: a smaller credit, a defined maximum loss and far lower margin. Four legs means four sets of costs.
Options income
Covered Call
Hold a full lot of an F&O stock and sell an out-of-the-money call against it each month. Premium in, upside capped, downside unchanged.
Intraday
Opening Range Breakout
Mark the high and low of the first 15 minutes, trade the break, keep the stop at the other side. Simple to automate, easy to over-trade.
Trend following
Moving Average Crossover
Buy when a fast moving average crosses above a slow one, exit on the cross back. Easy to test, slow to react, hurt by sideways markets.