You build a momentum strategy. Backtests on 5 years of daily close prices show beautiful 28% CAGR. You deploy it live. First month's actual returns: 5%. You haven't lost money | your signal still works. But between the signal and the money in your account, costs eat almost 23 percentage points of returns.

This isn't due to poor execution or bad luck. It's the cost stack. Every trade in India passes through multiple layers of taxation and fees. Your backtest assumed frictionless execution at the close price. Live execution happens in a real market | in a real order book | where you actually pay costs that don't appear in historical price data.

This module breaks down every single cost you pay, how to calculate them, and how to design strategies that account for them.

The Complete Indian Cost Stack

When you buy and sell ₹1,00,000 of equity on NSE in delivery mode, here's exactly what you pay:

Cost breakdown: ₹1,00,000 equity delivery buy + sell
Component
Amount
As % of ₹1L
STT (0.1% buy + 0.1% sell)
₹200
0.20%
Exchange charges (NSE ~0.00345%)
₹7
0.007%
SEBI turnover fees (₹10 per cr)
₹2
0.002%
Stamp duty (0.015% buy)
₹15
0.015%
Brokerage (₹20 flat or 0.3%)
₹20 to ₹300
0.02 to 0.30%
GST on charges (18%)
₹50
0.05%
Total explicit costs
₹294 to ₹574
0.29 to 0.57%

Let me break down each cost so you know exactly where your money goes:

STT | Securities Transaction Tax

STT is India's transaction tax. It's levied at different rates depending on the instrument and execution mode:

Example: You buy ₹1L of Reliance in delivery mode and sell it next week. STT = (₹1L × 0.1%) + (₹1L × 0.1%) = ₹200. This is unavoidable | it's embedded in every trade executed through NSE/BSE.

Exchange Transaction Charges

NSE charges a transaction fee for matching your order. For equity delivery, it's approximately 0.00345% of the transaction value. This varies by exchange and instrument.

On a ₹1L trade, NSE transaction charge ≈ ₹3.45. Seems small, but it adds up across hundreds of trades. On F&O, exchange charges are significantly higher (~0.053% for index futures) because the exchange needs to manage the derivatives clearing house.

SEBI Turnover Fee

SEBI (Securities and Exchange Board of India) charges ₹10 per crore of turnover to fund market surveillance and investor protection. On a ₹1L trade, that's ₹1. On a ₹1Cr portfolio rebalancing, that's ₹100. It's a minimal fee but still real.

Stamp Duty

Stamp duty is a state-level tax, capped at 0.015% on the buy side. Different states technically have different rates, but NSE/BSE exchanges cap it at 0.015%. On a ₹1L buy order, stamp duty = ₹15. It applies only to buy-side transactions, not sell-side.

Brokerage

This is what you pay your broker. It's highly variable:

For a systematic trader using a discount broker, brokerage is minimal. For a retail investor using a full-service broker, it's a major cost.

GST

GST (18%) is levied on brokerage, exchange charges, and clearing corporation fees. It's applied on top of other costs. On the ₹50 in exchange + SEBI + clearing charges, GST adds ~₹9. On ₹300 in brokerage (at 0.3%), GST adds ₹54.

GST compounds your cost stack. A broker charging 0.3% brokerage isn't really 0.3% | it's 0.3% + 18% GST = 0.354%.

The complete cost for a single round-trip equity delivery trade (buy + sell) on NSE: 0.29 to 0.57% depending on your brokerage model. At 0.4% average, a strategy making 10 round-trip trades per month across ₹10L capital = ₹40,000 in annual costs from explicit fees alone, before slippage.

Slippage: The Hidden Tax

Slippage is the difference between your expected execution price and the actual fill price. Unlike STT and brokerage, slippage doesn't appear on your statement. But it's real money leaving your pocket.

Why Backtests Show Higher Returns Than Live Trading

