Factor & Behavioral Finance
Level 5 — Mastery (Cross-Domain: Quantitative Finance + Statistics + Coding + Proof) Time Limit: 90 minutes Total Marks: 60
Instructions: Answer all three questions. Show full derivations. Where code is requested, pseudocode or Python (NumPy/pandas/statsmodels) is acceptable. State all assumptions.
Question 1 — Fama-French Estimation & Factor Construction (24 marks)
A quantitative fund runs a monthly regression of an equity portfolio's excess return on the Fama–French three-factor model:
(a) Derive the Ordinary Least Squares estimator from the objective of minimising the residual sum of squares . State the two Gauss–Markov assumptions that make the Best Linear Unbiased Estimator, and explain economically why the intercept is interpreted as risk-adjusted outperformance. (8)
(b) Over 60 months the fund reports the following estimates (monthly):
| Parameter | Estimate | Std. Error |
|---|---|---|
| 0.0025 | 0.0011 | |
| 1.05 | 0.04 | |
| 0.62 | 0.09 | |
| 0.41 | 0.10 |
Compute the annualised alpha (compounded and simple), and test at the 5% level using a two-sided -test (). Interpret the sign of and in terms of the size and value tilts of this portfolio. (8)
(c) The fund upgrades to the five-factor model by adding RMW (profitability) and CMA (investment). Explain (i) what economic anomaly each new factor captures, and (ii) why adding factors can reduce a previously significant HML loading, referencing the concept of factor redundancy. Write concise pseudocode that constructs the SMB factor as a sorted long-short portfolio (small-minus-big averaged across value groups). (8)
Question 2 — Behavioral Bias, Utility & the Disposition Effect (20 marks)
(a) Kahneman–Tversky prospect theory value function:
with , . An investor holds two positions relative to purchase price: Stock A is up $100, Stock B is down $100. Compute and , and hence the loss-aversion ratio . Using these numbers, explain mathematically why the disposition effect (sell winners too early, hold losers too long) emerges from the curvature (concave gains, convex losses). (10)
(b) Model a herding market. Let traders; each trader acts "buy" with probability
where is the fraction of previously observed traders who bought, and is a herding intensity. Explain why produces an information cascade, and derive the fixed-point condition for the equilibrium buy-fraction when all traders see the same aggregate . Show that is always a fixed point and determine, by analysing the derivative at , the critical above which becomes unstable. (10)
Question 3 — Market Efficiency: A Proof-Style Argument (16 marks)
(a) State the three forms of the Efficient Market Hypothesis. Formally: if prices follow with , prove that is a martingale and that expected excess returns are unforecastable from past prices. Explain how the existence of persistent factor premia (value, momentum) is reconciled with the EMH by the risk-based versus behavioral interpretations. (10)
(b) A smart-beta ETF claims to "beat the market" through a momentum tilt. Design a rigorous statistical test to distinguish genuine alpha from factor exposure and from data-mining / multiple-testing bias. Your answer must reference: the correct null model, the Sharpe-ratio deflation for the number of strategies tested, and one out-of-sample validation safeguard. (6)
Answer keyMark scheme & solutions
Question 1
(a) OLS derivation (8 marks)
Minimise . Gradient: . (2) Normal equations (requires full column rank). (2) Hessian ⇒ minimum. (1)
Gauss–Markov assumptions (any two, 2 marks): (i) (exogeneity, zero conditional mean); (ii) homoskedasticity & no autocorrelation . (Also linearity/full rank.) These give BLUE.
Economic interpretation of (1 mark): is the average return not explained by exposure to priced risk factors — risk-adjusted excess return (skill/mispricing). A positive significant means outperformance beyond what factor betas justify.
(b) Alpha significance & tilts (8 marks)
Simple annualised alpha: . (2) Compounded: . (2) -stat: . (2) Since , reject : alpha is statistically significant at 5%. (1) Tilts (1 mark): ⇒ small-cap tilt (loads on small-minus-big); ⇒ value tilt (loads on high book-to-market). Portfolio is a small-cap value fund.
(c) Five-factor extension (8 marks)
(i) Economic anomalies (3 marks):
- RMW (Robust-Minus-Weak): profitability premium — firms with robust operating profitability outperform weak ones.
- CMA (Conservative-Minus-Aggressive): investment premium — firms investing conservatively outperform aggressive investors.
(ii) Redundancy (2 marks): HML captures value; but value stocks tend to be low-investment/high-profitability. Once RMW and CMA are included they absorb the return variation previously attributed to HML, so and its significance can shrink (HML becomes redundant in the FF5 for US data).
SMB pseudocode (3 marks):
# 2x3 sort: 2 size groups (S,B) x 3 value groups (L,N,H)
median_size = median(marketcap)
b30, b70 = quantiles(book_to_market, [0.3, 0.7])
for each group in {S,B}x{L,N,H}:
port_return = value_weighted_mean(returns of stocks in that bucket)
SMB = (SL + SN + SH)/3 - (BL + BN + BH)/3 # small minus big
Question 2
(a) Prospect theory (10 marks)
. . (3) . (3) Ratio (equals since ). (2)
Disposition explanation (2 marks): The value function is concave in gains (risk-averse over gains) so an investor is tempted to lock in a sure gain — sell winners early. It is convex in losses (risk-seeking over losses) so the investor gambles to recover, holding losers. Combined with reference-point dependence around purchase price, this produces the disposition effect: realise gains, defer losses.
(b) Herding fixed point (10 marks)
Cascade (2 marks): as , step function: any forces (everyone buys), forces . Private signals are ignored — an information cascade where each trader copies the crowd.
Fixed point (3 marks): with common aggregate , expected buy fraction is ; equilibrium .
check (2 marks): . ✓ Always a fixed point.
Stability (3 marks): . At : , so . Fixed point unstable when . Critical : above it the symmetric equilibrium is unstable and two asymmetric cascade equilibria (herd-buy / herd-sell) emerge.
VERIFY note: , ratio , .
Question 3
(a) EMH & martingale proof (10 marks)
Three forms (3 marks): Weak — prices reflect all past price/volume info (technical analysis useless). Semi-strong — reflect all public info (fundamental analysis of public data useless). Strong — reflect all info incl. private/insider.
Martingale proof (5 marks): Let . Then Since : Thus is a martingale. Excess return has conditional mean zero ⇒ unforecastable from (past prices). ∎
Reconciliation (2 marks): Persistent premia are consistent with EMH under the risk-based view — value/momentum returns are compensation for systematic risk (a joint-hypothesis with the asset-pricing model). The behavioral view holds they are mispricings from bias (overreaction/underreaction) that limits-to-arbitrage prevent from being eliminated. The debate is unresolved due to the joint-hypothesis problem (Fama): any efficiency test jointly tests the model of expected returns.
(b) Alpha vs exposure vs data-mining test (6 marks)
- Null model (2): Regress ETF excess returns on the appropriate multifactor benchmark including a momentum factor (UMD/WML): . Genuine skill ⇔ significant after controlling for MOM. If MOM absorbs the return, it is factor exposure not alpha.
- Multiple-testing / Deflated Sharpe (2): Apply the Deflated Sharpe Ratio (Bailey–López de Prado) or Bonferroni/Harvey-Liu haircut: adjust the significance threshold for the number of strategies tested; expected max Sharpe under the null grows with , so raw high SR may be selection bias.
- Out-of-sample safeguard (2): Reserve a holdout / walk-forward period never used in strategy design; require the alpha to persist out-of-sample (and/or across markets, cross-validation) to rule out overfitting.
[
{"claim":"t-stat for alpha = 0.0025/0.0011 ~ 2.2727 > 2.00 (reject H0)", "code":"t = 0.0025/0.0011; result = bool(t > 2.00) and bool(abs(t - Rational(25,11)) < Rational(1,1000))"},
{"claim":"Compounded annual alpha (1.0025)^12 - 1 ~ 0.03042", "code":"val = (1 + Rational(25,10000))**12 - 1; result = bool(abs(float(val) - 0.030416) < 1e-4)"},
{"claim":"Loss aversion ratio |v(-100)|/v(+100) = 2.25 and v(+100) ~ 57.54", "code":"vp = 100**0.88; vn = 2.25*100**0.88; ratio = vn/vp; result = bool(abs(ratio - 2.25) < 1e-9) and bool(abs(vp - 57.544) < 0.02)"},
{"claim":"Critical herding intensity k_crit = 4 from g'(0.5)=k/4=1", "code":"k = symbols('k', positive=True); g = 1/(1+exp(-k*(Symbol('f')-Rational(1,2)))); gp = diff(g, Symbol('f')).subs(Symbol('f'), Rational(1,2)); sol = solve(Eq(gp, 1), k); result = bool(4 in [simplify(s) for s in sol])"}
]