Overall Statistics
Total Trades
91
Average Win
1.99%
Average Loss
-1.47%
Compounding Annual Return
-1.024%
Drawdown
16.100%
Expectancy
-0.011
Net Profit
-2.458%
Sharpe Ratio
0.017
Probabilistic Sharpe Ratio
3.293%
Loss Rate
58%
Win Rate
42%
Profit-Loss Ratio
1.35
Alpha
0.021
Beta
-0.179
Annual Standard Deviation
0.137
Annual Variance
0.019
Information Ratio
-0.371
Tracking Error
0.28
Treynor Ratio
-0.013
Total Fees
$123.88
Estimated Strategy Capacity
$1000000000.00
Lowest Capacity Asset
SPY R735QTJ8XC9X
# region imports
from AlgorithmImports import *
# endregion

class JumpingBlueGuanaco(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2020, 1, 1)  # Set Start Date
        self.SetEndDate(2022,6,1)
        self.SetCash(100000)  # Set Strategy Cash
        self.spy = self.AddEquity("SPY", Resolution.Daily).Symbol

        self.sma = self.SMA (self.spy,30,Resolution.Daily)
        self.SetWarmUp(timedelta(30))


    def OnData(self, data):
        if not self.sma.IsReady:  # check difference, warup or isready
            return
        hist = self.History(self.spy,timedelta(260),Resolution.Daily)
        high = max(hist["high"])
        low = min(hist["low"])
        
        price = self.Securities["SPY"].Price

        if price * 1.05 >= high and self.sma.Current.Value < price:
            #if not self.Portfolio[self.spy].IsLong:
                self.SetHoldings(self.spy,1)
        elif price * 0.95 <= low and self.sma.Current.Value > price:
            if not self.Portfolio[self.spy].IsShort:
                self.SetHoldings(self.spy,-1)
        else:
            self.Liquidate(self.spy)
        
        self.Plot("Benchmark","52w-high",high)
        self.Plot("Benchmark","high area",high*0.95)
        self.Plot("Benchmark","52w-low",low)
        self.Plot("Benchmark","low area",low*1.05)
        self.Plot("Benchmark","sma",self.sma.Current.Value)