The NSE Nifty 50 index was up 1% at 17,108, as of 0351 GMT, while the S&P BSE Sensex rose 1.04% to 57,446.93. The Nifty hit its highest since early May, while the Sensex touched a peak last seen in late April.
The Nifty metals index rose 1.5% on hopes of strong demand in top consumer China, while the auto index gained 1.9%, with TVS Motor Co up 9% after reporting a higher June-quarter profit.
SBI Life Insurance rose 7.5% and was the top gainer in the Nifty 50 index after reporting a higher quarterly profit.
Meanwhile, the rupee strengthened to its highest in nearly three weeks, tracking broad losses in the dollar on easing concerns over the need for continued aggressive interest rate hikes by the Federal Reserve.
(Reporting by Nallur Sethuraman in Bengaluru; Editing by Subhranshu Sahu)