TradeTech Analytics

All strategies · Longbow Weekly · Longbow Learned · RANK500

Three Nifty 500 weekly strategies, re-tested without survivorship bias and combined

Longbow Weekly, Longbow Learned and RANK500 v2 · pre-registered in research/combo/STRATEGY_COMBO.md before any result · 31 Oct 2026 · research only, no orders · the sealed period (October 2025 onward) was not used

Short answer. (1) The earlier numbers were too good. On a price history that includes every stock that traded, delisted ones included, Longbow Weekly drops from about 25% a year to 17% at 2x costs against an index at 13% (2016 to September 2025), and Longbow Learned from 30.8% to 17.4% at 2x (2018 to September 2025, index 11.8%). RANK500 held up better in its validation years (25.6% to 21.3% at 1x) but its 2010-2017 development result falls to about the index (10.7% against 10.1%) with a 50% drawdown. (2) Longbow Weekly and Longbow Learned are one strategy twice: correlation 0.89 overall and 0.93 in the worst index weeks. The machine-learning layer adds about 4.3% a year on the common window but no diversification. (3) RANK500 is the real complement: correlation 0.46 with Longbow Weekly, 0.42 with Longbow Learned, and near zero (-0.01) in the index's worst weeks because the two Longbow strategies are then in cash while RANK500 stays invested and loses with the index. (4) Kelly says: be fully invested, in RANK500 and Longbow Learned, with Longbow Weekly at zero, but the weights are unstable (bootstrap ranges below) and fitted on 2012-2017 they did worse out of sample than a plain equal split. Recommendation at the end.

1. The three strategies in one table

StrategyCapitalDesignTypeStatus
Longbow Weekly (W)₹5 lakhWeekly bars; 39-week momentum divided by volatility, skip last 4 weeks; 15 names; every 4 weeks; cash when the index is below its 26-week averageRule, no trainingPaper run since 19 Oct 2026
Longbow Learned (M)₹20 lakhSame portfolio rules; score = 50/50 rank blend of W's score and an 8-seed LightGBM top-quintile classifier, retrained every 26 weeksWalk-forward MLPaper run since 19 Oct 2026
RANK500 v2 (R)₹50 lakhDaily features, one pooled LightGBM on cross-sectional ranks; 30 names; every second Friday; buffer 2 standard deviations; ₹5 crore liquidity floor; no market filter, always investedWalk-forward ML (yearly)Paper run from 2 Nov 2026

2. Data: what changed and why it matters

The earlier tests used Dhan price history, which only exists for stocks that are still tradable, together with the actual Nifty 500 member lists. A stock that was in the index and later went bust or was delisted has no price history, so it was silently absent: 40% of member names in 2010 and 20% in 2020. This flatters any strategy, and most of all a momentum strategy that keeps buying what has gone up. The 4% a year allowance we used was an estimate.

Now: prices and the universe come from the NSE cash-market daily file (bhavcopy), 2004 to 2026, for every EQ/BE/BZ name that traded, delisted and merged ones included (4,283 tickers; 519 renames joined through the ISIN code). Returns use close ÷ previous close, which NSE adjusts for splits and bonuses on the ex-date; one-day moves beyond ±50% are treated as data errors. The universe is point-in-time: at each month-end, the 500 names with the largest 60-day median traded value (price at least ₹10, at least 120 sessions listed), effective the next session. This is not the Nifty 500 list (which would need the historical lists matched to tickers for every delisted name; not available), so it measures the style on the liquid top 500, survivorship-free. Share of the real Nifty 500 list that is also in this universe, by year:

YearReal Nifty 500 names also in the universe
200557%
200860%
201062%
201371%
201669%
201975%
202277%
202581%

Decomposition (Longbow Weekly, frozen design, 2016 to September 2025, 2x costs): Dhan history with real index lists: about 25%. Same bhavcopy prices with the real index lists (only names with a matching ticker; 321 names a week): 25.9%. Turnover-top-500 universe including every delisted name (420 names a week): 17.3%. So the data source is not the cause (bhavcopy reproduces the Dhan result); the drop comes from the stocks that were missing, plus the fact that the new universe also holds liquid non-members. The truth for the index itself lies between 17% and 26%; the survivorship-free figure is the cautious one. Index over the same window: 13.3%.

Published numbers against the re-test

