| Overall Statistics |
|
Total Trades 810 Average Win 1.11% Average Loss -1.09% Compounding Annual Return 0.928% Drawdown 18.600% Expectancy 0.019 Net Profit 3.545% Sharpe Ratio 0.115 Probabilistic Sharpe Ratio 1.882% Loss Rate 50% Win Rate 50% Profit-Loss Ratio 1.02 Alpha -0.012 Beta 0.214 Annual Standard Deviation 0.132 Annual Variance 0.017 Information Ratio -0.589 Tracking Error 0.188 Treynor Ratio 0.071 Total Fees $810.00 Estimated Strategy Capacity $14000000.00 Lowest Capacity Asset AMZN R735QTJ8XC9X |
class EmotionalFluorescentPinkSalmon(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2018, 1, 1)
self.SetEndDate(2021, 11, 1)
self.SetCash(100000)
self.atrs = {}
self.tickers = {}
symbols = ["AMZN", "MSFT", "AAPL"]
for ticker in symbols:
self.AddEquity(ticker, Resolution.Minute)
self.tickers[ticker] = IndicatorExtensions.Over(self.ATR(ticker, 14, MovingAverageType.Simple, Resolution.Minute), self.Securities[ticker].Price)
self.tickers = {k: v for k, v in sorted(self.tickers.items(), key=lambda item: item[1], reverse=True)[:1]}
self.portfolio_targets = []
for stock, volt in self.tickers.items():
self.stock = self.AddEquity(stock, Resolution.Minute).Symbol
self.portfolio_targets.append(self.stock)
self.spy = self.AddEquity("SPY", Resolution.Minute).Symbol
self.SetWarmUp(1, Resolution.Daily)
self.yest_close = self.SMA(self.spy, 1, Resolution.Daily, Field.Close)
"""
Figure out universe selection error
"""
def OnData(self, data):
if self.IsWarmingUp or not self.yest_close.IsReady or not len(data.Bars) > 0:
return
# If SPY is above yesterday's close at 9:45, go long all stocks in ticker_symbols
if self.Time.hour == 9 and self.Time.minute == 45:
for stock in self.portfolio_targets:
price = self.Securities[self.spy].Price
yest_close = self.yest_close.Current.Value
if price < yest_close:
self.SetHoldings(stock, 1/len(self.portfolio_targets))
if self.Time.hour == 15 and self.Time.minute == 45:
self.Liquidate()