Jump to content

Welcome to the new Traders Laboratory! Please bear with us as we finish the migration over the next few days. If you find any issues, want to leave feedback, get in touch with us, or offer suggestions please post to the Support forum here.

  • Welcome Guests

    Welcome. You are currently viewing the forum as a guest which does not give you access to all the great features at Traders Laboratory such as interacting with members, access to all forums, downloading attachments, and eligibility to win free giveaways. Registration is fast, simple and absolutely free. Create a FREE Traders Laboratory account here.

jswanson

S&P Overnight Trading Model

Recommended Posts

I've written several posts on this forum highlighting simple trading models that could be the basis for a profitable trading system on the S&P market. These ideas would be suitable either for the ETF market or the Emini futures market. This article will explore yet another simple trading model. Recently I was inspired by a post at Quantifiable Strategies titled, "How To Make Money From The Close Until Tomorrow’s Open in SPY/S&P 500" by Oddmund Grotte. This brief blog post builds up the work of Rob Hanna at Overnight Edges to test another simple S&P model. I thought I would create the model in EasyLanguage and put it through my own testing.

 

 

The Overnight Edge

The overnight edge is an S&P market edge that I, along with many other people, discovered years ago. I've written about this market edge in a previous article on my website, "The Overnight Edge". This particular model is going to take advantage of that edge by going long at the close of the day and closing the trade at the next day's open. The dominate question we will be answering today is, when should we buy. Obviously buying at the close of every single day is not a realistic strategy. So, we wish to eliminate the unproductive trades in favor of finding the highest probability set-ups. That is, what types of days produce the biggest nightly returns?

 

 

Baseline Model Rules

  1. SPY closes at new 20 day low
  2. Close is above 200 day simple moving average
  3. Go long at the close
  4. Exit at tomorrow’s open

Below is a snapshot of a few trades taken on the daily chart of the S&P Emini.

 

Overnight_Low_Trade_Examples.png

 

 

Testing Environment

I coded the above rules in EasyLanguage and tested it on the E-mini S&P futures market. Before getting into the details of the results let me say this: all the tests within this post are going to use the following assumptions:

  1. Starting account size of $25,000
  2. Dates tested are from September 11, 1997*through December 31, 2012
  3. One contract was traded for each signal
  4. The P&L is not accumulated
  5. $30 was deducted per round-trip for slippage and commissions
  6. There are no stops

 

 

Baseline Results

Below is the equity graph and the performance results of the baseline model.

 

 

Overnight_Low_Baseline_EQ_Curve.png

 

Overnight-Low-Baseline-Results.png

 

 

Testing the Robustness of the Lookback Period

The baseline rules call for a 20-day new low. Is this just an outlier? Or, is this parameter robust for a wide range of values? When looking at a trading model, it's important that the parameters demonstrate robustness across a wide range. That is, the system should remain profitable over many different values.

 

To test the robustness of this input, I will use TradeStation's optimization feature which will allow me to quickly test a range of values. I will test the range 2 - 30. The results of my test are below. The x-axis displays the number of days for the new low while the y-axis displays the net profit.

 

