Wall Street stocks finished mostly higher Wednesday, shrugging off a batch of mostly weak economic data and comments from President Donald Trump that risked derailing a giant economic relief package.

Consumer confidence fell as incomes and spending declined, and new home sales slumped, according to government and private data.

Meanwhile, the outgoing president sharply criticized the $900 billion economic relief package and called for stimulus payments to be lifted to $2,000 from $600, raising the possibility he could veto the long-debated measure.

The Dow Jones Industrial Average gained 0.4 percent to 30,129.83.

The broad-based S&P 500 advanced 0.1 percent to 3,690.01, while the tech-rich Nasdaq Composite Index dropped 0.3 percent to 12,771.11.

Investors looked past the risk the stimulus bill could die and instead focused on the possibility of a richer package.

"If there's any change, it's to make the bill more stimulative," said Art Hogan, chief market strategist at National Securities, adding that after four years of watching Trump, markets are accustomed to "watching what he does not what he says."

"Nobody on either side of the aisle wants to go back without delivering something," Hogan said.

Analysts also cited a boost from the announcement that the US reached agreement to purchase an additional 100 million doses of the Pfizer/BioNTech vaccine against Covid-19.

Large banks were an especially buoyant sector, with JPMorgan Chase, Citigroup and Bank of America all winning more than two percent.

Among individual companies, Merck gained 0.4 percent after announcing that it had a supply agreement with the US government for initial doses to treat patients with serious Covid-19 symptoms with a new therapeutic.

But electric truck startup Nikola suffered another blow, losing 10.7 percent after it announced that a joint venture with Republic Services on refuse truck development fell apart. Republic Services fell 0.8 percent.