| Overall Statistics |
|
Total Trades 0 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 $0.00 |
import numpy as np
import decimal as d
class BasicTemplateAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2018,4,6) #(2013,1,1)
self.SetEndDate(2018,4,10)
self.backtestSymbolsPerDay = {}
self.current_universe = []
self.UniverseSettings.Resolution = Resolution.Hour;
self.AddUniverse("my-dropbox-universe", self.universeGetter)
self.Debug('End Init')
def universeGetter(self, date):
self.Debug('Begin UniverseGetter')
# handle live mode file format
if self.LiveMode:
# work on this later
return self.current_universe
# backtest - first cache the entire file
#if len(self.backtestSymbolsPerDay) == 0:
# str = self.Download("https://www.dropbox.com/s/rmiiktz0ntpff3a/daily-stock-picker-backtest.csv?dl=1")
# for line in str.splitlines():
# data = line.split(',')
# self.backtestSymbolsPerDay[data[0]] = data[1:]
# Dummmy this up for now
if len(self.backtestSymbolsPerDay) == 0:
self.backtestSymbolsPerDay['20180406'] = ['ABMD', 'BZUN', 'CRM', 'NOW']
self.backtestSymbolsPerDay['20180413'] = ['PAYC', 'ULTI', 'CRM', 'ADBE']
self.backtestSymbolsPerDay['20180420'] = ['PAYC', 'ADBE', 'CRM', 'RHT']
self.backtestSymbolsPerDay['20180427'] = ['PAYC', 'ADBE', 'RHT', 'BOOT']
index = date.strftime("%Y%m%d")
#self.Debug(index)
self.current_universe = self.backtestSymbolsPerDay.get(index, self.current_universe)
self.Debug('End UniverseGetter')
return self.current_universe
def OnData(self, slice):
self.Debug('Begin OnData ' +' '+str(self.Time))
if slice.Bars.Count == 0: return
if self.changes == None: return
# liquidate positions
for kvp in self.Portfolio:
security_holding = kvp.Value
if security_holding.Quantity > 0:
self.SetHoldings(secuity_holding.Symbol.Value, 0)
percentage = 1 / d.Decimal(len(self.current_universe))
for sym in self.current_universe:
#self.Debug(sym+' '+str(percentage))
self.SetHoldings(sym, percentage)
# reset changes
self.changes = None
self.Debug('end OnData ' +' '+str(self.Time))
def OnSecuritiesChanged(self, changes):
self.Debug('Begin OnSecuritiesChanged')
self.changes = changes
self.Debug('End OnSecuritiesChanged')
def OnEndOfAlgorithm(self):
self.Log('End captured')
for sym in self.current_universe:
self.Log(sym)