Overall Statistics |
Total Trades 272 Average Win 0.01% Average Loss 0.00% Compounding Annual Return -24.366% Drawdown 0.300% Expectancy -0.970 Net Profit -0.306% Sharpe Ratio -15.538 Probabilistic Sharpe Ratio 0% Loss Rate 99% Win Rate 1% Profit-Loss Ratio 2.64 Alpha -0.197 Beta -0.051 Annual Standard Deviation 0.015 Annual Variance 0 Information Ratio -13.628 Tracking Error 0.059 Treynor Ratio 4.406 Total Fees $272.00 Estimated Strategy Capacity $1000.00 Lowest Capacity Asset CHPMW XB2MASNUBG4L |
# region imports from AlgorithmImports import * from QuantConnect.DataSource 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.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 not self.Portfolio.Invested: 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']): self.MarketOrder(x, 1) self.count += 1 self.Log("[{t}] {x}: openPrice: {o} buyingPrice: {b}".format(t=self.Time, x=x, o=self.opening_price[x]['MarketOpenPrice'], b=self.Securities[x].Price)) def onMarketClose(self): self.Log("End day. Liquidating!") self.Liquidate() self.Log("Count: {c}".format(c=self.count)) def updateOpenPrice(self): for x in self.opening_price: self.opening_price[x] = {'MarketOpenPrice': float(self.Securities[x].Price)}