Overall Statistics |
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return 0.239% Drawdown 0.300% Expectancy 0 Net Profit 1.198% Sharpe Ratio 1.023 Probabilistic Sharpe Ratio 51.907% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0.002 Annual Variance 0 Information Ratio 1.023 Tracking Error 0.002 Treynor Ratio 0 Total Fees $1.00 Estimated Strategy Capacity $9500000000.00 Lowest Capacity Asset AAPL R735QTJ8XC9X |
# from AlgorithmImports import * from datetime import datetime from dateutil.relativedelta import relativedelta class RollingWindowAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(datetime.now() - relativedelta(years = 5)) self.SetEndDate(datetime.now()) self.SetCash(10000) self.SetBrokerageModel(brokerage = BrokerageName.InteractiveBrokersBrokerage, accountType = AccountType.Cash) self.tickerObj = self.AddEquity(ticker = 'AAPL', resolution = Resolution.Daily, market = Market.USA, fillDataForward = True, leverage = Security.NullLeverage, extendedMarketHours = False) self.ticker = self.tickerObj.Symbol self.window = RollingWindow[TradeBar](20) self.sma = self.SMA(symbol = self.ticker, period = 20, resolution = Resolution.Daily, selector = None) self.sma.Updated += self.SMAUpdated self.smaWindow = RollingWindow[IndicatorDataPoint](20) def OnData(self, data): self.window.Add(data[self.ticker]) if not self.smaWindow.IsReady: return if not self.Portfolio.Invested: self.MarketOrder(self.ticker, 1) self.Debug(f'Buy on Market Open: {self.window[0].Time}') self.Debug(f'Trading day before: {round(self.smaWindow[1].Value, 2)}, Current: {round(self.smaWindow[1].Value, 2)}') def SMAUpdated(self, sender, updated): self.smaWindow.Add(updated)