| Overall Statistics |
|
Total Trades 25 Average Win 28.51% Average Loss -3.01% Compounding Annual Return 23.259% Drawdown 23.000% Expectancy 8.602 Net Profit 1560.028% Sharpe Ratio 1.37 Probabilistic Sharpe Ratio 79.437% Loss Rate 8% Win Rate 92% Profit-Loss Ratio 9.48 Alpha 0.221 Beta 0.225 Annual Standard Deviation 0.182 Annual Variance 0.033 Information Ratio 0.525 Tracking Error 0.236 Treynor Ratio 1.106 Total Fees $129.79 Estimated Strategy Capacity $76000000.00 Lowest Capacity Asset QQQ RIWIV7K5Z9LX |
## SIMON LesFlex June 2021 ##
## Modified by Vladimir
from QuantConnect.Python import PythonQuandl
### Simon LesFlex June 2021 ###
### Key Short—Term Economic Indicators. The Key Economic Indicators (KEI) database contains monthly and quarterly statistics
### (and associated statistical methodological information) for the 33 OECD member and for a selection of non—member countries
### on a wide variety of economic indicators, namely: quarterly national accounts, industrial production, composite leading indicators,
### business tendency and consumer opinion surveys, retail trade, consumer and producer prices, hourly earnings, employment/unemployment,
### interest rates, monetary aggregates, exchange rates, international trade and balance of payments. Indicators have been prepared by national statistical
### agencies primarily to meet the requirements of users within their own country. In most instances, the indicators are compiled in accordance with
### international statistical guidelines and recommendations. However, national practices may depart from these guidelines, and these departures may
### impact on comparability between countries. There is an on—going process of review and revision of the contents of the database in order to maximise
### the relevance of the database for short—term economic analysis.
### For more information see: http://stats.oecd.org/OECDStat_Metadata/ShowMetadata.ashx?Dataset=KEI&Lang=en
### Reference Data Set: https://www.quandl.com/data/OECD/KEI_LOLITOAA_OECDE_ST_M-Leading-indicator-amplitude-adjusted-OECD-Europe-Level-ratio-or-index-Monthly
class QuandlImporterAlgorithm(QCAlgorithm):
def Initialize(self):
self.quandlCode = "OECD/KEI_LOLITOAA_JPN_ST_M" # LeadInd
## Optional argument - personal token necessary for restricted dataset
Quandl.SetAuthCode("MLNarxdsMU92vk-ZJDvg")
self.SetStartDate(2008,1,1) #Set Start Date
self.SetEndDate(datetime.today() - timedelta(1)) #Set End Date
self.SetCash(25000) #Set Strategy Cash
self.SetWarmup(100)
self.init = True
self.AddData(QuandlCustomColumns, self.quandlCode, Resolution.Daily, TimeZones.NewYork)
self.sma = self.SMA(self.quandlCode, 1)
self.mom = self.MOMP(self.quandlCode, 1)
self.stock = self.AddEquity('QQQ', Resolution.Hour).Symbol
self.bond = self.AddEquity('TLT', Resolution.Hour).Symbol
self.Schedule.On(self.DateRules.WeekStart(self.stock), self.TimeRules.AfterMarketOpen(self.stock, 31),
self.Rebalance)
def Rebalance(self):
if self.IsWarmingUp or not self.mom.IsReady or not self.sma.IsReady: return
initial_asset = self.stock if self.mom.Current.Value > 0 else self.bond
if self.init:
self.SetHoldings(initial_asset, 1)
self.init = False
if self.mom.Current.Value > 0 and not self.Securities[self.stock].Invested:
self.Liquidate(self.bond)
self.SetHoldings(self.stock, 1)
# self.Debug("Purchased {0} >> {1}".format(self.stock, self.Time))
elif self.mom.Current.Value < 0 and self.sma.Current.Value < 100 and self.Securities[self.stock].Invested:
self.Liquidate(self.stock)
self.SetHoldings(self.bond, 1)
# self.Debug("Liquidated {0} >> {1}".format(self.stock, self.Time))
self.Plot("LeadInd", "SMA(LeadInd)", self.sma.Current.Value)
self.Plot("LeadInd", "THRESHOLD", 100)
self.Plot("MOMP", "MOMP(LeadInd)", self.mom.Current.Value)
self.Plot("MOMP", "THRESHOLD", 0)
class QuandlCustomColumns(PythonQuandl):
def __init__(self):
self.ValueColumnName = "Value"