Level 5 — MasteryIndian Market Specifics

Indian Market Specifics

90 minutes60 marksprintable — key stays hidden on paper

Subject: Stock-Market · Chapter: Indian Market Specifics Time Limit: 90 minutes · Total Marks: 60

Instructions: Answer all three questions. Show every computation step. Where code is requested, write clean, runnable Python. Use current Indian regulatory conventions (FY 2024-25) unless the question states otherwise. State all assumptions explicitly.


Question 1 — Full-Cost Transaction Engine (Build + Derive) [22 marks]

A trader executes the following on NSE in the equity delivery and equity intraday segments:

  • Trade A (Delivery): Buy 200 shares of RELIANCE at 2,450₹2{,}450, sell all 200 after 8 months at 2,690₹2{,}690.
  • Trade B (Intraday): Buy 500 shares of TCS at 3,800₹3{,}800, sell same day at 3,845₹3{,}845.

Charge conventions (FY 2024-25) you must apply:

  • STT: Delivery — 0.1%0.1\% on both buy and sell turnover. Intraday — 0.025%0.025\% on the sell side only.
  • Exchange transaction charge (NSE): 0.00297%0.00297\% of turnover (both legs).
  • SEBI turnover fee: 10₹10 per crore (i.e. 0.0001%0.0001\%) of turnover (both legs).
  • Stamp duty: Delivery — 0.015%0.015\% on buy side. Intraday — 0.003%0.003\% on buy side.
  • GST: 18%18\% on (brokerage + exchange transaction charge + SEBI fee).
  • Brokerage: Delivery — 0₹0. Intraday — 0.03%0.03\% per leg, capped at 20₹20 per executed order.

(a) Build a Python function trade_cost(buy_val, sell_val, segment) that returns a dict of every individual charge plus the total. Then invoke it for Trade A and Trade B. [10]

(b) Compute by hand the total charges for Trade B (intraday) to 0.01₹0.01 precision, showing each component. [6]

(c) Derive a symbolic expression for the break-even price move Δp\Delta p (per share, as a fraction of buy price pp) required for an intraday round trip on quantity qq to cover all costs, ignoring brokerage caps. State clearly which charges scale with turnover and which are fixed. [6]


Question 2 — Capital-Gains, Grandfathering & Dividend Optimisation (Prove + Compute) [20 marks]

An investor holds shares of INFY:

  • Bought 300 shares on 10-Jan-2017 at 950₹950.
  • Closing price on 31-Jan-2018 (grandfathering date) was 1,140₹1{,}140.
  • Sold all 300 on 20-Jun-2024 at 1,560₹1{,}560.
  • During holding, received a dividend of 18₹18/share once in FY 2023-24.

(a) State the LTCG grandfathering rule as an algorithm: given (actual cost CC, FMV on 31-Jan-2018 FF, sale price SS), define the cost of acquisition AA used for LTCG. Then prove that under this rule the taxable gain is always max(0,SC)\le \max(0, S-C) and max(0,SF)+max(0,FC)1[]\le \max(0, S-F) + \max(0, F-C)\cdot\mathbb{1}[\ldots] — i.e. show grandfathering never increases tax versus using actual cost. [7]

(b) Compute the LTCG for this sale, apply the 1.25₹1.25 lakh exemption (FY 2024-25) and the 12.5%12.5\% LTCG rate. Give the final tax. [7]

(c) The investor is in the 30%30\% slab. Explain the taxation of the 18₹18/share dividend and compute the tax on it. Then argue quantitatively whether it is tax-efficient to hold for dividends vs. sell before record date for capital gain, given the differing rates. [6]


Question 3 — F&O Business Income, Turnover, Audit & Ban Period (Cross-domain) [18 marks]

A trader runs an F&O book on NIFTY and BANKNIFTY weekly options for FY 2024-25. Aggregate results:

  • Sum of absolute profits across all F&O trades: 42,00,000₹42{,}00{,}000.
  • Sum of absolute losses across all F&O trades: 38,50,000₹38{,}50{,}000.
  • Total premium received on options written (sold): 6,00,000₹6{,}00{,}000.
  • Net actual profit for the year: 3,50,000₹3{,}50{,}000.

