| Overall Statistics |
|
Total Trades 20 Average Win 0.01% Average Loss 0.00% Compounding Annual Return -72.515% Drawdown 1.400% Expectancy 1.948 Net Profit -1.420% Sharpe Ratio -8.698 Probabilistic Sharpe Ratio 0% Loss Rate 20% Win Rate 80% Profit-Loss Ratio 2.69 Alpha 2.511 Beta -0.093 Annual Standard Deviation 0.068 Annual Variance 0.005 Information Ratio -160.07 Tracking Error 0.212 Treynor Ratio 6.363 Total Fees $119.95 |
# from Execution.ImmediateExecutionModel import ImmediateExecutionModel
# from Portfolio.EqualWeightingPortfolioConstructionModel import EqualWeightingPortfolioConstructionModel
# from QuantConnect.Data import Fundamental
from datetime import timedelta
class VentralTachyonGearbox(QCAlgorithm):
def Initialize(self):
self.nAssetsInPortfolio = 10
self.SetStartDate(2020, 11, 1)
self.SetCash(100000)
self.SetExecution(ImmediateExecutionModel())
self.SetPortfolioConstruction(EqualWeightingPortfolioConstructionModel())
self.UniverseSettings.Resolution = Resolution.Daily
self.AddUniverse(self.CoarseSelectionFilter, self.FineFundamentalSorter)
self.AddAlpha(AllUp())
def CoarseSelectionFilter(self, coarse):
filtered = [x.Symbol for x in coarse if x.HasFundamentalData]
return filtered
def FineFundamentalSorter(self, fine):
sortedByROIC = sorted(fine, key=lambda x: x.OperationRatios.ROIC.ThreeMonths, reverse=True)
return [s.Symbol for s in sortedByROIC[:self.nAssetsInPortfolio]]
class AllUp(AlphaModel):
def __init__(self):
self.securities = []
def Update(self, algorithm, data):
return Insight.Group([Insight.Price(x.Symbol, timedelta(1), InsightDirection.Up) for x in self.securities])
def OnSecuritiesChanged(self, algorithm, changes):
for security in changes.AddedSecurities:
self.securities.append(security)
for security in changes.RemovedSecurities:
if symbol in self.securities:
self.secs.remove(security)