The idea of having a scalping trading system is extremely attractive to new systematic traders. Go to YouTube and type in: forex scalping strategy and look at some of the search results. Go ahead, I’ll wait.
Okay, now that you’re back, let’s continue. Do you believe the hype? A new trader, searching around for trading ideas, may become enamored with the idea: a veritable ATM, pouring cash into our accounts and making everyone involved uber wealthy. Well, maybe more like Uber wealthy, because you may be driving for Uber to pay for your trading habit.
Scalping was done a lot by pit traders, as I have read, some of whom made a living on their own accounts scalping a few points here and there. Scalping is notoriously difficult, regardless of what you may read, hear, or view. The general idea behind scalping is to take a few points profit from the market and there are people who will sit in front of their trading application and buy and sell to capture these short movements throughout a trading session. The most difficult part about scalping is slippage, the bid-ask spread, and commission. At best, it seems like a tough way to make a living. At worst, it is just gambling (I could argue that all trading is gambling but I will stay on-topic).
For my part, I have fiddled with scalping systems in the past, but they never amounted to much and would only have been minimally profitable. Today, I am going to start a series of scalping systems based on some ideas I have been spinning in my head. I have no idea if they will work or not, but my manual testing on index futures shows some promise.
This idea will use a relatively fast Kaufman’s Adaptive Moving Average (KAMA) and a profit target. When the KAMA settles between the open and close of a bar, I think we are reaching some sort of price equilibrium, which is I why I call it ‘moderate scalp’. There is a tendency for the KAMA to stick around for a little while before trending away, so I want to see if I can capitalize on that oscillation or churn. One requirement of a scalping system is that it requires a high win rate, about 70-80%, as the average losses tend to be bigger than the average wins, so we need lots of wins to offset the trading costs and losses.
Let’s get to it!
Phase 1: Plan & Design
1. Trading Idea
The big idea is that when the KAMA settles between the open and the close of a bar, we are reaching price equilibrium, thus we are going to enter in the opposite direction of the bar. If the bar closes up (Close > Open) then we will go short; if the bar closes down, we will go long. We exit when the profit target is hit or the bar closes. In other words, we are in and out within the same bar.
I plan to test this on futures and forex instruments.
2. System Definition
- Futures: 1 contract
- Forex: 100,000 lot size
- If Close > Open then Sell Short next bar at market
- If Close < Open then Buy next bar at market
Stop: Catastrophic stop loss
Exit(s): If still in position at the end of the bar, exit at market
- Optimizable: don’t get greedy and take what the market gives us
I will use the following input parameters:
|ProfitTarget(10)||double||Yes||This will vary by instrument, so I will need to work on this a bit, but not overfit. As noted later in the Unit Testing section, I am taking profit target based on points for the instrument.|
|StopLoss(500)||double||Yes||Used to calculate our entry price (limit order)|
3. Performance Objectives
The system will meet the following objectives:
|Strategy Type (trend, mean-reversion, |
day, swing, etc.)
|Risk of ruin||0%|
|Profit Factor||> 1.5|
|Win Percent||> 70%|
|Max Drawdown %||< 35%|
|Profit/Drawdown Ratio||> 2.0|
This idea is S.M.A.R.T.: Specific, Measurable, Achievable, Realistic, Time-bound
4. Market Selection
I am looking for instruments that demonstrate long wicks to the up and down sides on the selected timeframe. I want an extremely high probability that the instrument will move up and down, regardless of whether I am long or short.
|Currencies-Futures||Futures: Euro FX, Australian Dollars, Canadian Dollars, Japanese Yen, British Pound||EC, AD, CD, JY, BP||In general, I expect currency futures to behave much like forex|
|Agriculture||Soft Red Wheat, Oats, Lean Hogs, Soybeans, Corn||W, O, LH, S, C|
|Currencies-Forex||EUR/USD, AUD/NZD pairs|
|Index Futures||E-minis: S&P, Dow, Russell 2000, Nasdaq||ES, YM, RTY, NQ|
Chart Type, Timeframe, Session, Time Zone:
|Chart Type||Regular Candlestick||Charting is only useful for validating entry and exit signals|
|Timeframe / Interval(s)||Daily|
Phase 2: Build
5. Manual Test
Done. It works on E-mini S&P and E-mini Nasdaq futures, conceptually.
In Kevin Davey’s process, he calls this step Preliminary testing. This is a validation of your idea and allows you to quickly determine if the idea is gold or garbage. The idea is that you write the code and put it on an instrument(s) to see if you should proceed.
I purposely do not do this but take a different approach: I perform the trades by hand. The reason, which I will expand upon in a later article, is that I need to see what can happen with a system. A preliminary test, performed by just writing some code and using brute-force to check your idea, may miss something. It could cause you to prematurely dismiss your idea or advance an idea where you may have not identified a potential issue.
For example, sometimes I have found that my system puts me on the wrong side of a trade, which would need to be corrected. The manual test allows me to really understand the nuances of a system, even though it can be slow and laborious. Just writing a chunk of code is easy and convenient, but it may not always or accurately capture the essence of the system. One added benefit is that it forces me to keep my ideas and system simple.
The exit is usually by way of profit target and not shown above, but the exit criteria show above only allows us to stay in for one bar.
7. Unit Test
In this step, I discovered an interesting thing with using a profit target in scalping. Profit targets can be a ‘heavy hand’, i.e., they are awkward and clumsy. With a scalping system, the profit target is the exit, we hope. I started using a dollar ($) amount stop loss but realized that using the minimum move would be better, or what I will refer to here as a ‘small point’.
This table shows the potential problem with using just a dollar amount profit target:
|Instrument||Smallest Move||Small Point Stop||Equals $ Stop|
|Oats||$12.50||8 small points||$100|
|Silver||$25.00||4 small points||$100|
|Heating Oil||$4.20||24 small points||$100.80|
If I just used a $100 profit target, it works fine if the smallest move is divisible by 100. However, with heating oil, it is not. The point (no pun intended) is that using the minimum move for an instrument will give us a more precise profit target.
For this system, I adopted a point based profit target because of what I learned.
Note: Unit Test verifies that the system is executing the trading rules correctly. It is, essentially, quality control.
Phase 3: Test
I used smaller slippage values (about 50% my normal values), due to the use of limit orders when using a profit target. I still expect slippage on the entry, but not on the exit.
I gently optimized the two input parameters:
|ProfitTarget||4 to 30 (futures) |
20 to 200 (forex)
|StopLoss||0 to 2000||500|
Recall, ProfitTarget is in small points, my term for the minimum move for an instrument. Example: S&P E-mini future contract, 1 small point = $12.50
‘Step’ is the distance within the range. Example: for StopLoss, we test using a stop loss of 0, 500, 1000, 1500, and 2000.
There is one major difference for this system, just because it is a scalping system. I decided to do more frequent optimizations, as I expect this type of system is more sensitive to changes in the market in the shorter term. With the software that I use, I can test over different in-sample and out-of-sample periods. I chose 20 periods to 120 period, in 20 period steps (i.e., 20, 40, 60, 80, 100, and 120 periods) and am selecting the best optimization period. I may regret this decision, but I am still learning what works and what does not for different situations.
9. Walk-Forward Analysis
Everything failed, although it was not readily apparent, and it took a lot of deeper analysis. I did get some very interesting results:
- Exceptionally high win rates, greater than 90% for some instruments
- Deceivingly high Profit Factors (> 1.5)
- Intra-day drawdowns can be eye-popping ($5k-$10k)
- When the optimizer picked ‘0’ as the best stop loss, the losses were huge. I guess ‘0’ as my starting point was a bad idea.
Walk-forward efficiency, which is a measure of how well your walk-forward matches the optimized results, was low, below 50% in nearly all cases (higher is better, 100% is ideal). Below is an equity curve for S&P 500 E-mini, demonstrating how inefficient the optimized parameters were:
The main takeaway from this step is that scalping systems will present much different and deceiving statistics when compared to swing or trend-following system. It is possible that this scalping system could work, but optimization does not seem to improve the system over having a fixed value for profit target and stop loss.
10. Monte Carlo Simulation
Even though WFA failed, I ran a couple of sets of trades (ES and YM) through Monte Carlo simulation. They did not totally flame out, but the annual returns, in the neighborhood of 6%, make these not very attractive, even though we are in the market for less than 20% of the time.
I incubated ES, as we saw in the Walk-Forward Analysis section, just to see how bad it could be. It was bad.
Phase 4: Deploy
We did not make it this far.
Notes and Commentary
Given what I knew when I started, I did not expect this to work. However, this was the very first scalping strategy that I have put through our standard system development process, so I needed to see what happened. I learned:
- Using small points for profit targets are more accurate in measure than round dollar amounts
- The performance statistics of a scalping system will be inflated
- There maybe other scalping approaches that work, but not this one
Ideas for future systems:
- Utilize ATR to calculate the amount to scalp, which will allow the system to adapt to volatility
- Making a long/short entry decision based on where in the bar the KAMA is; example, if KAMA is in the upper 25th percentile of a bar, then go long
- Enter and exit same bar based on where KAMA is (not a scalp, more of a swing
Next time we will be looking at the second of the triumvirate of Technical Analysis of Stocks & Commodities (TASC) magazine’s optimized systems, the Optimized CCI (Commodity Channel Index). I did some work with CCI several years ago, so this will be fun to look at again.
Thank you so much for reading. If you have any comments, suggestions, or just want to say ‘hi!’, please leave a comment below or reach us through the Contact form. You can follow me on LinkedIn or Twitter (top of the page) and if you have not subscribed to our twice per month (no more, no less) newsletter, you can do so below.
Trading System Result: FAIL
Did you like what you read? Do you want to see more? Subscribe now and receive our email twice per month, with the Trading System Idea of the Week and other fun stuff.
Don’t worry, we will never, ever, ever sell, overuse, or donate your email address. Promise.