Home Forums Moving Average Crossover

Viewing 1 post (of 1 total)
  • Author
  • #1840


    I am doing some research on using moving average crossover to design trading strategies. Could someone please join this discussion and share thoughts?

    To briefly recap, a Dual Moving Average Crossover (DMAC) basically says that given two (magically chosen) periods, p1 and p2 (p1 < p2), we create two moving average signals SMA1 = SMA(p1) and SMA2 = SMA(p2). SMA1 is the simple arithmetic moving average using the last p1 number of data points, e.g., last 5 business days daily closing data. Similarly SMA2 is the simple arithmetic moving average using the last p2 number of data points, e.g., last 40 business days daily closing data.

    A simple trading strategy could be:

    • when SMA1 crosses SMA2 above, we BUY;
    • when SMA1 crosses SMA2 below, we SELL;

    A reference can be found here:

    Now, I personally see no reason why this strategy would make money at all. I do not know how this model is predicting anything in the *future*. I would like to study this *idea* more rigorously and mathematically.

    To start, we write down this trading strategy in equations.

    For periods p1, p2 (p1 < p2), we

    • BUY SMA1(p1) – SMA2(p2) > 0;
    • SELL SMA1(p1) – SMA2(p2) < 0;

    There are a few parameters to fill in.

    • the structure of SMA
    • p1, p2

    Here are a list of possible research directions.

    The forms of SMA can be many. The simplest is arithmetic moving average that assigns equal weights to all observations. Other possibility are weighted moving average, exponentially moving average, etc.

    It is not hard to see that most of these forms are in fact AR(p) model, an Auto-Regressive model of lag p. The coefficients are rather arbitrarily chosen.

    We could rewrite the equations above as:
    For periods p1, p2 (p1 < p2), we

    • BUY AR(p1) – AR(p2) > 0;
    • SELL AR(p1) – AR(p2) < 0;

    As I said before, I see no reason why this (popular) trading strategy would work. All it is saying is to compare the expectation values of two AR models and trade based on their differences.

    We therefore could improve this idea by

    • we dynamically calibrate for the coefficients using historical data, rather than fixing some arbitrary coefficients (like 1’s for the simple arithmetic average)

    ; i.e., we calibrate when we trade

    • we extends the simple AR model to other forms, e.g., ARMA, ARIMA
    • there is no reason why we need to stick to the difference of expectations; we could use other measures, e.g., sign(SMA1(p1)*SMA2(p2))

    p1 and p2 are traditionally chosen randomly and are not adaptive. I propose the following research directions.

    • We can use Integer Programming to find the optimal (p1, p2) from historical data;
    • Should the optimal (p1, p2) be related to the volatility of the process? My intuition is that they should but I am not sure how.

    We could incorporate more information into the strategy. Some candidates are:

    • volatility;
    • (changes in) auto-correlation
Viewing 1 post (of 1 total)
  • You must be logged in to reply to this topic.