Overall Statistics
Total Trades
26
Average Win
10.00%
Average Loss
-74.10%
Compounding Annual Return
-49.593%
Drawdown
77.600%
Expectancy
-0.007
Net Profit
-49.688%
Sharpe Ratio
0.018
Probabilistic Sharpe Ratio
14.095%
Loss Rate
12%
Win Rate
88%
Profit-Loss Ratio
0.13
Alpha
0.1
Beta
-0.431
Annual Standard Deviation
0.809
Annual Variance
0.655
Information Ratio
-0.202
Tracking Error
0.909
Treynor Ratio
-0.034
Total Fees
$0.00
import pandas as pd

class EMAMomentumUniverse(QCAlgorithm):
    
    def Initialize(self):
        self.SetStartDate(2020, 1, 1)
        self.SetEndDate(2021, 1, 1)
        self.SetCash(100000)
        self.AddEquity("SPY", Resolution.Daily)
        self.SetBenchmark("SPY")
        self.UniverseSettings.Resolution = Resolution.Daily
        self.AddUniverse(self.CoarseSelectionFunction) 
        
        self.Schedule.On(self.DateRules.EveryDay("SPY"), self.TimeRules.AfterMarketOpen("SPY", 190), self.EveryDayAfterMarketOpen)

    
    def CoarseSelectionFunction(self, universe):  
        self.selected = []
        universe = sorted(universe, key=lambda c: c.DollarVolume, reverse=True)  
        universe = [c for c in universe if c.HasFundamentalData][:100]

        for coarse in universe:  
            symbol = coarse.Symbol
            
            history = self.History(symbol, 63, Resolution.Daily)
            
            adv63 = (history.close.mean() * history.volume.mean())
            
            self.selected.append([symbol,adv63])
                
        self.selected = pd.DataFrame(self.selected,columns=['symbol','adv']).set_index('symbol')
        self.Log(str(self.selected.sort_values('adv',ascending=False).iloc[:1]))
        self.selected = list(self.selected.sort_values('adv',ascending=False).iloc[:1].index)
        
        return self.selected
        
    def EveryDayAfterMarketOpen(self):
        
        for security in self.selected:
            self.Securities[security].SetDataNormalizationMode(DataNormalizationMode.Adjusted)
            self.Securities[security].FeeModel = ConstantFeeModel(0)
            
        for security in self.selected:
            if self.Securities[security].Invested:
                pass
            else:
                self.SetHoldings(security, 1)
            
        for security in self.selected:
            self.SetHoldings(security, 1)
            self.Log('Ordered ' + str(security))