How I Found an Edge in First Day Gap up Plays


Since I started day trading, I tried every strategy I heard of. Earnings plays, mean reversion on large caps, momentum on small caps – you name it. I always heard about the need to focus on one set up, learn the ins and outs of it. But for some reason, I ignored it. Needless to say the results were accordingly.

After seeing a lot of twitter traders PNL shorting piggies 1st day, I knew there’s some edge there and I was determined to find it. But this time, I wanted to do it the right way.

A piggie trying to hold it’s highs

November 2018 I started tracking some first day runners, and saw that approximately 74% of them were closing red. The problem was, how should I trade them? Sure, a lot of them were fading all day, but those that didn’t could squeeze 100% or more. I needed to find a way to increase certainty (74% is great but I needed more to cover intraday losses that sometimes happen even when you are right on the direction), and I needed to develop an intraday strategy to exploit that bigger picture edge.

Watching the market and getting intuition

I started with just watching the market, every day and all trading day. I wanted to see how the plays play, what patterns can I recognize and what should I explore deeper. I spent around a month watching charts of every stock that gapped up, learned how to read filings and tried to understand what fundamentals caused a stock to fade all day. After getting some intuition, I knew what I wanted to track based on the clues I found.

Manual tracking

Now I was ready for the hard work – manually tracking all the plays.  Other than the obvious features like open, close, high, low, I tracked things like volume PM, EOD volume, cash, net loss, short float, etc. Basically everything I could think of. It was manual, exhausting work – but worth every second of it.

After I got to 240 instances, I analyzed all the data. Tried to find correlation between features to the end result. Tried to answer questions like “does SSR affects the end result?” and “what’s the average pop in the morning and is it correlated with other feature in the sheet”? (Hint: no, yes – but test it by yourself for your strategy). The manual tracking and analysis allowed me to find a lot of interesting correlations in the data – things I could trade off of.

Now I knew exactly which parameters matter for the strategy and which doesn’t. One thing I will say here is that I was able to disprove a lot of twitter theories from the biggest “Gurus” out there. That emphasises the fact that you should trust no one but yourself. Taking inspiration from others is ok, but you must prove what they say is right with data, as a lot of them will say things based on irrational biases and wrong intuition, and not cold data.  

Automatic tracking

This is where things got really interesting. I downloaded all first day gap ups for the past 5 years via API, concentrated on the companies with bad filings and dilutions. I had more than 1000 of old plays with the features I knew mean something based on the manual tracking.

An easier no code approach is Spikeet. A great product to get all the stock data you need easily.

With all this data I could develop models (formulas) for pop size in the morning, pre-market trading, volume forecast, time of high of day and a lot more. From the default 74% to guess the direction correctly in the general case, I could get to around 90% in some specific cases after optimisation of the features.

Tip: sort the data according to one of your chosen columns and try to find correlation between that column and the end result of the day (did the stock closed red or green?). For example, you can sort according to pre market volume, and check if it affected whether or not the stock closed red. Do it for every combination you can think of, and soon enough you will know a lot more than anyone else about your strategy.

Creating an intraday strategy

After having all the statistics, I was ready to develop the intraday strategy. I based it on the formulas I got from the tracking, as well as different correlation I found useful. The real game changer for me though was a strategy tester I built to back test the intraday strategies I came out with.

my results before and after finding strategies with the strategy tester

The actual intraday strategy is an ongoing process and I keep improving it every few weeks based on results. For example, although the strategy was supposed to be for shorting piggies, I found out a way to avoid shorts in some special cases like huge volume forecast. The beauty is that every time you think you see something while trading that inspire you for a new thesis, you can check in your stats and back test it to prove or disprove your thesis (or those of other traders you follow).

Few important things when creating a strategy:

  1. Avoid over fitting – over fitting is the process of matching a strategy to your data set way to much. The strategy will look great on your data base, but it won’t be robust. Once trading real time the results will be bad. In order to avoid over fitting try to use less rules, keep the strategy simple and build your model on just 50% of your data, while testing on the other 50%. If your results are the same for both chunks of data – your strategy is probably robust (assuming enough data points).
  2. It’s very interesting to see that all different intraday patterns I found are somewhere between the scale of 70% SR with 1:1 RR to 45% SR with 1:3 RR, assuming no tape reading or discretionary thinking involved. Any thing extremely better should make you suspicious of the strategy you found. Sometimes great results just mean there are mistakes in the strategy assumptions, which happened to me many times.
  3. Make the testing process as automatic as you can. The ability to check any idea I got in a matter of few minutes with my strategy tester and the data baes I built is a huge edge.

Measuring results

After you got the backtested results, you would like to measure it and make it comparable to other strategies. I use a few simple variables to measure my strategy:

Win probability :

 ((number of winning trades / total number of trades) - 1) x 100

Win : Loss relation :

 avg. win / avg. loss

Profit factor :

 total profit / -(total loss)

After getting the above stats from my strategy tester, I use the EquityCurveSimulator website to see what are the expected results. For example, here are the results output I get for one of my backtested strategies.

A simulation for one of my strategies

I used 45% win probability and 1 : 3.26 win : loss relation which means that when I lose, I lose $1 and when I win, I win $3.26 on average, and that I win 45% of the times.

Now the simulator creates 20 different possible PNL curves that helps me know what I should expect from the strategy. The avg. performance for 100 trades is 159%, while avg. max drawdown is 6.5%. I should also expect maximum of 11 consecutive losses.

A bad simulation would be something like the following:

We can see that average performance is 13% after 100 trades, but we can definitely finish the period red as a lot of the PNL curves are going down.

So now I know when trading real time that if I get more than -6.5% drawdown on my account trading that strategy, or more than 11 losing trades in a row, I should start looking into the strategy and why it doesn’t work as expected.

The above PNL simulator will also help you prioritise strategies, as the average performance stat will help you understand which strategy of yours got the best expectancy.


Watch the market every day, get ideas over the strategy you would like to attack. Track everything you can think of manually and automatically. See if you got an edge and then trade it. You can get ideas from twitter but trust only what you can prove with large amounts of data. For calculation of how much data you need for your strategy to be reliable, check out the following post.

  1. Hello. Brian Lee showed me your page on Twitter and first I’d like to say I’m truly fascinated by your approach. I’m wondering how you built your strategy tester, what are inputs and outputs and so on. I’m interested because I’ve also built one for myself in C++, working in a very similar way that you describe. Have you described features of your tester in any post? Thank you

    1. Hi Jure! The tester takes intraday 1 minute data as an input. It calculates automatically all kinds of moving averages and volume forecast that I can use as triggers and filters. It also gets the % gap up, market cap, cash of the company and other fundamentals. The tester outputs the strategy performance, profit factor, avg. win, avg. loss and winning percentage. Hope that helps.

  2. Do you take all your trades based just on data can be put in a mathematical formula? I’m asking because I mainly trade patterns, all sorts of bullish flags. And I’m using both daily in ID charts to determine if the pattern is valid. I’ve been thinking long and hard how to code the pattern recognition SW, but it seems like a daunting task. Would probably take years.

    1. Pattern recognition using code is possible. I do mainly double tops which are simply break of short term moving average after big run up, then certain % correction from the newly created bottom to the top. A bullish flag is a little bit less straight forward but it’s definitely possible with some thought. For example you can measure noise of a stock and watch for a decrease after a run up. Also, you can check out the following script for bull flag in TOS I found:

Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like