Overall Statistics |
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return 13.844% Drawdown 20.100% Expectancy 0 Net Profit 261.902% Sharpe Ratio 1.027 Probabilistic Sharpe Ratio 44.714% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0.998 Annual Standard Deviation 0.146 Annual Variance 0.021 Information Ratio -0.989 Tracking Error 0 Treynor Ratio 0.151 Total Fees $1.00 |
class MultidimensionalTransdimensionalPrism(QCAlgorithm): def Initialize(self): self.SetStartDate(2010, 2, 1) # Start and End Date for Stocks self.SetEndDate(2020, 1, 1) self.SetCash(10000) # Set Amount of Money to be used self.AddEquity("SPY", Resolution.Hour) # SPY, etf self.AddEquity("TLT", Resolution.Hour) # Bonds TLT # self.AddEquity("TVIX", Resolution.Hour) self._sma = self.SMA("SPY", 50, Resolution.Daily) self._smab = self.SMA("SPY", 10, Resolution.Daily) self._smabg = self.SMA("SPY", 200, Resolution.Daily) self._smabe = self.SMA("TLT", 200, Resolution.Daily) self.rebal = 4 # Rebalance every 4 weeks self.rebalTimer = self.rebal - 1 # Initialize to trigger first week self.flag1 = 0 # Flag to initate trades # Increment rebalance timer at every week start self.Schedule.On(self.DateRules.WeekStart("SPY"), self.TimeRules.AfterMarketOpen("SPY", 150), self.Rebalance) def OnData(self, data): if self.flag1 == 1: if data["SPY"].Close > self._smabg.Current.Value and self._smab > self._sma: x = 1 self.rebalTimer = 0 elif data["SPY"].Close > self._smabg.Current.Value and self._smab < self._sma: self.SetHoldings("SPY", .7, True) self.SetHoldings("TLT", .3, True) self.rebalTimer = 0 elif data["SPY"].Close < self._smabg.Current.Value and self._smab > self._sma: self.SetHoldings("SPY", .3, True) self.SetHoldings("TLT", .7, True) self.rebalTimer = 0 else: x = 2 smi = self._smabg.Current.Value * 1.1 smo = self._smabe.Current.Value * 1.1 if x == 1: if data["SPY"].Close > smi: self.SetHoldings("TLT", 1, True) else: self.SetHoldings("SPY", 1, True) if x == 2: if data["TLT"].Close > smo: self.SetHoldings("SPY", 1, True) else: self.SetHoldings('TLT', 1) self.flag1 = 0 def Rebalance(self): self.rebalTimer +=1 if self.rebalTimer == self.rebal: self.flag1 = 1