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
-0.538
Tracking Error
0.205
Treynor Ratio
0
Total Fees
$0.00
import pandas as pd
from datetime import datetime

class AssetClassMomentumAlgorithm(QCAlgorithm):

    def Initialize(self):

        self.SetStartDate(2007, 5, 1)  
        self.SetEndDate(datetime.now())  
        self.SetCash(100000)
        self.months =-1
        
        # create a dictionary to store momentum indicators for all symbols 
        self.data = {}
        period = 210
        self.symbols = ["SPY", "ACWX", "BND", "VNQ", "DBC"]
        added_symbols = []
        
        self.SetWarmUp(period)
        
        for symbol in self.symbols:
            self.AddEquity(symbol, Resolution.Hour)
            self.data[symbol] = self.SMA(symbol, 210, Resolution.Daily)
            
        # schedule the function to fire at the month start 
        self.Schedule.On(self.DateRules.MonthStart("SPY"), self.TimeRules.AfterMarketOpen("SPY", 1), self.Rebalance)
        
            
    def OnData(self, data):
        pass

    def Rebalance(self):
        if self.IsWarmingUp: return
        added_symbols = []
        for symbol, sma in self.data.items():
            if self.Securities[symbol].Close > sma.Current.Value:
                added_symbols.append(symbol)
            else:
                self.Liquidate(symbol) 
                
     
        self.Debug(added_symbols)