Overall Statistics |
Total Trades 738 Average Win 0.00% Average Loss 0.00% Compounding Annual Return -56.302% Drawdown 0.900% Expectancy -0.992 Net Profit -0.903% Sharpe Ratio -10.613 Probabilistic Sharpe Ratio 0% Loss Rate 100% Win Rate 0% Profit-Loss Ratio 1.82 Alpha -0.064 Beta -0.808 Annual Standard Deviation 0.05 Annual Variance 0.003 Information Ratio -10.952 Tracking Error 0.102 Treynor Ratio 0.66 Total Fees $738.00 Estimated Strategy Capacity $4000.00 Lowest Capacity Asset SGLBW WI3VVSA3AH5X |
# region imports from AlgorithmImports import * # endregion class CrawlingMagentaAlbatross(QCAlgorithm): def Initialize(self): # self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage, AccountType.Cash) self.SetStartDate(2022, 1, 1) # Set Start Date self.SetEndDate(2022, 1, 4) self.SetCash(100000) # Set Strategy Cash self.AddUniverse(self.SelectCoarse) self.AddEquity("SPY", Resolution.Minute) self.Schedule.On(self.DateRules.EveryDay("SPY"), self.TimeRules.AfterMarketOpen("SPY", 1), self.updateOpenPrice) self.Schedule.On(self.DateRules.EveryDay("SPY"), self.TimeRules.BeforeMarketClose("SPY", 10), self.onMarketClose) self.pause = False self.opening_price ={} self.symbols_below_k = [] self.count = 0 def SelectCoarse(self, coarse): allSymbols = sorted(coarse, key=lambda c:c.DollarVolume, reverse=True) self.symbols_below_k = [s.Symbol for s in allSymbols if s.Price < 1000] return self.symbols_below_k def OnSecuritiesChanged(self, changes: SecurityChanges): for security in changes.AddedSecurities: self.opening_price[security.Symbol] = {'MarketOpenPrice': 0.0} def OnData(self, data): if self.pause == True: return for x in self.opening_price: if self.opening_price[x]['MarketOpenPrice'] == 0.0: continue if float(self.Securities[x].Price) > 1.1 * float(self.opening_price[x]['MarketOpenPrice']) and not self.Securities[x].Invested: self.MarketOrder(x, 1) self.count += 1 self.Debug("[{t}] {x}: openPrice: {o} buyingPrice: {b}".format(t=self.Time, x=x, o=self.opening_price[x]['MarketOpenPrice'], b=self.Securities[x].Price)) invested = [x.Key for x in self.Portfolio if x.Value.Invested] self.Plot("Amount invested","stocks", len(invested)) def onMarketClose(self): self.Log("End day. Liquidating!") self.pause = True self.Liquidate() self.Log("Count: {c}".format(c=self.count)) def updateOpenPrice(self): self.pause = False for x in self.opening_price: self.opening_price[x] = {'MarketOpenPrice': float(self.Securities[x].Price)}