QuantsappFaster in the app: live data, alerts, tradingOpen
Log inStart free
Open Backtesting →
Stock F&OPositionalNIFTYlow complexity

Futures calendar spread arbitrage

A futures fair-value trade between two NIFTY contract months. In theory the next-month future should trade above the near month by roughly the interest cost of holding the index for the extra month. When the actual gap strays more than 0.15% from that fair carry, the strategy sells the expensive month and buys the cheap one, and waits for the gap to return to normal.
Compares the gap between next-month and near-month NIFTY futures with its fair cost of carry, and sells the expensive month and buys the cheap one when the gap strays.
Market viewNeutral / range-bound
TradesNIFTY near- and next-month futures, 1 lot each
RiskOpen-ended (loss not capped by the structure)
CapitalFutures margin
SuitsAdvanced
Trades a month0.6
Typical hold24 days
Profitable months3 of 12
Longest losing run3 trades
Made money inToo few trades (7) to judge any condition
Lost money inToo few trades (7) to judge any condition
Default settings
Symbol
Check time
Rate %
Div yield %
Threshold %
Exit band %
Exit sessions before expiry
Lots
Backtest this strategy →Change any setting, pick your own period and run it in the Quantsapp web app. Backtesting is part of the Max plan. Pro+ members can use it now as a free trial.
1

How it trades

What it trades
Universe
NIFTY Positional · 1 Oct 25 → 30 Sep 26
Enters
15:15 when the spread is more than 0.15% of the near future away from fair carry
Legs
SELL FUT · Next month (when rich vs fair carry) · Next-month future · 1 lotBUY FUT · Near month (paired with the sold next month) · Near-month future · 1 lotBUY FUT · Next month (when cheap vs fair carry) · Next-month future · 1 lotSELL FUT · Near month (paired with the bought next month) · Near-month future · 1 lot
Exits
signal Spread back to fair value, checked at 15:15time 15:15 one session before the near-month expiry
Re-entry
None - one trade per near-month series
Measure
once a day at CHECK_TIME, from the futures curve (near and next monthly contracts, each its own price): spread = next - near fair spread = near x (RATE_PCT - DIV_YIELD_PCT) / 100 x (days between the two expiries) / 365 mispricing = spread - fair spread; threshold = THRESHOLD_PCT % of the near future.
Entry
mispricing > threshold -> next month is rich: SELL next, BUY near (LOTS each). mispricing < -threshold -> next month is cheap: BUY next, SELL near. Only while more than EXIT_SESSIONS_BEFORE_EXPIRY sessions remain to the near expiry; one trade per near-month series (no re-entry).
Exit
at CHECK_TIME on the first day the mispricing is back to fair (crossed EXIT_BAND_PCT % of the near future towards zero) -> "back to fair"; else at CHECK_TIME EXIT_SESSIONS_BEFORE_EXPIRY session(s) before the near expiry -> "pre-expiry exit". Both legs close together at their own curve prices.
2

Results

PRE-BUILT · DEFAULTS
NIFTY · 2025-10-01 → 2026-09-30 · 7 trades · before costs
Net P&L−₹1,801
Win rate43%
Max drawdown−₹5,389
Avg per trade−₹257
Profit factor0.76
Worst trade−₹4,186
3

Where it made and lost money

With only 7 trades in the year, no market condition can be judged in this test, and every split holds four trades or fewer. Because the trade is long one futures month and short the other, the index's direction mostly cancels out; what matters is how the gap between the two months behaves. Six of the seven spreads never returned to fair value and were closed the session before the near expiry, which is where most of the losses came from. The one spread that did converge made ₹4,414. Read the results as a demonstration of the mechanics rather than evidence about when the idea works.

India VIX the evening before
VIX 11.5-14.5 (normal)−₹1,3404 trades50% won
VIX above 14.5 (nervous)−₹4613 trades33% won
Kind of session on the entry day
Quiet session (range under 0.75%)−₹2,8284 trades25% won
Trend day (closed near the high or low)+₹4,4141 trades100% won
Choppy day (wide range, closed mid-range)−₹3,3872 trades50% won
Market while the trade was held
NIFTY rose over 1% while held−₹6891 trades0% won
NIFTY within ±1% while held−₹4,0693 trades33% won
NIFTY fell over 1% while held+₹2,9573 trades67% won
How the entry day opened
Flat open−₹2,0295 trades40% won
Gap down of 0.4% or more+₹2282 trades50% won
Session direction on the entry day
NIFTY closed above its open−₹3,9595 trades40% won
NIFTY closed below its open+₹2,1572 trades50% won
Trend going in
Uptrend (NIFTY above its 20-day average)−₹7,0145 trades20% won
Downtrend (NIFTY below its 20-day average)+₹5,2132 trades100% won
Expiry day (NIFTY weekly)
Expiry day−₹2,9452 trades0% won
Other days+₹1,1445 trades60% won
Day of the week
Tuesday−₹2,9452 trades0% won
Thursday−₹4,7002 trades0% won
Friday+₹5,8443 trades100% won
The same trades, split by the market conditions around each entry, before costs.
4

