| Overall Statistics |
|
Total Trades 25 Average Win 39.43% Average Loss -19.44% Compounding Annual Return 14.113% Drawdown 47.700% Expectancy 1.271 Net Profit 586.750% Sharpe Ratio 0.568 Loss Rate 25% Win Rate 75% Profit-Loss Ratio 2.03 Alpha 0.53 Beta -17.389 Annual Standard Deviation 0.324 Annual Variance 0.105 Information Ratio 0.506 Tracking Error 0.324 Treynor Ratio -0.011 Total Fees $1782.89 |
class LazyAssStrategy(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2004, 1, 1)
self.SetEndDate(2018, 8, 1)
self.SetCash(100000)
self.monthCounter = 0
# Country index ETFs according to https://seekingalpha.com/etfs-and-funds/etf-tables/countries
self.countryETFs = ["KSA", #Saudi Arabia
"QAT", #Qatar
"ENZL", #New Zealand
"EIS", #Israel
"EWL", #Switzerland
"EWC", #Canada
"EWH", #Hong Kong
"SPY",#USA
"EWZ", #Brazil
"PIN", #India
"GXG", #Colombia
"EWU", #United Kingdom
"EWA", #Australia
"RSX", #Russia
"NORW", #Norway
"IDX", #Indonesia
"EPHE", #Philippines
"EWQ", #France
"EPU", #Peru,
"EWN", #Netherlands
"EWD", #Sweden
"PLND", #Poland
"EWP", #Spain
"PGAL", #Portugal
"EIRL", #Ireland
"EWT", #Taiwan
"UAE", #United Arab Emirates
"EWS", #Singapore
"EWM", #Malaysia
"EWJ", #Japan
"VNM", #Vietnam
"EGPT", #Egypt
"THD", #Thailand
"EWI", #Italy
"EWW", #Mexico
"GXC", #China
"ECH", #Chile
"EWG", #Germany
"EWK", #Belgium
"GREK", #Greece
"EWO", #Austria
"EWY", #South Korea
"NGE", #Nigeria
"EZA", #South Africa
"PAK", #Pakistan
"TUR", #Turkey
]
for etf in self.countryETFs: self.AddEquity(etf, Resolution.Daily)
self.weight = 1
self.Schedule.On(self.DateRules.MonthStart("SPY"), self.TimeRules.AfterMarketOpen("SPY"), self.Rebalance)
def OnData(self, data):
pass
def Rebalance(self):
if self.monthCounter is 12:
closes = self.History(self.countryETFs, TimeSpan.FromDays(365),Resolution.Daily).close
grouped=closes.groupby(level=0)
returns = (grouped.last()-grouped.first())/grouped.first()
worstEtf = returns.idxmin()
self.SetHoldings(worstEtf, self.weight, True)
self.monthCounter = 1
else:
self.monthCounter = self.monthCounter+1