Markets: A Rigorous Course

1.7 Transaction costs: the algebra

Core about 25 min

Motivation

Charges are the one part of trading P&L you know in advance. For a long-horizon investor they are a rounding error. For an intraday trader they are often larger than the edge. SEBI's FY23 intraday study found that loss-making traders paid trading costs equal to a further 57% of their trading losses (1.11).

1.7.1Statutory and broker charges#

The charge stack (NSE; rates as of 6 Nov 2026) Sources: STT from the Finance Act, 2026 schedule as set out in NSE circular NSE/FATAX/73524 of 31 Mar 2026 (https://nsearchives.nseindia.com/content/circulars/FATAX73524.pdf); exchange charges from NSE circular NSE/FA/73061 of 27 Feb 2026, effective 1 Mar 2026 (https://nsearchives.nseindia.com/content/circulars/FA73061.pdf); SEBI fee from the SEBI (Payment of Fees) (Amendment) Regulations, 2019; stamp duty from the Indian Stamp Act, 1899 as amended by the Finance Act, 2019 (verify with the exchange); all fetched or checked 2026-11-06. Brokerage is broker-specific: the table uses a typical discount-broker fee, ₹20 or 0.03% per executed order, whichever is lower. Set your own. The rest are statutory or exchange charges that every broker passes through.

Charge Equity delivery Equity intraday Futures Options
Brokerage (typical discount broker; set your own) ₹0 (assumed) min(0.03%, ₹20) per executed order min(0.03%, ₹20) ₹20 flat per order
STT (securities transaction tax) 0.1% on buy and sell 0.025% on sell 0.05% on sell 0.15% of premium on sell; 0.15% of intrinsic value on exercise
Exchange transaction charge (NSE) 0.00307% 0.00307% 0.00183% 0.03553% of premium
SEBI turnover fee ₹10 per crore ₹10 per crore ₹10 per crore ₹10 per crore
Stamp duty (buy side only) 0.015% 0.003% 0.002% 0.003%
GST 18% on (brokerage + exchange charge + SEBI fee) same same same
DP charge (on sell, per scrip per day; typical, set your own) ₹15.34 (₹3.50 depository + ₹9.50 broker + GST) – – –

The STT increase of 1 Apr 2026 The Union Budget of 1 Feb 2026 raised STT on futures from 0.02% to 0.05% of the sell value, on option premium from 0.1% to 0.15%, and on exercised options from 0.125% to 0.15% of intrinsic value, effective 1 Apr 2026 (Finance Act, 2026, assented 30 Mar 2026, amending section 98 of the Finance (No. 2) Act, 2004; NSE circular NSE/FATAX/73524 of 31 Mar 2026 sets out the old and new rates, including the old exercise rate of 0.125%, and notes that STT on an exercised option is paid by the purchaser). Delivery and intraday equity STT were unchanged. An earlier increase took effect on 1 Oct 2024 (futures 0.0125% → 0.02%, options 0.0625% → 0.1%; Finance (No. 2) Act, 2024, as set out in NSE circular NSE/FATAX/63809 of 9 Sep 2024).

The rates in the tests of Exercise m01_costs_tax (file tests/test_m01_costs_tax.py) are illustrative (they use the pre-April-2026 STT and slightly older exchange charges) and exist only to grade the arithmetic. Your m01_costs_tax.trade_costs takes rates as a parameter precisely so that you can plug in the table above.

1.7.2The break-even move#

Setup

A round trip buys quantity QQ at price PP (buy value B=PQB = PQ) and sells at P+ΔP + \Delta (sell value S=(P+Δ)QS = (P+\Delta)Q). Write g=0.18g = 0.18 for GST, ee for the exchange charge rate, ϕ=10−6\phi = 10^{-6} for the SEBI fee (₹10 per ₹1 crore =107= 10^7), σb,σs\sigma_b, \sigma_s for STT on the buy and sell side, δ\delta for stamp duty (buy side), and suppose brokerage is a flat FF per order (the cap binds; below the cap brokerage is proportional and joins the rates below). Then the total charge is

C=2F(1+g)⏟K+(σb+δ+(e+ϕ)(1+g))⏟α B+(σs+(e+ϕ)(1+g))⏟β S.(1.3)C = \underbrace{2F(1+g)}_{K} + \underbrace{\big(\sigma_b + \delta + (e+\phi)(1+g)\big)}_{\alpha}\,B + \underbrace{\big(\sigma_s + (e+\phi)(1+g)\big)}_{\beta}\,S. \tag{1.3}

KK is the fixed cost per round trip, α\alpha the proportional rate on the buy leg and β\beta on the sell leg.

Proposition 1.2break-even move

For a long round trip with fixed cost KK and proportional rates α,β\alpha, \beta as in (1.3), the price rise per share needed for zero net profit is

Δ∗=K/Q+(α+β)P1−β,Δ∗P=α+β1−β+K(1−β) PQ.(1.4)\Delta^* = \frac{K/Q + (\alpha + \beta) P}{1 - \beta}, \qquad \frac{\Delta^*}{P} = \frac{\alpha+\beta}{1-\beta} + \frac{K}{(1-\beta)\,PQ}. \tag{1.4}

If the trade also crosses a quoted spread ss (buy at the ask, sell at the bid, with PP the mid), the break-even rise of the mid is Δ∗+s\Delta^* + s to first order.

Proof

Net profit is Π(Δ)=(P+Δ)Q−PQ−C=ΔQ−K−αPQ−β(P+Δ)Q\Pi(\Delta) = (P+\Delta)Q - PQ - C = \Delta Q - K - \alpha PQ - \beta(P+\Delta)Q. This is affine in Δ\Delta with slope Q(1−β)>0Q(1-\beta) > 0 because β<1\beta < 1. Setting Π=0\Pi = 0 gives ΔQ(1−β)=K+(α+β)PQ\Delta Q(1-\beta) = K + (\alpha+\beta)PQ, which is (1.4). For the spread: buying at P+s/2P + s/2 and selling at P+Δm−s/2P + \Delta_m - s/2, where Δm\Delta_m is the mid move, gives a realised price change of Δm−s\Delta_m - s; setting it equal to Δ∗\Delta^* (computed at the slightly higher buy price, a second-order difference) gives Δm=Δ∗+s\Delta_m = \Delta^* + s.∎

Two regimes follow from (1.4). For small tickets, K/(PQ)K/(PQ) dominates and the break-even in percentage terms falls like 1/notional1/\text{notional}. For large tickets it tends to the floor (α+β)/(1−β)(\alpha+\beta)/(1-\beta), set by STT and exchange charges. Under the 0.03% brokerage rule, the ₹20 cap binds once an order exceeds ₹20/0.0003 ≈ ₹66,667; below that, brokerage is proportional and simply adds 0.0003(1+g)0.0003(1+g) to both α\alpha and β\beta.

1.7.3Four worked round trips#

Worked example 1intraday, current rates

Buy and sell ₹1,00,000 of a stock intraday on NSE through a ₹20-cap broker.

  • Brokerage: ₹20 + ₹20 = ₹40.
  • STT: 0.025% × 1,00,000 = ₹25.
  • Exchange: 0.00307% × 2,00,000 = ₹6.14.
  • SEBI fee: ₹0.20.
  • Stamp: 0.003% × 1,00,000 = ₹3.00.
  • GST: 18% × (40 + 6.14 + 0.20) = ₹8.34.
  • Total ₹82.68, i.e. 8.27 bp of the buy value.

With α=0.00003+1.18(0.0000307+0.000001)=0.0000674\alpha = 0.00003 + 1.18(0.0000307 + 0.000001) = 0.0000674, β=0.00025+1.18(0.0000317)=0.0002874\beta = 0.00025 + 1.18(0.0000317) = 0.0002874 and K=47.2K = 47.2, formula (1.4) for a ₹1,500 stock gives:

Ticket K/(PQ)K/(PQ) (α+β)/(1−β)(\alpha+\beta)/(1-\beta) Break-even Δ∗/P\Delta^*/P Δ∗\Delta^* per share
100 shares (₹1.5 lakh) 3.15 bp 3.55 bp 6.70 bp ₹1.00
1,000 shares (₹15 lakh) 0.31 bp 3.55 bp 3.86 bp ₹0.58

Add the spread. A one-tick spread of ₹0.10 on a ₹1,500 stock is 0.67 bp; on a thin mid-cap with a ₹1 spread on ₹500 it is 20 bp, which dwarfs the statutory charges.

Worked example 2delivery

Buy and sell ₹1,00,000 for delivery at zero brokerage: STT ₹200 (0.1% each side), exchange ₹6.14, SEBI ₹0.20, stamp ₹15, GST ₹1.14, total ₹222.48, plus a DP charge of ₹15.34 on the sale: ₹237.82, about 24 bp. Delivery round trips cost about three times an intraday round trip of the same size, almost entirely because of STT. The break-even for 100 shares at ₹1,500 is ₹3.34 per share (22.3 bp) before the DP charge.

Worked example 3Nifty futures, post-April-2026 STT

One lot of 65 at 25,000 (notional ₹16.25 lakh), bought and sold flat: brokerage ₹40, STT 0.05% × 16.25 lakh = ₹812.50, exchange ₹59.48, SEBI ₹3.25, stamp ₹32.50, GST ₹18.49: ₹966.22, 5.95 bp, i.e. a break-even of 14.9 index points. Under the pre-October-2024 STT of 0.0125% the STT line would have been ₹203, about a quarter.

Worked example 4Nifty option

One lot of 65, bought at ₹100 and sold at ₹120 (premium turnover ₹14,300, gross profit ₹1,300): brokerage ₹40, STT 0.15% × 7,800 = ₹11.70, exchange ₹5.08, SEBI ₹0.01, stamp ₹0.20, GST ₹8.12: ₹65.11, 5% of the gross profit. As a fraction of the premium paid it is 100 bp. On a ₹10 premium the flat ₹40 brokerage alone is 6% of the premium. Options are cheap to enter in rupees and expensive in percentage terms.

Code Exercise m01_costs_tax (in the app: Exercises → m01_costs_tax) implements trade_costs and breakeven_move. The test checks that your root-finder solution satisfies Δ∗Q=C\Delta^* Q = C exactly; Problem 1.6 asks you to check it against the closed form (1.4). The round_trip_bps function of Exercise m01_execution adds the spread. From a terminal: cd exercises && .venv/bin/python -m pytest modules/M01-market-structure/tests.

Practitioner notes

  • Statutory charges are now a larger share of F&O costs than before. SEBI's FY26 study puts aggregate transaction costs of individual F&O traders at about ₹25,000 crore in FY26, with brokerage about 44% and STT about 27% (SEBI FY26 study as reported by summaries; 1.11 Case 1).
  • STT is charged on the sell side for intraday, futures and options, so a short trade (sell first, buy back) pays STT on the opening leg. Stamp duty is on the buy leg. Problem 1.5 works out the short-side break-even.
  • An option bought and held to expiry in-the-money is exercised and pays STT at 0.15% of intrinsic value, which for deep ITM index options can exceed the cost of selling the option before expiry.
  • Costs are not the only friction. Market impact (M05 · 5.5) is the cost you do not see on the contract note.
  • Commodity derivatives on MCX fit (1.3) with their own rates (as of 6 Nov 2026): Commodities Transaction Tax (CTT) of 0.01% on the sell side of non-agricultural futures and 0.05% of premium on the sale of options (Finance Act, 2013, Chapter VII, s.117, as substituted by the Finance Act, 2020), MCX transaction charges of ₹2.10 per lakh of futures turnover and ₹41.80 per lakh of option premium (MCX circular MCX/F&A/631/2024), the SEBI fee, stamp duty of 0.002% on futures and 0.003% on option premium on the buy side, and GST on brokerage, exchange charges and the SEBI fee. M10 · 10.14 tabulates them with their sources and works a gold-mini and a silver round trip; profits are non-speculative business income, as for equity F&O (1.8, M00 · 0.7).

Create a free account

Reading is open to everyone. An account keeps your progress, answers, notes and code drafts, and gives you the study plan, the journals and the simulator. Running code needs an account approved for it.