TestEarlier published (Dhan panel)Real index lists on bhavcopy pricesSurvivorship-free universe (this study)Index
Longbow Weekly 2016 to Sep 2025about 25% (2x costs + 4% allowance; index 13%)26% at 2x, 30% at 1x (drawdown 22% / 17%)17% at 2x, 22% at 1x (drawdown 32% / 28%)13%
Longbow Learned 2018 to Sep 202530.8% (2x + 4%; drawdown 19.8%)n/a (not run)17.4% at 2x, 20.8% at 1x (drawdown 31% / 29%)11.8%
RANK500 v2 validation 2018 to Sep 202525.6% at 1x, 21.6% after the 4% allowance (drawdown 36%)n/a21.3% at 1x, 18.7% at 2x (drawdown 35%)11.8%
RANK500 v2 development 2010 to 201716.0% at 1x, 12.0% after allowance (drawdown 26%)n/a10.7% at 1x, 8.9% at 2x (drawdown 50%)10.1%

The earlier figures deducted a 4% allowance; this study deducts none because the delisted names are inside the data. Costs are the strategies' own schedules (W and M: delivery charges plus 0.2% a side; R: its liquidity-tiered slippage).

3. Re-test of the frozen designs

Growth of ₹1 (log scale) and drawdown for the three strategies, an equal-weight sleeve of them and the index, on the common window.
Growth of ₹1 (log scale) and drawdown for the three strategies, an equal-weight sleeve of them and the index, on the common window.
Calendar-year returns of the three strategies and the index (weekly compounding of each strategy's net account).
Calendar-year returns of the three strategies and the index (weekly compounding of each strategy's net account).

Longbow Weekly (W), 2007 to September 2025

WindowCostsNet CAGRIndex CAGRMax drawdownSharpeAlpha tYears ahead of index
Development1x20.1%10.0%28.9%1.031.3245%
Development2x16.1%10.0%30.1%0.850.7845%
Development3x12.0%10.0%35.1%0.670.2145%
Validation 2018-Sep 20251x16.3%11.8%32.5%0.880.6738%
Validation 2018-Sep 20252x12.5%11.8%36.7%0.700.1638%
Validation 2018-Sep 20253x8.5%11.8%40.8%0.51-0.3738%
Common 2012-Sep 20251x17.5%14.1%32.5%0.970.7136%
Common 2012-Sep 20252x13.5%14.1%36.7%0.78-0.0336%
Common 2012-Sep 20253x9.3%14.1%40.8%0.57-0.8136%
Full history1x18.9%10.8%32.5%0.981.5342%
Full history2x15.0%10.8%36.7%0.810.7942%
Full history3x11.0%10.8%40.8%0.630.0242%

Random selection through the same filter and engine (30 runs, 1x costs) earned a median of 8.0% and a 90th percentile of 10.4% a year over the full history, so the ranking is worth about 11 points over random picks (1x). W beat the index in 42% of calendar years; the years it won by more than 10 points were 2007, 2008, 2011, 2014, 2017, 2020, 2021, 2023.

Longbow Learned (M), 2012 to September 2025

WindowCostsNet CAGRIndex CAGRMax drawdownSharpeAlpha tYears ahead of index
Development1x21.8%17.1%19.2%1.150.6367%
Development2x18.1%17.1%21.9%0.980.2133%
Development3x14.5%17.1%25.6%0.81-0.2133%
Validation 2018-Sep 20251x20.8%11.8%28.7%1.041.2150%
Validation 2018-Sep 20252x17.4%11.8%30.5%0.900.7950%
Validation 2018-Sep 20253x14.0%11.8%33.7%0.750.3750%
Common 2012-Sep 20251x21.9%14.1%28.7%1.111.4357%
Common 2012-Sep 20252x18.3%14.1%30.5%0.960.8443%
Common 2012-Sep 20253x14.8%14.1%33.7%0.800.2543%
Full history1x21.9%14.1%28.7%1.111.4357%
Full history2x18.3%14.1%30.5%0.960.8443%
Full history3x14.8%14.1%33.7%0.800.2543%

Random numbers blended with the same rule earned a median of 7.5% and a 90th percentile of 9.8% (1x). M beats W by about 4.3% a year on the common window and has a similar drawdown, but alpha against the index is not statistically reliable (t about 1.4 at 1x, 0.8 at 2x).

RANK500 v2 (R), 2010 to September 2025

WindowCostsNet CAGRIndex CAGRMax drawdownSharpeAlpha tYears ahead of index
Development1x10.7%10.1%50.0%0.660.2588%
Development2x8.9%10.1%52.0%0.57-0.3075%
Development3x7.6%10.1%54.0%0.50-0.7275%
Validation 2018-Sep 20251x21.3%11.8%35.3%1.042.1275%
Validation 2018-Sep 20252x18.7%11.8%35.5%0.931.5675%
Validation 2018-Sep 20253x16.5%11.8%35.7%0.841.0775%
Common 2012-Sep 20251x22.4%14.1%35.3%1.192.9186%
Common 2012-Sep 20252x20.3%14.1%35.5%1.092.2279%
Common 2012-Sep 20253x18.7%14.1%35.7%1.021.6979%
Full history1x15.7%11.0%50.0%0.861.8081%
Full history2x13.6%11.0%52.0%0.761.0175%
Full history3x11.8%11.0%54.0%0.680.3675%

Random selection through the same rules earned a median of 2.8% (90th percentile 4.8%) a year at 1x; R earned 15.7%. Development years are weak and deep (2011: R lost 48% against 28% for the index, trough on 20 December 2011, then gained 45% in 2012; the earlier Dhan-based development run showed a 26% drawdown; the cause of the difference was not isolated). Validation years are strong, in the small-cap boom of 2020 to 2023. This is the regime dependence flagged in the original report, now measured.

Optimisation (small, development only, then validated once)

A grid of 24 settings each for W and M (names 10/15/20/30 × rebalance every 2/4/8 weeks × market filter on/off) was run on development at 2x costs only. Rule fixed beforehand: highest development Sharpe among settings with drawdown ≤ 30%, at least 2 turns a year and ahead of the index in ≥ 60% of years; the winner replaces the frozen design only if it also wins validation by more than 1 point of CAGR without a worse drawdown.

W (no setting met the years-ahead condition, so the Sharpe ranking alone chose):

Window (2x)Frozen CAGRDrawdownSharpeSelected settingCAGRDrawdownSharpe
dev16.1%30.1%0.85optimised N20 k8 filter True18.0%20.2%1.03
val12.5%36.7%0.70optimised N20 k8 filter True15.7%35.5%0.94

M (16 of 24 settings had a drawdown ≤ 30%):

Window (2x)Frozen CAGRDrawdownSharpeSelected settingCAGRDrawdownSharpe
dev18.1%21.9%0.98optimised N15 k8 filter True21.1%18.6%1.14
val17.4%30.5%0.90optimised N15 k8 filter True17.4%31.0%0.94

Outcome: both selected settings rebalance every 8 weeks (annual turnover 3.0 for W and 3.3 for M against 4.5 and 4.1), so costs bite less. W: the selected setting (20 names, every 8 weeks, filter on) beats the frozen design in validation at 2x costs by 3.2 points with a smaller drawdown, so the replacement rule is met; note that no W setting met the years-ahead condition, so the choice rested on Sharpe alone. M: the selected setting ties the frozen design in validation (same CAGR, slightly deeper drawdown), so the rule is not met and the frozen design stays. Applied to the live paper runs: nothing (a frozen paper spec is not changed mid-run). The W variant is recorded as a candidate v2 to run in a separate paper book if wanted.

4. Trade details

Distribution of round-trip returns (price to price) for each strategy over its whole survivorship-free history.
Distribution of round-trip returns (price to price) for each strategy over its whole survivorship-free history.

W

NameEntryExitDaysReturnNet P&L
TITAGARH2023-05-082024-02-1228099.2%₹647,596
ADANIENT2021-01-182021-10-2528093.0%₹585,475
GPIL2021-02-152021-09-2722471.5%₹556,433
HBLENGINE2023-11-202024-05-0616851.4%₹546,014
TRENT2024-05-062024-10-2817549.4%₹502,882
HUDCO2024-07-292024-10-2184-29.1%₹-357,021
HIKAL2021-09-272022-01-31126-30.0%₹-275,086
JKIL2022-08-012022-10-2484-32.3%₹-273,151
BALAMINES2021-09-272021-11-2256-28.7%₹-229,114
FCL2022-10-242022-12-1956-31.3%₹-229,073

591 names traded; the best 10 names produced 51% of net P&L (₹11,197,185).

Name (5 best, then 5 worst)TradesNet P&L
TRENT3₹769,815
ADANIENT6₹741,036
TITAGARH1₹647,596
ADANIGREEN4₹630,896
DIXON3₹531,547
PCJEWELLER3₹-396,700
HUDCO1₹-357,021
HIKAL1₹-275,086
JKIL2₹-274,907
BSOFT4₹-257,479

M

NameEntryExitDaysReturnNet P&L
TRENT2024-03-182024-10-2822466.4%₹1,113,977
JINDALSAW2023-05-152023-11-28197105.7%₹1,110,203
COCHINSHIP2024-04-152024-06-105669.3%₹1,098,431
RKFORGE2023-05-152024-01-2325382.1%₹1,010,857
CAMLINFINE2025-05-122025-08-048451.7%₹983,866
COCHINSHIP2024-08-052024-09-3056-24.4%₹-544,577
TEXRAIL2024-01-232024-04-1583-26.0%₹-530,175
NDTV2022-09-052022-10-1742-33.4%₹-501,248
BDL2025-07-072025-08-0428-21.5%₹-419,623
AEGISLOG2024-07-082024-08-0528-21.8%₹-418,978

477 names traded; the best 10 names produced 44% of net P&L (₹22,647,543).

Name (5 best, then 5 worst)TradesNet P&L
TRENT2₹1,271,947
JINDALSAW1₹1,110,203
APARINDS3₹1,091,118
CAMLINFINE1₹983,866
TITAGARH1₹981,350
BDL2₹-590,820
TEXRAIL1₹-530,175
NDTV1₹-501,248
DBREALTY2₹-432,696
AEGISLOG2₹-415,460

R

NameEntryExitDaysReturnNet P&L
TRENT2023-12-262024-08-12230110.8%₹670,564
VAKRANGEE2017-01-092017-11-27322162.1%₹446,165
BEL2023-05-152024-02-2628788.8%₹409,092
TMPV2023-11-132024-07-2925969.2%₹376,486
TVSMOTOR2023-11-132024-08-2628768.9%₹374,965
ATGL2022-10-032023-03-06154-76.2%₹-304,143
SHILPI2017-01-232017-06-27155-87.2%₹-245,133
TEJASNET2024-12-232025-03-2491-32.3%₹-245,079
GOLDIAM2025-02-172025-04-0749-33.1%₹-227,835
ORIENTCEM2025-06-092025-06-2314-25.8%₹-191,278

572 names traded; the best 10 names produced 25% of net P&L (₹20,325,272).

Name (5 best, then 5 worst)TradesNet P&L
TRENT4₹814,497
TVSMOTOR5₹544,568
MARUTI5₹540,687
BEL4₹521,809
BAJAJ-AUTO7₹490,221
ATGL1₹-304,143
SHILPI1₹-245,133
TEJASNET1₹-245,079
GOLDIAM1₹-227,835
MARKSANS2₹-218,514

Every trade, fill and audit check is on the three strategy pages (trade log, execution audit). Audit notes for the re-test: the independent rupee ledger reconciles to the simulator within 0.3% (W) and 0.01% (M); two fills in about 9,800 (W) and 7,400 (M) have an open outside the recorded day's range (bhavcopy data glitches) and are flagged FAIL, and the M book briefly held 16 names against the limit of 15 at some rebalances; both are left visible.

5. Do they complement each other?

Pearson correlation of weekly returns (all weeks; the worst 10% of index weeks) and rolling 52-week correlation.
Pearson correlation of weekly returns (all weeks; the worst 10% of index weeks) and rolling 52-week correlation.
CAGR 2012-17CAGR 2018-Sep 25CAGR 2012-Sep 25VolatilityMax drawdownSharpe
Longbow Weekly (W)17.7%17.3%17.5%18.3%32.5%0.71
Longbow Learned (M)21.7%21.9%21.8%19.5%28.7%0.87
RANK500 v2 (R)23.1%21.1%22.0%18.1%31.1%0.93
Nifty 500 price index17.0%11.9%14.1%15.7%34.4%0.62

6. Combining them, and Kelly

Weights are fitted on development (2012 to 2017) and applied untouched to validation (2018 to September 2025). Long-only, total weight at most 100% (no leverage), the remainder in cash at repo minus 1.5%, sleeves rebalanced weekly to target, sleeve-to-sleeve rebalancing costs ignored.

Weights chosen on development and the resulting portfolios (log scale; the dashed line is the start of validation).
Weights chosen on development and the resulting portfolios (log scale; the dashed line is the start of validation).
PortfolioCAGR devDrawdown devSharpe devCAGR valDrawdown valSharpe valCAGR 2012-25Drawdown 2012-25
EW21.2%14.4%1.0120.8%21.5%0.9721.0%21.5%
MR22.8%13.5%1.1222.2%19.8%1.0322.5%19.8%
IV21.3%14.1%1.0320.8%20.6%0.9721.0%20.6%
MinVar21.6%15.1%1.1020.5%22.6%0.9321.0%22.6%
MaxSharpe23.1%15.6%1.1721.9%25.3%0.9722.4%25.3%
Kelly23.1%17.1%1.1621.6%28.2%0.9122.2%28.2%
Half Kelly14.5%7.5%1.1613.0%14.8%0.9113.6%14.8%
Quarter Kelly10.2%2.8%1.168.6%7.5%0.919.3%7.5%
SchemeWeights W / M / R in % (fitted 2012-17)Weights W / M / R in % (fitted 2012-25)
EW33 / 33 / 3333 / 33 / 33
MR0 / 50 / 500 / 50 / 50
IV33 / 29 / 3834 / 32 / 34
MinVar33 / 2 / 6437 / 13 / 50
MaxSharpe0 / 26 / 740 / 44 / 56
Kelly0 / 13 / 870 / 47 / 53

Kelly criterion

The Kelly criterion picks the weights that maximise the expected logarithm of wealth, i.e. long-run growth. For one strategy with weekly excess return mean μ and variance σ² it is f* = μ / σ² (stake as a multiple of capital). Estimates on the common window: W 3.9, M 4.5, R 5.1, the index itself 3.9. All are far above 1: Kelly would borrow several times capital. That is not advice to leverage; it says each of these has a high Sharpe relative to its variance in this sample, and that the sample's mean is the thing estimated worst (a 14-year mean of weekly returns has a standard error of the same order as the mean). With the no-leverage constraint the three-sleeve Kelly solution is fully invested; fitted on 2012-2017 it puts 0 / 13 / 87% in W / M / R, fitted on all years 0 / 47 / 53%. A bootstrap of the Kelly weights (300 resamples in blocks of 8 weeks) gives mean weights W 4%, M 52%, R 44% with 5th to 95th percentile ranges W 0%-11%, M 0%-100%, R 0%-100%: R and M are always the main holdings, W is usually zero (it is dominated by M), and the split between R and M is not determined by the data.

Fractional Kelly: half Kelly (half the Kelly weights, the rest in cash) delivers about 13.6% a year with a 14.8% drawdown on the common window; quarter Kelly 9.3% and 7.5%. These hold a large cash share; they are what Kelly practitioners use because full Kelly assumes the estimated edge is exact and the return distribution is stable, neither of which holds here (and 2011 shows the drawdowns this style can have).

7. Insights and recommendation

  1. Survivorship was a large part of the earlier edge for the two Longbow strategies and a smaller part for RANK500. The honest expectation at 2x costs is now roughly 0 to 6 points a year over the index depending on the window (W: 4 points over 2007 to 2025 and 4 over 2016 to 2025, level with the index over 2012 to 2025; M: 4 points over 2012 to 2025, 6 over 2018 to 2025), with drawdowns about the index's (30-37%), not the 12 to 18 points earlier published. RANK500's validation edge is mostly in the 2020 to 2023 small-cap boom.
  2. Do not run W and M together as separate bets. If one is kept, keep M (same cost, better numbers) and treat W as its baseline. Both paper runs are already live; leave them running unchanged as the A/B and decide after 52 weeks.
  3. Use R as the second sleeve. It is the only one whose returns are not mostly the other's. Its weaknesses (no market filter, illiquid names, a bad 2011-2013) are different from the Longbow weaknesses (cash drag in strong markets).
  4. Capital split to paper-test: equal weight of M and R (50/50), W at zero, fully invested at most. Without any fitting this mix returned 22.5% a year with a 19.8% drawdown on 2012 to 2025 (validation Sharpe 1.03), the best out-of-sample Sharpe of the mixes tried and close to the fitted ones, and it does not depend on a fragile optimisation. Equal weight of all three delivers 21.0% a year with a 21.5% drawdown on the common window; Kelly-fitted weights did not beat it out of sample on Sharpe (0.91 against 0.97 in validation).
  5. Real money, if ever: start with at most a quarter to a half of the Kelly-implied exposure, because the edge estimate is the least certain input; require 52 weeks of forward paper results first (already the rule). Keep the allocation at or below 100% of capital; never lever up on the strength of a Kelly number.
  6. What was optimised and what was not: only turnover-reducing settings (every 8 weeks; 20 names) look worth watching; nothing else in the grid is distinguishable from noise. RANK500's frozen v2 was not re-optimised.

8. Limits of this study

Files: research/combo/ (build_sf.py, run_wm.py, run_r.py, compare.py, report_combo.py, results/), data/rank500_sf/, data/research/panel_sf.parquet.


Research and education only. Hypothetical and back-tested results have inherent limitations and do not guarantee future results. Not investment advice; the publisher is not presented as a SEBI-registered investment adviser or research analyst.