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))