Overall Statistics |
Total Trades 128 Average Win 0.77% Average Loss 0% Compounding Annual Return 2.346% Drawdown 23.500% Expectancy 0 Net Profit 63.362% Sharpe Ratio 0.434 Probabilistic Sharpe Ratio 0.324% Loss Rate 0% Win Rate 100% Profit-Loss Ratio 0 Alpha 0.014 Beta 0.13 Annual Standard Deviation 0.058 Annual Variance 0.003 Information Ratio -0.34 Tracking Error 0.17 Treynor Ratio 0.195 Total Fees $854.37 |
class GunStocks(QCAlgorithm): def Initialize(self): self.SetStartDate(1999, 1, 1) # Set Start Date self.SetEndDate(2020, 2, 25) self.SetCash(100000) # Set Strategy Cash # self.AddEquity("SPY", Resolution.Minute) self.tickers = ["AXON", "AOBC", "RGR", "VSTO", "SPWH", "OLN", "SWBI"] for i in self.tickers: self.AddEquity(i, Resolution.Minute) self.Securities[i].SetDataNormalizationMode(DataNormalizationMode.Adjusted) self.senators = { 1999 : "R", 2000 : "R", 2001 : "D", 2002 : "D", 2003 : "R", 2004 : "R", 2005 : "R", 2006 : "R", 2007 : "D", 2008 : "D", 2009 : "D", 2010 : "D", 2011 : "D", 2012 : "D", 2013 : "D", 2014 : "D", 2015 : "R", 2016 : "R", 2017 : "R", 2018 : "R", 2019 : "R", 2020 : "R" } self.AddRiskManagement(TrailingStopRiskManagementModel(0.02)) self.lastmonth = -1 def OnData(self, data): month = self.Time.month if month == self.lastmonth: return self.lastmonth = month for key, value in self.senators.items(): timeYear = self.Time.year if (key == timeYear): for symbol in self.tickers: if value == "D": if not self.Portfolio[symbol].Invested: self.SetHoldings(symbol, 0.12) self.LimitOrder(symbol, -(self.Portfolio[symbol].Quantity), round(self.Securities[symbol].Price, 2) * 1.06)