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.908
Tracking Error
0.248
Treynor Ratio
0
Total Fees
$0.00
Estimated Strategy Capacity
$0
Lowest Capacity Asset
# region imports
from AlgorithmImports import *
import time
# endregion

class TestRemoveUniverse(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2021, 5, 9)  # Set Start Date
        self.SetEndDate(2021, 5, 15)
        self.SetCash(100000)  # Set Strategy Cash

        self.AddEquity("SPY", resolution=Resolution.Minute, extendedMarketHours=True)        

        # Add universe
        self.UniverseSettings.Resolution = Resolution.Minute
        self.UniverseSettings.ExtendedMarketHours = True
        self.UniverseSettings.FillForward = True
        self.coarse_universe = self.AddUniverse(self.CoarseUniverseSelection)

        self.AddUniverseSelection(ScheduledUniverseSelectionModel(
            self.DateRules.EveryDay("SPY"), 
            self.TimeRules.AfterMarketOpen("SPY", -5),
            self.ScheduledSymbolSelect))

        self.cur_time = time.time()
        self.all_daily_symbols = []
        self.num_sub_to = 10

        self.UniverseSettings.MinimumTimeInUniverse = timedelta(minutes=1)

    def OnData(self, data: Slice):
        if (self.Time.hour == 8 and self.Time.minute == 31):
            self.Debug(f"Time: {self.Time} | Length of slice: {len(data.Bars.Values)}")
        
        if (self.Time.hour == 9 and self.Time.minute == 31):
            self.Debug(f"Time: {self.Time} | Length of slice: {len(data.Bars.Values)}")

    def CoarseUniverseSelection(self, coarse):
        self.all_daily_symbols = []
        self.cur_time = time.time()
        symbols = []
        for stock in coarse:
            if (stock.AdjustedPrice > 1):
                self.all_daily_symbols.append(stock.Symbol)
        
        # Return temporary symbols
        return self.all_daily_symbols[:self.num_sub_to]
    
    def ScheduledSymbolSelect(self, date):
        # Overwrite current universe and only subscribe to the following symbols
        return self.all_daily_symbols[100:102]