Overall Statistics |
Total Trades 15372 Average Win 0.01% Average Loss 0.00% Compounding Annual Return 16.590% Drawdown 19.100% Expectancy 2.885 Net Profit 123.878% Sharpe Ratio 1.116 Probabilistic Sharpe Ratio 54.159% Loss Rate 36% Win Rate 64% Profit-Loss Ratio 5.11 Alpha 0.173 Beta -0.116 Annual Standard Deviation 0.129 Annual Variance 0.017 Information Ratio -0.415 Tracking Error 0.254 Treynor Ratio -1.239 Total Fees $15464.08 Estimated Strategy Capacity $0 Lowest Capacity Asset LINTA TIIB7Z82AFS5 |
# Creating our own Index Fund # https://www.quantconnect.com/forum/discussion/12347/creating-our-own-index-fund # ---------------------- ETF = "QQQ"; LEV = 1.00; # ---------------------- class IndexInvesting(QCAlgorithm): def Initialize(self): self.SetStartDate(2016, 6, 24) self.InitCash = 1000000 self.SetCash(self.InitCash) self.SetBenchmark(ETF) self.initBenchmarkPrice = None self.UniverseSettings.Resolution = Resolution.Daily self.etf = self.AddEquity(ETF, Resolution.Hour).Symbol self.AddUniverse(self.Universe.ETF(self.etf, self.UniverseSettings, self.ETFConstituentsFilter)) self.Settings.FreePortfolioValuePercentage = 0.50 #example 50% self.weights = {} self.Schedule.On(self.DateRules.WeekStart(self.etf), self.TimeRules.AfterMarketOpen(self.etf, 31), self.Rebalance) def ETFConstituentsFilter(self, constituents): self.weights = {c.Symbol: c.Weight for c in constituents} return list(self.weights.keys()) def OnSecuritiesChanged(self, changes): for security in changes.RemovedSecurities: if security.Invested: self.Liquidate(security.Symbol, 'No longer in universe') if security.Symbol in self.weights.keys(): del self.weights[security.Symbol] def Rebalance(self): for symbol, weight in self.weights.items(): if symbol in self.ActiveSecurities: if weight is not None: self.SetHoldings(symbol, weight) # Market cap weighted # self.SetHoldings(symbol, LEV / len(self.weights)) # Equally weighted def UpdateBenchmarkValue(self): if self.initBenchmarkPrice is None: self.initBenchmarkCash = self.InitCash self.initBenchmarkPrice = self.Benchmark.Evaluate(self.Time) self.benchmarkValue = self.initBenchmarkCash else: currentBenchmarkPrice = self.Benchmark.Evaluate(self.Time) self.benchmarkValue = (currentBenchmarkPrice / self.initBenchmarkPrice) * self.initBenchmarkCash def OnEndOfDay(self): self.UpdateBenchmarkValue() self.Plot('Strategy Equity', ETF, self.benchmarkValue)