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:
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:
- Equity delivery: 0.1% on both buy and sell side = 0.2% round-trip. This is the big one for equity traders.
- Equity intraday: 0.025% on the sell side only. So if you buy and sell on the same day, you pay 0.025% of the sell value.
- F&O (futures and options): 0.0125% on the sell side for futures. For options, 0.05% of the option premium.
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:
- Discount brokers: ₹20 flat per order (regardless of size) or ₹0 for high-volume traders.
- Full-service brokers: 0.3% of transaction value | expensive but include research, advisory, and margin facilities.
- Systematic traders on platforms like RupeeCase: Typically ₹0 to ₹20 per order, sometimes ₹0 for APIs.
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
- Market impact slippage: Your order exhausts the available liquidity at the best price levels, forcing you to buy from worse price levels. Proportional to order size and inversely proportional to market liquidity.
- Timing slippage: The time between your signal and execution. During pre-open, market open, or closing auction, price moves against you simply due to delay in placement or matching.
- Opportunity cost slippage: Your order fails to fill during the intended session (price gaps past your limit order), forcing you to re-execute next session at worse prices.
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:
- First 500 contracts available at ₹25,000 (buy them)
- Next 300 contracts at ₹25,005 (buy them)
- Next 200 contracts at ₹25,010 (buy them to complete your order)
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:
- Reliance: Impact cost for ₹1L buy = 0.008%. (Very liquid, massive order book depth)
- Infosys: Impact cost for ₹1L buy = 0.012%.
- Axis Bank: Impact cost for ₹1L buy = 0.015%.
These are buy impact costs. Sell impact costs are similar due to symmetry. For systematic traders, here's what matters:
- If your order size = ₹1L: Use NSE impact cost directly.
- If your order size = ₹10L (10x larger): Estimate impact cost as ~0.02% to 0.05% (scales non-linearly; larger orders face worse impact).
- For stocks not in Nifty 50 (mid-caps, small-caps): Impact cost can be 10x higher. A ₹1L order on a small-cap stock might face 0.1% to 0.3% impact cost due to sparse liquidity.
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.
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:
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:
- Daily rebalancing: 250 trades/year × 0.4% cost = 1% annual drag. Only viable if your alpha is >2% annually.
- Monthly rebalancing: 50 trades/year × 0.4% cost = 0.2% annual drag. Standard for systematic equity strategies.
- Quarterly rebalancing: 12 trades/year × 0.4% cost = 0.05% annual drag. Used for low-turnover factor strategies.
- Semi-annual rebalancing: 6 trades/year × 0.4% cost = 0.02% annual drag. Used for very passive strategies.
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:
- Opening auction (9:00 to 9:15): Illiquid, high spreads, high slippage. Avoid if possible.
- Mid-morning (10:00 to 11:30): Good liquidity, tight spreads. Best time to execute large orders.
- Lunch period (11:30 to 13:00): Liquidity drops slightly. Avoid for very large orders.
- Closing auction (15:40 to 16:00): Illiquid for market orders, but if your signal is time-sensitive to close price, you must use limit orders in the auction.
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
Knowledge Check | Module 10.2
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.