| Overall Statistics |
|
Total Trades 19 Average Win 14.19% Average Loss -0.92% Compounding Annual Return 9.183% Drawdown 16.000% Expectancy 14.206 Net Profit 293.959% Sharpe Ratio 0.613 Loss Rate 8% Win Rate 92% Profit-Loss Ratio 15.47 Alpha -0.001 Beta 4.883 Annual Standard Deviation 0.108 Annual Variance 0.012 Information Ratio 0.486 Tracking Error 0.108 Treynor Ratio 0.014 Total Fees $180.32 |
from QuantConnect.Python import PythonQuandl
class BasicTemplateAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2003,1, 1) #Set Start Date
self.SetEndDate(2018,8,5) #Set End Date
self.SetCash(100000) #Set Strategy Cash
self.AddEquity("SPY", Resolution.Daily)
self.AddEquity("QQQ", Resolution.Daily)
self.AddEquity("AGG", Resolution.Daily)
self.qGDP = "FRED/GDP"
self.qNCBCEL = "FRED/NCBCEL"
Quandl.SetAuthCode("YjQrjz6zF8mVWdGTz3fa")
self.AddData(Fred, self.qGDP, Resolution.Daily, TimeZones.NewYork, True)
self.AddData(Fred, self.qNCBCEL, Resolution.Daily, TimeZones.NewYork, True)
self.Schedule.On(self.DateRules.MonthStart("SPY"), self.TimeRules.At(23, 0), self.rebalance)
self.months = -1
self.quarterly_rebalance = False
#to help notice trends
self.prev_value = 0
def rebalance(self):
#quarterly rebalance
self.months+=1
if self.months%3 == 0:
self.quarterly_rebalance = True
if self.quarterly_rebalance:
indicator = float(self.Securities[self.qNCBCEL].Price)/float(self.Securities[self.qGDP].Price)
self.Plot("Buffet Indicator","Indicator", indicator)
if indicator <= 1:
if self.prev_value < indicator:
if self.Portfolio["AGG"].Invested:
self.Liquidate()
self.SetHoldings("QQQ",1)
else:
if self.Portfolio["QQQ"].Invested:
self.Liquidate()
self.SetHoldings("AGG",1)
self.quarterly_rebalance = False
self.prev_value = indicator
def OnData(self, data):
pass
class Fred(PythonQuandl):
def __init__(self):
self.ValueColumnName = 'value'