Overall Statistics |
Total Trades
34
Average Win
12.46%
Average Loss
-3.09%
Compounding Annual Return
3.509%
Drawdown
26.200%
Expectancy
1.796
Net Profit
117.945%
Sharpe Ratio
0.365
Probabilistic Sharpe Ratio
0.015%
Loss Rate
44%
Win Rate
56%
Profit-Loss Ratio
4.03
Alpha
0.015
Beta
0.206
Annual Standard Deviation
0.074
Annual Variance
0.005
Information Ratio
-0.222
Tracking Error
0.144
Treynor Ratio
0.13
Total Fees
$171.33
Estimated Strategy Capacity
$15000000.00
Lowest Capacity Asset
BIL TT1EBZ21QWKL
|
# 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. from AlgorithmImports import * class JanuaryBarometer(QCAlgorithm): def Initialize(self): self.SetStartDate(2000, 1, 1) self.SetCash(100000) data = self.AddEquity("SPY", Resolution.Daily) data.SetLeverage(10) self.market = data.Symbol data = self.AddEquity("BIL", Resolution.Daily) data.SetLeverage(10) self.t_bills = data.Symbol self.start_price = None self.recent_month = -1 def OnData(self, data): if self.recent_month == self.Time.month: return self.recent_month = self.Time.month if self.Securities[self.market].GetLastData() and self.Securities[self.t_bills].GetLastData(): if (self.Time.date() - self.Securities[self.market].GetLastData().Time.date()).days < 5 and (self.Time.date() - self.Securities[self.t_bills].GetLastData().Time.date()).days < 5: if self.Time.month == 1: self.Liquidate(self.t_bills) self.SetHoldings(self.market, 1) self.start_price = self.Securities[self.market].Price if self.Time.month == 2 and self.start_price: returns = (self.Securities[self.market].Price - self.start_price) / self.start_price if returns > 0: self.SetHoldings(self.market, 1) else: self.start_price = None self.Liquidate(self.market) self.SetHoldings(self.t_bills, 1) else: self.Liquidate() else: self.Liquidate()