Building a "fade the spikes" strategy with Everstrike

First, a quick primer on the strategy we're trying to create:

  • It's a mean reversion strategy. You trade against the trend, and capitalize on the price being overbought. Your main counterparties are: Trend followers, momentum traders and liquidated high leverage traders.
  • It's a scalping strategy. Profit targets are small, and holding periods are short.
Typical scalping strategy. Buys are marked with green arrows. Sells are marked with red arrows.

Defining the strategy

Market Selection

To test the strategy, we'll first deploy it on the ETH/USD market on the Everstrike Testnet.

ETH/USD is characterized by having extremely low spreads (2 bps or less), great liquidity and low-to-medium volatility.

While low volatility is typically a disadvantage for scalping strategies, we'll prefer markets with high liquidity and low spreads for our test, since it will allow us to use market orders without caring too much about execution costs (there are no trading fees on Everstrike - you only pay the spread).

If the strategy is successful, we'll deploy it on a basket of markets.

Timeframe

We'll utilize the 5m (5 minute) timeframe for this strategy. The 5m timeframe provides a gentle balance between noise and signal that is perfect for testing new scalping strategies. It is slower and less noisy than the 1m, but also has a lot more signal than longer timeframes such as the 30m.

πŸ’‘
If you're using very short timeframes like 1m or 15s while scalping, either use limit orders, or ensure that the average volatility is large enough to support the spread that you pay on market orders. You can use indicators like the ATR so visualize the volatility over time and establish a rough average.

Risk Parameters

We'll deploy the strategy using a fresh Everstrike Testnet account. Our account will have a starting balance of $20k.

We'll choose the following risk parameters for our strategy:

  • Maximum order size $4k.
  • Maximum position size $40k (2x leverage).

Why these?

A maximum order size of $4k will allow us to build short positions gradually, utilizing only a small proportion of our balance for every order.

A maximum position size of $40k will allow us to build sizable short positions, while not taking on excessive leverage. At 2x leverage the price needs to rise 50% above our entry to liquidate us. This allows our short positions some breathing room, and ensures that we don't have to use tight stops.

While we could add additional risk parameters (maximum holding period, ATR-based qualifiers), we'll keep it simple for now.

πŸ’‘
A short position can be liquidated even at 1x leverage, while a long position cannot. Be extra careful about leverage when shorting.

Data Selection

To identify highly overbought scenarios that are favorable for 'fading', we'll utilize the following technical indicators:

EMA (20) is the 20-period exponential moving average. The exponential moving average is less lagging than other moving averages, making it our perfect for our strategy. We'll choose a period of 20 bars. This is a medium-length average - less reactive than the 9-period average but less lagging than the 50-period average - usually a solid starting choice when experimenting with new strategies.

We'll utilize the CCI to identify momentum. The CCI is a momentum oscillator. It oscillates between a highly negative number (for example -300) and a highly positive number (for example 300). A strongly positive CCI indicates significant buy momentum, while a strongly negative CCI indicates significant sell momentum.

We'll utilize the ADX to identify trend strength. We're only interested in fading waning trends. If the trend is fresh, we'll sit on the sidelines, and wait until the trend shows signs of exhaustion. A trend filter like this is a common component of mean reversion strategies.

The ATR measures volatility and will be used in conjunction with the EMA. We'll only fade moves where the price is at least X ATR above the EMA.

In addition to technical indicators, we'll also utilize the following data points:

The spread allows us to gauge execution costs at entry time, and will determine whether we use limit orders or market orders. We've also added the Funding Rate - important for perpetual markets, since they are subject to periodic funding. We'll use it as an entry filter: If the Funding Rate is greatly unfavorable, and we are flat, we'll avoid entries.

We could add additional data points and indicators like the RSI, the Mark Price and the Index Price, but we'll keep it simple for now.

πŸ’‘
Always consider the Funding Rate when trading perpetual markets. A greatly suboptimal Funding Rate can break your strategy.

Writing the prompt

Now that we have chosen our market, our data and our risk parameters, it's time to define our logic.

To do this, we'll write a prompt:

Entry Logic: Sell ETH/USD when the price is at least 2x ATR above EMA (20), CCI is greatly overbought (>200) and ADX is high (>35). Use the 5m timeframe.
Exit Logic: Exit at a 0.05% profit, or when the price is below EMA (20).
Risk Parameters: Use a maximum order size of $4k. Use a maximum position size of $40k. Do not enter new positions if the funding rate is highly unfavorable for shorts.
Execution: Use market orders if spread < 0.02%. Otherwise use limit orders.
πŸ’‘
Tip: If you're not keen on writing yourself, you can use the Everstrike AI Assistant to automatically generate your prompt and structure it in sections.

