Overall Statistics |
Total Trades 14 Average Win 19.13% Average Loss -8.27% Compounding Annual Return 13.686% Drawdown 23.100% Expectancy 0.325 Net Profit 6.043% Sharpe Ratio 0.461 Probabilistic Sharpe Ratio 32.006% Loss Rate 60% Win Rate 40% Profit-Loss Ratio 2.31 Alpha 0.372 Beta 0.69 Annual Standard Deviation 0.349 Annual Variance 0.122 Information Ratio 1.441 Tracking Error 0.324 Treynor Ratio 0.233 Total Fees $163.48 Estimated Strategy Capacity $9000000.00 Lowest Capacity Asset X R735QTJ8XC9X |
# Fundemental Data and Technical indicators from AlgorithmImports import * class VerticalQuantumInterceptor(QCAlgorithm): def Initialize(self): self.SetStartDate(2022, 1, 1) self.SetEndDate(2022, 6, 16) self.SetCash(100000) resolution = Resolution.Daily self.UniverseSettings.Resolution = resolution self.AddUniverse(self.CoarseSelection, self.FineSelection) self.symbols = [self.AddEquity(x, resolution).Symbol for x in ["X", "F", "JPM"]] self.stocks = [] self.macd = {} for sec in self.symbols: self.macd[sec] = self.MACD(sec, 12, 26, 9, Resolution.Daily) def CoarseSelection(self, coarse): selected = [x for x in coarse if (x.HasFundamentalData) and (float(x.Price) > 10)] static = [x.Symbol for x in selected if (x.Symbol in self.symbols)] self.Plot("Universe", "static", len(static)) return static def FineSelection(self, fine): pb_ratio_filter = [x.Symbol for x in fine if x.ValuationRatios.PBRatio > 0 and (x.ValuationRatios.PBRatio < 1)] self.stocks = pb_ratio_filter self.Plot("Universe", "pb_ratio_filter", len(pb_ratio_filter)) return self.stocks def OnData(self, data): selected = [] for sec in self.stocks: if self.macd[sec].Current.Value > self.macd[sec].Signal.Current.Value: selected.append(sec) self.Plot("Universe", "macd_filter", len(selected)) for sec in self.Portfolio.Keys: if sec not in selected: self.Liquidate(sec) for sec in selected: wt = 1.0/len(selected) if len(selected) > 0 else 0 self.SetHoldings(sec, wt )