Hello

I am trying to use Universe Selection to find pre-market losers (that lost more than 10%, since last regular hours close), using the following code:

class CreativeFluorescentYellowGoshawk(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2021, 6, 24)  # Set Start Date
        self.SetCash(100000)  # Set Strategy Cash
        
        self.UniverseSettings.Resolution = Resolution.Minute
        self.UniverseSettings.ExtendedMarketHours = True
        self.AddUniverse(self.CoarseSelectionFunction, self.TopLosers)
        
    def CoarseSelectionFunction(self, coarse):       
        return [x.Symbol for x in coarse if x.HasFundamentalData and x.Market == 'usa']
        
    def TopLosers(self, data):
        fine = []
        lsrs = {}
        for x in data:
            c = self.History(x.Symbol, 2, Resolution.Daily)['close'].values[0]
            p = x.Price
            pct = (p-c)/c * 100
            lsrs[x] = pct
            
        return [x for x in lsrs.keys() if lsrs[x]<-10]

My question is: Does this work as expected? And if so. is this the best and more idiomatic way to find pre-market losers?

Furthermore, I have some questions regarding UniverseSettings that were not very clear to me in the documentation.

  1. How often is Universe Selection Preformed?
  2. Does UniverseSettings.Resolution = Resolution.Minute mean that Universe Selection is going to be run on a minute basis? Or does it mean that the data available inside the corase and fine filtering functions has minute reselution?
  3. Does UniverseSettings.ExtendedMarketHours = True mean that Universe Selection is going to be preformed outside regular market hours? Or does it mean that the data available inside the corase and fine filtering functions provides data outside regular market hours?