Overall Statistics |
Total Trades 9098 Average Win 0.01% Average Loss -0.01% Compounding Annual Return 1.033% Drawdown 14.600% Expectancy 1.064 Net Profit 29.247% Sharpe Ratio 0.239 Probabilistic Sharpe Ratio 0.000% Loss Rate 42% Win Rate 58% Profit-Loss Ratio 2.56 Alpha -0.001 Beta 0.125 Annual Standard Deviation 0.032 Annual Variance 0.001 Information Ratio -0.411 Tracking Error 0.144 Treynor Ratio 0.061 Total Fees $9098.00 Estimated Strategy Capacity $72000000.00 Lowest Capacity Asset SPY R735QTJ8XC9X |
# region imports from AlgorithmImports import * # endregion class SimpleMovingAverageAlgorithm(QCAlgorithm): def Initialize(self): # Set the cash we'd like to use for our backtest self.SetCash(100000) # Set the symbol we'd like to use for our backtest self.symbol = self.AddEquity("SPY").Symbol # Set the time frame for our simple moving average self.time_frame = 30 # Set our simple moving average self.sma = self.SMA(self.symbol, self.time_frame) # Schedule an event to be fired every day at 4:00 PM self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.At(16, 0), self.Trade) def Trade(self): # If we don't have data for our simple moving average, do nothing if not self.sma.IsReady: return # Get the current price of the security current_price = self.Securities[self.symbol].Price # If the current price is greater than our simple moving average, buy if current_price > self.sma.Current.Value: self.Log("Purchasing {0}".format(self.symbol.Value)) self.Order(self.symbol, 1) # If the current price is less than our simple moving average, sell elif current_price < self.sma.Current.Value: self.Log("Selling {0}".format(self.symbol.Value)) self.Order(self.symbol, -1)