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
-0.671
Tracking Error
0.193
Treynor Ratio
0
Total Fees
$0.00
class VentralParticlePrism(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2015, 7, 17)  # Set Start Date
        self.SetEndDate(2020, 7, 17)
        self.SetCash(250000000)  # Set Strategy Cash
        self.AddEquity("QQQ", Resolution.Minute)
        self.AddEquity("TQQQ", Resolution.Minute)
        self.AddEquity("UVXY", Resolution.Minute)
        self.LongMAQQQ = self.SMA("QQQ", 730, Resolution.Daily)
        self.ShortMAQQQ = self.SMA("QQQ", 15, Resolution.Daily)
        self.SchlongMAQQQ = self.SMA("QQQ", 120, Resolution.Daily)
        self.SchortMAQQQ = self.SMA("QQQ", 29, Resolution.Daily)
        
        
        self.SlopeAngleOne = MomentumPercent(5)
        self.SlopeAngleTwo = MomentumPercent(28)

        self.Schedule.On(
            self.DateRules.EveryDay("QQQ"),
            self.TimeRules.AfterMarketOpen("QQQ", 120),
            self.Derp)
            
        self.SetWarmup(730)
    def OnData(self, data):
        if self.IsWarmingUp:
            return
        self.QuotientOne = (self.LongMAQQQ.Current.Value)/(self.ShortMAQQQ.Current.Value)
        self.QuotientTwo = (self.SchlongMAQQQ.Current.Value)/(self.SchortMAQQQ.Current.Value)
        self.SlopeAngleOne.Update(self.Time, self.QuotientOne)
        self.SlopeAngleTwo.Update(self.Time, self.QuotientTwo)
        
    def Derp(self):
        if not self.SlopeAngleOne.IsReady or not self.SlopeAngleTwo.IsReady:
            return
        if (self.SlopeAngleOne.Current.Value <= -0.001) and (self.SlopeAngleTwo.Current.Value <= 0.00033):
            self.SetHoldings("TQQQ", 0.8)
            self.SetHoldings("QQQ", 0)
            self.SetHoldings("UVXY", 0.08)
        elif self.SlopeAngleTwo.Current.Value >= 0.00033:
            self.SetHoldings("TQQQ", 0.3)
            self.SetHoldings("QQQ", 0.3)
            self.SetHoldings("UVXY", 0.15)
        else:
            self.SetHoldings("TQQQ", 0)
            self.SetHoldings("QQQ", 0)
            self.SetHoldings("UVXY", 0)