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.055
Tracking Error
0.273
Treynor Ratio
0
Total Fees
$0.00
Estimated Strategy Capacity
$0
Lowest Capacity Asset
# Weighted Momentum Indicator

# -------------------------------------------------------------------------------------
UNIVERSE = ["QQQ","SPYG","SPYV","IJK","IJS","XLF","XHB","XRT","SMH","PPH"]; MOM = 21; 
# -------------------------------------------------------------------------------------
class WeightedMomentumIndicator(QCAlgorithm):
    
    def Initialize(self):
        
        self.SetStartDate(2020, 1, 1)  
        self.SetEndDate(2021, 8, 23)
        self.mom_weighted = {}
        self.mom_1 = {}
        self.mom_2 = {}
        self.mom_3 = {}
        self.SetWarmUp(3*MOM + 1, Resolution.Daily)
        self.universe = [self.AddEquity(ticker, Resolution.Minute).Symbol for ticker in UNIVERSE]
        for sec in self.universe:
            self.mom_1[sec] = self.ROCP(sec, MOM, Resolution.Daily)
            self.mom_2[sec] = IndicatorExtensions.Of(Delay(MOM), self.mom_1[sec])
            self.mom_3[sec] = IndicatorExtensions.Of(Delay(2*MOM), self.mom_1[sec])
        self.Schedule.On(self.DateRules.MonthStart(self.universe[0]), self.TimeRules.AfterMarketOpen(self.universe[0], 10), 
            self.Indicator)

            
    def Indicator(self):   
        if self.IsWarmingUp: return 
        for sec in self.universe:
            if not (self.mom_1[sec].IsReady and self.mom_2[sec].IsReady and self.mom_3[sec].IsReady): continue
            self.mom_weighted[sec] = (3*self.mom_1[sec].Current.Value + 2*self.mom_2[sec].Current.Value + self.mom_3[sec].Current.Value) / 6
            self.Plot('Weighted Momentum', sec, self.mom_weighted[sec])