| Overall Statistics |
|
Total Trades 13 Average Win 0.83% Average Loss -0.30% Compounding Annual Return 1.506% Drawdown 5.200% Expectancy 1.494 Net Profit 1.939% Sharpe Ratio 0.367 Loss Rate 33% Win Rate 67% Profit-Loss Ratio 2.74 Alpha -0.055 Beta 3.556 Annual Standard Deviation 0.043 Annual Variance 0.002 Information Ratio -0.095 Tracking Error 0.043 Treynor Ratio 0.004 Total Fees $13.00 |
from clr import AddReference
AddReference("System")
AddReference("QuantConnect.Algorithm")
AddReference("QuantConnect.Common")
from System import *
from QuantConnect import *
from QuantConnect.Algorithm import *
from datetime import datetime, timedelta
class bbExampleAlgorithm(QCAlgorithm):
def Initialize(self):
''' Initialize the data and resolution you require for your strategy '''
self.SetStartDate(2018, 1, 1)
self.SetCash(25000);
# Add SPY
self.spy = self.AddEquity("SPY", Resolution.Daily)
# Set Boilinger Bands
self.bband = self.BB("SPY", 20, 2, MovingAverageType.Simple, Resolution.Daily)
# Set WarmUp period
self.SetWarmUp(20)
def OnData(self, data):
# Return if no data or if indicator is not ready
if not (data.ContainsKey("SPY") or self.BB.IsReady): return
# Retrieve current price
price = self.Securities["SPY"].Price
# Sell if price is higher than upper band
if not self.Portfolio.Invested and price > self.bband.UpperBand.Current.Value:
self.SetHoldings("SPY",-1)
# Liquidate if price is lower than middle band
if self.Portfolio.Invested and price < self.bband.MiddleBand.Current.Value:
self.Liquidate()