Our prompt can be broken into four parts:

  • The first part, where we define our entry logic (only sell on greatly overbought conditions)
  • The second part, where we define our exit logic (aim for a small profit target of 0.05%, but also close the position if the price is no longer above the mean)
  • The third part, where we define our risk parameters (maximum order size, maximum leverage, no entry during unfavorable funding conditions)
  • The fourth part, where we define our execution constraints (only use market orders if the spread is tight)

The full prompt (as a blob of text):

"Entry Logic: Sell ETH/USD when the price is at least 2x ATR above EMA (20), CCI is greatly overbought (>200) and ADX is high (>35). Use the 5m timeframe. Exit Logic: Exit at a 0.05% profit, or when the price is below EMA (20). Risk Parameters: Use a maximum order size of $4k. Use a maximum position size of $40k. Do not enter new positions if the funding rate is highly unfavorable for shorts. Execution: Use market orders if spread < 0.02%. Otherwise use limit orders."

Notable is our choice of exit logic, where we aim for a very small profit target (0.05%) and a wide, dynamic stop loss (price returning to the EMA). This will result in a very high winrate, but will also make our average loss much bigger than our average win. This type of skewed risk reward ratio is typical for mean reversion strategies.

Testing the strategy

To test our strategy, we'll paste our prompt into Everstrike.

Here's what it looks like:

We've also configured a few essential parameters:

  • Market (ETH/USD)
  • Timeframe (5m)
  • Max. Trade Quantity ($4k)

Our prompt will use the GPT-5.4 Mini model. This model provides a gentle balance between reasoning, speed and cost that is perfect for new strategies.

We've chosen an evaluation frequency of 30s. This will result in our prompt being evaluated once every 30 seconds. While we could lower the frequency, we'll keep it at 30s in the beginning, in order to not burn too much money testing something that we aren't yet convinced will work.

We'll use a minimum confidence threshold of 90%. This is the standard minimum confidence threshold on Everstrike and works great as an initial filter. If we find that our strategy trades too little, we'll lower the threshold to 80-85%. If we find that it trades too much, we'll raise it to 93-95%.

We haven't chosen any value for the Max Slippage setting since we have a slippage condition built into our prompt.

πŸ’‘
Be careful about low evaluation frequencies (5s, 1s), as they can result in significant token consumption, especially when combined with expensive models.

Results

After running the strategy for 24 hours, these are the results:

The strategy opened a total of 6 short positions on ETH/USD and made a total profit of $78 (0.4%).

Core statistics:

  • $78 profit (0.4%)
  • 83% winrate
  • $16.56 average win (0.08%)
  • $-4.02 average loss (-0.02%)
  • 4.12 win/loss ratio

The strategy made a total of 2,880 evaluations and incurred $5.5 in evaluation costs. The average cost per evaluation was $0.0019.

The winrate is very typical for mean reversion scalping strategies. These strategies typically operate with tight take profit conditions and lax stop losses, resulting in very high winrates.

The win/loss ratio is somewhat surprising. Typically strategies like these have much bigger losses than wins. A typical win/loss ratio is 0.25 or below. However, we have only made a total of 6 trades, so it's very possible that future losses will be much bigger than the loss we have encountered thus far, and significantly worsen our win/loss ratio.

The evaluation costs came out to 7% of the total profit. We could potentially reduce them by up to 80% by switching to a cheaper model (GPT-5.4 Nano) and by optimizing the token usage of our strategy. Token usage optimization would include running the strategy in Cost Savings Mode (saves up to 50% in tokens) and limiting the amount of data points that the model processes. By default, the model processes a total of 268 data points on each evaluation, which results in significant token consumption and is a bit overkill for a simple strategy like ours.

πŸ’‘
Winrates can be deceiving. Never look at them in isolation. Only consider them in tandem with other statistics, such as the win/loss ratio.
Our strategy was active during a spike from $2,080 to $2,270. It opened a total of 3 positions during this spike - all of which were closed in profit. Buys are marked with green arrows. Sells are marked with red arrows.

Wrapping up

We ran a "fade the spikes" mean reversion scalping strategy on the Everstrike Testnet. It utilized the 5m timeframe on the ETH/USD market. It ran for a total of 24 hours and opened a total of 6 short positions. It accumulated a total profit of 0.4%, with a winrate of 83% and a win/loss ratio of 4.12. It utilized the GPT-5.4 Mini model, made a total of 2,880 evaluations and incurred $5.5 in evaluation costs.

Next steps

To refine and improve our strategy, we could do any of the following:

  • Add additional indicators and data points
  • Add more markets
  • Add additional entry and exit filters
  • Refine and expand the risk management section
  • Add additional execution logic
  • Experiment with different models
  • Experiment with different evaluation frequencies
  • Experiment with different minimum confidence thresholds
  • Enable discretionary trading mode
  • Optimize evaluation costs
  • Run a separate "screener" strategy that triggers our strategy when certain conditions are met

It would also be useful to run the strategy for a longer time on the Everstrike Testnet, since 6 trades is usually not enough to reliably establish whether a strategy will be profitable or not.

Subscribe to Everstrike

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe