Methodology
The mathematics behind every number in the dashboard. Each section is self-contained.
1. Bid-ask spread (Corwin-Schultz)
Estimated from daily OHLC without requiring a quote tape. The two-day estimator is:
Rolling 21-day window, floored at zero. Where CS fails (insufficient intraday range, illiquid days), we fall back to an ADV-bucket regression:
2. Market impact (Almgren-Chriss + tail)
Per-name impact as a fraction of trade value, with a piecewise tail above 10% participation following Almgren et al. (2005):
with the participation, calibrated by AQR fills (Frazzini-Israel-Moskowitz 2018), and the threshold above which impact departs from the square-root law.
3. India NSE tax stack
STT, stamp, SEBI, exchange, GST stack on every leg of every trade:
- STT (delivery): 0.10% on both legs
- Stamp duty: 0.015% on buy
- SEBI fee: ₹10 / cr
- Exchange (NSE cash): 0.00345%
- GST: 18% on (brokerage + SEBI + exch)
For weekly rebalances, STT alone burns roughly 300 bps/yr — the policy optimiser correctly steers Indian factor sleeves toward monthly or quarterly rebalances.
4. Capacity zone classifier
| zone | Net IR | max execution days | max participation |
|---|---|---|---|
| safe | ≥ 0.5 | ≤ 3 | < 3% |
| caution | ≥ 0.2 | ≤ 5 | < 5% |
| red | < 0.2 | > 5 | ≥ 5% |
5. Composite crowding score
Six components, each rolling-percentile-ranked against its own 3-year history:
- Valuation spread — — Asness, Friedman, Israel (2017)
- Alpha decay — negative slope of trailing-1y IR over 2y — Arnott et al. (2017)
- Short interest — weighted SI on the short leg — Drechsler (2014)
- Comomentum — mean pairwise correlation of long-leg returns — Lou, Polk (2013)
- Holdings overlap — fraction of long names also held by peers — Sias (2016)
- Internal liquidity footprint — — legacy
6. Stress regime
Single-quantile snapshot. Replace each per-symbol parameter with its tail value:
- spread → 99th percentile
- ADV → 25th percentile
- vol → 95th percentile
- impact coefficient → 1.5× nominal
- borrow premium → +200 bps
- short interest → +5 pp
Plus a one-shot 30%-redemption unwind in 5 days, costed under the same stressed market state. The unwind cost is reported as basis points of the AUM being shed.
7. Multi-factor allocation
Each is the per-factor net-return-vs-AUM curve (concave). Exhaustive grid search at 21 points per dimension, K=4 → 200k combinations < 100 ms. Coordinate descent for K>6.
8. ML — alpha decay forecast
State-space mean reversion with crowding as the regime covariate:
Fit by OLS on the stacked increments. Forecast 126 trading days forward by integrating the SDE deterministically and reporting a fan based on the residual RMSE scaled by .
9. ML — capacity ridge model
Closed-form ridge regression on five features (spread, vol, log ADV, crowding, gross IR) → log10(safe AUM). Lambda picked by leave-one-out CV on a fixed grid. Lets you predict safe AUM from current market state without re-running the full curve scan.
10. ML — regime classifier (GMM)
Three-component diagonal-covariance Gaussian mixture, fit by EM on standardised daily features (market vol, average pairwise correlation, median spread, log ADV). Components are post-hoc labelled by ranking the centroids on market vol — lowest = "calm", highest = "stressed".
References
- Almgren, Chriss (2000). "Optimal execution of portfolio transactions".
- Almgren et al. (2005). "Direct estimation of equity market impact".
- Lou, Polk (2013). "Comomentum: Inferring arbitrage activity".
- Drechsler, Drechsler (2014). "The shorting premium".
- Sias, Turtle, Zykaj (2016). "Hedge-fund crowds and mispricing".
- Arnott, Hsu, West (2017). "How can ‘smart beta’ go horribly wrong?".
- Asness, Friedman, Israel (2017). "Style timing: value vs growth".
- Frazzini, Israel, Moskowitz (2018). "Trading costs" (AQR).
- Corwin, Schultz (2012). "A simple way to estimate bid-ask spreads from daily high and low prices".
- Lou, Polk, Skouras (2019). "A tug of war: Overnight versus intraday returns".