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)