Why usFeaturesTemplatesBlogGlossary

G-Secs Are Two Markets, and Only One of Them Is Liquid

Indian government securities are usually described as a single market: sovereign credit, no default risk, a yield curve from 91 days to 40 years. That description is true about the credit and misleading about everything else, because liquidity within the G-Sec market is concentrated to a degree that has no equivalent in equities.

On-the-run and everything else

At any moment a small number of G-Secs are the benchmark securities — the most recently auctioned issue at each major tenor, most visibly the 10-year. These are called on-the-run.

Benchmark securities carry the overwhelming majority of trading volume on NDS-OM, the RBI-operated order matching system where the wholesale market trades. They are what banks and primary dealers use to hedge, what the market quotes when someone asks “where’s the ten-year,” and what price discovery actually happens in.

Everything else is off-the-run. Same issuer, same credit, often similar maturity, dramatically less liquid. Off-the-run securities sit in held-to-maturity books at banks and insurers and may go days or weeks without trading.

The concentration is severe. Looking at NDS-OM trade data, a small number of securities account for tens of thousands of trades over their benchmark life while the median outstanding security accumulates a small fraction of that. Two securities in our data carry over 69,000 and 155,000 trades respectively; the distribution has an extremely long tail.

Why it matters, and why the benchmark rotates

The on-the-run status is not permanent. When the RBI auctions a new 10-year, the previous benchmark becomes off-the-run and its liquidity migrates to the new issue over weeks. This happens continuously across the curve.

That rotation is what makes “hold the 10-year” harder than it sounds as a systematic rule. Hold a specific security and you are holding a bond that starts as the most liquid instrument in the market and gradually becomes an illiquid one, while its maturity shortens away from ten years. Hold “whatever is currently the 10-year benchmark” and you are running a roll strategy that requires knowing which security that is at each point — which is a data problem, not a rule.

The construction that sidesteps both is to select on realised trading activity rather than on tenor, coupon or issue date. Rank securities by how much they have actually traded recently and hold the most active. That definition automatically follows the benchmark as it rolls, because the benchmark is by definition where the volume is. It requires no reference data about which security is on-the-run and it stays correct as the RBI’s issuance calendar changes.

What you are actually exposed to

A G-Sec portfolio has an unusually clean risk decomposition, which makes it a good instrument to learn on.

Credit risk: effectively nil. The obligation is in rupees, issued by the entity that controls the rupee. Sovereign default in domestic currency is a policy choice, not a solvency event.

Duration risk: the entire exposure. When yields rise, prices fall, and the sensitivity scales with maturity. A 10-year G-Sec has a modified duration of roughly 7, meaning a 1% rise in yields costs about 7% of price. A 30-year bond might have duration near 15. This is not a small risk — a 100bp move is an ordinary year in Indian rates, and it produces an equity-like drawdown in a long-duration bond.

Liquidity risk: concentrated in the tail. The benchmark is liquid. What you hold after it rolls off is less so.

The clean part is worth emphasising: with credit risk removed, everything that happens to a G-Sec portfolio is duration and liquidity. That makes it a much better teaching instrument than corporate bonds, where credit, duration and liquidity are entangled.

Where the data comes from

G-Sec trade data comes from CCIL, the clearing corporation for the NDS-OM market, and it arrives as individual trades rather than daily bars — price, yield, face value and timestamp for each transaction. Our history runs from 2005.

Turning that into something backtestable means aggregating trades into a daily bar per security: first trade of the day as the open, the high and low across the session, last trade as the close, and total face value traded as volume. That projection is what lets a bond be an ordinary security to the engine — the same close and open fields, the same fill timing, the same portfolio accounting as any stock.

It is worth stating why we did it this way rather than exposing bond-specific price and yield fields. A strategy with its own price column would have had to fill at a price it was still observing, because the engine’s honest fill timing — decide on the previous bar, fill at the next open — is defined against the standard price path. Projecting bonds onto that path instead means bonds need no special fields, no special execution mode, and no engine branch. A new instrument class should require data, not code.

A practical note: the bond templates need manage.py backfill_bond_daily_bars run once before their curves populate, since the projection is a separate step from ingestion.

What this template is not

Not a yield strategy. Selecting on liquidity does not select on yield, and this portfolio makes no attempt to pick up carry by reaching down the curve or out in maturity. It holds what trades.

Not a duration view. It does not lengthen duration when it expects yields to fall. Doing that properly needs a rate view, and a rate view needs macro inputs — policy rates, inflation prints, the curve itself — with enough history to backtest. The RBI’s published daily yield series in our catalog is currently too shallow for that, which is an honest gap rather than a design choice.

Not obviously better than a gilt fund. A gilt mutual fund gets you the same exposure with an institutional dealing desk, no settlement mechanics, and professional management of the roll. The reason to run this directly is transparency and control, not cost.

Try it

The G-Sec Liquidity Ladder template holds the ten most actively traded government securities by sixty-day average traded value, equally weighted, rebalanced quarterly.

The comparison worth making: run it against the corporate bond template over the same window. Same asset class label, completely different liquidity profile — and the gap between them is the clearest available illustration of what the credit spread in a corporate bond is actually paying you for.

Further reading

Glossary: impact cost, investable universe, turnover, market order.