Your backtest uses daily close prices. Your signal fires at close on day 1. Your backtest assumes you execute at that close price. Live, you're competing for execution with thousands of other orders. The order book at close is thin. Your market order might fill at the close price, or it might not fill at all | forcing you to wait for next-day open.

Market open (9:15 AM) is chaos. All the overnight news hits. Algorithms from global markets are firing. Your ₹2L order to buy Nifty futures during opening auction faces a bid-ask spread that might be 50 paise wide instead of 5 paise. You wanted the opening price. You got ₹0.50 worse | 0.03% slippage on a single trade.

Over 200 trades per year, even 0.05% slippage per trade (seemingly negligible) compounds to 10% drag on returns.

Types of Slippage

Quantifying Slippage

Example: You want to buy ₹10L of Nifty futures. Current price: ₹25,000. You expect to fill at ₹25,000. Your market order hits the order book:

Your average fill price: ~₹25,003. Expected: ₹25,000. Slippage: ₹3 per contract = 0.012% on the trade value. Over 100 trades per year, that's -1.2% drag.

Rule of thumb for slippage: 0.05%-0.3% per trade depending on liquidity, order size, and timing. Liquid stocks (Nifty 50) on continuous session: 0.05%. Small-cap stocks or F&O: 0.1%-0.3%. Pre-open auction: 0.1%-0.5%.

Impact Cost: The NSE's Own Transparency

The NSE publishes something called impact cost quarterly for every Nifty 50 stock. Impact cost = what percentage worse than the mid-price does a ₹1L order fill at?

You can download NSE impact cost data from their website (search: "NSE impact cost"). Here's a sample:

These are buy impact costs. Sell impact costs are similar due to symmetry. For systematic traders, here's what matters:

When I First Ran Into Impact Cost

I was rebalancing a ₹25L small-cap portfolio quarterly. My backtest showed 24% CAGR. Live execution was showing 16% because each quarterly rebalance was hitting 1.5% to 2% impact cost across the portfolio. I was hitting 30 to 40 small-cap stocks, and each order was consuming significant order book depth.

The solution: Stagger execution across 2 weeks instead of 1 day. Let liquidity refresh. Use limit orders instead of market orders. Accept partial fills. The rebalanced returns improved to 19% | closer to backtest, though still below.

Practical insight

If your systematic strategy is designed on large positions and small-cap stocks, impact cost isn't a minor detail | it's your bottleneck. Strategies on Nifty 50 liquid stocks can ignore impact cost. Strategies on illiquid stocks must design execution into the strategy: rebalance frequency, order sizing, time-of-day effects.

Backtest vs Live: The Complete Waterfall

Here's how my 28% backtest CAGR became 19% live. Breaking down every cost layer:

Return Degradation
Backtest 28.0%
STT -2.0%
Other taxes -0.5%
Brokerage -0.3%
Slippage -2.5%
Impact cost -3.7%
Live result 19.0%
Breakdown by trade type
Nifty 50 long-only 0.3% total
Mid-cap rebalance 2.0% total
Small-cap rotation 6.7% total
Small-caps face 3-5x higher costs due to illiquidity. If you're not accounting for this in position sizing and rebalance frequency, costs will destroy your alpha.

Notice the asymmetry: STT is 2% (proportional to turnover). But slippage + impact cost is 6.2% (non-linear with order size and liquidity). The costs compound because they interact: illiquid stocks face both high slippage AND high impact cost.

Reducing Transaction Costs Systematically

You can't eliminate costs, but you can engineer them out of your strategy:

1. Rebalance Frequency Optimization

Rebalancing more often = more costs. But rebalancing less often = worse portfolio tracking. There's a sweet spot:

The question: Is the extra alpha from monthly rebalancing worth 0.2% in costs vs quarterly? If your signal alpha is 0.3% per month, monthly wins. If it's 0.05% per month, quarterly wins.

2. Limit Orders vs Market Orders

Market orders: Execute immediately but at worse prices (you pay the spread). Cost: 0.05% to 0.3% per trade depending on liquidity.

