Overall Statistics |
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% Sharpe Ratio 0 Probabilistic Sharpe Ratio 0% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio -1.86 Tracking Error 0.101 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset |
class CalmLightBrownGull(QCAlgorithm): def Initialize(self): self.SetStartDate(2021, 4, 1) self.SetEndDate(2021, 12, 31) self.InitCash = 100000 self.SetCash(self.InitCash) self.SetWarmup(120, Resolution.Daily) self.equity = self.AddEquity("SPY", Resolution.Daily) self.window = RollingWindow[Slice](120) self.window_wk = RollingWindow[TradeBar](20) # I tried to use Slice before but got a type error; why? self.Consolidate("SPY", Calendar.Weekly, self.OnWeeklyData) def OnWeeklyData(self, data): self.window_wk.Add(data) def OnData(self, data): self.window.Add(data) if self.IsWarmingUp: return if not self.window.IsReady: return if not self.window_wk.IsReady: return hist_d = self.PandasConverter.GetDataFrame(self.window) hist_d = hist_d[::-1] changes_d = hist_d['close'].sub(hist_d['close'].shift(1)) # The following approach worked on the daily grain above; why not on the weekly? # Error: Runtime Error: Trying to dynamically access a method that does not exist throws a TypeError exception. To prevent the exception, ensure each parameter type matches those required by the PublicKeyToken=null]]'>) method. #hist_wk_attempt1 = self.PandasConverter.GetDataFrame(self.window_wk)[::-1] # The following approach didn't generate errors but then I get an error trying to compute changes hist_wk_attempt2 = pd.DataFrame(self.window_wk).reset_index(drop=True) hist_wk_attempt2 = hist_wk_attempt2[::-1] #Runtime Error: Trying to retrieve an element from a collection using a key that does not exist in that collection throws a KeyError exception. To prevent the exception, ensure that the close key exist in the collection and/or that collection is not empty. #changes_wk_attempt2 = hist_wk_attempt2['close'].sub(hist_wk_attempt2['close'].shift(1))