Slingshot Trading Strategy: Explained & Backtested

Have you ever tried trading the markets with a slingshot? No, I’m not talking about using a slingshot to shoot arrows or rocks at your target. I’m talking about using Scot1and’s Slingshot Trading Setup.

In this blog post, I will be discussing the trading setup and how you can use it to trade the markets.

For Nerds/Programmers (and I say that proudly):

Who Is Scot1and?

Scotland is a professional trader with multiple triple-digit annual returns under his belt. He posts his trades publicly on Twitter under his handle @scot1andT, and the slingshot is one of his bread-and-butter setups.

What Is the Slingshot?

Scot1and developed the slingshot setup to get into a powerful stock after a pullback just as the downward momentum stops and the stock begins to go back up.

The slingshot indicator, which is a component of the slingshot setup, fires when the current bar’s close crosses the 4-ema of the highs.

How to Trade the Slingshot Setup

Like everything in trading, there’s a lot of nuance and understanding of market dynamics. But in essence, here are the rules:

  • A slingshot indicator cross (duh)
  • A pullback in a strong stock (required)
  • A range break (required)
  • Consolidation (recommended)

The stop loss is at the low of the slingshot indicator trigger bar, so we want consolidation as it lowers the amount of risk on the trade.

If you have difficulty seeing range contraction, you can add the ADR or ATR to your charts.

Setting up the Slingshot Indicator in TradingView

Add the following code to the Pine Editor. Thank you, @taplot.

// This source code is subject to the terms of the Mozilla Public License
// 2.0 at https://mozilla.org/MPL/2.0/
// © TaPlot

//@version=5

//Code written by TA Plot https://twitter.com/TaPlot
//Written on 11/28/2021

indicator(title="TAPLOT SlingShot", shorttitle="Sling Shot", overlay=true)
C_Paintbar = input.color(title="Bar Color", defval=color.new(color.orange,0))

Paintbar=input(true,'Paint Bar?')
ShowShape=input(false,'Show SlingShot?')

EMAlen = input.int(4, minval=1, title="EMA-Length")

//MA line calculation
EMALine = ta.ema(high, EMAlen)
plot(EMALine, title="EMA")

slingshot = close > EMALine and close[1] < EMALine[1] and close[2] < EMALine[2] and close[3] < EMALine[3]

plotshape(slingshot and ShowShape?1:na,style=shape.labelup, location=location.belowbar, size=size.tiny)
barcolor(Paintbar and slingshot? C_Paintbar : na)

The Slingshot Backtest Results

I used the following parameters for this backtest:

  • Period: Hourly
  • Universe: QQQ
  • Filter: Stocks above 50-day SMA (strong stocks)
  • Filter: Stocks below their 10-day EMA (pullback)
  • Entry: Slingshot (Close above hourly 4-period EMA)
  • Exit: RR ratio or stop loss hit

2020-01-01 to 2021-12-31

rrwonlostwin_streaklose_streaktotalwin_percedge
12075172514938000.5460530.092105
21425187681433010.4316870.295062
31072186771729390.3647500.459000
4874184561627190.3214420.607209
5718182151725390.2827880.696731
6587176952623560.2491510.744058
7514171752622310.2303900.843120
8458167952621370.2143190.928872
9427166752620940.2039161.039160
10386163342620190.1911841.103021

2018-01-01 to 2019-12-31

rrwonlostwin_streaklose_streaktotalwin_percedge
11152103111921830.5277140.055428
2710106561417750.4000000.200000
3510102551415350.3322480.328990
438199741413780.2764880.382438
530293441412360.2443370.466019
623988541411240.2126330.488434
721486851410820.1977820.582255
817382841410010.1728270.555445
91507933149430.1590670.590668
101287693148970.1426980.569677

2016-01-01 to 2017-12-31

rrwonlostwin_streaklose_streaktotalwin_percedge
1125595911722140.5668470.133695
276699881017640.4342400.302721
355994181115000.3726670.490667
442193751213580.3100150.550074
534488551212290.2799020.679414
629485251211460.2565450.795812
725781441310710.2399630.919701
822078541310050.2189050.970149
92097814139900.2111111.111111
101867374139230.2015171.216685

The hourly slingshot works even during the period, including Covid.

The daily and the hourly results are roughly similar from a risk-reward perspective, with the hourly slingshot providing many more trading opportunities. Due to a lack of trades, I had to use other trading parameters to surface that information.

The Bottom Line

This is a simple vectorized backtest using basic parameters and logic.

Using confluence, such as an undercut and reclaim (U&R) of the 50-day or combining the hourly slingshot with a daily, will provide better results — and this says nothing about range contraction and breaks.

The goal with this backtest is to identify if the setup works at a high level, which it does — it’s up to you to refine it as Scot1and has. Maybe someday, you’ll be hitting triple-digit annual returns like the man himself if you do this.