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
-2.672
Tracking Error
0.468
Treynor Ratio
0
Total Fees
$0.00
from QuantConnect.Indicators import SimpleMovingAverage

class ParticleVerticalCompensator(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2019,1,2)
        self.SetEndDate(2019,1,5)
        self.SetCash(100000)
        
        self.UniverseSettings.Resolution = Resolution.Daily

        self.AddUniverse(self.MyCoarseFilterFunction)
        
        self.indicators_by_symbol = {}
        self.sma_period = 10
        
    def MyCoarseFilterFunction(self, coarse):
        sortedByDollarVolume = sorted(coarse, key=lambda x: x.DollarVolume, reverse=True)
        filtered = [ x.Symbol for x in sortedByDollarVolume
                      if x.Price > 5 and x.DollarVolume > 400000000 ]
        return filtered[:3]
    
    def OnSecuritiesChanged(self, changes):
        for added in changes.AddedSecurities:
            self.indicators_by_symbol[added.Symbol] = SimpleMovingAverage(added.Symbol, self.sma_period)
            
            # Warm up indicator
            history = self.History(added.Symbol, self.sma_period, Resolution.Daily).loc[added.Symbol]
            for idx, row in history.iterrows():
                self.indicators_by_symbol[added.Symbol].Update(idx, row['close'])
            
            # Register indicator for new data
            self.RegisterIndicator(added.Symbol, self.indicators_by_symbol[added.Symbol], Resolution.Daily)
            
            self.Log(f"{added.Symbol}  {self.indicators_by_symbol[added.Symbol].Current.Value}")
            
        for removed in changes.RemovedSecurities:
            self.indicators_by_symbol.pop(removed.Symbol, None)
        
    def OnData(self, data):
        for symbol in self.indicators_by_symbol:
            indicator = self.indicators_by_symbol[symbol]
            self.Log(f"{symbol}: {indicator.Current.Value}")