A jump in crude oil and a rise in European markets set off a rally in U.S. stocks to cap a four-week winning streak for major indexes.
Investors bought across industries from the start of trading on Friday. Drillers, refiners and other energy companies rose sharply as the price for U.S. crude hit a high for the year. Devon Energy jumped 11% and Southwestern Energy gained 10%.
Just a month ago, investors were dumping shares amid talk of a possible U.S. recession. The Standard & Poor's 500 index fell to almost a two-year low. But confidence has returned as data has suggested the U.S. economy is strengthening.
"While things aren't great, they're not the disaster we thought," said Bill Strazzullo, chief market strategist at Bell Curve Trading. "We've rallied after a horrendous start to the year."
The S&P 500 is up now nearly 11% from Feb. 11.
On Friday, the S&P 500 gained 32.62 points, or 1.6%, to 2,022.19. The Dow Jones industrial average rose 218.18 points, or 1.3%, to 17,213.31. The Nasdaq composite climbed 86.31 points, or 1.9%, to 4,748.47.
U.S. crude gained after the International Energy Agency said signs that the market has "bottomed out" have emerged. Energy companies have been shutting down rigs and laying off thousands of workers as oil prices plunged to around $30 per barrel, from well over $100 per barrel just two years ago.
U.S. crude has risen 47% from a 13-year low of $26.21 a month ago.
Bank stocks also rose sharply. That sector had been beaten down in recent weeks as investors worried about loans to highly leveraged energy companies going bad.
The rally has got some investors worried, though.
Chief Equity Strategist Phil Orlando of Federated Investors said the "terrific four-week run" makes him a "little nervous." Among his concerns are a steeper China slowdown, a U.S. dollar strengthening even more and hurting U.S. exports, no relief from the corporate profits drop over the last year and more surprises in the presidential election.
"Don't discount the fiscal policy uncertainty of the election," he warned.
Xavier Smith, manager of the Centre Global Select Equity Fund, said he doesn't buy the oil rally, either.
"Oil is a proxy for the overall economy, and it's not going on four cylinders anywhere," Smith said. "So why would oil be strong? It doesn't make any sense."
European markets rose sharply as investors hoped that the European Central Bank's latest blast of stimulus policies would help revive the region's economy. Germany's DAX gained 3.5%, France's CAC 40 advanced 3.3% and Britain's FTSE 100 rose 1.7%.
The ECB moves included three interest rate cuts, loans to banks, and the expansion of a bond-buying stimulus program. Shares in banks, which will be supported by the ECB loans, were among the biggest gainers.
Investors turn their attention to a meeting of the U.S. Federal Reserve next week. Unlike its counterparts in Europe and Japan, the Fed is looking to wind down its economic stimulus, though most investors do not expect it to tighten credit next week. The Fed raised rates for the first time in nine years in December.
Among stocks making big moves, driller Anadarko Petroleum rose $3.79, or 9%, to $46.29 after saying it would cut 1,000 workers, or 17% of its work force.
Power company Pepco Holdings fell $2.18, or 9%, to $22.07 after officials for the District of Columbia, where it operates, rejected a proposal to salvage its troubled $6.8-billion merger with Exelon Corp. District regulators rejected the merger twice before.
U.S. crude added 66 cents, or 1.7%, to $38.50 per barrel on the New York Mercantile Exchange. Brent crude, which is used to price international oils, gained 34 cents, or 0.8%, to $40.39 a barrel. Wholesale gasoline rose 0.5 cents to $1.444 a gallon, heating oil rose 0.2 cents to $1.218 a gallon and natural gas gained 3.4 cents to $1.822 per 1,000 cubic feet.
The dollar strengthened to 113.70 yen from 113.11 yen while the euro fell to $1.1157 from $1.1196.
U.S. government bonds fell, pushing their yields higher. The yield on the 10-year Treasury note rose to 1.98% from 1.93% late Thursday.