| 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))