Overall Statistics |
Total Orders 139 Average Win 10.49% Average Loss -8.19% Compounding Annual Return 14.951% Drawdown 52.000% Expectancy 0.719 Start Equity 1000000 End Equity 36940752.91 Net Profit 3594.075% Sharpe Ratio 0.51 Sortino Ratio 0.62 Probabilistic Sharpe Ratio 0.337% Loss Rate 25% Win Rate 75% Profit-Loss Ratio 1.28 Alpha 0.05 Beta 1.024 Annual Standard Deviation 0.195 Annual Variance 0.038 Information Ratio 0.475 Tracking Error 0.107 Treynor Ratio 0.097 Total Fees $247852.27 Estimated Strategy Capacity $320000000.00 Lowest Capacity Asset SPY R735QTJ8XC9X Portfolio Turnover 1.47% |
# region imports from AlgorithmImports import * # endregion class DeterminedOrangeArmadillo(QCAlgorithm): _black_fridays = [ datetime(1998, 11, 27), datetime(1999, 11, 26), datetime(2000, 11, 24), datetime(2001, 11, 23), datetime(2002, 11, 29), datetime(2003, 11, 28), datetime(2004, 11, 26), datetime(2005, 11, 25), datetime(2006, 11, 24), datetime(2007, 11, 23), datetime(2008, 11, 28), datetime(2009, 11, 27), datetime(2010, 11, 26), datetime(2011, 11, 25), datetime(2012, 11, 23), datetime(2013, 11, 29), datetime(2014, 11, 28), datetime(2015, 11, 27), datetime(2016, 11, 25), datetime(2017, 11, 24), datetime(2018, 11, 23), datetime(2019, 11, 29), datetime(2020, 11, 27), datetime(2021, 11, 26), datetime(2022, 11, 25), datetime(2023, 11, 24), ] _prime_days = [ datetime(2015, 7, 15), datetime(2016, 7, 12), datetime(2017, 7, 11), datetime(2018, 7, 17), datetime(2019, 7, 15), datetime(2020, 10, 13), datetime(2021, 7, 21), datetime(2022, 7, 12), datetime(2023, 7, 11), ] def initialize(self): self.set_start_date(1998, 11, 13) self.set_end_date(2024, 10, 1) self.set_cash(1_000_000) amzn = self.add_equity('AMZN') spy = self.add_equity('SPY') holding_period = self.get_parameter('holding_period', 14) for holidays in [self._black_fridays, self._prime_days]: for holiday in holidays: # Hold AMZN before the holiday. self.schedule.on( self.date_rules.on(spy.exchange.hours.get_next_market_close(holiday - timedelta(holding_period), False)), self.time_rules.before_market_close(spy.symbol, 1), lambda: self.set_holdings([PortfolioTarget(amzn.symbol, 1)], True) ) # Hold SPY after the holiday. self.schedule.on( self.date_rules.on(spy.exchange.hours.get_next_market_close(holiday + timedelta(1), False)), self.time_rules.before_market_close(spy.symbol, 1), lambda: self.set_holdings([PortfolioTarget(spy.symbol, 1)], True) )