I learned something interesting today. When we are going into earnings, the retail investor may try to buy the stock before the earnings report to get an 'edge'. Who are they buying the stock from? The people who bought the stock during the dips who are using the run-up into earnings to unload and lock in their profits! The reason for the run up is because everyone is anticipating a good earnings report so the earnings report has to really surprise the street in order for the stock to continue it's advance after earnings. This is the reason Goldman Sachs and Citibank beat the street but went down and the same for IBM today.
This knowledge is basic common sense, but until I actually heard it, it didn't 'hit me'.