Indian stocks climbed to a two-year high after the government allowed oil companies to raise diesel prices, and as overseas funds extended record purchases of domestic shares.

The BSE India Sensitive Index, or Sensex, rose 0.4% to 20,039.04, the highest close since January 6, 2011. Volumes on the gauge were 66% more than the 30-day average. Oil & Natural Gas Corp, India’s biggest state-run explorer, had the sharpest gain in 32 months. Indian Oil Corp, the largest state refiner, jumped the most in more than two years after it raised diesel prices nationwide.

ONGC rallied 7.4% to Rs337.7, the sharpest advance since May 2010. Indian Oil soared 10.6% to Rs349.3, the most since December 1, 2010. Hindustan Petroleum Corp jumped 5.4% to Rs362.4 and Bharat Petroleum Corp increased 9.8% to Rs434.95, a record price.

State refiners, which are not part of the Sensex, lost a combined Rs738.2bn ($13.6bn) selling diesel below cost in the nine months ended December 31, oil ministry data show. ONGC is forced by the government to sell crude oil to the refiners at a discount to partly compensate them for fuel sales below cost. India plans to cut its subsidy bill for food, fuel and fertiliser to 2% of GDP this financial year.

The Sensex surpassed the 20,000 level for the first time in two years on January 15. The gauge may climb to 22,500 this year if policy steps continue, Deutsche Equities predicted in a January 15 report. Morgan Stanley said the same day it expects the measure to reach 23,069 by December.

Maruti Suzuki (India) surged 3.6% to Rs1,547.45 while State Bank of India added 0.9% to Rs2,492.05. HDFC Bank lost 0.6% to Rs662.85 after third-quarter earnings of Rs18.6bn matched analyst estimates in a Bloomberg survey.

Wipro, the technology-services company controlled by billionaire Azim Premji, dropped 7.7% to Rs397.35 after reporting a drop in staff-utilisation rates. The stock had gained 9% through Thursday since January 10.

ITC shares rose 0.8% to Rs287.45 after the cigarette maker’s December quarter profit stood at Rs20.5bn, exceeding the Rs19.9bn estimate in a Bloomberg News survey. Hero MotoCorp, India’s biggest motorcycle maker, fell 3% to Rs1,764.1 after the company posted Thursday profit of Rs4.88bn for the December quarter, lower than the median estimate of Rs5.93bn in a Bloomberg survey of analysts.

One out of seven Sensex firms that have reported earnings for the December quarter has trailed forecasts. That compares with 40% of index companies in the three months ended September, the same as for the June quarter, data compiled by Bloomberg show.

The S&P CNX Nifty Index added 0.4% to 6,064.40. The India VIX index, which measures the cost of protection against losses in the Nifty, fell 0.9% to 13.89. The BSE Mid-Cap Index dropped 0.2% to 7,165.46.

The Sensex has gained 3.2% this year and trades at 15.9 times estimated earnings, the highest since February. The MSCI Emerging Markets Index is valued at 11 times.

Meanwhile, India’s rupee rose past 54 per dollar yesterday for the first time since November 2 to 53.7050 per dollar in Mumbai. One-month implied volatility in the rupee, a gauge of expected moves in the exchange rate used to price options, rose 20 basis points, or 0.20 percentage point, this week to 10.15%.

Offshore forwards indicate the rupee will trade at 54.60 to the dollar in three months, compared with expectations of 55.69 at the end of last week.