Nifty 50 Multi-Factor Risk Model & Sector-Neutral Optimization
Executive summary
This report documents an end-to-end equity research pipeline for the Nifty 50 universe on the National Stock Exchange. The objective is not a single trading signal, but a reproducible institutional workflow: characterize how large-cap Indian stocks co-move through observable risk factors, estimate a time-varying covariance structure, and translate a composite alpha view into portfolio weights that respect diversification, sector balance, position limits, and trading frictions.
The study uses adjusted daily prices and issuer fundamentals for NSE-listed equities, with the Nifty 50 index as the market proxy. After liquidity and history screens, roughly fifty names enter the model. Each trading day we measure five style exposures—size, market beta, momentum, volatility, and value—plus sector dummies. Weighted least-squares regressions produce factor returns; a sixty-day rolling window yields a factor covariance matrix and stock-specific residual volatilities.
At each month-end we solve a long-only optimization: maximize exposure to a momentum–value composite alpha, penalize deviation from prior weights, and optionally penalize estimated portfolio variance. Sector weights must stay within twelve percentage points of a cap-weight benchmark, no single name may exceed eight percent, and one-way turnover is capped at twenty-five percent per rebalance. Performance is reported against the same benchmark with explicit turnover and cost assumptions.
Universe and data
The investable set follows the current Nifty 50 constituent list. Names without sufficient daily history—typically fewer than about two years of observations—are dropped so rolling beta and twelve-month momentum are well defined. Market capitalization for weighting and size factors combines closing prices with shares outstanding, or a static cap figure when share count is unavailable.
Sector classification uses issuer industry labels, collapsed into the largest buckets with a residual Other group, then encoded as binary sector factors in the risk model. The risk-free rate for excess-return definitions uses a fixed annual proxy. All series are aligned on trading dates; month-end rebalance dates are the last business day of each calendar month in the sample.
Risk model design
Style factor construction follows standard quantitative definitions adapted to daily NSE data. Size is the logarithm of market capitalization. Beta is estimated stock-by-stock with a rolling sixty-day window against Nifty daily returns. Momentum is a twelve-minus-one month price ratio with a one-month skip. Volatility is the rolling standard deviation of daily returns over twenty sessions. Value is earnings yield from trailing P/E when available.
Before entering regressions, each style exposure is winsorized cross-sectionally at three standard deviations from the day’s mean and converted to a z-score so factors are comparable in magnitude. Sector dummies are not z-scored; they capture industry tilts relative to the benchmark.
The factor return on day is estimated by regressing that day’s stock returns on the exposure matrix, weighting each name by the square root of market cap so large, liquid stocks influence the fit more than thin tails. Residuals from this regression feed idiosyncratic variance estimates: a sixty-day rolling variance per stock with a numerical floor to avoid singularities. Factor returns over the same window form the sample covariance matrix, regularized with a small ridge term and decomposed via Cholesky for use in the optimizer’s risk penalty.
Model quality is checked each rebalance by comparing predicted variance of a cap-weight portfolio—using that day’s exposures and covariance—to realized variance of benchmark returns over the subsequent holding month. A bias ratio near one and a positive correlation between predicted and realized series indicate reasonable calibration; large persistent gaps would suggest misspecified factors or unstable covariance windows.
Portfolio optimization
The alpha signal is deliberately simple and interpretable: the cross-sectional average of z-scored momentum and value at the rebalance date, demeaned so the optimizer tilts toward relative winners rather than a level shift. This composite is a research choice—momentum and value are among the most studied equity premia in India and globally—and keeps the focus on risk-aware implementation rather than exotic forecasting.
The optimization program is long-only and fully invested. The objective adds three terms: positive weight on alpha exposure, a quadratic penalty on factor and idiosyncratic risk decomposed as , and a linear turnover penalty against the previous month’s weights. Hard constraints cap individual weights at eight percent, keep sector weights within twelve percentage points of the benchmark’s sector mix, and limit one-way turnover to twenty-five percent.
Transaction costs are modeled as twenty basis points per unit of one-way turnover applied to the round-trip change in weights (a stylized brokerage plus impact proxy, not a broker-specific schedule). The backtest holds the optimized portfolio over the next month using daily returns, compounds to month-end, and records turnover for each rebalance. The benchmark is the cap-weight portfolio on the same dates using the same cost rules for fair comparison of implementation drag.
Computation workflow
The workflow runs as an automated batch process: market data are refreshed, fundamentals are merged with prices, factor panels are built, daily weighted least-squares runs estimate factor returns, rolling covariances are updated, and the optimizer is applied at each month-end over the full backtest window. Results are stored in a structured dataset that powers the interactive section on this page.
Charts below include cumulative strategy versus benchmark, drawdown, monthly returns, turnover, predicted versus realized variance scatter, estimated style factor returns, and the latest cross-section of factor exposures by ticker. Summary tables report cumulative return, Sharpe ratio, maximum drawdown, hit rate, and annualized volatility for both strategy and benchmark.
Limitations and interpretation
Results are research output, not investment advice. Vendor prices can be revised, delisted symbols disappear from history, and fundamentals are point-in-time approximations. The risk model uses a single global market factor (Nifty) rather than a full multi-industry commercial risk system. Optimization assumes frictionless fills within the turnover cap and does not model securities transaction tax, GST on brokerage, or short-selling (the book is long-only).
Strong backtest performance can reflect factor exposures, constraint slack, or period-specific regimes rather than repeatable alpha after costs. Use the diagnostic charts—especially turnover, drawdown, and risk-model scatter—to judge whether returns are driven by stable factor tilts or concentrated bets. Updating the study when new market data are available keeps the conclusions aligned with current conditions.
Empirical results
Portfolio performance versus a cap-weight Nifty 50 benchmark, risk-model calibration, and cross-sectional factor exposures from the latest study run.
Performance summary
| Metric | Strategy | Benchmark |
|---|---|---|
| Cumulative | 309.20% | 271.40% |
| Sharpe | 0.59 | 0.56 |
| Max DD | -27.60% | -25.40% |
| Hit rate | 67.90% | 63.40% |
| Ann. vol | 17.40% | 15.70% |
Avg monthly turnover: 2.90% · Excess ann. ( strategy vs benchmark): 1.30%
Cumulative performance
Optimized long-only strategy versus a cap-weight Nifty 50 benchmark, rebalanced at each month-end.
Drawdown (strategy)
Peak-to-trough on the optimized cumulative curve.
Monthly strategy returns
Hold-period return between month-end rebalances.
Monthly turnover
One-way turnover from weight changes at each rebalance.
Risk model diagnostics
Cap-weight benchmark: model-implied variance vs realized monthly return variance.
Pred. / realized vol bias
1.02
Correlation
0.20
Observations
112
Estimated style factor returns (monthly)
Mean daily WLS factor returns aggregated to month-end — tracks premia driving the risk model.
Latest style factor exposures (z-scores)
Cross-section at the last rebalance date used for optimization.
| Ticker | Mom. | Value | Size | Beta | Vol. |
|---|---|---|---|---|---|
| ADANIENT | -1.47 | -0.56 | 0.12 | 1.23 | 0.81 |
| ADANIPORTS | 0.42 | -0.33 | 0.40 | 1.29 | -0.06 |
| APOLLOHOSP | 0.25 | -0.91 | -1.37 | -0.86 | -1.66 |
| ASIANPAINT | -0.59 | -0.95 | -0.29 | 0.30 | -0.10 |
| AXISBANK | -0.07 | 0.81 | 0.45 | 0.76 | 0.68 |
| BAJAJ-AUTO | 0.56 | -0.18 | -0.05 | 0.23 | -0.36 |
| BAJAJFINSV | -1.15 | -0.29 | -0.04 | 0.76 | -0.18 |
| BAJFINANCE | -0.55 | -0.33 | 1.00 | 1.27 | 0.26 |
| BEL | 1.78 | -0.79 | 0.13 | -0.49 | -0.83 |
| BHARTIARTL | -0.03 | -0.64 | 1.97 | -0.88 | -1.77 |
| BPCL | -0.08 | 3.54 | -1.15 | 0.67 | 1.01 |
| BRITANNIA | 0.04 | -0.78 | -1.05 | -0.66 | -1.14 |
| CIPLA | -1.13 | -0.28 | -1.43 | -1.24 | -0.64 |
| COALINDIA | 0.99 | 2.43 | 0.04 | -2.04 | -0.33 |
| DRREDDY | 0.34 | -0.14 | -1.37 | -1.19 | 1.25 |
| EICHERMOT | 1.16 | -0.52 | -0.56 | 1.17 | 1.49 |
| GRASIM | -0.25 | -0.66 | -0.60 | 0.39 | -0.91 |
| HCLTECH | -0.68 | 0.39 | 0.17 | -0.64 | 2.19 |
| HDFCBANK | -1.18 | 0.54 | 2.02 | 0.73 | 0.09 |
| HDFCLIFE | -0.82 | -0.97 | -1.17 | -0.22 | 0.04 |
| HEROMOTOCO | 1.85 | 0.56 | -1.48 | 0.72 | 0.45 |
| HINDALCO | 2.09 | 0.46 | -0.31 | -0.37 | -0.32 |
| HINDUNILVR | -0.57 | -0.75 | 0.86 | -0.47 | -0.19 |
| INDUSINDBK | -0.25 | -1.05 | -1.99 | 1.02 | 1.22 |
| INFY | -0.69 | 0.86 | 0.72 | -0.84 | 0.84 |
| ITC | -1.66 | 0.45 | 0.45 | -0.64 | -1.32 |
| JIOFIN | -0.62 | -1.13 | -0.81 | 0.94 | 0.97 |
| JSWSTEEL | 0.40 | 1.03 | 0.10 | 0.54 | -1.07 |
| KOTAKBANK | -1.04 | 0.28 | 0.40 | 0.33 | -0.67 |
| LT | 0.43 | -0.45 | 0.91 | 1.59 | 0.76 |
| M&M | 0.25 | 0.24 | 0.36 | 1.33 | 0.75 |
| MARUTI | 0.23 | -0.22 | 0.53 | 0.64 | 0.43 |
| NESTLEIND | -0.12 | -1.03 | -0.04 | -0.81 | -0.19 |
| NTPC | 0.27 | 0.17 | 0.42 | -1.06 | -1.32 |
| ONGC | 1.00 | 2.29 | 0.38 | -2.09 | -0.84 |
| POWERGRID | -0.23 | 0.94 | 0.04 | -1.27 | -1.28 |
| RELIANCE | 0.15 | 0.07 | 2.71 | -0.49 | -0.09 |
| SBILIFE | 0.73 | -1.02 | -0.65 | -0.12 | 0.24 |
| SBIN | 1.48 | 1.86 | 1.73 | 0.32 | -0.57 |
| SHRIRAMFIN | 1.66 | 0.49 | -0.38 | 2.33 | 2.42 |
| SUNPHARMA | -0.04 | -0.56 | 0.58 | -1.19 | 0.73 |
| TATACONSUM | -0.57 | -1.02 | -1.34 | -0.83 | -1.37 |
| TATASTEEL | 2.13 | -0.24 | -0.13 | 0.56 | -1.72 |
| TCS | -1.58 | 0.61 | 1.59 | -0.71 | 0.24 |
| TECHM | -0.12 | -0.14 | -1.13 | -1.02 | 0.42 |
| TITAN | 0.93 | -1.00 | 0.43 | 0.47 | 0.08 |
| TRENT | -2.07 | -1.08 | -0.95 | 0.69 | 1.92 |
| ULTRACEMCO | -0.54 | -0.64 | 0.24 | 1.01 | -0.07 |
| WIPRO | -1.03 | 0.67 | -0.45 | -1.14 | -0.29 |
Sample through 2026-05-25 · 49 names · NSE