(a) Using the current ICAI-accepted method, compute the F&O trading turnover for tax purposes and state precisely which components enter it. Write a Python one-liner expression evaluating it. [6]

(b) Given the turnover from (a), determine whether a tax audit under Sec 44AB is triggered. State the turnover thresholds and the digital-transaction condition (95%95\% rule), and conclude. [6]

(c) A single stock (say XYZ) enters the F&O ban period. Explain the trigger (MWPL threshold), what positions are permitted during a ban, and the penalty for increasing OI. Separately, contrast this with a circuit filter and explain why index F&O (NIFTY/BANKNIFTY) never enters a stock-style ban. [6]


End of paper.

Answer keyMark scheme & solutions

Question 1

(a) Code [10]

def trade_cost(buy_val, sell_val, segment):
    seg = segment.lower()
    turnover = buy_val + sell_val
    if seg == "delivery":
        stt = 0.001 * buy_val + 0.001 * sell_val      # both legs
        stamp = 0.00015 * buy_val                      # buy only
        brokerage = 0.0
    elif seg == "intraday":
        stt = 0.00025 * sell_val                       # sell only
        stamp = 0.00003 * buy_val                      # buy only
        brokerage = min(0.0003 * buy_val, 20) + min(0.0003 * sell_val, 20)
    else:
        raise ValueError("segment must be delivery/intraday")
 
    exch = 0.0000297 * turnover                         # both legs
    sebi = 0.000001 * turnover                          # ₹10/crore
    gst  = 0.18 * (brokerage + exch + sebi)
 
    total = stt + stamp + brokerage + exch + sebi + gst
    return {"stt": round(stt,2), "stamp": round(stamp,2),
            "brokerage": round(brokerage,2), "exchange": round(exch,2),
            "sebi": round(sebi,2), "gst": round(gst,2),
            "total": round(total,2)}
 
# Trade A: buy 200*2450=490000, sell 200*2690=538000
print(trade_cost(490000, 538000, "delivery"))
# Trade B: buy 500*3800=1900000, sell 500*3845=1922500
print(trade_cost(1900000, 1922500, "intraday"))

Marks: correct STT logic per segment (2), stamp only on buy (1), brokerage cap logic (2), exchange+SEBI both legs (2), GST base excludes STT/stamp (2), correct invocation values (1).

Trade A values: buy =490000=490000, sell =538000=538000, turnover =1028000=1028000.

  • STT =0.001(490000+538000)=1028.00=0.001(490000+538000)=1028.00
  • Stamp =0.00015×490000=73.50=0.00015\times490000=73.50
  • Exch =0.0000297×1028000=30.53=0.0000297\times1028000=30.53
  • SEBI =0.000001×1028000=1.03=0.000001\times1028000=1.03
  • GST =0.18(0+30.53+1.03)=5.68=0.18(0+30.53+1.03)=5.68
  • Total 1138.74\approx ₹1138.74

(b) Trade B hand computation [6]

Buy =500×3800=1,900,000=500\times3800=1{,}900{,}000; Sell =500×3845=1,922,500=500\times3845=1{,}922{,}500; Turnover =3,822,500=3{,}822{,}500.

Charge Calculation Value
STT (sell only) 0.00025×19225000.00025\times1922500 480.625480.63480.625 \to 480.63
Stamp (buy) 0.00003×19000000.00003\times1900000 57.0057.00
Brokerage min(0.0003×1900000,20)+min(0.0003×1922500,20)=20+20\min(0.0003\times1900000,20)+\min(0.0003\times1922500,20)=20+20 40.0040.00
Exchange 0.0000297×38225000.0000297\times3822500 113.53113.53
SEBI 0.000001×38225000.000001\times3822500 3.823.82
GST 0.18(40+113.53+3.82)=0.18×157.350.18(40+113.53+3.82)=0.18\times157.35 28.3228.32
Total sum 723.30₹723.30

