Why the rally? This is a tricky one to call, because volume is average (it's been weak for a month) and volatility isn't spiking, either up or down. Instead of one answer, this is one of those days where several factors have combined to create a rally:
- Earnings are mostly positive, which was a factor right at the open. Whether it is CSX helping the railroads, Qualcomm helping semiconductors, Dover helping Industrials, Sherwin Williams helping the DIY stocks (record high there), the earnings news is generally better than expected.
- The European close was strong, as European bond yields rose. For days, traders have been talking about the worst-case outcome (for markets) on the French election this weekend: the possibility that the two most extreme candidates, Marine Le Pen on the far right and Jean-Luc Melenchon on the far left, would be the two candidates in the runoff. This concern seems to have eased, with France leading European markets, up 1.5%.
- There is talk of a House compromise on health care.
- Tax cuts are back on the burner. Treasury Secretary Steve Mnuchin, in a midday interview, said: "We're pretty close to bringing forward major tax reform."
- Short covering. Several sectors that have sold off this month are reversing today, particularly retail. And Steel stocks, which have been in a downward spiral all month, are rallying big as Steel Dynamics earnings were better than expected and President Donald Trump's executive order on steel has all the names moving.
Bottom line: there has not been a lot of movement in the markets because there haven't been a lot of reasons to sell. It's hard to make a case for a big drop unless you believe: 1) France is pulling out of the European Union; 2) the tax cut program Trump has been pushing is dead; or 3) the U.S. economic data continues to worsen into the second and third quarter, and bond yields keep moving down.
For the moment, the markets seem to be saying that these prospects are unlikely.