Appearance

Personalize your experience

Mode
Accent Color
Layout
Direction
All articles
Costs & ExecutionIntermediate

What F&O Trading Actually Costs in India

Six separate levies, two different bases, and a worked example showing why the same strategy can be profitable at three trades a day and hopeless at thirty.

QuaTick ResearchUpdated 10 min read1,821 words
PostLinkedIn
On this page

Most backtests model costs as a flat rupee amount per trade. Indian derivatives do not work that way. There are six separate charges, they apply on different bases — some on notional turnover, some on premium — and one of them applies only to the sell side. The result is that two strategies with identical gross returns can have wildly different net returns depending entirely on what they trade and how often.

The six line items

Layered model

The cost stack between gross and net P&L

Each layer uses a different base or side of the trade. Slippage sits outside the statutory stack but must be deducted as well.

Gross trading profit is reduced first by market slippage, then by brokerage per executed order, exchange and SEBI turnover charges on both sides, GST on eligible fees, sell-side STT, and buy-side stamp duty. The remainder is net profit. Options use premium turnover for major charges while futures use notional turnover.
Do not collapse these layers into one percentage. Side, instrument and charge base all change the result, especially for small option tickets and high-turnover futures.

Read the "levied on" column carefully — it is where the asymmetry lives.

ChargeFuturesOptionsLevied on
Securities Transaction Tax (STT)0.05%0.15%Sell side only. Futures on traded value; options on premium
STT on exercised options0.15%Settlement value, on exercise
Exchange transaction charge0.00173%0.0495%Both sides. Futures on turnover; options on premium
GST18%18%On brokerage + transaction charges + SEBI fees
Stamp duty0.002%0.003%Buy side only
SEBI turnover feeper-crore levyper-crore levyBoth sides, on turnover
BrokerageBroker-specificBroker-specificPer order or per lot, depending on plan
Charge structure on NSE equity derivatives, rates effective 1 April 2026

April 2026: what changed

The Finance Act 2026 raised STT on equity derivatives with effect from 1 April 2026. The increase is proportionally larger on futures.

TransactionUntil 31 Mar 2026From 1 Apr 2026Change
Sale of a futures contract0.02%0.05%+150%
Sale of an option (on premium)0.10%0.15%+50%
Sale of an option, exercised0.125%0.15%+20%
STT on equity derivatives, before and after 1 April 2026

For a strategy holding futures for minutes rather than days, a 150% increase in the sell-side statutory charge is not a rounding error. It is a direct, permanent reduction in the per-trade edge, and it falls hardest on exactly the high-turnover strategies that automation makes easy to run.


Worked example: an intraday futures round trip

Comparison chart

Gross move versus the 2026 round-trip break-even

At ₹75 per Nifty point, the example trade needs roughly 14.1 points just to cover its estimated ₹1,057.87 cost.

A five-point move earns 375 rupees gross, a ten-point move earns 750, a 14.1-point move earns about 1,058 and a twenty-point move earns 1,500. The estimated round-trip cost is about 1,058 rupees, so only moves beyond 14.1 points produce positive net P and L in this example.
Illustrative one-lot economics from the worked example. Recalculate with the current contract notional, lot size, statutory rates and your brokerage plan.

Assume a Nifty futures contract with a notional value of ₹18,00,000 per lot, bought and sold the same day, one lot, on a discount broker charging ₹20 per executed order.

futures-round-trip.txttext
Notional per side          ₹18,00,000Turnover (both sides)      ₹36,00,000 STT (sell side only)  0.05% × 18,00,000                            ₹900.00 Exchange transaction charge  0.00173% × 36,00,000                          ₹62.28 Brokerage  ₹20 × 2 orders                                ₹40.00 SEBI turnover fee  per-crore levy on ₹36,00,000                   ~₹1.00 GST @ 18%  0.18 × (40.00 + 62.28 + 1.00)                 ₹18.59 Stamp duty (buy side only)  0.002% × 18,00,000                            ₹36.00                                             ──────────Total cost per round trip                     ₹1,057.87 Nifty points needed to break even  ₹1,057.87 ÷ ₹75 per point per lot           ~14.1 points
Illustrative. Substitute your own broker’s brokerage and verify current statutory rates.

