Overall Statistics |
Total Orders 60 Average Win 4.33% Average Loss -3.54% Compounding Annual Return 2.025% Drawdown 49.000% Expectancy 0.160 Start Equity 100000 End Equity 107272.13 Net Profit 7.272% Sharpe Ratio 0.126 Sortino Ratio 0.188 Probabilistic Sharpe Ratio 2.664% Loss Rate 48% Win Rate 52% Profit-Loss Ratio 1.22 Alpha 0.022 Beta 0.194 Annual Standard Deviation 0.299 Annual Variance 0.089 Information Ratio -0.132 Tracking Error 0.31 Treynor Ratio 0.194 Total Fees $351.33 Estimated Strategy Capacity $1000.00 Lowest Capacity Asset CKX SUBW1BUUNHWL Portfolio Turnover 0.36% |
#region imports from AlgorithmImports import * #endregion # https://quantpedia.com/Screener/Details/25 class SmallCapInvestmentAlgorithm(QCAlgorithm): def initialize(self): self.set_start_date(2016, 1, 1) self.set_end_date(2019, 7, 1) self.set_cash(100000) self._year = -1 self._count = 10 self.universe_settings.resolution = Resolution.DAILY self._universe = self.add_universe(self._coarse_selection_function, self._fine_selection_function) def _coarse_selection_function(self, coarse): ''' Drop stocks which have no fundamental data or have low price ''' if self._year == self.time.year: return Universe.UNCHANGED return [x.symbol for x in coarse if x.has_fundamental_data and x.price > 5] def _fine_selection_function(self, fine): ''' Selects the stocks by lowest market cap ''' sorted_market_cap = sorted([x for x in fine if x.market_cap > 0], key=lambda x: x.market_cap) return [x.symbol for x in sorted_market_cap[:self._count]] def on_data(self, data): if self._year == self.time.year: return self._year = self.time.year weight = 1 / len(self._universe.selected) self.set_holdings([PortfolioTarget(symbol, weight) for symbol in self._universe.selected], True)