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
CONSOLIDATOR_LOGIC = {'Open': 'first',
    'High': 'max',
    'Low': 'min',
    'Close': 'last',
    'Adj Close': 'last',
    'Volume': 'sum'}

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)

    def OnData(self, data):
        
        self.window.Add(data)

        if self.IsWarmingUp or not self.window.IsReady: return

        hist_d = (self.PandasConverter.GetDataFrame(self.window).loc[self.equity.Symbol, :])[::-1]
        changes_d = hist_d['close'].sub(hist_d['close'].shift(1))
        
        hist_wk = (self.PandasConverter.GetDataFrame(self.window).loc[self.equity.Symbol, :])[::-1]
        hist_wk.resample('W').apply(CONSOLIDATOR_LOGIC)