Overall Statistics |
Total Trades 6321 Average Win 0.08% Average Loss -0.14% Compounding Annual Return 2.572% Drawdown 29.600% Expectancy 0.061 Net Profit 35.300% Sharpe Ratio 0.292 Loss Rate 32% Win Rate 68% Profit-Loss Ratio 0.56 Alpha 0.029 Beta 0.088 Annual Standard Deviation 0.103 Annual Variance 0.011 Information Ratio 0.103 Tracking Error 0.103 Treynor Ratio 0.344 Total Fees $7927.81 |
# https://quantpedia.com/Screener/Details/1 # Use 5 ETFs (SPY - US stocks, EFA - foreign stocks, BND - bonds, VNQ - REITs, # GSG - commodities), equal weight the portfolio. Hold asset class ETF only when # it is over its 10 month Simple Moving Average, otherwise stay in cash. import numpy as np from datetime import datetime class BasicTemplateAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(2007, 5, 1) self.SetEndDate(datetime.now()) self.SetCash(100000) self.data = {} period = 10*21 self.SetWarmUp(period) self.symbols = ["SPY", "EFA", "BND", "VNQ", "GSG"] for symbol in self.symbols: self.AddEquity(symbol, Resolution.Daily) self.data[symbol] = self.SMA(symbol, period, Resolution.Daily) def OnData(self, data): if self.IsWarmingUp: return isUptrend = [] for symbol, sma in self.data.items(): if self.Securities[symbol].Price > sma.Current.Value: isUptrend.append(symbol) else: self.Liquidate(symbol) for symbol in isUptrend: self.SetHoldings(symbol, 1/len(isUptrend))