Overall Statistics
Total Trades
2205
Average Win
0.22%
Average Loss
-0.32%
Compounding Annual Return
20.965%
Drawdown
32.200%
Expectancy
0.250
Net Profit
182.570%
Sharpe Ratio
0.883
Probabilistic Sharpe Ratio
30.899%
Loss Rate
25%
Win Rate
75%
Profit-Loss Ratio
0.68
Alpha
0.019
Beta
1.039
Annual Standard Deviation
0.181
Annual Variance
0.033
Information Ratio
0.272
Tracking Error
0.089
Treynor Ratio
0.153
Total Fees
$60817.92
Estimated Strategy Capacity
$0
Lowest Capacity Asset
SNAP WIINL6RMFSKL
 # Top Dollar Volume Universe

class TopDollarVolumeUniverse(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2016, 6, 24)
        self.SetEndDate(2021, 12, 6)
        self.SetCash(10000000)
        self.filtered = []
        self.UniverseSettings.Resolution = Resolution.Daily
        self.AddUniverse(self.LiquidWithFundamentalsFilter)
        self.spy = self.AddEquity("SPY",Resolution.Daily)
        self.Schedule.On(self.DateRules.MonthStart("SPY"), self.TimeRules.AfterMarketOpen("SPY", 10),        
             self.RefactorPortfolio)

    
    def LiquidWithFundamentalsFilter(self, coarse):
        sortedByDollarVolume = sorted(coarse, key=lambda x: x.DollarVolume, reverse=True)
        self.filtered = [ x.Symbol for x in sortedByDollarVolume if x.Price > 10 and x.DollarVolume > 10000000 and 
                       x.HasFundamentalData][:25]
        return self.filtered


    def RefactorPortfolio(self):
        selected = []
        
        for sec in self.filtered:
            selected.append(sec)
                
        for sec in self.Portfolio.Keys:
            if sec not in selected:
                self.SetHoldings(sec, 0)
                
        for sec in selected:       
            self.SetHoldings(sec, 0.95/len(selected)) 
            
        self.Plot("Securities", "selected", len(selected))