Level 5 — MasteryWhat Markets Are

What Markets Are

90 minutes60 marksprintable — key stays hidden on paper

Level 5 — Mastery Examination

Time Limit: 90 minutes Total Marks: 60 Instructions: Answer all questions. Show all working, derivations, and code logic. Use ...... for inline math and ...... for displayed equations. Where code is requested, pseudocode or Python is acceptable but logic must be complete and correct.


Question 1 — Liquidity, Spread & Price Discovery (24 marks)

A stock INFY trades on the NSE with the following top-of-book limit order data at time t0t_0:

Side Price (₹) Quantity
Ask 2 1502.00 400
Ask 1 1501.00 300
Bid 1 1499.00 500
Bid 2 1498.00 600

(a) Define the bid–ask spread and compute both the absolute spread and the spread as a fraction of the mid-price (in basis points, where 1 bp = 0.01%). Explain in the context of price discovery why a tighter spread signals a more liquid and more informationally efficient market. (6)

(b) A market buy order for 550 shares arrives and executes against the ask side (walking the book). Compute the volume-weighted average execution price (VWAP) and the implementation shortfall (in ₹ and in bps) measured against the pre-trade mid-price. (7)

(c) Model liquidity depth as a linear price-impact function P(q)=P0+λqP(q) = P_0 + \lambda q, where P0P_0 is the mid-price, qq is signed order size (positive = buy), and λ\lambda is Kyle's lambda (₹ per share). Using the two ask levels, estimate λ\lambda from the marginal price change per marginal share consumed, then predict the execution price of the last share in a 700-share buy order. State one physical/economic assumption this linear model breaks under. (6)

(d) Write a Python function walk_book(order_qty, book) that returns the VWAP for a buy market order given an ascending list of (price, qty) ask levels, correctly handling partial fills and insufficient liquidity (return None if book is exhausted). (5)


Question 2 — Market Capitalization, Cap Buckets & Global Time Zones (20 marks)

(a) Define market capitalization and derive the relationship between a cap-weighted index level and constituent prices. Given the SEBI-style classification (Large: rank 1–100, Mid: 101–250, Small: 251+ by market cap), classify each company and justify: (8)

Company Price (₹) Shares Outstanding
A 3000 900,000,000
B 250 400,000,000
C 45 120,000,000

Compute each market cap in ₹ crore. Then state which qualitative bucket (large/mid/small/micro) each likely falls in given typical Indian thresholds (Large \gtrsim ₹20,000 cr, Mid ₹5,000–20,000 cr, Small ₹500–5,000 cr, Micro << ₹500 cr).

(b) A trader in India (IST, UTC+5:30) wants to arbitrage between NSE (09:15–15:30 IST) and NYSE (09:30–16:00 ET, UTC−5:00 standard). Compute the overlap window (if any) during which both exchanges are simultaneously open, expressed in IST. Show the time-zone conversion arithmetic. (7)

(c) Explain why market cap, not share price alone, determines a company's "size," using companies A and C above as a numerical counterexample to the naive claim "higher price = bigger company." (5)


Question 3 — Market Regimes & Exchange Structure (16 marks)

(a) Formally define bull, bear, and sideways markets using a quantitative threshold on the peak-to-trough (or trough-to-peak) percentage move. A conventional definition uses a ±20%\pm 20\% move from a recent extreme. Given the index closing series below, classify the regime of the final point relative to the series peak: (6)

{1000,1150,1200,1080,990,950}\{1000, 1150, 1200, 1080, 990, 950\}

Show the drawdown computation from the peak.

(b) Contrast a stock exchange with an OTC market across at least four dimensions (counterparty, transparency, standardization, price formation). Then explain, using the concept of central limit order book, why exchange-traded markets typically achieve better price discovery than dealer OTC markets. (6)

(c) Define a ticker symbol and scrip code, and explain the functional difference in how NSE (symbol-based) and BSE (numeric scrip code) identify the same security. Why does a machine-readable unique identifier matter for automated trading? (4)

Answer keyMark scheme & solutions

Question 1

