Overall Statistics |
Total Trades 13 Average Win 3.29% Average Loss -1.90% Compounding Annual Return 2148.311% Drawdown 6.400% Expectancy -0.090 Net Profit 16.592% Sharpe Ratio 3.626 Probabilistic Sharpe Ratio 83.279% Loss Rate 67% Win Rate 33% Profit-Loss Ratio 1.73 Alpha 2.476 Beta 0.322 Annual Standard Deviation 0.687 Annual Variance 0.472 Information Ratio 3.55 Tracking Error 0.688 Treynor Ratio 7.736 Total Fees $0.00 |
class ParticleVerticalAtmosphericScrubbers(QCAlgorithm): def Initialize(self): self.tickerOne = "AMD" self.tickerTwo = "SPY" self.SetStartDate(2017, 1, 16) # Set Start Date self.SetEndDate(2017, 2, 2) # Set End Date self.SetCash(1000) # Set Strategy Cash self.AddEquity("AMD", Resolution.Minute, extendedMarketHours = True) self.Securities[self.tickerOne].FeeModel = ConstantFeeModel(0) #self.SetDataNormalizationMode(DataNormalizationMode.Raw) self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.At(15, 59), Action(self.purchase)) def OnData(self, data): if self.Portfolio.Invested and self.Securities[self.tickerOne].Price <= self.sellPrice: self.LimitOrder(self.tickerOne, -self.Portfolio[self.tickerOne].Quantity, self.Securities[self.tickerOne].Price*.5) def purchase(self): self.sellPrice = self.Securities[self.tickerOne].Price * 0.991 self.dailyClose = self.Securities[self.tickerOne].Price if not self.Portfolio.Invested: self.SetHoldings(self.tickerOne, 1) def OnOrderEvent(self, fill): if fill.Status == 3: if fill.Direction == 0: direction = "Buy" self.Debug(str(direction) + " " + str(fill.FillQuantity) + " @ " + str(fill.FillPrice)) else: direction = "Sell" self.Debug(str(direction) + " " + str(fill.FillQuantity) + " @ " +str(fill.FillPrice) + " Loss: " + str( (fill.FillPrice-self.dailyClose)/self.dailyClose ))