Overall Statistics |
Total Trades 420 Average Win 1.60% Average Loss -1.72% Compounding Annual Return 1.292% Drawdown 24.800% Expectancy 0.076 Net Profit 25.201% Sharpe Ratio 0.197 Loss Rate 44% Win Rate 56% Profit-Loss Ratio 0.93 Alpha 0.045 Beta -1.444 Annual Standard Deviation 0.082 Annual Variance 0.007 Information Ratio -0.046 Tracking Error 0.082 Treynor Ratio -0.011 Total Fees $2216.16 |
class TurnOfMonthSPY(QCAlgorithm): def Initialize(self): self.SetStartDate(2001,1, 11) #Set Start Date self.SetEndDate(2018,7,11) #Set End Date self.SetCash(100000) #Set Strategy Cash self.AddEquity("SPY", Resolution.Daily) self.sell_flag = False self.days = 0 #this event triggers the algorithm to sell during the first trading day of the month self.Schedule.On(self.DateRules.MonthStart("SPY"), self.TimeRules.AfterMarketOpen("SPY", 1), self.rebalance) #this event triggers the algorithm to purchase during the last trading day of the month self.Schedule.On(self.DateRules.MonthEnd("SPY"), self.TimeRules.AfterMarketOpen("SPY", 1), self.purchase) #immediately purchases the ETF at market opening def purchase(self): self.SetHoldings("SPY", 1) #switches the sell_flag to True to wait 3 trading days before liquidating def rebalance(self): self.sell_flag = True def OnData(self, data): if self.sell_flag: self.days += 1 #liquidates and resets self.days and the sell_flag if self.days == 3: self.Liquidate() self.sell_flag = False self.days = 0