A 3-point win on one lot of Nifty options makes ₹195. Charges take about ₹63 of it, roughly a third, before you count slippage. Costs never arrive as one bill. They come in pieces, a bit in brokerage, a bit in tax, a bit in the spread, so they're easy to underestimate.
This guide adds up every piece for one ordinary trade, then shows what that does to a small edge over 100 trades. The example is a Nifty option because that's what my bot trades; the method works for any product. Rates were checked on Zerodha's charges page in September 2026.
The trade
- Buy one lot of Nifty call options: 65 units (use the current lot size for your contract).
- Buy at a premium of ₹100 per unit. Turnover on the buy side: ₹6,500.
- Sell at ₹103 per unit, a 3-point win. Turnover on the sell side: ₹6,695.
Gross profit: 3 points × 65 units = ₹195.
The charges, one by one
| Charge | Rate (Zerodha, F&O options) | On this trade |
|---|---|---|
| Brokerage | ₹20 per executed order, buy and sell | ₹40.00 |
| STT | 0.15% of the premium, sell side only | ₹10.04 |
| Exchange transaction charges (NSE) | 0.03553% of premium turnover, both sides | ₹4.69 |
| SEBI turnover fee | ₹10 per crore | ₹0.01 |
| Stamp duty | 0.003% of the buy side | ₹0.20 |
| GST | 18% on brokerage, exchange charges and SEBI fee | ₹8.04 |
| Total | ₹62.97 |
Rows are rounded to the paisa, so they add up to a paisa more than the unrounded total.
So a trade that made ₹195 before costs made about ₹132 after. The costs took roughly a third of the win. On a losing trade of the same size (a 3-point loss) the costs are almost the same, about ₹62, because most of the bill doesn't depend on whether you won.
Per unit, the round trip costs about ₹0.97 (₹0.96 on a flat trade), close to 1 point of a ₹100 premium. That's the hurdle: the trade has to move about a point in your favour just to break even, before slippage.
Then there's slippage
Slippage isn't on the contract note, so people forget it. It's the gap between the price your signal wanted and the price you got. On a Nifty option it comes from two places:
- The spread. You buy at the ask and sell at the bid. If the two are ₹0.50 apart, crossing it on both sides costs half a point each way at worst. On a fast morning, a rupee or two from the last traded price is common.
- Movement. Between your signal firing and the order filling, the price keeps moving, and on a breakout it moves in the direction you didn't want.
I don't have a measured slippage figure for my own trades. The column in my log that I first thought was slippage turned out to record signal latency, not fills, so I'm treating slippage here as an assumption. A half-point on each side, which is ₹0.50 on entry and ₹0.50 on exit, is a reasonable allowance for a liquid option in calm conditions. In fast markets or on thin contracts it can be far more.
How costs turn an edge into a loss
Here are three imaginary strategies. Each takes 100 trades on the ₹100 premium, one lot each. Costs are ₹62.60 per round trip, the cost of a flat trade (a 3-point winner costs ₹62.97 and a 3-point loser ₹62.22, so ₹62.60 is a fair middle). Slippage is the half-point-each-side assumption, which is 1 point or ₹65 a trade.
| Strategy | Gross result per trade | Gross over 100 trades | After costs | After costs and slippage |
|---|---|---|---|---|
| A: wins 55% of the time, ±3 points | +₹19.50 | +₹1,950 | −₹4,310 | −₹10,810 |
| B: wins 50%, wins are 4 points, losses 3 | +₹32.50 | +₹3,250 | −₹3,010 | −₹9,510 |
| C: wins 60%, wins are 2 points, losses 3 | ₹0 | ₹0 | −₹6,260 | −₹12,760 |
All three look fine, or even good, before costs. Strategy A wins more than half its trades. Strategy C wins 60% and feels wonderful, but it has no edge at all. All three lose money after costs, and that is before the market takes anything away.
The lesson isn't that these edges are bad. It's that the edge has to be measured net of costs, and that a gross edge of 1 or 2 points on a ₹100 premium, which sounds like a real edge, sits right inside the cost.
What raises or lowers the bill
The same calculation on other trade sizes, with no price change (a flat trade, so you see only the costs):
| Premium | 1 lot (65 units) | 2 lots | 4 lots |
|---|---|---|---|
| ₹50 | ₹54.90 (₹0.84 per unit, 1.7% of premium) | ₹62.60 | ₹77.99 |
| ₹100 | ₹62.60 (₹0.96 per unit, 1.0%) | ₹77.99 | ₹108.79 |
| ₹200 | ₹77.99 (₹1.20 per unit, 0.6%) | ₹108.79 | ₹170.37 |
Two patterns:
- Cheap options hurt most. The flat ₹40 brokerage is the same whether the premium is ₹50 or ₹200, so it eats a bigger share of a small trade.
- More lots lower the cost per unit because brokerage is flat per order. At ₹100, four lots cost about ₹0.42 per unit against ₹0.96 for one. Tax and exchange charges still scale with the trade's value.
Holding time matters too. A strategy that trades ten times a day pays the bill ten times.
What I do with this
I don't try to beat costs with cleverness. I make sure every result I look at is net of them:
- Costs go into every backtest and paper trade, on both legs. My guide to backtesting explains why.
- I look at the average win in points, not just percent. If the average win is under about 3 points of the premium, costs are a large share of it.
- I double the costs as a stress test. If the edge dies, it wasn't there.
- I treat slippage as unknown until measured. Record the price your signal wanted and the price you got, and check the field means what you think.
Sources
- Zerodha: brokerage calculator and charges
- Nifty lot size of 65 from the January 2026 series (Business Standard)
- The arithmetic in the tables is my own, using the rates listed above and rounding to the nearest paisa.
This guide explains trading costs with made-up example trades, for information only. It is not investment advice or a recommendation to trade any instrument. Rates change, so check current charges before you rely on them. I am not registered with SEBI as an investment adviser or research analyst.