Limit orders: Execute at your price or not at all. Cost: you might miss fills, forcing you to overpay on the next execution.

Systematic traders use limit orders with a time buffer. Place a limit order 15 minutes before close at the mid-price. If it doesn't fill, it's a signal that you shouldn't execute at all | price moved against your model.

3. Time-of-Day Effects

Market liquidity varies throughout the day:

Rule: Execute large orders during mid-morning continuous session. Use closing auction limit orders only if your strategy specifically requires close-price execution.

4. Netting Trades Within Portfolio

If your portfolio rebalancing requires both buys and sells, you can net them. Instead of buying ₹50L (pay costs) and selling ₹40L (pay costs) separately, you can reduce net exposure by ₹40L and buy ₹10L net new. This cuts your transaction costs by cutting the number of orders.

5. Choosing the Right Broker for Your Strategy

Discount brokers (₹20 per order): Best for high-frequency traders making 10+ orders daily. Cost per order is negligible.

Full-service brokers (0.3% brokerage): Expensive. Only if you need research, margin, and advisory. Not suitable for systematic trading.

API-based platforms (₹0 to ₹5 per order): Best for systematic traders. You get direct market access, fast APIs, and low friction.

RupeeCase terminal: Built for systematic strategies. Transparent costs, API access, and cost-aware backtesting so your backtest assumptions match live execution.

The best cost reduction is design, not negotiation. You can't negotiate STT with SEBI. But you can design your strategy to minimize turnover, avoid small-cap liquidity traps, and execute during liquid hours. The cost reduction from smart execution design often exceeds 1% CAGR | more valuable than any brokerage discount.

Why I Wrote This

TK
Author's note
Why Backtests Lie (Not Really)

Every new systematic investor I meet has the same story. Their backtest looks incredible | 25%, 30%, 35% CAGR. Then they go live and the actual returns are 15%, 20%, 22%. They start blaming their broker, blaming the market, blaming bad luck. But the backtest didn't lie.

The backtest was built on clean data | daily closes with no friction. But the live market has friction everywhere. STT. Exchange charges. Slippage. Impact cost. Brokerage. Each one is small (0.1%-0.3%), but they compound across hundreds of trades into 5%-10% annual drag.

The worst part? Most traders don't realize they're paying it. They see the top-line returns (15% live vs 25% backtest) but don't trace where the 10% gap came from. They think their signal broke. It didn't. Their cost accounting was incomplete.

This module exists because understanding costs isn't a nice-to-have. It's foundational. Once you build cost awareness into your backtests (using RupeeCase or similar tools that include realistic costs), your live returns match your backtest returns | and you actually achieve your target alpha.

Tanmay Kurtkoti
Founder & CEO, RupeeCase
RupeeCase Terminal
Put this into practice
Build systematic strategies with realistic cost modelling | brokerage, STT, slippage, and impact cost calculated before every trade.
Try RupeeCase Terminal →

Knowledge Check | Module 10.2

0 correct · 0 answered
Passed!
3 correct from 3 questions. Well done.
Path 10: Strategy Implementation & Execution
2 of 6 complete
✓ 10.1 Market Microstructure 📍 10.2 Transaction Costs 10.3 → 10.6
Calculator

Total Trade Cost Calculator

Brokerage, STT, exchange charges, GST, SEBI fee, stamp duty and DP charge on a single delivery trade. Excludes slippage and impact cost.

Quick check, Module 10.2

3 questions. Get 2 right to mark this module complete.

0 of 3 answered
Up next, Module 10.3
Systematic Execution in India: APIs, Algos & SEBI Rules
How to execute large systematic strategies on NSE without hitting circuit limits, using SEBI-approved algos, managing the cost stack through execution design, and building scalable infrastructure.
Continue →
PRACTICE WHAT YOU LEARNED
Try systematic strategies on RupeeCase | free paper trading.
Get Started Free →