About this strategy

  1. Each day at 15:15, read the prices of the near-month and next-month NIFTY futures.
  2. Work out the fair spread: near price × (6.5% interest minus any dividend yield) × days between the two expiries ÷ 365.
  3. Mispricing is the actual spread minus the fair spread; the entry threshold is 0.15% of the near future's price.
  4. If the next month is too expensive, sell it and buy the near month; if too cheap, buy it and sell the near month, one lot each.
  5. Exit both legs when the mispricing returns to fair value.
  6. Otherwise close both legs at 15:15 one session before the near-month expiry; only one trade per near-month series.

Why traders use it

Because both legs are NIFTY futures, the position is largely hedged against the index moving up or down. The only bet is on the gap between the months, which is anchored by interest rates and should not stray far from its fair level for long. This is the same logic arbitrage desks use, and it appeals to traders looking for a market-neutral idea that does not rely on predicting direction.

Works best whenIn principle, months when the gap between contracts briefly moves away from fair carry and then snaps back well before the near expiry. Only one of the seven trades in this test did that, so no condition can be judged.
Struggles whenMonths when the mispricing persists or widens until the near expiry, forcing an exit at a loss; with only 7 trades in this test, the sample is too small to tie that to any market condition.

The year in plain words

With default settings on NIFTY from 1 Oct 2025 to 30 Sep 2026, the spread signal fired only 7 times; 3 trades won and 4 lost, for a loss of ₹1,801 before costs. Only one trade, in March, returned to fair value, making ₹4,414; the other six were closed before the near expiry without converging. The edge being chased is a few index points, while each trade pays for four futures orders and their spreads. After ₹20 per order and bid-ask slippage the loss widened to ₹16,479, showing that costs dominate this kind of trade.

What the settings do

Check timeThe time each day when the spread is measured and any trade placed or closed.Rate %The annual interest rate used to work out the fair spread. A higher rate raises the fair gap the next month should trade at.Div yield %An annual dividend yield taken off the carry. Dividends paid between the two expiries lower the fair gap; zero ignores them.Threshold %How far, as a percentage of the near future, the spread must stray before a trade. Lower values trade more often on smaller edges.Exit band %How close to fair value the spread must come back to trigger the exit. Zero means fair value itself.Exit sessions before expiryHow many sessions before the near expiry an unconverged spread is closed. Closing before expiry avoids losing the calendar-spread margin benefit on expiry day.

Risks

  • The edge is a few points per trade, while four futures fills with brokerage and spread cost far more, as the after-costs result shows.
  • Fair value depends on an assumed interest rate and dividend yield; if those assumptions are off, the signal is wrong.
  • The gap between months can stay away from fair value for weeks, tying up margin without converging.
  • Two futures legs need margin, though the exchange gives a calendar-spread benefit until the near expiry day.

Who it suits

Traders interested in market-neutral, arbitrage-style ideas who understand futures pricing and have very low trading costs. With few signals and costs larger than the edge here, it suits study more than routine trading.

5

Questions traders ask

What is a futures calendar spread?

It is a long position in one futures month and a short position in another month of the same index. The profit or loss comes mostly from the change in the gap between the two prices, not from the index moving up or down.

Is futures calendar spread arbitrage profitable on NIFTY?

Not in this backtest. From 1 Oct 2025 to 30 Sep 2026 it made 7 trades and lost ₹1,801 before costs and ₹16,479 after ₹20 per order and bid-ask slippage, with statutory charges extra. Past results do not guarantee future ones.

How is the fair spread between futures months calculated?

The near-month price is multiplied by the interest rate minus the dividend yield, and by the days between the two expiries divided by 365. With NIFTY at 25,000, a 6.5% rate and 28 days, that is roughly 125 points.

Why is the spread closed before the near expiry?

The exchange's margin benefit for calendar spreads ends on the near contract's expiry day, so holding into it raises margin sharply. Closing a session before avoids that and avoids the expiry settlement of the near leg.

6

Before you rely on it

ADAPTED FOR TODAY'S NSE RULESThe calendar-spread margin benefit is withdrawn on the near contract's expiry day, so the spread is closed the session before (EXIT_SESSIONS_BEFORE_EXPIRY = 1) instead of running the near leg into expiry. Sized in lots.
WATCH OUTThe edge is a few points against four futures fills (STT on the sell legs, brokerage, spread): switch on costs. This is a futures fair-value trade, not the library's options calendar spread.
WHERE THE RULES WERE UNCLEAR · OUR CHOICESThe source's threshold is "0.15% of spot"; the near future stands in for spot (no cash index needed). Dividends between the expiries are unknown to the backtest, so they enter as a yield (DIV_YIELD_PCT, default 0 = the source's formula without the dividend term). RATE_PCT 6.5 is a T-bill-like rate, ours. "Spread returns to fair value" is read as the mispricing crossing EXIT_BAND_PCT (0 = fair itself).
Also known asfutures calendar spread arbitrageroll spread arbitrage
Backtests run on historical NSE data with fills at the last traded price. "Before costs" excludes brokerage, taxes and slippage. Quantsapp is not recommending any strategy; it is just a backtesting utility. Past results are not a promise of future returns.

Log in or sign up

Enter your mobile number. New to Quantsapp? The same OTP creates your free account.

+91

By continuing you agree to the Terms of Use and Privacy Policy.