Overall Statistics
Total Trades
50
Average Win
2.77%
Average Loss
-2.39%
Compounding Annual Return
8.019%
Drawdown
15.700%
Expectancy
0.381
Net Profit
23.924%
Sharpe Ratio
0.649
Loss Rate
36%
Win Rate
64%
Profit-Loss Ratio
1.16
Alpha
0.213
Beta
-6.39
Annual Standard Deviation
0.132
Annual Variance
0.017
Information Ratio
0.498
Tracking Error
0.132
Treynor Ratio
-0.013
Total Fees
$875.41
from QuantConnect.Indicators import *

class BasicTemplateAlgorithm(QCAlgorithm):
    '''Basic template algorithm simply initializes the date range and cash'''

    def Initialize(self):
        '''Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized.'''

        self.SetStartDate(2015,9,1)  #Set Start Date
        self.SetEndDate(2018,5,15)    #Set End Date
        self.SetCash(100000)           #Set Strategy Cash
        # Find more symbols here: http://quantconnect.com/data
        self.AddEquity("PFE", Resolution.Daily)
        self.BollingerBand = self.BB("PFE",20,2,MovingAverageType.Simple,Resolution.Daily)
        self.Strength = self.RSI("PFE",14,MovingAverageType.Simple,Resolution.Daily)
        self.SetWarmUp(20)
        self.SetBenchmark("SPY")

    def OnData(self, data):
        rsi = self.Strength.Current.Value
        lower = self.BollingerBand.LowerBand.Current.Value
        upper = self.BollingerBand.UpperBand.Current.Value
        middle = self.BollingerBand.MiddleBand.Current.Value
        current = data["PFE"].Close

        
        #need to check when to go long
        if not self.Portfolio.Invested:
            if current < lower and rsi < 40:
                self.SetHoldings("PFE", 1)
            if current > upper and rsi > 60:
                self.SetHoldings("PFE", -1)
            
        if self.Portfolio.Invested:
            if self.Portfolio["PFE"].IsLong:
                if current > middle:
                    self.Liquidate("PFE")
            if self.Portfolio["PFE"].IsShort:
                if current < middle:
                    self.Liquidate("PFE")