| 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 Probabilistic 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 Estimated Strategy Capacity $0 Lowest Capacity Asset |
#region imports
from AlgorithmImports import *
#endregion
class ParticleTransdimensionalAutosequencers(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2020, 1, 21)
self.SetEndDate(2020, 1, 22)
self.SetCash(100000)
self.AddEquity("SPY", Resolution.Hour, extendedMarketHours=True)
self.AddUniverseSelection(CoarseFundamentalUniverseSelectionModel(self.CoarseSelectionFunction))
self.UniverseSettings.Resolution = Resolution.Hour
self.UniverseSettings.extendedMarketHours = True
self.Schedule.On(
self.DateRules.EveryDay("SPY"),
self.TimeRules.At(9, 30),
self.SelectUniverse
)
self.universe = []
self.volume_by_symbol = {}
self.logged = False
def OnData(self, data):
if data.ContainsKey( 'SPY' ):
if not self.Securities['SPY'].Exchange.Hours.IsOpen(self.Time, self.Time + timedelta(hours=1), False):
self.Log( f'Extended Hours/ {self.Time}')
spy_vol = self.Securities['SPY'].Volume
self.Log(f'volume traded is {spy_vol}')
else:
self.Log( f'Market/ {self.Time}')
if len(self.volume_by_symbol) == 0:
if not self.logged:
self.logged = True
self.Log(f"Universe size after volume filter: {len(self.universe)}")
for symbol in self.universe:
self.MarketOrder(symbol,10,True)
return
for symbol in self.volume_by_symbol.keys():
if data.ContainsKey(symbol):
self.volume_by_symbol[symbol] += data[symbol].Volume
def CoarseSelectionFunction(self, coarse):
self.volume_by_symbol = {c.Symbol: 0 for c in coarse if c.Price > 400}
self.Log(f"Universe size before volume filter: {len(self.volume_by_symbol)}")
return list(self.volume_by_symbol.keys())
def SelectUniverse(self):
self.universe = []
first_symbol = list(self.volume_by_symbol.keys())[0]
first_vol = list(self.volume_by_symbol.values())[0]
self.Log(f"The cumulative volume for the {first_symbol} is {first_vol}")
for symbol, volume in self.volume_by_symbol.items():
if volume > 10:
self.universe.append(symbol)
#first_symbol = self.universe[0]
#first_vol = self.volume_by_symbol[first_symbol]
#self.Log(f"The cumulative volume for the {first_symbol} is {first_vol}")
self.volume_by_symbol.clear()
self.logged = False