Overall Statistics
Total Trades
1
Average Win
0%
Average Loss
0%
Compounding Annual Return
0%
Drawdown
0%
Expectancy
0
Net Profit
0%
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
Tracking Error
0
Treynor Ratio
0
Total Fees
$10.55
import numpy as np
from datetime import datetime
from clr import AddReference

import decimal as d

class TEST(QCAlgorithm):

    def __init__(self):
            self.previous = None
            self._sma = None
            self.position = None
            self.lastMonth = -1

    def Initialize(self):
        self.SetStartDate(2018,1,1)  
        self.SetEndDate(2018,11,9)    
        self.SetCash(100000)           
        self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage)
        self.AddSecurity(SecurityType.Equity, "UPRO", Resolution.Minute)
        self.AddSecurity(SecurityType.Equity, "SHV", Resolution.Minute)
        self.SetBenchmark("SPY")
        self._sma = self.SMA("UPRO", 220, Resolution.Minute)
        self.close = d.Decimal(float(self.Securities["UPRO"].Price))
 
    def OnData(self, data):

        if not self._sma.IsReady:
            return    
 
        if not data.ContainsKey("UPRO"):
            return

        if self.lastMonth == self.Time.month:
            return  
        
        if data["UPRO"].Close > self._sma.Current.Value:
            if self.position == None:
                stopPrice = self.close * d.Decimal(0.95)
                self.SetHoldings("UPRO", 1)
                self.StopMarketOrder("UPRO", -1, stopPrice)
            else:
                if self.position == "SHV":
                    self.Liquidate("SHV")
                    stopPrice = self.close * d.Decimal(0.95)
                    self.SetHoldings("UPRO", 1)
                    self.StopMarketOrder("UPRO", -1, stopPrice)
            self.position = "UPRO"
        else:
            if self.position == None:
                self.SetHoldings("SHV", 1)
            else:
                if self.position == "UPRO":
                    self.Liquidate("UPRO")
                    self.SetHoldings("SHV", 1)
            self.position = "SHV"
            
        self.lastMonth = self.Time.month