Overall Statistics |
Total Trades 90 Average Win 0.04% Average Loss -0.04% Compounding Annual Return 0.635% Drawdown 0.300% Expectancy 0.148 Net Profit 0.262% Sharpe Ratio 1.216 Loss Rate 44% Win Rate 56% Profit-Loss Ratio 1.07 Alpha 0.006 Beta 0.001 Annual Standard Deviation 0.005 Annual Variance 0 Information Ratio -1.894 Tracking Error 0.128 Treynor Ratio 4.481 Total Fees $90.00 |
from datetime import timedelta class Algorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(2019, 1, 1) self.SetEndDate(2019, 5, 31) self.SetCash(100000) self.syl = 'SPY' self.equity = self.AddEquity(self.syl, Resolution.Minute) #equity.SetDataNormalizationMode(DataNormalizationMode.Raw) self.SetBenchmark(self.equity.Symbol) self.PrevClose = None self.Schedule.On(self.DateRules.EveryDay("SPY"), \ self.TimeRules.BeforeMarketClose("SPY", 45), \ Action(self.Open)) self.Schedule.On(self.DateRules.EveryDay("SPY"), \ self.TimeRules.BeforeMarketClose("SPY", 5), \ Action(self.Close)) self.Schedule.On(self.DateRules.EveryDay("SPY"), \ self.TimeRules.BeforeMarketClose("SPY", 0), \ Action(self.Update)) def Open(self): #if self.UtcTime.weekday()==4: # self.Log(self.UtcTime) # return if self.PrevClose != None: if (self.equity.Price - self.PrevClose)/self.PrevClose > 0.005: self.MarketOrder(self.equity.Symbol, -100) self.StopMarketOrder(self.equity.Symbol, 100, self.equity.Price*1.002) return elif (self.equity.Price - self.PrevClose)/self.PrevClose < -0.005: self.MarketOrder(self.equity.Symbol, 100) self.StopMarketOrder(self.equity.Symbol, -100, self.equity.Price*0.998) return def Close(self): self.Liquidate() openOrders = self.Transactions.GetOpenOrders() if len(openOrders) > 0: for x in openOrders: self.Transactions.CancelOrder(x.Id) self.Log(str(x.Id) + " cancelled") def Update(self): self.PrevClose = self.equity.Price def OnData(self,data): self.data = data pass