Overall Statistics |
Total Trades 2540 Average Win 0.10% Average Loss -0.17% Compounding Annual Return 24.530% Drawdown 46.600% Expectancy 0.134 Net Profit 311.341% Sharpe Ratio 0.836 Probabilistic Sharpe Ratio 24.017% Loss Rate 29% Win Rate 71% Profit-Loss Ratio 0.60 Alpha 0.077 Beta 1.449 Annual Standard Deviation 0.304 Annual Variance 0.093 Information Ratio 0.646 Tracking Error 0.204 Treynor Ratio 0.176 Total Fees $2953.41 |
class HipsterVioletRabbit(QCAlgorithm): def Initialize(self): self.SetStartDate(2014, 9, 10) # Set Start Date self.SetCash(100000) # Set Strategy Cash self.AddUniverse(self.MyCoarseFilterFunction, self.MyFineFundamentalFunction) self.month = None def MyCoarseFilterFunction(self, coarse): return [c.Symbol for c in coarse if c.DollarVolume > 1e7] def MyFineFundamentalFunction(self, fine): tech = [x for x in fine if x.AssetClassification.MorningstarSectorCode == MorningstarSectorCode.Technology] unprofitable = [x for x in tech if x.FinancialStatements.IncomeStatement.NormalizedIncomeAsReported.ThreeMonths <= 0] sorted_revenue = sorted(unprofitable, key=lambda f: f.FinancialStatements.IncomeStatement.TotalRevenue.OneMonth, reverse=True) return [f.Symbol for f in sorted_revenue[:50]] def OnData(self, data): if self.month == self.Time.month: return self.month = self.Time.month securities = data.Keys n_securities = len(securities) for s in securities: self.SetHoldings(s, 1 / n_securities)