tipsheet.markets
Market data to 30 Sept 2026 · Data status

Pre-registered research

Portfolio lab: pre-registered specification

Written 2026-10-01, before any results. Parameters come from the literature or from common practice and are not tuned on Indian data. Any change must be logged here with the date and the reason.

Assets (total return, in rupees; see compute/assets.py)

Portfolios

All of these use annual rebalancing at the first session of each calendar year, unless stated otherwise. Weights are equity / G-sec / gold / cash.

CodePortfolioWeights or ruleRebalance
equityAll equity100 / 0 / 0 / 0none (buy and hold)
sixty_forty60/4060 / 40 / 0 / 0annual
sixty_twenty_twenty60/20/2060 / 20 / 20 / 0annual
permanentPermanent portfolio (Browne)25 / 25 / 25 / 25annual
equal_threeEqual weight, three assets33.3 / 33.3 / 33.3 / 0annual
risk_parityInverse-volatility weights over equity, G-sec and gold, using 252-session realised volatilitycomputed at each month-endmonthly
gtaa3Faber-style tactical: one third each to equity, G-sec and gold; a sleeve whose month-end level is below its 10-month average goes to cashmonthly
dual_momentumAntonacci-style: hold whichever of equity or gold has the higher 12-month return, if it beats cash over 12 months; otherwise hold G-secmonthly
sixty_forty_trend60/40, with the equity sleeve in cash when Nifty 500 is below its 10-month averagemonthly

Timing: decisions use month-end (or year-end) closes, and trades happen at the next session’s close.

Costs: 0.10% of value traded each way. Running costs are equity 0.15%, G-sec 0.20%, gold 0.50% and cash 0.20% a year.

Taxes: after-tax results use compute/aftertax.py, with lots tracked per asset, every rebalancing sale taxed, and everything sold at the end. Pre-tax results are also reported.

Reported metrics

Known limits

Results log

2026-10-01: first run (2002-10-01 to 2026-09-25, rules as specified)

The common start is the first session after every portfolio has its first decision. Risk parity needs 252 sessions of volatility, which sets the start.

PortfolioCAGR %After-tax CAGR %SharpeMax drawdown %Turnover a year5y windows beating 60/40
All equity17.316.90.58−63.80.0471%
60/4014.714.00.67−36.10.15n/a
60/20/2016.415.60.79−35.70.1676%
Permanent12.711.80.89−14.60.1524%
Equal three14.713.70.89−18.80.1650%
Risk parity10.48.80.88−7.20.4016%
GTAA (3 assets)11.79.40.68−18.03.0919%
Dual momentum17.614.80.63−44.73.7642%
60/40 with trend11.910.30.55−20.92.3923%

This is docs/research/portfolio_lab_spec.md. The specification was committed before any result was computed; changes after that are logged in it with dates and reasons.