Market Participants
Chapter: 1.4 Market Participants Difficulty: Level 5 — Mastery (cross-domain: finance + math + coding + proof) Time Limit: 90 minutes Total Marks: 60
Instructions: Answer all three questions. Show every step. Where code is required, write clean Python (pseudocode acceptable if logic is exact). Justify all financial-institutional claims with reasoning, not assertion.
Question 1 — Market Makers, Spreads & Inventory Risk (22 marks)
A market maker (MM) on an exchange continuously quotes a bid and ask for a stock whose "true" mid-price is . The MM sets symmetric quotes , where is the half-spread.
Order flow arrives as a Poisson process. The probability that a buy (or sell) market order executes against the MM's quote in a short interval decays with the half-spread as per side, with constants , .
(a) The MM's expected gross revenue rate from the round-trip spread is proportional to . Derive the half-spread that maximises this revenue rate. Prove it is a maximum. (6)
(b) Now include inventory risk: holding unmatched inventory costs the MM at rate (tighter spreads → faster fills → less inventory drift, hence the inverse dependence). The net objective is Set up the first-order condition for the optimal . Show it reduces to a transcendental equation and explain why no closed-form solution exists. (6)
(c) Write a Python routine using Newton–Raphson to solve part (b) numerically for , , . Include the derivative used and a stopping criterion. State the economic meaning of your root. (6)
(d) Explain, in institutional terms, why market makers are essential to the "immediacy" of a market, and how their function differs from that of a broker and a proprietary trading firm. (4)
Question 2 — FII/DII Flows, Settlement & the Depository Chain (20 marks)
On day , foreign institutional investors (FIIs) net-buy shares worth crore while domestic institutional investors (DIIs) net-sell shares worth crore on the same exchange. The index return (in %) over the day is empirically modelled as
(a) Given a dataset of days, derive the ordinary-least-squares estimator for the slope through the origin (no intercept). Show your derivation from minimising the sum of squared residuals. (6)
(b) For the three-day sample below, compute numerically.
| Day | (₹ cr) | (%) |
|---|---|---|
| 1 | 500 | 0.60 |
| 2 | -300 | -0.30 |
| 3 | 800 | 1.00 |
(6)
(c) A trade executed on day under the T+1 rolling settlement cycle passes through the exchange → clearing corporation → depository. Draw/describe the sequence of ownership and obligation transfer, naming the roles of the clearing corporation, NSDL/CDSL, and specifying on which calendar day securities are debited/credited. Explain why the clearing corporation interposes itself (novation) between buyer and seller. (8)
Question 3 — SEBI, Listing Thresholds & a Compliance Algorithm (18 marks)
A company seeks a main-board listing. Suppose (for this problem) the exchange enforces the following simplified quantitative criteria:
- Minimum post-issue paid-up capital: ₹10 crore
- Minimum market capitalisation: ₹25 crore
- Minimum public shareholding (float): 25% of post-issue capital
- Positive net worth in at least 2 of the last 3 financial years
(a) Write a Python function is_eligible(paid_up, market_cap, public_pct, net_worth_list) that returns True/False, correctly encoding all four rules (note the "2 of 3" logic). (8)
(b) A firm reports: paid-up = ₹12 cr, market cap = ₹40 cr, public float = 22%, net worth over 3 years = [−2, 5, 6] cr. Trace your function and state the eligibility verdict with the binding constraint(s). (4)
(c) SEBI is the regulator sitting above exchanges, depositories, brokers and mutual funds. Explain SEBI's role in listing and continuous disclosure, and argue why minimum-public-shareholding rules protect retail investors specifically (contrast with institutional investors). (6)
Answer keyMark scheme & solutions
Question 1
(a) Revenue rate . . (2) Set : since , need . (2) Second derivative / sign test: for and for , so it's a maximum. (Or .) (2)
(b) . . (3) FOC : This mixes an exponential term with a rational/polynomial term ; such an equation cannot be inverted using elementary algebra (it is transcendental — no finite combination of algebraic operations isolates ). Hence numerical root-finding is required. (3)
(c) Let . . (2)
import math
A, k, c = 100, 2, 5
def f(d): return 2*A*math.exp(-k*d)*(1-k*d) + c/d**2
def fp(d): return 2*A*math.exp(-k*d)*(k*k*d - 2*k) - 2*c/d**3
d = 0.6 # start near 1/k = 0.5
for _ in range(100):
step = f(d)/fp(d)
d -= step
if abs(step) < 1e-10: # stopping criterion
break
print(round(d,5)) # ~0.63988Root . (3) Economic meaning: the profit-maximising half-spread once inventory-carrying cost is included is wider than the pure-revenue optimum — the MM widens quotes to compensate for inventory risk. (1)
(d) Market makers post two-sided quotes continuously, guaranteeing that a counterparty exists at all times → they supply immediacy/liquidity and earn the spread as compensation for risk. A broker merely routes/agency-executes client orders (no obligation to quote, earns commission, takes no principal risk). A prop firm trades its own capital for directional/statistical profit and has no obligation to provide continuous liquidity. (Any 2 correct distinctions.) (4)
Question 2
(a) Model with . Minimise . . (3) . (2) Second derivative minimum. (1)
(b) . (2) . (2) . (2)
(c) Sequence (T+1):
- Day T (trade day): order matched on the exchange order book; a contract note is generated. The clearing corporation performs novation — it becomes buyer to every seller and seller to every buyer, and computes net obligations (funds & securities). (2)
- Day T+1 (settlement day): buyer's funds are debited and paid to the clearing corp; seller's securities are debited from their demat account at the depository (NSDL or CDSL) and, via the clearing corp, credited to the buyer's demat account the same day (T+1). (3)
- Roles: Clearing corporation = guarantees settlement, manages risk/margins, nets obligations. NSDL/CDSL = hold securities in electronic (dematerialised) form and effect the book-entry transfer of ownership. (1)
- Why novation: by interposing itself as central counterparty, the clearing corp removes counterparty default risk — neither party depends on the other's solvency; the CCP guarantees the trade, enabling anonymous trading and settlement finality. (2)
Question 3
(a) (8) — 2 marks each rule, correct "2 of 3" logic.
def is_eligible(paid_up, market_cap, public_pct, net_worth_list):
c1 = paid_up >= 10 # ₹10 cr
c2 = market_cap >= 25 # ₹25 cr
c3 = public_pct >= 25 # 25% float
positive_years = sum(1 for nw in net_worth_list if nw > 0)
c4 = positive_years >= 2 # 2 of last 3
return c1 and c2 and c3 and c4(b) Trace with (12, 40, 22, [−2,5,6]):
- c1: 12 ≥ 10 → True (1)
- c2: 40 ≥ 25 → True (1)
- c3: 22 ≥ 25 → False ← binding constraint (float too low) (1)
- c4: positive years = 2 (5,6) ≥ 2 → True. Verdict: NOT eligible. Binding constraint = public shareholding of 22% < 25% minimum. (1)
(c) (6)
- SEBI (statutory regulator under SEBI Act 1992) frames listing regulations (LODR) and mandates continuous disclosure: periodic financials, material-event disclosure, insider-trading rules, corporate-governance norms. It can suspend/delist non-compliant firms. (3)
- Minimum-public-shareholding (e.g., 25%) ensures a genuine free float → better price discovery, liquidity, and prevents promoters from cornering the stock. Retail investors are price-takers with limited information and cannot negotiate access; adequate float and mandatory disclosure protect them from manipulation and illiquidity. Institutional investors have research teams, direct access, and bargaining power, so they are less dependent on these protections — hence the rule primarily shields the retail segment. (3)
[
{"claim":"Q1a optimal half-spread delta* = 1/k for k=2 gives 0.5","code":"k=2; delta=1/k; result = (delta==Rational(1,2))"},
{"claim":"Q1c Newton root of R'(delta) approx 0.63988","code":"import mpmath as mp; A,k,c=100,2,5; f=lambda d: 2*A*mp.e**(-k*d)*(1-k*d)+c/d**2; root=mp.findroot(f,0.6); result = abs(float(root)-0.63988)<1e-3"},
{"claim":"Q2b alpha_hat = 1190/980000","code":"num=500*Rational(6,10)+(-300)*Rational(-3,10)+800*1; den=500**2+300**2+800**2; ah=num/den; result = (ah==Rational(1190,980000)) and abs(float(ah)-0.001214285)<1e-6"},
{"claim":"Q3b firm NOT eligible due to public_pct 22<25","code":"paid,mc,pub,nw=12,40,22,[-2,5,6]; c1=paid>=10;c2=mc>=25;c3=pub>=25;c4=sum(1 for x in nw if x>0)>=2; result = (not (c1 and c2 and c3 and c4)) and (c3==False)"}
]