Overall Statistics
Total Trades
36
Average Win
18.18%
Average Loss
-4.12%
Compounding Annual Return
3.066%
Drawdown
29.700%
Expectancy
1.230
Net Profit
88.626%
Sharpe Ratio
0.3
Probabilistic Sharpe Ratio
0.020%
Loss Rate
59%
Win Rate
41%
Profit-Loss Ratio
4.42
Alpha
0.032
Beta
-0.018
Annual Standard Deviation
0.102
Annual Variance
0.01
Information Ratio
-0.19
Tracking Error
0.207
Treynor Ratio
-1.665
Total Fees
$193.50
# https://quantpedia.com/strategies/january-barometer/
#
# Invest in the equity market in each January. Stay invested in equity markets (via ETF, fund, or futures) only if January return is positive; otherwise, switch investments to T-Bills.
 
class JanuaryBarometer(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2000, 1, 1)
        self.SetCash(100000) 
        
        self.market = self.AddEquity("SPY", Resolution.Daily).Symbol
        self.t_bills = self.AddEquity("BIL", Resolution.Daily).Symbol
        
        self.startPrice = None
        self.Schedule.On(self.DateRules.MonthStart(self.market), self.TimeRules.AfterMarketOpen(self.market), self.Rebalance)
        
    def Rebalance(self):
        if self.Time.month == 1:
            self.Liquidate(self.t_bills)
            self.SetHoldings(self.market, 1)
            
            self.startPrice = self.Securities[self.market].Price
            
        if self.Time.month == 2 and self.startPrice:
            returns = (self.Securities[self.market].Price - self.startPrice) / self.startPrice
            if returns > 0:
                self.SetHoldings(self.market, 1)
            else:
                self.startPrice = None
                self.Liquidate(self.market)
                self.SetHoldings(self.t_bills, 1)