Scalping is something that intrigues many system traders. The challenge at taking small, consistent trades from the market daily while risking very little is appealing. With scalping, it’s generally accepted you are trading from a small timeframe, probably 5-minutes or less. The idea is to open a position and capture only a few ticks of profit. The appeal is since we are trading from such a small timeframe, your risk is small thus, you can trade with a small account. Often you will have setups that produce high win rates and occur more frequently than setups on a higher timeframe such as hourly or daily. There tends to be a higher frequency of trading opportunities with scalping which can potentially lead to large accumulated profits vs. your starting equity.
In my opinion, scalping for the retail trader is very difficult to do. One of the biggest barriers is the transaction cost in both commissions and slippages. Scalping means smaller profit per trade yet, as you drill down to smaller and smaller timeframes your costs remain fixed. Thus, the negative impact of commissions and slippages grows taking a bigger percentage of your profits. A single tick of slippage is hardly noticed when you are holding a trade for several days with an average profit of $600 per trade. However, on a scalping system that single tick is the difference between life and death. Then throw in latency, computer issues, internet issues and your margin for error is small. Again, on larger timeframes you can exit a trade now or in a few seconds and it won’t matter that much. Not so in the scalping world where everything is hyper-sensitive and your margin for error is tiny.
With all this in mind, I thought it would be interesting to look at a scalping trading model for the Euro currency futures. I ran across a very simple scalping strategy at the website One Step Removed. The author is Shaun and he stumbled upon a scalping strategy when conducting research on another trading model. Shaun’s concept and testing was performed on the EURUSD Forex pair. Shaun also points out in his article that his strategy will not be profitable if you have execution slippage of more than 2 pips.
I found the strategy simple in nature and thought we would have a look at it. I will be coding this strategy in EasyLanguage and will test it on the Euro currency futures. The strategy code is available at the very bottom of this article.
Extreme Price Moves
Shaun noticed that extreme price moves as defined by 1% distance from a 200-period simple moving average (SMA) occurred very rarely. Going with the premise that price will soon retreat from such an extreme, this might be a potential location to open a trade. In short, Shaun’s Simple Scalping System (SSS) is a mean reverting strategy that utilizes a SMA envelope. When price closes beyond the envelope a trade is opened. The trade is closed when price returns to the envelope.
Below is an image of the system with a trade example. Notice there are times when price touches the lower bands and no trade is entered. Price must close below the band to trigger a trade.
Chart Setup and Trading Rules
- Chart: EURUSD 5 minute
- SMA Period: 200
- Moving Average Envelope: 1.0% of the SMA
Entry rules
- If the price crosses and closes below the lower envelope, then buy at market.
- If the price crosses and closes above the upper envelope, then sell short at market.
Exit rules
- If the price crosses and closes above the lower envelope, then exit long at market.
- If the price crosses and closes below the upper envelope, then exit short at market.
For the following backtests in this article I will be starting with a $10,000 trading account and testing over the dates May 2001 – December 31, 2011.
The Effect of Slippage and Commissions
To demonstrate the insidious effect that commissions and slippage have on a scalping trading model, for my first backtest I deducted nothing for slippage and commissions. I then added commissions and slippage and ran the backtest again so you can see how it impacts the equity cuve. You just might be surprised at how damaging commissions and slippage can be. The first equity graph below does not take into account slippage and commissions.
No Commissions or Slippage
The next two charts below do take into account both slippage and commissions. The first chart uses 1 tick of slippage while the second chart uses 2 ticks of slippage.
$5 Commissions and 1 Tick Slippage Per Round Trip
$5 Commissions and 2 Ticks Slippage Per Round Trip
Looking at the first chart you see an overall winning system generating about $22,000 in profit. The visual difference between the graphs is even more dramatic if they were all plotted with the same scale. Nonetheless, the final equity graph is radically different from the first equity graph. Looking at the first equity graph, a complete novice might think he found a winner and trade his hard earned capital only to discover a falling equity curve. But why? Not taking into account slippage and commissions, particularly with intraday trading, is a huge mistake.
The Baseline System
For the remainder of my testing I will be deducting $5 commissions and 1-tick of slippage. Our baseline, which is depicted in the middle equity chart above, will provide us with a benchmark to compare modified versions of the system. The baseline results are below.
All Trades | Long Trades | Short Trades | |
---|---|---|---|
Total Net Profit | $6,735,00 | $11,207.50 | $4,472.50 |
Gross Profit | $75,000.00 | $40,585.00 | $34,415.00 |
Gross Loss | $68,265.00 | $29,377.50 | $38,887.50 |
Profit Factor | 1.10 | 1.38 | 0.88 |
The first thing I notice when looking at the performance report is how poorly the short side performs. I’m not a big fan of trade symmetry. That is, I don’t think it’s necessarily a good idea to have both long and short signals as mirror opposite of each other. Our baseline system does just that. We may be seeing a positive result on the long side because the Euro contract has a long side bias over the historical test. We’ll look at that more later. For now, I’m going to focus on the long side only.
Here are the results with long side only:
EC Scalping System Performance
Baseline | |
---|---|
Net Profit | $11,207 |
Profit Factor | 1.38 |
Total Trades | 456 |
%Winners | 71% |
Avg.Trade Net Profit | $24.58 |
Annual Rate of Return | 7.07% |
Sharpe Ratio | 0.27 |
Max Drawdown(Intraday) | $4,632 |
Expectancy | 0.11 |
Expectancy Score | 4.77 |
If you will recall from the trading rules there are no stops. A trade is exited only when price returns to the SMA envelope. This dynamic exit can produce some frightening drawdowns, as pictured below.
Another way to look at this is with a Maximum Adverse Excursion (MAE) chart, pictured below.
Each point on the chart represents a trade. Each color represents profitable (green) or unprofitable (red) P&L for the given trade. The y-axis is the P&L and the x-axis is the drawdown (the adverse excursion). Notice that many of the trades that experience a 1000 or larger drawdown end up being red points on the chart. These are very expensive drawdowns that turn into large losers. Somewhere between $600 and $1,000 might be a good place to put a hard stop to limit those large losses. Using TradeStation’s optimize feature we can analyze the behavior of different stop values. Below is a bar graph depicting the stop value in dollars vs. the net profit.
Looking at this we can see adding a stop value really hurts our performance. Stop values up through $2,000 really push our net profit down. Can anyone really trade a scalping system that might require a $2,000 or more catastrophic stop loss? This makes me wonder if we need to find an additional filter to help reduce unprofitable trades. Instead of simply applying a hard stop we might want to test trading only during certain hours, trading only during a bull market or adding a volatility filter. These are all good ideas and we’ll continue to explore this trading model in a future article.
Other Articles In This Series
Testing A Euro Currency Futures Scalping Strategy, Part 1
Testing A Euro Currency Futures Scalping Strategy, Part 2
Testing A Euro Currency Futures Scalping Strategy, Part 3
Testing A Euro Currency Futures Scalping Strategy, Part 4
Testing A Euro Currency Futures Scalping Strategy, Part 5
Hi Jeff,
Unless I’m missing something, I actually don’t think you need to have slippage per se. Since you are buying low and selling high, you can just use limit orders.
From a practical point of view, you will need the algo to check (at the end of each bar I guess) what price would be needed for the sma to trigger a signal, and then send the limit buy/sell order ahead of time.
Of course for backtesting this in a conservative way to assume a fill you will need the price to go trough your level, rather than touching it – this could affect the performance, but should be better than slippage.
Andrea
Andrea, when performing backtests I really prefer to include at least one tick of slippage. With so many other aspects of trading working against a trader I want the system to handle some type of trading friction beyond a standard brokerage fee. If the system can hold up in backtesting with slippage, I will feel much more confident in real life execution. However, you are correct when moving to the live market. Utilizing a limit order is good advice. Thanks for the idea.
I was thinking something similar. If price closes above (below) the envelope then you could enter a limit order to sell (buy) at the previous close. Only a gap and run on this 5m chart would go unable and those seem to occur very rarely.
Because we don’t know volume by price on intraday charts (some platforms probably do but this would get intricate), slippage would probably still need to be taken into account. In other words, suppose for a long trade, the next bar opens at the close and rallies higher throughout. If only one contract actually traded at the previous closing price then my limit order may not be filled. I might therefore only take long (short) trades where the entry bar has a low (high) at least two (for example) pips below (above) the previous close.
Thoughts?
Will there be more slippage in real trading if you trade only the quiet hours? Same with volatility maybe?
This most certainly could be true, on both counts.
Along these lines, the TradeStation platform ( 9.5 ) now has two places to add slippage:
On the Format Strategy page, Properties for All, General tab, Positions Slippage and be added for per trade or per contract.
However, if you go to the Backtesting tab, there is the Limit Order Fill Assumptions area, you can select the second option, “Fill Entire Order when trade price exceeds limit price.”
But in the next area down in the Backtesting tab, “Market Order Fill Assumptions” you can choose to apply slippage to market orders and then there is a check box, “Do not allow fill price to be outside of the bar high/low”. This option, I believe, refers back to the second option in the Limit Order Fill Assumptions area whereby a note is added, ” When back-testing some fills may occur outside the range bar….”
Several options for including slippage depending upon the design of the code. Unfortunately, I have not seen any expanded discussion on these selections and their implications from TradeStation.
Good Trading,
Loser