Overall Statistics |
Total Trades 15 Average Win 0.92% Average Loss -0.24% Compounding Annual Return 50.005% Drawdown 0.900% Expectancy 1.722 Net Profit 3.965% Sharpe Ratio 6.51 Probabilistic Sharpe Ratio 98.178% Loss Rate 43% Win Rate 57% Profit-Loss Ratio 3.76 Alpha 0.182 Beta 0.547 Annual Standard Deviation 0.046 Annual Variance 0.002 Information Ratio 1.999 Tracking Error 0.042 Treynor Ratio 0.548 Total Fees $25.39 Estimated Strategy Capacity $500000000.00 Lowest Capacity Asset SPY R735QTJ8XC9X |
# region imports from AlgorithmImports import * # endregion class QuantumVerticalProcessor(QCAlgorithm): chart = None series = None def Initialize(self): self.SetStartDate(2019, 11, 8) # Set Start Date self.SetEndDate(2019,12,12) self.SetCash(100000) # Set Strategy Cash self.AddEquity("SPY", Resolution.Daily) self.candles = Series('Second', SeriesType.Candle) self.chart = Chart('Candles') self.chart.AddSeries(self.candles) self.enter = self.Time.day self.chart.AddSeries(Series('Longs', SeriesType.Scatter, "", Color.Green, ScatterMarkerSymbol.Triangle)) self.AddChart(self.chart) #sec_Consolidator = TradeBarConsolidator(timedelta(seconds=45)) #sec_Consolidator.DataConsolidated += self.Sec_BarHandler #self.SubscriptionManager.AddConsolidator("SPY", sec_Consolidator) def OnData(self, data): if not data.ContainsKey("SPY"): return tradeBar = data["SPY"] self.candles.AddPoint(tradeBar.EndTime - timedelta(minutes=59), tradeBar.Open) self.candles.AddPoint(tradeBar.EndTime - timedelta(minutes=58), tradeBar.High) self.candles.AddPoint(tradeBar.EndTime - timedelta(minutes=57), tradeBar.Low) self.candles.AddPoint(tradeBar.EndTime, tradeBar.Close) if not self.Portfolio.Invested: self.SetHoldings("SPY", 1) self.Plot( 'Candles', 'Longs', self.Securities["SPY"].Price - 10) self.enter = self.Time.day if self.Portfolio.Invested and self.Time.day > self.enter + 2: self.SetHoldings("SPY", 0) ''' def Sec_BarHandler(self, sender, consolidated): time = self.UtcTime # NOTE: order is important and each point has to be one minute apart because reasons. self.candles.AddPoint(time + timedelta(seconds=1), consolidated.Open) self.candles.AddPoint(time + timedelta(seconds=2), consolidated.High) self.candles.AddPoint(time + timedelta(seconds=3), consolidated.Low) self.candles.AddPoint(time + timedelta(seconds=4), consolidated.Close) #self.Debug(f"{consolidated.EndTime} >> Open >> {consolidated.EndTime - timedelta(seconds=1)}") self.Debug("OnDataConsolidated time: " + str(time)) '''