Long Short - Moving Average Crossover - Manual Universe

Long Short - Moving Average Crossover - Manual Universe

Here's a FREE ALGO for you, simply hit the CLONE ALGORITHM button below!

This is an implementation of a classic market timing technique using the crossover of two moving averages.

Universe: Manual input of tickers.

Alpha: Go Long when the Short Period Moving Average crosses above the Long Period Moving Average, and go Short when it crosses below.

Portfolio: Equally Weighted portfolio (investing the same amounts in each security).

Execution: Immediate Execution with Market Orders (using our custom Module - Immediate Execution Model With Logs).

Research: This project also includes a research file with explanation of the Alpha logic.

Ideas to try (user-defined inputs in the main.py script):

  • Play with the SetStartDate and SetEndDate dates to change the period of backtest. Does it time the 2008 crisis well?
  • Increase the trading frequency by changing the data resolution from Resolution.Daily to Resolution.Hour or Resolution.Minute
  • Add/change the tickers. For example, to select the FANG stocks simply change this line code tickers = ['FB', 'AMZN', 'NFLX', 'GOOG']
  • Play with the length of the two moving averages. Maybe a faster reaction to market timing could be shortPeriodSMA = 10 and longPeriodSMA = 200 Does it improve the performance?
  • Activate the rebalancing mechanism to ensure the portfolio goes back to equal weighting every so often. The rebalancingParam is set to False by default, but it can be set to a discretionary number of days to rebalance the portfolio. For instance, if you want to rebalance every 30 days simply do rebalancingParam = 30
Do you have a strategy of your own that you would like to backtest and automate? Learn about our consulting services and get in touch at

    Found this product useful? You can support this site by making a donation using the link below!