All strategies · Longbow Weekly · Longbow Learned · RANK500
| Strategy | Capital | Design | Type | Status |
|---|---|---|---|---|
| Longbow Weekly (W) | ₹5 lakh | Weekly 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 average | Rule, no training | Paper run since 19 Oct 2026 |
| Longbow Learned (M) | ₹20 lakh | Same portfolio rules; score = 50/50 rank blend of W's score and an 8-seed LightGBM top-quintile classifier, retrained every 26 weeks | Walk-forward ML | Paper run since 19 Oct 2026 |
| RANK500 v2 (R) | ₹50 lakh | Daily 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 invested | Walk-forward ML (yearly) | Paper run from 2 Nov 2026 |
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:
| Year | Real Nifty 500 names also in the universe |
|---|---|
| 2005 | 57% |
| 2008 | 60% |
| 2010 | 62% |
| 2013 | 71% |
| 2016 | 69% |
| 2019 | 75% |
| 2022 | 77% |
| 2025 | 81% |
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%.
| Test | Earlier published (Dhan panel) | Real index lists on bhavcopy prices | Survivorship-free universe (this study) | Index |
|---|---|---|---|---|
| Longbow Weekly 2016 to Sep 2025 | about 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 2025 | 30.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 2025 | 25.6% at 1x, 21.6% after the 4% allowance (drawdown 36%) | n/a | 21.3% at 1x, 18.7% at 2x (drawdown 35%) | 11.8% |
| RANK500 v2 development 2010 to 2017 | 16.0% at 1x, 12.0% after allowance (drawdown 26%) | n/a | 10.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).
| Window | Costs | Net CAGR | Index CAGR | Max drawdown | Sharpe | Alpha t | Years ahead of index |
|---|---|---|---|---|---|---|---|
| Development | 1x | 20.1% | 10.0% | 28.9% | 1.03 | 1.32 | 45% |
| Development | 2x | 16.1% | 10.0% | 30.1% | 0.85 | 0.78 | 45% |
| Development | 3x | 12.0% | 10.0% | 35.1% | 0.67 | 0.21 | 45% |
| Validation 2018-Sep 2025 | 1x | 16.3% | 11.8% | 32.5% | 0.88 | 0.67 | 38% |
| Validation 2018-Sep 2025 | 2x | 12.5% | 11.8% | 36.7% | 0.70 | 0.16 | 38% |
| Validation 2018-Sep 2025 | 3x | 8.5% | 11.8% | 40.8% | 0.51 | -0.37 | 38% |
| Common 2012-Sep 2025 | 1x | 17.5% | 14.1% | 32.5% | 0.97 | 0.71 | 36% |
| Common 2012-Sep 2025 | 2x | 13.5% | 14.1% | 36.7% | 0.78 | -0.03 | 36% |
| Common 2012-Sep 2025 | 3x | 9.3% | 14.1% | 40.8% | 0.57 | -0.81 | 36% |
| Full history | 1x | 18.9% | 10.8% | 32.5% | 0.98 | 1.53 | 42% |
| Full history | 2x | 15.0% | 10.8% | 36.7% | 0.81 | 0.79 | 42% |
| Full history | 3x | 11.0% | 10.8% | 40.8% | 0.63 | 0.02 | 42% |
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.
| Window | Costs | Net CAGR | Index CAGR | Max drawdown | Sharpe | Alpha t | Years ahead of index |
|---|---|---|---|---|---|---|---|
| Development | 1x | 21.8% | 17.1% | 19.2% | 1.15 | 0.63 | 67% |
| Development | 2x | 18.1% | 17.1% | 21.9% | 0.98 | 0.21 | 33% |
| Development | 3x | 14.5% | 17.1% | 25.6% | 0.81 | -0.21 | 33% |
| Validation 2018-Sep 2025 | 1x | 20.8% | 11.8% | 28.7% | 1.04 | 1.21 | 50% |
| Validation 2018-Sep 2025 | 2x | 17.4% | 11.8% | 30.5% | 0.90 | 0.79 | 50% |
| Validation 2018-Sep 2025 | 3x | 14.0% | 11.8% | 33.7% | 0.75 | 0.37 | 50% |
| Common 2012-Sep 2025 | 1x | 21.9% | 14.1% | 28.7% | 1.11 | 1.43 | 57% |
| Common 2012-Sep 2025 | 2x | 18.3% | 14.1% | 30.5% | 0.96 | 0.84 | 43% |
| Common 2012-Sep 2025 | 3x | 14.8% | 14.1% | 33.7% | 0.80 | 0.25 | 43% |
| Full history | 1x | 21.9% | 14.1% | 28.7% | 1.11 | 1.43 | 57% |
| Full history | 2x | 18.3% | 14.1% | 30.5% | 0.96 | 0.84 | 43% |
| Full history | 3x | 14.8% | 14.1% | 33.7% | 0.80 | 0.25 | 43% |
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).
| Window | Costs | Net CAGR | Index CAGR | Max drawdown | Sharpe | Alpha t | Years ahead of index |
|---|---|---|---|---|---|---|---|
| Development | 1x | 10.7% | 10.1% | 50.0% | 0.66 | 0.25 | 88% |
| Development | 2x | 8.9% | 10.1% | 52.0% | 0.57 | -0.30 | 75% |
| Development | 3x | 7.6% | 10.1% | 54.0% | 0.50 | -0.72 | 75% |
| Validation 2018-Sep 2025 | 1x | 21.3% | 11.8% | 35.3% | 1.04 | 2.12 | 75% |
| Validation 2018-Sep 2025 | 2x | 18.7% | 11.8% | 35.5% | 0.93 | 1.56 | 75% |
| Validation 2018-Sep 2025 | 3x | 16.5% | 11.8% | 35.7% | 0.84 | 1.07 | 75% |
| Common 2012-Sep 2025 | 1x | 22.4% | 14.1% | 35.3% | 1.19 | 2.91 | 86% |
| Common 2012-Sep 2025 | 2x | 20.3% | 14.1% | 35.5% | 1.09 | 2.22 | 79% |
| Common 2012-Sep 2025 | 3x | 18.7% | 14.1% | 35.7% | 1.02 | 1.69 | 79% |
| Full history | 1x | 15.7% | 11.0% | 50.0% | 0.86 | 1.80 | 81% |
| Full history | 2x | 13.6% | 11.0% | 52.0% | 0.76 | 1.01 | 75% |
| Full history | 3x | 11.8% | 11.0% | 54.0% | 0.68 | 0.36 | 75% |
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.
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 CAGR | Drawdown | Sharpe | Selected setting | CAGR | Drawdown | Sharpe |
|---|---|---|---|---|---|---|---|
| dev | 16.1% | 30.1% | 0.85 | optimised N20 k8 filter True | 18.0% | 20.2% | 1.03 |
| val | 12.5% | 36.7% | 0.70 | optimised N20 k8 filter True | 15.7% | 35.5% | 0.94 |
M (16 of 24 settings had a drawdown ≤ 30%):
| Window (2x) | Frozen CAGR | Drawdown | Sharpe | Selected setting | CAGR | Drawdown | Sharpe |
|---|---|---|---|---|---|---|---|
| dev | 18.1% | 21.9% | 0.98 | optimised N15 k8 filter True | 21.1% | 18.6% | 1.14 |
| val | 17.4% | 30.5% | 0.90 | optimised N15 k8 filter True | 17.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.
| Name | Entry | Exit | Days | Return | Net P&L |
|---|---|---|---|---|---|
| TITAGARH | 2023-05-08 | 2024-02-12 | 280 | 99.2% | ₹647,596 |
| ADANIENT | 2021-01-18 | 2021-10-25 | 280 | 93.0% | ₹585,475 |
| GPIL | 2021-02-15 | 2021-09-27 | 224 | 71.5% | ₹556,433 |
| HBLENGINE | 2023-11-20 | 2024-05-06 | 168 | 51.4% | ₹546,014 |
| TRENT | 2024-05-06 | 2024-10-28 | 175 | 49.4% | ₹502,882 |
| HUDCO | 2024-07-29 | 2024-10-21 | 84 | -29.1% | ₹-357,021 |
| HIKAL | 2021-09-27 | 2022-01-31 | 126 | -30.0% | ₹-275,086 |
| JKIL | 2022-08-01 | 2022-10-24 | 84 | -32.3% | ₹-273,151 |
| BALAMINES | 2021-09-27 | 2021-11-22 | 56 | -28.7% | ₹-229,114 |
| FCL | 2022-10-24 | 2022-12-19 | 56 | -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) | Trades | Net P&L |
|---|---|---|
| TRENT | 3 | ₹769,815 |
| ADANIENT | 6 | ₹741,036 |
| TITAGARH | 1 | ₹647,596 |
| ADANIGREEN | 4 | ₹630,896 |
| DIXON | 3 | ₹531,547 |
| PCJEWELLER | 3 | ₹-396,700 |
| HUDCO | 1 | ₹-357,021 |
| HIKAL | 1 | ₹-275,086 |
| JKIL | 2 | ₹-274,907 |
| BSOFT | 4 | ₹-257,479 |
| Name | Entry | Exit | Days | Return | Net P&L |
|---|---|---|---|---|---|
| TRENT | 2024-03-18 | 2024-10-28 | 224 | 66.4% | ₹1,113,977 |
| JINDALSAW | 2023-05-15 | 2023-11-28 | 197 | 105.7% | ₹1,110,203 |
| COCHINSHIP | 2024-04-15 | 2024-06-10 | 56 | 69.3% | ₹1,098,431 |
| RKFORGE | 2023-05-15 | 2024-01-23 | 253 | 82.1% | ₹1,010,857 |
| CAMLINFINE | 2025-05-12 | 2025-08-04 | 84 | 51.7% | ₹983,866 |
| COCHINSHIP | 2024-08-05 | 2024-09-30 | 56 | -24.4% | ₹-544,577 |
| TEXRAIL | 2024-01-23 | 2024-04-15 | 83 | -26.0% | ₹-530,175 |
| NDTV | 2022-09-05 | 2022-10-17 | 42 | -33.4% | ₹-501,248 |
| BDL | 2025-07-07 | 2025-08-04 | 28 | -21.5% | ₹-419,623 |
| AEGISLOG | 2024-07-08 | 2024-08-05 | 28 | -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) | Trades | Net P&L |
|---|---|---|
| TRENT | 2 | ₹1,271,947 |
| JINDALSAW | 1 | ₹1,110,203 |
| APARINDS | 3 | ₹1,091,118 |
| CAMLINFINE | 1 | ₹983,866 |
| TITAGARH | 1 | ₹981,350 |
| BDL | 2 | ₹-590,820 |
| TEXRAIL | 1 | ₹-530,175 |
| NDTV | 1 | ₹-501,248 |
| DBREALTY | 2 | ₹-432,696 |
| AEGISLOG | 2 | ₹-415,460 |
| Name | Entry | Exit | Days | Return | Net P&L |
|---|---|---|---|---|---|
| TRENT | 2023-12-26 | 2024-08-12 | 230 | 110.8% | ₹670,564 |
| VAKRANGEE | 2017-01-09 | 2017-11-27 | 322 | 162.1% | ₹446,165 |
| BEL | 2023-05-15 | 2024-02-26 | 287 | 88.8% | ₹409,092 |
| TMPV | 2023-11-13 | 2024-07-29 | 259 | 69.2% | ₹376,486 |
| TVSMOTOR | 2023-11-13 | 2024-08-26 | 287 | 68.9% | ₹374,965 |
| ATGL | 2022-10-03 | 2023-03-06 | 154 | -76.2% | ₹-304,143 |
| SHILPI | 2017-01-23 | 2017-06-27 | 155 | -87.2% | ₹-245,133 |
| TEJASNET | 2024-12-23 | 2025-03-24 | 91 | -32.3% | ₹-245,079 |
| GOLDIAM | 2025-02-17 | 2025-04-07 | 49 | -33.1% | ₹-227,835 |
| ORIENTCEM | 2025-06-09 | 2025-06-23 | 14 | -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) | Trades | Net P&L |
|---|---|---|
| TRENT | 4 | ₹814,497 |
| TVSMOTOR | 5 | ₹544,568 |
| MARUTI | 5 | ₹540,687 |
| BEL | 4 | ₹521,809 |
| BAJAJ-AUTO | 7 | ₹490,221 |
| ATGL | 1 | ₹-304,143 |
| SHILPI | 1 | ₹-245,133 |
| TEJASNET | 1 | ₹-245,079 |
| GOLDIAM | 1 | ₹-227,835 |
| MARKSANS | 2 | ₹-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.
| CAGR 2012-17 | CAGR 2018-Sep 25 | CAGR 2012-Sep 25 | Volatility | Max drawdown | Sharpe | |
|---|---|---|---|---|---|---|
| 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 index | 17.0% | 11.9% | 14.1% | 15.7% | 34.4% | 0.62 |
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.
| Portfolio | CAGR dev | Drawdown dev | Sharpe dev | CAGR val | Drawdown val | Sharpe val | CAGR 2012-25 | Drawdown 2012-25 |
|---|---|---|---|---|---|---|---|---|
| EW | 21.2% | 14.4% | 1.01 | 20.8% | 21.5% | 0.97 | 21.0% | 21.5% |
| MR | 22.8% | 13.5% | 1.12 | 22.2% | 19.8% | 1.03 | 22.5% | 19.8% |
| IV | 21.3% | 14.1% | 1.03 | 20.8% | 20.6% | 0.97 | 21.0% | 20.6% |
| MinVar | 21.6% | 15.1% | 1.10 | 20.5% | 22.6% | 0.93 | 21.0% | 22.6% |
| MaxSharpe | 23.1% | 15.6% | 1.17 | 21.9% | 25.3% | 0.97 | 22.4% | 25.3% |
| Kelly | 23.1% | 17.1% | 1.16 | 21.6% | 28.2% | 0.91 | 22.2% | 28.2% |
| Half Kelly | 14.5% | 7.5% | 1.16 | 13.0% | 14.8% | 0.91 | 13.6% | 14.8% |
| Quarter Kelly | 10.2% | 2.8% | 1.16 | 8.6% | 7.5% | 0.91 | 9.3% | 7.5% |
| Scheme | Weights W / M / R in % (fitted 2012-17) | Weights W / M / R in % (fitted 2012-25) |
|---|---|---|
| EW | 33 / 33 / 33 | 33 / 33 / 33 |
| MR | 0 / 50 / 50 | 0 / 50 / 50 |
| IV | 33 / 29 / 38 | 34 / 32 / 34 |
| MinVar | 33 / 2 / 64 | 37 / 13 / 50 |
| MaxSharpe | 0 / 26 / 74 | 0 / 44 / 56 |
| Kelly | 0 / 13 / 87 | 0 / 47 / 53 |
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).
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.