Tipsheet indices
Twelve of the Tipsheet models, published as index levels the way an index provider would, each 1,000 on 31 December 2019. They are on /models/indices/ and on each model’s page.
Code: index_levels in pipeline/tipsheet/models/run.py and the index section of publish/model_board.py.
Bundles: models/indices (values and returns), models/indices_weekly (all indices, weekly) and models/index/<code> (one index, daily).
What they are, and are not
Tipsheet indices are reference series that tipsheet computes from public data, for research and comparison only:
- They are not official indices.
- They are not licensed for use as a benchmark by any fund or product.
- They cannot be invested in.
- They are not recommendations or investment advice.
Every page that shows them says so.
The family
| Index | Model | Rule in one line |
|---|---|---|
| Tipsheet Trend India | trend_india | Five equal sleeves (Nifty 100, Midcap 150, Smallcap 250, gold, 5-year G-sec), each invested in proportion to its trend score; weekly |
| Tipsheet Trend Global | trend_world | The same with a sixth sleeve, the S&P 500 in rupees |
| Tipsheet Nifty 500 Trend | n500_sma10m | Nifty 500 while its month-end level is above its 10-month average, else cash |
| Tipsheet GTAA India | gtaa | Thirds in Nifty 500, 5-year G-sec and gold, each held only above its 10-month average |
| Tipsheet GTAA Global | gtaa_global | Quarters in Nifty 500, S&P 500 in rupees, 5-year G-sec and gold, each held only above its 10-month average |
| Tipsheet Dual Momentum India | dual_momentum | The better of Nifty 500 and gold over 12 months if it beats cash, else G-sec |
| Tipsheet Dual Momentum Global | gem_spx | If Nifty 500 beats cash over 12 months, the better of Nifty 500 and S&P 500 in rupees, else G-sec |
| Tipsheet Size Rotation | size_rotation | If Nifty 500 beats cash, the best of Nifty 100, Midcap 150 and Smallcap 250 over 12 months, else G-sec |
| Tipsheet Sector Rotation | sec_dm_v2 | Top three of twelve sectors by return over months t−12 to t−1, on NSE’s sector histories; a slot in cash when its sector trails cash |
| Tipsheet Factor Rotation | factor_dm | Top two of four factor indices (momentum, quality, value, low volatility) by return over months t−12 to t−1, on NSE’s factor histories; a slot in cash when its factor trails cash |
| Tipsheet Dynamic Allocation | dyn_alloc | Nifty 500 equity at the average of a valuation half (P/E percentile since 1999: 80% cheapest fifth to 20% dearest fifth) and a trend half (trend score 0 to 100 as 20% to 80%); the rest in G-sec |
| Tipsheet Multi-Asset 60/20/20 | sixty_twenty_twenty | 60% Nifty 500, 20% 5-year G-sec, 20% gold, rebalanced each January |
The other models on the board stay models. A model joins the family only by an amendment to docs/research/models_v1_spec.md.
Back-calculated inputs. The indices use NSE’s published histories in full, including the years NSE back-calculated before each launch: Midcap 150 and Smallcap 250 before 2016, most sector indices before 2011–2020, and the factor indices before 2016–2020 (owner decision, 2026-10-08). Versions of the sector and factor rules that count each index only from its launch are kept as models, to show what that hindsight was worth.
How a level is computed
- Inputs:
- NSE total-return indices;
- domestic gold in rupees (World Gold Council);
- the NSE 5-year G-sec total-return index;
- the 91-day T-bill;
- for the global indices, the S&P 500 price index in rupees at ECB rates, one session behind the NSE close (
docs/methods/models.md).
- Basis: total return, before any fund cost, trading cost or tax. It is what the rule’s holdings returned. The model pages carry the same rule after costs and after Indian tax.
- Timing: a decision at a close is traded at the next session’s close. Monthly rules decide on a month’s last session, the trend indices on a week’s last. Between decisions, holdings drift with prices.
- Base: every index, and every NSE comparison row, is 1,000 on 31 December 2006, so the values compare directly. That is the last session before the first year all of them cover. History before the base is kept, with values below 1,000. An index’s history starts at the first session after its rule’s first decision, and never before 2005-04-01. (Settled on 2026-10-08, before publication. Earlier drafts used each index’s first session, which made the values incomparable, then the end of 2012 and the end of 2019.)
- Launch: the day the rule entered this library: 2 October 2026 for the portfolio lab’s rules (GTAA India, Dual Momentum India, Multi-Asset 60/20/20), 8 October for the rest.
- Before launch: levels are back-calculated from today’s data, with a rule chosen after that history was known. Charts draw them lighter.
- After launch: each session’s gross return is written once to the models’ hash-chained live log (
docs/methods/models.md, “The live log”). The level chains those frozen returns, so a published level is never restated, even when data are later repaired. A session the log does not hold yet uses that day’s computation and is marked “live, not yet logged”. After a normal run there are none.
Changes
A change to an index’s rule creates a new version. It starts from the old version’s level on the day of the change, and the old version’s history stays as published. Both are recorded here and in the spec’s amendments.
- 2026-10-08: the family is created. Before publication, on the owner’s review, the Nifty 50 versions were replaced by Nifty 100 and Nifty 500 versions, and Tipsheet Factor Rotation was added (spec amendment 11), making twelve. Tipsheet Dynamic Allocation then replaced Tipsheet Valuation Glide, whose CAPE input is not refreshed daily (amendment 14).