NNextResearch

Projections are using estimates while today’s price statistics load (a beta of 1 and volatility from the 52-week range). They update by themselves in a moment.

How basket projections are worked out

Every basket page has a Projections switch. With it on, the basket and its stocks are projected 1 or 2 years ahead from today, in a Bear, Base and Bull case. This page sets out the whole method, the evidence behind it, and works it through for any stock using the same code the basket pages use.

  1. 1. What a projection is
  2. 2. Which stocks are projected
  3. 3. The market inputs
  4. 4. Step by step
  5. 5. Bear, Base and Bull
  6. 6. The options
  7. 7. From stocks to the basket
  8. 8. Likely range, drawdown and chance of a loss
  9. 9. The statistics
  10. 10. What changed, and the evidence
  11. 11. What it doesn't do
  12. 12. Worked example

1. What a projection is

Base is the price return the market prices in for the stock’s risk, adjusted slightly for its fundamentals. Bear and Bull are the range 8 in 10 one-year outcomes fall in for a stock as volatile as this one has been over the past year. Base is an average outcome: the typical (median) outcome sits below it, because a volatile stock’s typical year is below its average one.

It uses the 10-year government bond yield, India’s equity risk premium, two years of the stock’s and the Nifty 50’s daily prices, and figures shown elsewhere on NextResearch: five fiscal years of revenue and net profit, and today’s price, market cap, P/E, dividend yield and 52-week range from our last data update, plus its home industry’s median net margin.

It is a model projection, not a forecast, a target price, a ranking of stocks or a recommendation. Base differs between stocks mostly because their betas differ, so a higher Base is not a better stock (section 10). The model doesn’t know about orders, management guidance, news or the market’s mood, and it is a price return: no dividends, costs or taxes.

2. Which stocks are projected

A stock needs at least 3 fiscal years in a row of both revenue and net profit, ending at its latest reported year, with revenue in that year; at least 3 years of trading (a 3-year price change: a recent listing’s earlier results are from before it listed); and a price and market cap in our last data update. Anything less and the stock is left out: its share of the basket is spread over the projected stocks in proportion to their own weights, so the weights still total 100%. A short note names the stocks left out and why; their rows in the table say so too. Leaving a stock out changes only the projection, never the backtest.

A year that looks like a one-off (a single loss between profits, or a profit swing far bigger than the change in sales, as on the rule-based baskets) is left out of the margins when at least two other years remain.

3. The market inputs

Two inputs are the same for every stock and are set by hand when they move materially.

InputValueAs ofSource
rf: India 10-year G-sec yield7.47%23 Oct 2026Trading Economics, India 10-year benchmark close
ERP: India’s equity risk premium7.08%Jan 2026Aswath Damodaran, country default spreads and risk premiums (January 2026 update): mature-market premium 4.23% plus India’s country risk premium 2.85% (Moody’s Baa3)

rf is updated after a big move in the G-sec yield and the ERP after each of Damodaran’s January and July updates. Strictly, Damodaran adds his country premium to a default-free rate, and the G-sec yield already carries India’s default spread (about 1.9 points), so rf + ERP counts that spread twice. It raises every stock’s Base by the same amount for a given beta; it never changes the width of the range.

4. Step by step

a. Beta

The slope of the stock’s weekly returns (last close of each Monday-to-Sunday week) on the Nifty 50’s over the last 2 years, by least squares; at least 52 weekly returns are needed. Measured betas overshoot, so it is pulled a third of the way toward 1 (Blume’s adjustment). With no usable price history the beta is 1.

beta = 0.67 × measured beta + 0.33

b. Volatility σ

Realised over the last year from daily closes (at least 40 daily returns), annualised, and never counted below 20% a year. In the first visits after the price statistics are refreshed, a stock whose statistics aren’t loaded yet has σ estimated from its 52-week range (Parkinson’s estimate) and a beta of 1; the Assumptions tab says so.

σ = max(20%, √(250 × mean of squared daily log returns))
while loading: σ = max(20%, ln(52-week high ÷ 52-week low) ÷ √(8/π))

c. Market return

The return CAPM says the market prices in for that beta, less the dividend yield, because this is a price projection and CAPM’s figure includes dividends. A stock with a beta of 1 and no dividend gets rf + ERP, 14.6% a year.

market return = rf + beta × ERP − dividend yield

d. Fundamentals score

