Overall Statistics
Total Trades
18
Average Win
11.23%
Average Loss
-14.72%
Compounding Annual Return
20.204%
Drawdown
25.900%
Expectancy
0.322
Net Profit
175.411%
Sharpe Ratio
0.761
Probabilistic Sharpe Ratio
21.879%
Loss Rate
25%
Win Rate
75%
Profit-Loss Ratio
0.76
Alpha
0.214
Beta
-0.049
Annual Standard Deviation
0.274
Annual Variance
0.075
Information Ratio
0.312
Tracking Error
0.326
Treynor Ratio
-4.218
Total Fees
$618.24
class ModulatedOptimizedShield(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2015, 2, 13)  # Set Start Date
        self.SetCash(100000)  # Set Strategy Cash
        self.AddEquity('SPXL', Resolution.Daily)
        self.AddEquity('TBT', Resolution.Daily)
        self.prev_close = -1
        self.sma = self.SMA('SPXL', 50, Resolution.Daily)
        self.SetWarmup(50)

    def OnData(self, data):
        if self.IsWarmingUp:
            return
        
        if not data.ContainsKey('SPXL') or data['SPXL'] is None:
            self.prev_close = -1
            return
        
        if not self.Portfolio.Invested:
            self.SetHoldings('TBT', -1)
            
        close = data['SPXL'].Close
        
        if close > 0 and close / self.prev_close < .9 and not self.Portfolio['SPXL'].Invested:
            shares = self.Portfolio.Cash / close - .03
            self.MarketOrder('SPXL', shares)
        elif close < self.sma.Current.Value:
            self.Liquidate('SPXL')
        
        self.prev_close = close