Amibroker AFL- Mean Reversion Strategy

This article shows a step-wise example about how to design a mean reversion strategy for Bank Nifty.


Step 1: The Trading Idea

We pick the idea from a previous article:

So here is your second trading strategy! Buy in a uptrend when prices are extended downwards (oversold) and returning to the mean.

Step 2: Selecting Technical Indicators

The trading idea requires quantifying key concepts: uptrend and mean reversion. There can be a million methods to quantify, and similarly, each method has different impact on the profitability of strategy. As a start:

Chart Time Frame: 15 minutes

Uptrend: defined when EMA(20) is above EMA(200). This is because most people use Moving Average Crossover for analysis/trading. 20 periods EMA is used for short-term trend, while 200 period EMA is used for long-term trend. Downtrend is defined as opposite of uptrend.

Mean Reversion: We can use Bollinger Bands to identify mean reversion opportunity. Bollinger Bands are one of the most common technical indicators and use 2 Standard Deviations to contain 95% price movement within the bands. The common parameters are used for Bollinger Band- 15 periods and 2 standard deviations. When price go beyond the bands and retrace back inside the bands, we use it as a confirmation to generate Buy/Sell signals.

StopLoss: Lowest value of the last five closing candles when Buy is triggered.

Step 3: Defining Clear Strategy Rules

Buy: when prices are in uptrend and crossing above lower Bollinger Band

Sell: when prices cross below lower Bollinger band or stop loss condition is met

Step 4: AFL Coding Guide

Once the logic is clear, we code the AFL in same manner. Since AFL is an array based language, it is best practice to code the Buy/Sell conditions in a loop. To find out the profits in number of points, we use the function SetPositionSize(1,spsShares);

strategy mean revertMean Reversion

Step 5: The Backtest

Thankfully and intuitively, the strategy gives a profit of Rs. 3,90,318 on Bank Nifty one lot (first month futures).  It however has a high percentage of losing trades (70%) because a large number of trades are stopped at initial small stop loss.  Related Article: Basics in Strategy Backtesting

  • All trades executed at Close price of the bar on which signal is triggered
  • Brokerage: 0.01% of Trade Value
  • Time Frame: 15 minute
  • Data History: 01-01-2014 to 31-12-2015 (two years)
  • Strategy Optimization: None

Step 6: Further Improvement

We leave it to the readers to suggest any improvement  in Step 2 and Step 3 which can increase the profitability. Particularly by modifying the stop loss condition, we can drastically improve the percentage of profitable trades.

Download Amibroker AFL  Strategy

Click here to download the editable Amibroker AFL Strategy