One year’s return on the business with today’s P/E held: no move toward a past or industry multiple. Only for a stock with a positive P/E, a profit in its latest year and a positive usual margin.

  • Growth. Each year’s revenue growth over the years used. The usual rate is the lowest of the median year, the compound rate over the years (FY22 was a low post-Covid base for many companies, which flatters a rate measured from it), and the average of the median and the latest year (so a recent slowdown counts). Fast growth rarely lasts, so it is faded 55% of the way toward 10% a year, about India’s nominal GDP growth, and kept between −25% and +40%.
  • Margin. Net profit as a share of revenue each year used (each kept between −50% and +60%; a one-off year left out). Its aim is the average of its own median margin and its home industry’s median (the latest year’s, over every listed company the industry maps); with no positive industry median, its own. Today’s margin moves a third of the way toward the aim in a year, and by no more than 15% of itself, so a thin margin can’t double in the model.

usual = lowest of (median year, compound rate, (median + latest year) ÷ 2)
growth = usual + 0.55 × (10% − usual), within −25% … +40%
aim = (own median margin + industry median margin) ÷ 2
margin a year on = today + (aim − today) ÷ 3
margin factor = margin a year on ÷ today, within 1 ÷ 1.15 … 1.15
score = (1 + growth) × margin factor − 1

e. Standardised score z and the tilt

The score is measured against the scores of every covered listed company that has one (246 today): z is how many standard deviations it sits above or below their median, kept within ±3. The tilt follows Grinold and Kahn: a forecast is the signal’s skill (its information coefficient, IC) times the stock’s volatility times its score. With IC at 0.05, a weak signal barely moves the projection: at σ 35% the tilt is at most about ±5.2 points.

z = (score − median score) ÷ standard deviation of scores, within ±3
tilt = IC × σ × z, IC = 0.05

f. Loss-makers

A stock with a loss in its latest year, no positive P/E or no positive usual margin has no fundamentals score: z and the tilt are 0, and it is projected on the market return and its own volatility alone. Marked “market” in the Assumptions tab.

g. Base

A year: the market return plus the tilt. Two years: the market return compounded over both years, with the tilt once, since a one-year signal isn’t carried into the second year.

Base, 1 year = market return + tilt
Base, 2 years = (1 + market return) × (1 + market return + tilt) − 1

h. Bear and Bull

The 10th and 90th percentiles of a lognormal outcome whose average is Base and whose spread is the stock’s σ over h years (1 or 2). The middle of that range, the median, is (1 + Base) × e^(−σ²h/2) − 1, below Base. The return itself has no cap (the previous model’s −60% … +80% a year bound is gone); only the inputs above have limits.

Bear = (1 + Base) × e^(−σ²h/2 − 1.2816 × σ × √h) − 1
Bull = (1 + Base) × e^(−σ²h/2 + 1.2816 × σ × √h) − 1

5. Bear, Base and Bull

CaseWhat it isFormula, h years
Bear1 in 10 outcomes are below it(1 + Base) e^(−σ²h/2 − 1.28σ√h) − 1
Basethe average outcome: market return plus tilt1 year: market + tilt · 2 years: (1 + market) × (1 + market + tilt) − 1
Bull1 in 10 outcomes are above it(1 + Base) e^(−σ²h/2 + 1.28σ√h) − 1

All three come from the same Base and σ, so Bear is always below Base and Bull above. A more volatile stock gets a wider range, and over 2 years the range widens with the square root of time.

6. The options

7. From stocks to the basket

The basket is bought today at its target weights (after spreading any left-out stock’s share) and held. Its return in each case is the weighted sum of its stocks’ returns in that case. Each stock’s points added is its weight times its return, so they add up to the basket’s return. Its end weight is where its share would be if held.

basket return = Σ weight × return · points added = weight × return × 100 · end weight = weight × (1 + return) ÷ (1 + basket return)

So the basket’s Bear and Bull assume every stock at its own 10th (or 90th) percentile at once. Stocks don’t all have a bad year together, so this is wider than the basket’s own range; the likely range below, from the basket’s own volatility, is the basket-level range.

On the chart, each line grows smoothly from 0% today to its return, one point a week: value at week k of n = (1 + return)^(k ÷ n) − 1.

8. Likely range, drawdown and chance of a loss

A smooth line never falls, so the risk figures come from 1,000 simulated weekly paths. Their average outcome is the basket’s Base return whichever case is chosen (so the median path ends a little below it, as each stock’s range is centred): Bear and Bull are already the basket’s two extremes, and a simulation around Bear would stack a bad year on a bad year. Each path swings as much as the basket did over the past year (its volatility, from its 1-year backtest). The same settings always draw the same paths.

9. The statistics

10. What changed, and the evidence

The first model moved each stock’s P/E part of the way toward its own or its industry’s usual level, and set Bear and Bull from fixed scenario shifts in growth, margin and multiple. Tested out of sample, its range was far too narrow and the multiple reversion leaned toward stocks that had just fallen. This model changes four things:

We rebuilt every input as it stood on three start dates and compared each model’s 1-year projection with what each stock actually did (price only). “Inside” is the share of actual outcomes between Bear and Bull; the target is 80%. The rank correlation (Spearman) measures whether a higher Base went with a higher actual return.

PeriodNifty 50StocksInside, first modelInside, this modelBase rank corr.Score rank corr.
24 Oct 2024 → 24 Oct 2025+5.7%24147%91%+0.01+0.09
24 Apr 2025 → 24 Apr 2026−1.4%24848%90%+0.01+0.09
24 Oct 2025 → 23 Oct 2026−12.4%25933%81%−0.11+0.01

11. What it doesn’t do

Model projection from market pricing, past prices and reported financials, not a forecast or a recommendation.

12. Worked example

Mahindra & Mahindra: profitable, so its fundamentals tilt the market return, using 5 years of results (FY22-FY26), against its home industry, Electric 4-Wheeler. Figures from our data update of 30 Oct 2026; price statistics not loaded yet.

Inputs

InputValue
rf, 10-year G-sec (23 Oct 2026)7.47%
ERP, India (Jan 2026)7.08%
Measured beta (2Y weekly vs Nifty 50)none
52-week low / high2743 / 3840
Dividend yield1.16%
P/E today18.4×
Home industry median net margin6.34%

1. Beta

no measured beta (too little price history, or not loaded yet) → beta = 1

2. Volatility σ

from the 52-week range (prices not loaded yet): ln(3840 ÷ 2743) ÷ 1.596 = 21.08%
σ = max(20%, 21.08%) = 21.08%

3. Market return

rf + beta × ERP − dividend yield = 7.47% + 1.000 × 7.08% − 1.16% = 13.39%

4. Fundamentals score

YearRevenue, Rs CrNet profit, Rs CrNet marginRevenue growth
FY2290,1717,2538.04%—
FY231,21,36211,3749.37%+34.6%
FY241,39,07812,2708.82%+14.6%
FY251,59,21114,0738.84%+14.5%
FY261,98,63918,6229.37%+24.8%

median year = +19.68% · compound rate = +21.83% · (median + latest) ÷ 2 = +22.22%
usual = lowest = +19.68%
growth = 19.68% + 0.55 × (10% − 19.68%) = +14.36%

margins used: FY22 8.04% · FY23 9.37% · FY24 8.82% · FY25 8.84% · FY26 9.37%
own median = 8.84% · industry median = 6.34%
aim = (8.84% + 6.34%) ÷ 2 = 7.59%
margin a year on = 9.37% + (7.59% − 9.37%) ÷ 3 = 8.78%
margin factor = 8.78% ÷ 9.37% = 0.9366

score = 1.1436 × 0.9366 − 1 = +7.11%

5. z and the tilt

z = (7.11% − 11.86%) ÷ 12.10% = −0.39
tilt = 0.05 × 21.08% × −0.39 = −0.41%

Median and standard deviation over the 246 covered listed companies that have a fundamentals score.

6. Base

1 year: 13.39% − 0.41% = +12.98%
2 years: 1.1339 × (1.1339 − 0.0041) − 1 = +28.10%

7. Bear and Bull

1 year: median = 1.1298 × e^(−21.08%² × 1 ÷ 2) − 1 = +10.49%; spread = 1.2816 × 21.08% × √1 = 0.2702
Bear = 1.1049 × e^(−0.2702) − 1 = −15.67% · Bull = 1.1049 × e^(0.2702) − 1 = +44.77%

2 years: median = 1.2810 × e^(−21.08%² × 2 ÷ 2) − 1 = +22.53%; spread = 1.2816 × 21.08% × √2 = 0.3821
Bear = 1.2253 × e^(−0.3821) − 1 = −16.38% · Bull = 1.2253 × e^(0.3821) − 1 = +79.56%

Every case

HorizonBearBaseBullMedian
Next 1 year−15.7%+13.0%+44.8%+10.5%
Next 2 years−16.4%+28.1%+79.6%+22.5%

The same figures the basket pages use for this stock. Each step is shown rounded; the sums use full precision, so a step worked by hand from the rounded figures can differ in the last digit. Model projection from market pricing, past prices and reported financials, not a forecast or a recommendation.