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