(a) Spread & price discovery (6)

  • Definition (1): Bid–ask spread = lowest ask − highest bid = best price a buyer pays minus best price a seller receives.
  • Absolute spread (1): 1501.001499.00=2.001501.00 - 1499.00 = ₹2.00.
  • Mid-price (1): 1501+14992=1500.00\frac{1501+1499}{2} = ₹1500.00.
  • Spread in bps (1): 2.001500.00×10000=13.33\frac{2.00}{1500.00} \times 10000 = 13.33 bps.
  • Interpretation (2): A tighter spread means the marginal cost of immediacy is low → high liquidity. It also means the market's best buyers and sellers agree closely on value, so the mid-price reflects consensus information tightly (efficient price discovery). Wide spreads signal uncertainty/thin depth/adverse-selection risk.

(b) VWAP & implementation shortfall (7)

  • Order = 550 shares. Ask 1 supplies 300 @ 1501, Ask 2 supplies remaining 250 @ 1502. (2 for correct fill split)
  • Cost =300(1501)+250(1502)=450300+375500=825800= 300(1501) + 250(1502) = 450300 + 375500 = 825800. (1)
  • VWAP =825800/550=1501.4545...= 825800 / 550 = ₹1501.4545...₹1501.45. (2)
  • Implementation shortfall vs mid (1500): 1501.45451500=1.45451501.4545 - 1500 = ₹1.4545 per share; total =1.4545×550=800= 1.4545 \times 550 = ₹800. (1)
  • In bps: 1.45451500×10000=9.70\frac{1.4545}{1500}\times10000 = 9.70 bps. (1)

(c) Kyle's lambda (6)

  • Marginal price moved from 1501 (first 300 shares) to 1502 (next 400). The incremental price jump per share as depth is consumed: over the ask side, price rises ₹1 across the 300→700 cumulative boundary.
  • Estimate λ\lambda = Δprice / Δquantity using level spacing: λ=15021501shares to move one level\lambda = \dfrac{1502-1501}{ \text{shares to move one level}} . Taking the shares consumed to move from level-1 exhaustion (300) to next tick = 400-share layer: a reasonable estimate λ1400=0.0025\lambda \approx \dfrac{1}{400} = ₹0.0025/share. (2) (Accept λ1/350\lambda \approx 1/350 using average depth ≈ ₹0.00286; state method.)
  • Predict last (700th) share of a 700-share buy: 700 exactly exhausts both levels (300+400), so the last share fills at ₹1502 (the marginal price). Using linear model P(700)=1500+λ(700)P(700) = 1500 + \lambda(700): with λ=0.0025\lambda=0.0025, P=1500+1.75=1501.75P = 1500 + 1.75 = ₹1501.75 — note the model underestimates discrete book price (1502). (2)
  • Assumption that breaks (2): Linearity assumes continuous, uniform depth. Real books are discrete/lumpy (finite tick sizes, uneven level sizes), and impact is often concave (square-root law) for large orders; also liquidity replenishes over time. Any one valid point earns marks.

(d) walk_book function (5)

def walk_book(order_qty, book):
    # book: ascending list of (price, qty) ask levels
    remaining = order_qty
    cost = 0.0
    for price, qty in book:
        take = min(remaining, qty)
        cost += take * price
        remaining -= take
        if remaining == 0:
            return cost / order_qty      # VWAP
    return None                          # book exhausted, unfilled qty remains
  • Correct min() partial fill (2), cost accumulation (1), VWAP return (1), None on exhaustion (1).

Question 2

(a) Market cap & classification (8)

  • Definition (1): Market cap = share price × shares outstanding = total equity value at market prices.
  • Index relation (1): Cap-weighted index IiPiNiI \propto \sum_i P_i N_i (divisor-adjusted); each stock's weight =PiNiPjNj= \frac{P_i N_i}{\sum P_j N_j}.
  • Computations (1 each = 3):
    • A: 3000×9×108=2.7×10123000 \times 9\times10^8 = 2.7\times10^{12} ₹ = ₹270,000 cr.
    • B: 250×4×108=1.0×1011250 \times 4\times10^8 = 1.0\times10^{11} ₹ = ₹10,000 cr.
    • C: 45×1.2×108=5.4×10945 \times 1.2\times10^8 = 5.4\times10^9 ₹ = ₹540 cr.
    • (₹1 crore = ₹10710^7.)
  • Buckets (3): A ≈ ₹270,000 cr → Large cap; B = ₹10,000 cr → Mid cap; C = ₹540 cr → Small cap (just above micro threshold).

