| Overall Statistics |
|
Total Trades 2 Average Win 0% Average Loss 0% Compounding Annual Return 1.578% Drawdown 0.200% Expectancy 0 Net Profit 0.133% Sharpe Ratio 2.546 Probabilistic Sharpe Ratio 68.351% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha -0.004 Beta 0.04 Annual Standard Deviation 0.005 Annual Variance 0 Information Ratio -3.425 Tracking Error 0.128 Treynor Ratio 0.35 Total Fees $2.00 Estimated Strategy Capacity $11000000.00 |
class Test_LivePremarket_Execution(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2021, 3, 2) # Set Start Date
self.SetCash(100000) # Set Strategy Cash
#---------- Universe Selection -------------
self.UniverseSettings.Resolution = Resolution.Minute
self.UniverseSettings.ExtendedMarketHours = True # test live if work
self.maxSymbolsFromUniverseFilter = 1
#-- Filtered Universe
self.AddUniverse(self.CoarseSelectionFilter, self.FineSelectionFilter)
#-- Add symbol manually
self.AddEquity("SPY", Resolution.Minute, Market.USA, True, 0, True)
self.enterLiveOrderFlag = False
def CoarseSelectionFilter(self, coarse):
myuniverse = [x for x in coarse if x.HasFundamentalData]
return [x.Symbol for x in myuniverse[:self.maxSymbolsFromUniverseFilter]]
def FineSelectionFilter(self, fine):
myuniverse = [x for x in fine]
return [x.Symbol for x in myuniverse]
def OnData(self, data):
# hour = 7, premarket price is available
if (self.enterLiveOrderFlag == False) and (self.Time.hour == 7) : # (self.LiveMode) and
self.Debug(f"{self.Time}: entering Orders")
for kvp in self.Portfolio:
testSymbol = kvp.Key
holding = kvp.Value
self.Debug(f"{testSymbol.Value} -holding: {holding.Quantity} price: {self.Securities[testSymbol].Price}")
if self.IsMarketOpen(testSymbol):
self.Debug(f"onData {self.Time} {testSymbol.Value} market is open")
tag = str(self.Securities[testSymbol].Price)
ticket = self.MarketOrder(testSymbol, 10,False,tag)
else:
self.Debug(f"onData {self.Time} {testSymbol.Value} market is NOT open")
limitPrice = self.Securities[testSymbol].Price * 1.03 # use a higher price to get entry
tag = str(self.Securities[testSymbol].Price)
ticket = self.LimitOrder(testSymbol,10,limitPrice,tag)
self.Debug(f"test doing limit order for {testSymbol.Value} price: {self.Securities[testSymbol].Price} limitPrice: {limitPrice}")
self.enterLiveOrderFlag = True