Fourteen points. Before 1 April 2026 the same round trip broke even around 7 points lower, because STT on the sell side was ₹360 rather than ₹900. If your strategy’s average winning trade was 12 points, it was viable and now it is not. That is the entire content of this article in one sentence.

Worked example: selling a weekly option

Now the same exercise on the sell side of an option, where the charge base changes to premium. Assume selling one lot at ₹120 premium with a lot size of 75, so premium turnover is ₹9,000, and buying it back at ₹90.

option-sell-round-trip.txttext
Sell premium turnover      ₹120 × 75 = ₹9,000Buy-back premium turnover  ₹90  × 75 = ₹6,750Gross profit               (120 - 90) × 75 = ₹2,250 STT (sell side, on premium)  0.15% × 9,000                                 ₹13.50 Exchange transaction charge  0.0495% × (9,000 + 6,750)                      ₹7.80 Brokerage  ₹20 × 2 orders                                ₹40.00 GST @ 18%  0.18 × (40.00 + 7.80 + ~0.04)                  ₹8.61 Stamp duty (buy side, on the buy-back)  0.003% × 6,750                                  ₹0.20                                             ──────────Total cost                                      ₹70.15 Net profit                                   ₹2,179.85Cost as % of gross profit                         3.1%
Premium-based charges make the percentage cost heavily dependent on the premium level.

Three percent of gross profit looks benign. Now run the same trade where the premium moves ₹120 → ₹115 instead of ₹120 → ₹90:

₹375
Gross profit
(120 − 115) × 75
~₹66
Total cost
Barely falls — brokerage is fixed
17.6%
Cost as % of gross
Same trade, smaller move

The fixed component — brokerage, and the GST on it — dominates at small ticket sizes. This is why scalping options one lot at a time is arithmetically hostile, and why the same strategy improves markedly when the per-trade profit target rises or the size increases.

How to model this in a backtest

Process flow

A backtest cost pipeline that preserves the correct bases

Compute deterministic levies leg by leg, then apply a separate stochastic fill model before aggregating net returns.

Start with each simulated fill and classify it as futures notional turnover or options premium turnover. Apply side-specific statutory charges, add fixed brokerage and GST, then apply a separate slippage and impact model. Sum all legs into net strategy P and L and report costs as their own attribution.
Keeping statutory costs and slippage separate makes calibration possible: one changes by circular, the other changes with liquidity, time and size.

A single "commission" parameter cannot represent this cost structure. The minimum viable model has four inputs.

  1. Separate the bases

    Compute notional turnover and premium turnover independently, per leg, per side. Applying an options rate to notional or a futures rate to premium produces errors of an order of magnitude, not a few percent.

  2. Apply sell-side-only charges correctly

    STT and stamp duty are asymmetric. A backtest that halves the total and applies it to both sides will misprice any strategy whose entries and exits sit at different price levels.

  3. Model brokerage as a fixed amount per order

    Not as a percentage. The fixed component is what makes small tickets uneconomic, and a percentage model hides that entirely.

  4. Add slippage separately

    Costs and slippage are different problems with different distributions. Costs are deterministic and knowable in advance; slippage is a distribution that widens in exactly the conditions your strategy is most likely to be trading. See slippage and impact cost.

