Overall Statistics |
Total Orders 25 Average Win 13.11% Average Loss -3.29% Compounding Annual Return 3.961% Drawdown 25.400% Expectancy 0.662 Start Equity 100000 End Equity 150894.22 Net Profit 50.894% Sharpe Ratio 0.229 Sortino Ratio 0.182 Probabilistic Sharpe Ratio 0.534% Loss Rate 67% Win Rate 33% Profit-Loss Ratio 3.99 Alpha 0.002 Beta 0.304 Annual Standard Deviation 0.091 Annual Variance 0.008 Information Ratio -0.301 Tracking Error 0.137 Treynor Ratio 0.068 Total Fees $136.77 Estimated Strategy Capacity $340000000.00 Lowest Capacity Asset SPY R735QTJ8XC9X Portfolio Turnover 0.64% |
#region imports from AlgorithmImports import * #endregion # https://quantpedia.com/Screener/Details/113 class JanuaryBarometerAlgorithm(QCAlgorithm): def initialize(self): self.set_start_date(2008, 1, 1) self.set_end_date(2018, 8, 1) self.set_cash(100000) self.add_equity("SPY", Resolution.DAILY) self.add_equity("BIL", Resolution.DAILY) self.schedule.on(self.date_rules.month_start("SPY"), self.time_rules.after_market_open("SPY"), self._rebalance) self._start_price = None def _rebalance(self): if self.time.month == 1: self.liquidate("BIL") self.set_holdings("SPY", 1) self._start_price = self.securities["SPY"].price if self.time.month == 2 and self._start_price is not None: returns = (self.securities["SPY"].price - self._start_price)/self._start_price if returns > 0: self.set_holdings("SPY", 1) else: self.liquidate("SPY") self.set_holdings("BIL", 1)