| Gap Study - Microsoft By Jon DeBry,
Last Update: 1:00 PM MT Feb 23, 1999
What are the odds that if Microsoft gaps up in the morning, it will close even higher?
How likely is it that it will return to the previous days price?
The following study examines gap openings in Microsoft from February 27, 1993 to
February 22, 1999. The MetaStock formulas for conducting the tests are included below.
Gaps
Results showed that a 1-3% gap up showed an above-average occurrence of the stock
closing even higher - if Microsoft gapped up between 1 and 2%, it closed equal to or above
the open 62% of the time. If Microsoft gapped up between 2 and 3%, the percentage improved
to 72%. There were 13 gaps of greater than 3%, 8 of which closed even or higher. Compare
these results to the percent of the time that the close was greater than or equal to the
open on any day, which was 53%.
On the other hand, gaps down didnt show nearly as much follow through - when
Microsoft gapped down 1 to 2%, the close was lower than the open only 43% of the time, and
when it gapped down 2 to 3%, the percentage dropped to 33%.
Ranges
If Microsoft gapped up, did it return to the previous close, as conventional wisdom
sometimes suggests? As it turns out, a 1-2% gap up returned to the previous close 41% of
the time, a 2-3% gap returned 12% of the time, and a 3+% gap returned 13% of the time.
Conversely, a 1-2% gap down will return to the previous close 58% of the time, a 2-3%
gap down 29% of the time, and a 3+% gap down 23% of the time.
The following day
How often did the opening price the day after a gap show a follow through? For a 1-2%
gap up, 63% of the time, for 2-3%, 60% of the time, for 3+%, 38% of the time.
Conclusion
Microsoft's sweet spot seems to be a 2-3% gap up, which showed a continuation of the
trend 72% of the time. Also, if you bought on any sell-offs, you showed a profit at
the end of the day the majority of the time, especially on large down gaps. Please
note that Microsoft has been a very strong stock over the 6 year period, and other stocks
may not act the same way, as Microsoft may not act the same way in the future.
Readers are encouraged to do their own research before making any decisions.
Formulas
The MetaStock formulas to calculate these percentages are shown below. The first input
is the minimum gap (e.g., 1%), and the second input is the gap increment (e.g., 1%, which
would give you a range of 1-2%). To calculate gaps down, change the percentage to a
negative.
Formula to determine whether the closing price is equal to or exceeds the opening
price on a gap day:
MinGap := Input("Minimum gap to consider
(%)",-10000,10000,1);
GapIncrement := Input("Gap Increment (%)",0,100,1);
LookingForGapUp := MinGap >= 0; LookingForGapDown := MinGap <
0;
{ Gap percentage }
Gap := (OPEN - Ref(CLOSE,-1))/Ref(CLOSE,-1)*100;
NumGaps := If(LookingForGapUp, Cum(Gap >= MinGap AND Gap <
MinGap + GapIncrement), If(LookingForGapDown, Cum(Gap <= MinGap AND Gap > MinGap -
GapIncrement),0));
If(LookingForGapUp, Cum(If(Gap >= MinGap AND Gap < MinGap +
GapIncrement, If(CLOSE >= OPEN, +1,0),0)),
If(LookingForGapDown, Cum(If(Gap <= MinGap AND Gap > MinGap -
GapIncrement, If(CLOSE <= OPEN, +1, 0),0)), 0))/NumGaps*100;
Formula to determine whether the daily range crosses the previous days close
on a gap day:
MinGap := Input("Minimum gap to consider
(%)",-10000,10000,1);
GapIncrement := Input("Gap Increment (%)",0,100,1);
LookingForGapUp := MinGap >= 0; LookingForGapDown := MinGap <
0;
{ Gap percentage }
Gap := (OPEN - Ref(CLOSE,-1))/Ref(CLOSE,-1)*100;
NumGaps := If(LookingForGapUp, Cum(Gap >= MinGap AND Gap <
MinGap + GapIncrement), If(LookingForGapDown, Cum(Gap <= MinGap AND Gap > MinGap -
GapIncrement),0));
If(LookingForGapUp, Cum(If(Gap >= MinGap AND Gap < MinGap +
GapIncrement, If(LOW <= Ref(CLOSE,-1), +1,0),0)),
If(LookingForGapDown, Cum(If(Gap <= MinGap AND Gap > MinGap -
GapIncrement, If(HIGH >= Ref(CLOSE,-1), +1, 0),0)), 0))/NumGaps*100;
Formula to determine whether the following days open continues the gap
trend:
MinGap := Input("Minimum gap to consider
(%)",-10000,10000,1);
GapIncrement := Input("Gap Increment (%)",0,100,1);
LookingForGapUp := MinGap >= 0; LookingForGapDown := MinGap <
0;
GapYesterday := (Ref(OPEN,-1) - Ref(CLOSE,-2))/Ref(CLOSE,-2)*100;
NumGapsthruYesterday := If(LookingForGapUp, Cum(GapYesterday >=
MinGap AND GapYesterday < MinGap + GapIncrement), If(LookingForGapDown,
Cum(GapYesterday <= MinGap AND GapYesterday > MinGap - GapIncrement),0));
If(LookingForGapUp, Cum(If(GapYesterday >= MinGap AND
GapYesterday < MinGap + GapIncrement, If(OPEN > Ref(CLOSE,-1), +1,0),0)),
If(LookingForGapDown, Cum(If(GapYesterday <= MinGap AND
GapYesterday > MinGap - GapIncrement, If(OPEN < Ref(CLOSE,-1), +1, 0),0)),
0))/NumGapsthruYesterday*100;
Jon DeBry is a former Equis programmer who now does MetaStock programming and
consulting. If you'd like Jon to write a formula for you, or even do a study similar
to the one above, send mail to jdebry@debry.com. |