[caption align=aligncenter" width=607]Baseline_New_Low_Lookback_Study_Profit.png Lookback vs. Net Profit[/caption]

 

We can easily see a clear trend. The shorter the lookback period the more profit. Notice that a lookback period of 4*days is probably an outlier. It's enticing to simply pick a small lookback period like 3*or 5, but from experience I know more profit often comes at a price. Often*that price is deep drawdown, larger losing streaks and prolonged periods of no new equity highs.

 

Let's look at these results another way.

 

Another way to look at the results is to compare the profit factor vs. the lookback period. See the bar chart below. The x-axis displays the number of days for the new low while the y-axis displays the profit factor.

 

Baseline_New_Low_Lookback_Study_PF.png

 

We can see that our profit factor has an opposite trend when compared to the new profit bar graph. In other words, as we make more net profit, we do so with less efficiency. Sure we are making more money when we have a lookback period of 3 when compared to a lookback period of 20. But we also have more losing trades. This can be confirmed by the next bar graph.

 

Let's also take a look at the number of trades. See the bar chart below. The x-axis displays the number of days for the new low while the y-axis displays the number of trades.

 

Baseline_New_Low_Lookback_Study_Trades.png

 

Once a again there is a clear trend. There are fewer trading opportunities as you increase the lookback period. This makes sense. The higher the lookback period the less likely you are to experience that new low.

 

So, more profit does come at a cost. It will be up to you to determine what is appropriate for your trading situation. For me, I would like to have fewer trades and less net profit. This comes with, what I consider, the benefit of fewer losing trades, more net profit per trade, and less drawdown. In short, I prefer the quality trades over the quantity of trades. It appears we can improve the*net profit of our model by reducing the lookback period for the new look. More on that later.

 

 

Testing the Robustness of the Regime Filter

The regime filter in this model is a simple moving average. We are using the "standard" 200-day*simple moving average. This is a very common period for daily charts. It's commonly understood that price is generally bullish when it's above this moving average and bearish when below it.*Again, to*test the robustness of this filter*I will use TradeStation's optimization feature.*I will test the range 60*- 250. The results of my test are below. The x-axis displays the number of days for the lookback value*while the y-axis displays the net profit.

 

Baseline_New_Low_Regime_Lookback_Study.png

 

Clearly the longer the lookback period the more net profit we generate. Our "standard" 200-day lookback value performs well, but it's not the best. The best value is 250 in this study. Many values will perform similarly. This gives me confidence the regime filter is not overly optimized and is robust.

 

 

Weak Close Filter

In the original blog post by Oddmund Grotte he introduced a price based filter that required the close of the current bar to be within the lower half of the daily range. If price closes in the lower half of the daily range it is presumed we are looking for a weak close. A strong close would be when the close is the upper half of the daily range.

 

The calculation to determine if the close is within the lower half of the daily range looks like this:

 

Weak Close=(c-l)/(h-l) < 0.5

 

With this additional filter we are confirming weakness before opening a new long position. The results of our trading model with the new filter are below.

 

 

 

Overnight_Low_Baseline_With_Filter_EQ_Curve.png

 

 

 

Overnight-Low-Baseline-With-Filter-Results.pngThe filter did a fantastic job of removing unproductive trades. You can see this because we are making more net profit with fewer trades. This pushes up the average profit per trade. We also reduce our drawdown which increases our profit factor. The only thing concerning is our trade size is small. The baseline had 61 trades, which is not very many trades. With our filter we reduce the trades to 55. But we know how to increase the number of trades by reducing the lookback period of the "new low". We'll do that later. For now, there is one other input value I want to test.

 

 

Testing the Robustness of the Close Filter

Once again let's take a detailed look at the percent range used in the Close Filter. If you will recall, we are looking for a close in the lower half of the daily range. But is this just a fluke value? Will other values produce similar results?

 

The bar graph below depicts taking trades at or above the given x-axis value. For instance, the far left bar*produces a net profit around $4,700. The value on the x-axis at this bar is 0.1. This states that all this profit is accumulated above this value. By the time we reach 0.45 there is no more profit to accumulate. Thus, we can see the accumulated*profitable trades occur when the daily close falls within the lower 40% daily range. Put another way, we want to open a long position when the daily close is within the lower 2/5 of the daily range.

 

Baseline_New_Low_Weak_Close_Study.png

 

 

 

 

Combining Our Findings

Let's now combine a couple of our findings. First, let's increase the number of trades by reducing the lookback period on locating a new low. Let's try to keep the profit factor around 2.0, so we'll use a lookback period of 5*instead of the default 20. I will then change the weak close filter to a value of 0.40 from the default 0.50. I will make no change to the*simple moving average regime filter which is at 200. Below are the results.

 

Overnight_Low_Combined_EQ_Curve.png

 

Overnight-Combined-Results.png

 

 

 

Not too bad for a few lines of code. Remember this model does not have any stops nor does in reinvests profits. In short, this is not a trading system but an interesting model which could evolve into a complete trading system with some work.

 

 

Downloads

 

You can download the EasyLanguage code and TradeStation Workspace for this strategy here.

Share this post


Link to post
Share on other sites

I really like the detail you put in the post. Thanks!

 

One question, you're not a little concerned that the back-test only provided you with 60 trades. I know when I back-test I commonly like to have the system trade 200+ times, especially given the time period that the test is covering.

Share this post


Link to post
Share on other sites
I really like the detail you put in the post. Thanks!

 

One question, you're not a little concerned that the back-test only provided you with 60 trades. I know when I back-test I commonly like to have the system trade 200+ times, especially given the time period that the test is covering.

 

This is really a market study, not necessarily a complete trading system. I would encourage system developers to take this idea and see if they can build it into a complete system. However, you will notice the final strategy code generates a 167 trades which is a good number in my opinion.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.