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.
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.
Charge
Futures
Options
Levied on
Securities Transaction Tax (STT)
0.05%
0.15%
Sell side only. Futures on traded value; options on premium
STT on exercised options
—
0.15%
Settlement value, on exercise
Exchange transaction charge
0.00173%
0.0495%
Both sides. Futures on turnover; options on premium
GST
18%
18%
On brokerage + transaction charges + SEBI fees
Stamp duty
0.002%
0.003%
Buy side only
SEBI turnover fee
per-crore levy
per-crore levy
Both sides, on turnover
Brokerage
Broker-specific
Broker-specific
Per 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.
Transaction
Until 31 Mar 2026
From 1 Apr 2026
Change
Sale of a futures contract
0.02%
0.05%
+150%
Sale of an option (on premium)
0.10%
0.15%
+50%
Sale of an option, exercised
0.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,000STT (sell side only) 0.05% × 18,00,000 ₹900.00Exchange transaction charge 0.00173% × 36,00,000 ₹62.28Brokerage ₹20 × 2 orders ₹40.00SEBI turnover fee per-crore levy on ₹36,00,000 ~₹1.00GST @ 18% 0.18 × (40.00 + 62.28 + 1.00) ₹18.59Stamp duty (buy side only) 0.002% × 18,00,000 ₹36.00 ──────────Total cost per round trip ₹1,057.87Nifty 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.
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.18def 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.