(b) Time-zone overlap (7)

  • NYSE open 09:30 ET, close 16:00 ET; ET (standard) = UTC−5, IST = UTC+5:30 → IST is 10:30 ahead of ET. (2)
  • NYSE open in IST: 09:30+10:30=20:0009:30 + 10:30 = 20:00 IST; close: 16:00+10:30=02:3016:00 + 10:30 = 02:30 IST (next day). (2)
  • NSE open 09:15–15:30 IST. (1)
  • Overlap of [20:00, 02:30 IST] and [09:15, 15:30 IST]: no overlap — NSE closes at 15:30, NYSE opens at 20:00 IST. Overlap window = ∅ (zero minutes). (2)

(c) Price ≠ size (5)

  • A has price ₹3000, C has price ₹45 → naively "A is 66.7× bigger." (1)
  • But size = cap: A = ₹270,000 cr vs C = ₹540 cr → A is 500× larger, not 66.7×. (2)
  • Share price depends on how equity is sliced (shares outstanding); a low-priced stock with billions of shares can exceed a high-priced stock with few shares. Only P×NP\times N measures true size. (2)

Question 3

(a) Regime classification (6)

  • Series peak = 1200 (index 3). (1)
  • Final value = 950. Drawdown =12009501200=2501200=0.2083=20.83%= \frac{1200-950}{1200} = \frac{250}{1200} = 0.2083 = 20.83\%. (2)
  • Since decline from peak > 20%, final point is in a bear market. (2)
  • Note the early leg 1000→1200 = +20% was a bull run; regime flipped after the peak. (1)

(b) Exchange vs OTC (6)

  • Four dimensions (1 each, up to 4): Counterparty — exchange uses central clearing/CCP (anonymous); OTC = bilateral, direct counterparty risk. Transparency — exchange has public order book/prices; OTC opaque/quote-driven. Standardization — exchange contracts standardized; OTC customized. Price formation — exchange = continuous auction; OTC = dealer quotes/negotiation.
  • CLOB argument (2): A central limit order book aggregates all buy/sell interest at one venue, so the best bid/ask reflects the whole market's supply–demand; competition among many participants narrows spreads and produces a single transparent consensus price → superior discovery vs fragmented dealer quotes.

(c) Ticker vs scrip code (4)

  • Ticker symbol (1): short alphabetic identifier (e.g., INFY on NSE). Scrip code (1): BSE numeric code (e.g., 500209 for Infosys) — same security, different ID scheme.
  • Why unique IDs matter (2): Automated/algo systems need unambiguous machine-readable keys to route orders, avoid name collisions, and reconcile the same security across venues; numeric/symbolic uniqueness prevents mis-trades.

[
  {"claim":"Mid-price is 1500 and spread is 13.333 bps","code":"bid=1499; ask=1501; mid=(bid+ask)/2; spread_bps=(ask-bid)/mid*10000; result = (mid==1500) and (abs(spread_bps-13.3333)<0.01)"},
  {"claim":"VWAP for 550-share buy is 1501.4545","code":"cost=300*1501+250*1502; vwap=Rational(cost,550); result = abs(float(vwap)-1501.4545)<0.001"},
  {"claim":"Implementation shortfall vs mid 1500 is 800 rupees total and 9.697 bps","code":"vwap=Rational(300*1501+250*1502,550); mid=1500; total=(vwap-mid)*550; bps=(vwap-mid)/mid*10000; result = (total==800) and (abs(float(bps)-9.697)<0.01)"},
  {"claim":"Market caps: A=270000cr, B=10000cr, C=540cr","code":"A=3000*900000000/10**7; B=250*400000000/10**7; C=45*120000000/10**7; result = (A==270000) and (B==10000) and (C==540)"},
  {"claim":"Peak drawdown of final point is 20.83% (bear market)","code":"series=[1000,1150,1200,1080,990,950]; peak=max(series); dd=(peak-series[-1])/peak; result = (abs(float(dd)-0.208333)<0.001) and (dd>Rational(20,100))"},
  {"claim":"NSE(9:15-15:30 IST) and NYSE(20:00-02:30 IST) do not overlap","code":"nse=(9*60+15, 15*60+30); nyse=(20*60, 24*60+2*60+30); overlap=max(0, min(nse[1],nyse[1])-max(nse[0],nyse[0])); result = (overlap==0)"}
]