Stocks rose for a fourth straight day yesterday, led by commodity producers such as Exxon Mobil and Alcoa. The Standard & Poor's 500-stock index nearly erased its loss for the year.

"Economic growth will provide a reasonable catalyst for the market here," said Warren Koontz, a money manager at Loomis Sayles, which oversees $65 billion in Boston. "The economy will be doing better than at least perceptions were a few weeks ago."

The Dow Jones industrial average gained 12.28, or 0.1 percent, to 10,578.65, the highest close since March 18. Broader indicators also rose. The Nasdaq composite index climbed 14.23, or 0.7 percent, to 2089.15. The S&P 500 added 4.38, or 0.4 percent, to 1210.96, its highest level since March 8. The benchmark has trimmed its year-to-date loss to less than 0.1 percent after dropping as much as 6.1 percent at its low on April 20.

Since its 2005 low, the S&P 500 has climbed 6.5 percent to a three-month high as signs of inflation remain tame. Still, the advance has slowed in June, with the benchmark adding 1.6 percent with muted activity. Trading on the New York Stock Exchange has been below the 2005 average for 20 straight days.

"There's a lot of debate as to whether or not this rally is real, and it depends on what you really think inflation is," said Warren West, head trader at Greentree Brokerage Services in Philadelphia. "We're optimistic over the next couple days, but over the next few weeks, I think the market will pull back."

Movers

Exxon, the world's largest publicly traded oil company, gained 87 cents, to $60.12.

Alcoa, the world's biggest aluminum maker, increased 37 cents, to $27.93.

Vicuron surged $12.41, to $28.21, after Pfizer agreed to purchase the biotechnology company for $1.9 billion. Pfizer rose 17 cents, to $28.60.

Bed Bath & Beyond gained $1.93, to $43.92, on a bullish Lehman Brothers report.

General Motors fell 72 cents, to $35.62, the steepest drop in the Dow, after an analyst wrote that the company might not get enough union concessions to help it cope with mounting benefit costs.

Indexes

New York Stock Exchange composite index rose 33.37, to 7289.76.

American Stock Exchange index fell 4.54, to 1546.01.

Russell 2000 index of smaller-company stocks fell 8.90, to 644.03.

Volume

NYSE: 1.36 billion shares, down from 1.39 billion on Wednesday. Advancers outnumbered decliners 2 to 1.

Nasdaq: 1.82 billion shares, up from 1.71 billion. Advancers outnumbered decliners 2 to 1.

Commodities

Crude oil for July delivery: $56.58, up $1.01.

Gold for current delivery: $436.20 a troy ounce, up from $429.10 on Wednesday.