| Overall Statistics |
|
Total Trades
93
Average Win
12.54%
Average Loss
-8.75%
Compounding Annual Return
6.981%
Drawdown
55.700%
Expectancy
0.481
Net Profit
394.445%
Sharpe Ratio
0.381
Probabilistic Sharpe Ratio
0.012%
Loss Rate
39%
Win Rate
61%
Profit-Loss Ratio
1.43
Alpha
0.003
Beta
0.972
Annual Standard Deviation
0.161
Annual Variance
0.026
Information Ratio
0.037
Tracking Error
0.037
Treynor Ratio
0.063
Total Fees
$719.95
Estimated Strategy Capacity
$1500000000.00
Lowest Capacity Asset
SPY R735QTJ8XC9X
Portfolio Turnover
1.07%
|
# https://quantpedia.com/strategies/january-effect-in-stocks/
#
# Invest in small-cap stocks at the beginning of each January. Stay invested in large-cap stocks for the rest of the year.
#
# QC implementation changes:
# - Small cap etf (IWM) and large cap etf (SPY) are used as investment assets.
from AlgorithmImports import *
class JanuaryEffectInStocks(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2000, 1, 1)
self.SetCash(100000)
data = self.AddEquity("SPY", Resolution.Daily)
data.SetLeverage(10)
self.large_cap = data.Symbol
data = self.AddEquity("IWM", Resolution.Daily)
data.SetLeverage(10)
self.small_cap = 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.large_cap].GetLastData() and self.Securities[self.small_cap].GetLastData():
if (self.Time.date() - self.Securities[self.large_cap].GetLastData().Time.date()).days < 5 and (self.Time.date() - self.Securities[self.small_cap].GetLastData().Time.date()).days < 5:
if self.Time.month == 1:
if self.Portfolio[self.large_cap].Invested:
self.Liquidate(self.large_cap)
self.SetHoldings(self.small_cap, 1)
else:
if self.Portfolio[self.small_cap].Invested:
self.Liquidate(self.small_cap)
self.SetHoldings(self.large_cap, 1)
else:
self.Liquidate()
else:
self.Liquidate()