(1 mark each row; brokerage cap correctly hit both legs earns the key insight.)

(c) Break-even derivation [6]

Let buy price pp, quantity qq, sell price p(1+Δp)p(1+\Delta p). Turnover-scaling charges (fraction of turnover):

  • STT (sell): rate s=0.00025s=0.00025 on sell turnover.
  • Exchange e=0.0000297e=0.0000297, SEBI b=0.000001b=0.000001 on both legs.
  • Stamp d=0.00003d=0.00003 on buy only.
  • Brokerage (ignoring cap): k=0.0003k=0.0003 per leg.
  • GST g=0.18g=0.18 applied on (klegs+eturnover+bturnover)(k\cdot\text{legs} + e\cdot\text{turnover} + b\cdot\text{turnover}).

Gross P&L =qpΔp=q p\,\Delta p. Total costs (small Δp\Delta p, approximate both legs' turnover qp\approx qp):

Costqp[s+d+2k(1+g)+(e+b)2(1+g)]\text{Cost} \approx qp\big[ s + d + 2k(1+g) + (e+b)\cdot 2(1+g) \big]

Break-even requires gross \ge cost:

  Δps+d+2k(1+g)+2(e+b)(1+g)  \boxed{\;\Delta p \ge s + d + 2k(1+g) + 2(e+b)(1+g)\;}

Numerically: s=0.00025, d=0.00003, 2k(1+g)=2(0.0003)(1.18)=0.000708, 2(e+b)(1.18)=2(0.0000307)(1.18)=0.0000724s=0.00025,\ d=0.00003,\ 2k(1+g)=2(0.0003)(1.18)=0.000708,\ 2(e+b)(1.18)=2(0.0000307)(1.18)=0.0000724. Sum 0.001060.106%\approx 0.00106 \approx 0.106\%. (Fixed vs scaling: all listed scale with turnover; brokerage becomes fixed once cap binds, which is why large tickets break even on smaller moves.)

Marks: identify scaling charges (2), correct GST placement (2), assembled inequality (2).


Question 2

(a) Grandfathering rule + proof [7]

Algorithm for cost of acquisition AA (Sec 55(2)(ac)):

  1. Let F=min(F,S)F' = \min(F, S) — FMV capped at sale price.
  2. Then A=max(C,F)A = \max(C, F'). Taxable LTCG =SA= S - A (if >0>0).

Proof grandfathering never increases tax vs. actual cost: Gain under rule =SA=Smax(C,min(F,S))=S-A=S-\max(C,\min(F,S)). Since min(F,S)\min(F,S)\ge nothing forces A<CA<C: because A=max(C,F)CA=\max(C,F')\ge C, we have SASCS-A\le S-C. Hence taxable gain max(0,SC)\le \max(0,S-C). \blacksquare Also, when F>CF>C (price rose before 31-Jan-18), AFA\ge F' shelters the pre-2018 appreciation min(F,S)C\min(F,S)-C, so gain max(0,SF)\le\max(0,S-F) whenever S>FS>F. Thus the rule exempts gains accrued up to 31-Jan-2018.

Marks: correct 3-step AA (3), inequality ACA\ge C\Rightarrow gain SC\le S-C (2), grandfathering-exempts-pre-2018 argument (2).

(b) LTCG computation [7]

C=950, F=1140, S=1560C=950,\ F=1140,\ S=1560, qty =300=300.

  • F=min(1140,1560)=1140F'=\min(1140,1560)=1140
  • A=max(950,1140)=1140A=\max(950,1140)=1140 per share
  • Gain/share =15601140=420=1560-1140=420
  • Total LTCG =300×420=1,26,000=300\times420=₹1{,}26{,}000
  • Exemption 1,25,000₹1{,}25{,}000 ⇒ taxable =1,000=1{,}000
  • Tax =12.5%×1000=125=12.5\%\times1000=₹125 (plus cess 4%4\%130₹130).

Marks: correct A=1140A=1140 (2), gain 126000126000 (2), apply exemption (2), tax 125₹125/130₹130 (1). Holding >12>12 months on listed equity ⇒ LTCG confirmed.

(c) Dividend taxation [6]

Since FY 2020-21 dividends are taxed in the investor's hands at slab rate (DDT abolished). Dividend =300×18=5,400=300\times18=₹5{,}400; at 30%30\% (+cess) tax =1,620=₹1{,}620 (+cess 1685\approx ₹1685). TDS @10%@10\% (0₹0 here since <5000<₹5000 threshold is borderline; 5400>50005400>5000 so TDS =540=₹540 applies, adjustable).

Efficiency argument: Dividend income taxed at 30%30\% vs LTCG at 12.5%12.5\% (or STCG 20%20\%). A dividend of DD costs 0.30D0.30D in tax while the share price typically drops D\approx D ex-date. If instead sold before record date, that value realises as capital gain taxed at 12.5%12.5\% (long-term) — far lower. Hence for a high-slab investor realising as LTCG is more tax-efficient than receiving the dividend, by roughly (0.300.125)D=0.175×5400945(0.30-0.125)D=0.175\times5400\approx ₹945 saved. (Ignoring transaction costs and market timing.)

Marks: slab-rate rule + abolition of DDT (2), tax 1620₹1620 (2), quantitative efficiency comparison (2).


Question 3

(a) F&O turnover [6]

ICAI Guidance Note (current view): absolute profit method. Turnover = sum of absolute profits + sum of absolute losses. Premium on options sold is NOT separately added under the revised 2023 guidance (older method added it; state assumption).

T=42,00,000+38,50,000=80,50,000T = 42{,}00{,}000 + 38{,}50{,}000 = ₹80{,}50{,}000

Python: turnover = 4200000 + 38500008050000.

Marks: absolute-profit+absolute-loss method (3), value 80.5₹80.5 lakh (2), note premium excluded under revised guidance (1).

(b) Tax audit [6]

Sec 44AB thresholds (FY 2024-25):

  • Standard: turnover >1> ₹1 crore.
  • Enhanced 10₹10 crore limit if cash receipts and payments each 5%\le 5\% of totals (digital condition). F&O is fully digital, so 95%95\% rule satisfied ⇒ threshold 10₹10 crore applies.

Turnover 80.5₹80.5 lakh <1<₹1 crore <10<₹10 crore ⇒ no audit under 44AB on turnover. Caveat: If opting out of 44AD presumptive after previously using it, or if declaring profit <6%<6\% and total income exceeds basic exemption, 44AB(e) audit may apply. Here net profit 3.5₹3.5L on 80.5₹80.5L turnover =4.35%=4.35\% — below 6%6\%, so if not using presumptive and income >> exemption, audit could be required under 44AB(e). Conclusion: no turnover-based audit; check the 44AD/44AB(e) low-profit clause.

Marks: ₹1cr & ₹10cr thresholds (2), 95% digital rule (2), correct conclusion with 44AB(e) caveat (2).

(c) Ban period vs circuit filter [6]

F&O ban (MWPL): A stock enters ban when aggregate open interest (OI) across all F&O contracts exceeds 95% of Market-Wide Position Limit (MWPL). During ban, traders may only reduce/close existing positions — no new positions increasing OI. Penalty for increasing OI in ban: exchange penalty (typically 1% of increased position value, min ₹5000–₹1,00,000). Stock exits ban when OI falls below 80% MWPL. (Trigger 3, permitted-positions 1.)

Circuit filter: a price band (e.g. ±5/10/20%) halting trading in the underlying when price moves too far in a session — unrelated to OI; it protects against price manipulation/panic. (1)

Why index F&O never bans: Indices (NIFTY/BANKNIFTY) have no single-issuer MWPL — position limits are set per-client/market but there is no company-level free-float constraint, so the MWPL-based ban mechanism (designed to prevent cornering a stock) does not apply. (1)

[
  {"claim":"Trade B intraday total charges = 723.30",
   "code