North American markets rallied ahead of the Victoria Day long weekend, with the Toronto Stock Exchange's main index recouping much of its nearly 270-point drop two days prior.
The S&P/TSX composite index surged 181.26 points to 15,458.46 in a broad-based advance, for a two-day gain of 184.78.
On Wednesday, the commodity-heavy index plummeted 269.65 points amid growing political chaos in Washington that caused investors to worry U.S. President Donald Trump's promised pro-business policies may not come to fruition.
While the Trump debacle took some of the steam off the market Wednesday, energy drove the rebound to close out the week, said Luciano Orengo, a portfolio manager at Manulife Asset Management Ltd.
The July crude contract cracked the US$50 mark for the first time since April 20, gaining US$1.01 to US$50.67 per barrel.
The jump came amid expectations that OPEC members will extend their agreement to curb crude production when they meet in Vienna next Thursday.
Energy stocks outperformed all other sectors composing the TSX, with shares rising on average 2.52 per cent.
Wall Street also made a partial recovery from Wednesday, when the three major New York indices fell by a total of 570 points.
The Dow Jones industrial average advanced 141.82 points to 20,804.84, the S&P 500 index added 16.01 points to 2,381.73, and the Nasdaq composite index rose 28.57 points to 6,083.70.
Including Friday's gains, the three indices have recouped 295.07 points since Wednesday.
Much of the rebound isn't Trump-related, said Orengo, but rather could be people figuring out that the underlying fundamentals, like strong earnings from companies, are good.
Canadian financial markets will be closed Monday for Victoria Day, while U.S. financial markets are open.
In currencies, the Canadian dollar gained 0.36 of U.S. cent to an average price of US73.83¢.
Elsewhere in commodities, the June gold contract rose US80¢ to US$1,253.60 an ounce, the June natural gas contract gained US7.4¢ to about US$3.26 per mmBTU, and the July copper contract advanced US5¢ to US$2.58 a pound.