NSE cash equities · 2012–2026 · net of all costs

Proof beats performance.

A systematic trading system for Indian equities, built so its own results cannot lie to it. Every number below is regenerated from the study that produced it.

Sharpe
index 0.94
CAGR
index 14.97%
Max drawdown
index −38%
Deflated Sharpe
0.20
vs ledger

It earns less than the index, and takes far less risk doing it.

That trade is the entire thesis. Lower raw return, materially shallower drawdown, higher risk-adjusted return.

Growth of ₹100

Artha NIFTY 500 TRI
Net of STT, stamp, exchange, GST, DP charges and modelled impact.
Table view

Drawdown

Artha NIFTY 500 TRI
What the lower return bought: a shallower hole, and less time in it.

The full ledger of behaviour

Including the numbers that do not flatter it.

Return

Risk

vs Index

Distribution

Rolling 1-year Sharpe

It goes negative. A line that never dipped would mean a bug, not a strategy.

The headline result is a negative one

A large literature reports Sharpe 3+ on daily equity forecasting after EMD/CEEMDAN decomposition. We reproduced it exactly, then recomputed the identical transform causally.

Working paper
Decompose first (as published)
3.62
Sharpe · IC 0.41. The transform sees the whole series before the train/test split.
Decompose causally (correct)
0.22
Sharpe · IC −0.04. Same model, same data, no future information. The edge was the leak.

Seven things that did not work

The expensive, useful output of research.

PBO 0.86
Machine learning loses to momentum
Ridge, LightGBM, MLP, transformer. The in-sample winner is overfit in 24 of 28 splits.
t = −6.9
Earnings drift runs backwards
1.48M timestamped announcements. The biggest positive surprises reverse.
+0.00
Crash regime gates add nothing
Beyond the volatility targeting already shipped.
< 0.5×
Model zoo loses to buy-and-hold
GRU, LSTM, transformer, ensemble. Absence of signal, not staleness.
0.06 vs 0.58
News gating subtracts value
Consistent with the inverted drift above.
churn
EWMA loses to Ledoit-Wolf
Faster adaptation, paid for in turnover.
PBO 0.93
Learned trading speed ties a constant
LinUCB over 728 decisions reports its own flat objective surface.
held
A 1.30 Sharpe upgrade was refused
Failed 2 of 4 pre-registered gates. The friendlier re-test was deliberately not run.

Where the edge actually comes from

Packaging, not prediction. Same signal, better construction.

Construction ladder

net Sharpe
Eight configurations. The spread is earned without a single new forecast.
Table view

Capital required

net Sharpe by account size
Flat DP charges and whole-share granularity make small accounts structurally unviable.
Table view

Every experiment is counted against the result

Search enough configurations and something looks brilliant by luck. The ledger is append-only, so the deflated Sharpe can only get harder to clear.

Cumulative trials in the ledger

This curve is why the headline Sharpe deflates from 1.02 to 0.20.

Single-name model zoo

net Sharpe
Every model sits under the always-long floor after costs.
Table view

It runs itself, and alarms on silence

An alert nobody receives is not an alert. Every alarm is written to disk before any push channel is attempted.

19:00 daily
Trade
Ingest, signal, orders, reconcile.
21:00 daily
Heartbeat
Did any of that actually happen?
Sat weekly
Divergence
Live versus research drift.
Monthly
Research agent
Proposes and screens new features.
Quarterly
Re-validation
The config must re-earn its seat.