Overall Statistics
Total Trades
930
Average Win
0.78%
Average Loss
-0.56%
Compounding Annual Return
11.620%
Drawdown
21.600%
Expectancy
0.134
Net Profit
36.522%
Sharpe Ratio
0.889
Probabilistic Sharpe Ratio
39.415%
Loss Rate
53%
Win Rate
47%
Profit-Loss Ratio
1.41
Alpha
0.044
Beta
0.486
Annual Standard Deviation
0.157
Annual Variance
0.025
Information Ratio
-0.35
Tracking Error
0.162
Treynor Ratio
0.288
Total Fees
$1746.77
class TransdimensionalVerticalAntennaArray(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2018, 3, 23)  # Set Start Date
        self.SetEndDate(2021, 1, 19)
        self.SetCash(100000)  # Set Strategy Cash
        self.AddEquity("SPY", Resolution.Hour).Symbol
        
        self.rvi = self.RVI('SPY', 14, Resolution.Hour)
        self.tolerance = 0.001
        
        self.AutomaticIndicatorWarmUp = True

    def OnData(self, data):
        if  self.rvi.Current.Value >= self.rvi.Signal.Current.Value * (1 + self.tolerance):
            self.SetHoldings("SPY", 1)
            self.Plot('RVI', 'Value', self.rvi.Current.Value)
            self.Plot('RVISignal', 'Value', self.rvi.Signal.Current.Value)
        elif self.rvi.Current.Value < self.rvi.Signal.Current.Value:
            self.Liquidate("SPY")
            self.Plot('RVI', 'Value', self.rvi.Current.Value)
            self.Plot('RVISignal', 'Value', self.rvi.Signal.Current.Value)
        else:
            self.Plot('RVI', 'Value', self.rvi.Current.Value)
            self.Plot('RVISignal', 'Value', self.rvi.Signal.Current.Value)
            return
            
#        if self.rvi.Current.Value <= 0 and self.rvi.Current.Value >= self.rvi.Signal.Current.Value:
#            self.SetHoldings("SPY", 1)
#            
#        elif self.rvi.Current.Value < self.rvi.Signal.Current.Value:
#            self.Liquidate("SPY")
#        else:
#            return