costs.pypython
from dataclasses import dataclass @dataclass(frozen=True)class DerivativeCharges:    """Rates as fractions, not percentages. Verify against the exchange."""    stt_sell: float                 # 0.0005 futures, 0.0015 options    exchange_txn: float             # 0.0000173 futures, 0.000495 options    stamp_duty_buy: float           # 0.00002 futures, 0.00003 options    sebi_turnover: float = 0.000000025    gst: float = 0.18  def round_trip_cost(    buy_base: float,    sell_base: float,    charges: DerivativeCharges,    brokerage_per_order: float = 20.0,    orders: int = 2,) -> float:    """    buy_base / sell_base are the charge bases for each side:    notional turnover for futures, premium turnover for options.    Keeping them as separate arguments is what stops the caller from    quietly applying an options rate to a notional value.    """    stt = charges.stt_sell * sell_base    exchange = charges.exchange_txn * (buy_base + sell_base)    stamp = charges.stamp_duty_buy * buy_base    sebi = charges.sebi_turnover * (buy_base + sell_base)    brokerage = brokerage_per_order * orders     # GST applies to brokerage and the regulatory fees, not to STT or stamp duty.    gst = charges.gst * (brokerage + exchange + sebi)     return stt + exchange + stamp + sebi + brokerage + gst
A minimal cost model. Rates belong in configuration, not in the function body.

The uncomfortable conclusion

Cost structure is a constraint on strategy design, not a detail to be added at the end. It rules out entire categories of strategy for retail participants — anything whose per-trade edge is smaller than roughly 15 index points on futures, or a few percent of premium on options, is not viable regardless of how good the signal is.

The strategies that survive this arithmetic tend to share two properties: fewer trades with larger targets, and positions held long enough that the cost is small relative to the move. Automation is genuinely useful for those. It is not useful for turning a 5-point edge into a business.

Frequently asked questions

What is the STT rate on options in India?

From 1 April 2026, STT on the sale of an option is 0.15% of the premium, up from 0.10%. STT on an option that is exercised is 0.15% of the settlement value, up from 0.125%. STT applies to the sell side only. Rates change with each Finance Act, so verify against the NSE schedule before relying on them.

Why are options exchange charges so much higher than futures charges?

Because the base is different. The NSE exchange transaction charge on options is levied on premium turnover, while the futures charge is levied on notional turnover. The options rate is roughly 28 times the futures rate, but it applies to a much smaller number. On a normal-premium option the rupee amount is small; as a percentage of the premium being traded, it is significant.

How many Nifty points do I need to break even on an intraday futures trade?

Roughly 14 points per lot on a discount-brokerage plan at 2026 rates, on an ₹18 lakh notional. Before the April 2026 STT increase the same round trip broke even around 7 points lower. The exact figure depends on your notional value, brokerage plan and lot size, so compute it for your own instrument rather than using a rule of thumb.

Does GST apply to STT?

No. GST at 18% applies to brokerage, exchange transaction charges and SEBI turnover fees. It does not apply to STT or to stamp duty, which are themselves statutory levies.

How should I model trading costs in a backtest?

Compute notional turnover and premium turnover as separate quantities, apply sell-side-only charges such as STT and buy-side-only stamp duty asymmetrically, treat brokerage as a fixed amount per order rather than a percentage, and model slippage as a separate distribution. A single flat commission parameter cannot represent the Indian derivatives cost structure and will overstate the returns of any high-turnover strategy.

Primary sources

QuaTick Research

Markets & strategy desk

The research desk covers Indian market structure, derivatives mechanics and the regulatory changes that affect how systematic traders operate.

Backtesting Mistakes Specific to Indian Markets

The backtest errors that are specific to NSE and BSE data: expiry rollovers, corporate action adjustment, strike survivorship, circuit limits, and look-ahead bias that passes code review.

QuaTick Research11 min read

Slippage and Impact Cost on NSE

How slippage behaves on Indian instruments across the trading day, why averages are the wrong model, and a practical way to estimate impact cost before sizing an order.

QuaTick Engineering10 min read

Algo Trading in India: What It Actually Involves

A practical introduction to algorithmic trading in the Indian market: what counts as an algo, the four components of any automated setup, and the failure modes that show up first.

QuaTick Research10 min read