Overall Statistics |
Total Trades 629 Average Win 0.66% Average Loss -0.42% Compounding Annual Return 278.976% Drawdown 14.000% Expectancy 0.213 Net Profit 32.909% Sharpe Ratio 3.436 Probabilistic Sharpe Ratio 69.444% Loss Rate 53% Win Rate 47% Profit-Loss Ratio 1.56 Alpha 1.991 Beta -0.191 Annual Standard Deviation 0.576 Annual Variance 0.332 Information Ratio 2.243 Tracking Error 0.859 Treynor Ratio -10.344 Total Fees $2757.64 |
import re from datetime import datetime, timedelta from QuantConnect.Data.Custom.Tiingo import * class MultidimensionalOptimizedCompensator(QCAlgorithm): def Initialize(self): self.SetStartDate(2020, 3, 1) # Set Start Date self.SetEndDate(2020, 5, 17) # Date video was filmed self.SetCash(100000) # Set Strategy Cash tickers = ['GILD', 'MRNA', 'JNJ', 'INO', 'PFE', 'NVAX', 'URGN', 'CODX', 'SNGX', 'EGRX', 'GRFS', 'SRNE'] symbols = [Symbol.Create(ticker, SecurityType.Equity, Market.USA) for ticker in tickers] self.UniverseSettings.Resolution = Resolution.Daily self.SetUniverseSelection(ManualUniverseSelectionModel(symbols)) self.SetAlpha(BiotechNewsAlpha(symbols)) self.SetExecution(ImmediateExecutionModel()) self.SetPortfolioConstruction(EqualWeightingPortfolioConstructionModel(lambda time: None)) class BiotechNewsAlpha: def __init__(self, symbols): self.symbols = {} self.keywords = keywords = [('fda', 'approval'), ('fda', 'approved'), ('start','clinical', 'trials'), ('start', 'human', 'trials'), ('begin', 'trials'), ('start', 'trials')] def Update(self, algorithm, data): ## swap out for notebook code after first backtest insights = [] tiingo_data = data.Get(TiingoNews) for sym in tiingo_data.Keys: article = tiingo_data[sym] for key in self.keywords: match = all([bool(re.search(x, article.Description, re.IGNORECASE)) for x in key]) if match: insights += [Insight(article.Symbol.Underlying, timedelta(1), InsightType.Price, InsightDirection.Up)] return insights def OnSecuritiesChanged(self, algorithm, changes): for security in changes.AddedSecurities: self.symbols[security.Symbol] = algorithm.AddData(TiingoNews, security.Symbol).Symbol