| Overall Statistics |
|
Total Trades 5 Average Win 0% Average Loss 0% Compounding Annual Return 3.703% Drawdown 0.300% Expectancy 0 Net Profit 0.319% Sharpe Ratio 1.292 Probabilistic Sharpe Ratio 54.366% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0.036 Beta -0.025 Annual Standard Deviation 0.02 Annual Variance 0 Information Ratio -3.21 Tracking Error 0.11 Treynor Ratio -1.067 Total Fees $9.76 Estimated Strategy Capacity $470000000.00 Lowest Capacity Asset AMZN R735QTJ8XC9X Portfolio Turnover 1.54% |
#region imports
from AlgorithmImports import *
#endregion
from QuantConnect.Data.Market import TradeBar
class RollingWindowAlgorithm(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(2013,10,1) # Set Start Date
self.SetEndDate(2013,11,1) # Set End Date
self.SetCash(100000) # Set Strategy Cash
self.AddEquity("QQQ", Resolution.Daily)
self.symbols = ["AAPL", "GOOGL", "FB", "AMZN", "QQQ"]
# Creates a Rolling Window indicator to keep the 2 TradeBar
self.window = {}
for symbol in self.symbols:
self.AddEquity(symbol, Resolution.Daily)
self.window[symbol] = RollingWindow[TradeBar](5)
def OnData(self, data):
'''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.'''
for symbol in self.symbols:
# Add TradeBar for each stock in rolling window
self.window[symbol].Add(data[symbol])
# Wait for window to be ready: needs two additions
if not self.window[symbol].IsReady: return
currBar = self.window[symbol][0] # Current bar had index zero.
pastBar = self.window[symbol][1] # Past bar has index one.
# Remember: avoid logging prices
self.Log("{0} -> {1} ... {2} -> {3}".format(pastBar.Time, pastBar.Close, currBar.Time, currBar.Close))
for symbol in self.symbols:
if not self.Portfolio.Invested and currBar.Close < pastBar.Close:
self.SetHoldings(symbol, .1)