Overall Statistics
Total Trades
645
Average Win
2.59%
Average Loss
-1.73%
Compounding Annual Return
15.534%
Drawdown
26.900%
Expectancy
0.491
Net Profit
1097.046%
Sharpe Ratio
0.916
Probabilistic Sharpe Ratio
34.184%
Loss Rate
40%
Win Rate
60%
Profit-Loss Ratio
1.50
Alpha
0.13
Beta
-0.015
Annual Standard Deviation
0.14
Annual Variance
0.02
Information Ratio
0.199
Tracking Error
0.216
Treynor Ratio
-8.591
Total Fees
$29799.09
class MultidimensionalUncoupledAntennaArray(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2003, 1, 4)  # Set Start Date
        
        self.SetCash(100000)  # Set Strategy Cash
        # self.AddEquity("SPY", Resolution.Minute)
        
        self.SetCash(100000)  # Set Strategy Cash
        
        self.UniverseSettings.Resolution = Resolution.Daily
        
        self.AddUniverse(self.CoarseSelectionFunction,self.FineSelectionFunction)

    
    def CoarseSelectionFunction(self, coarse):
        
        selected = [x for x in coarse if (x.HasFundamentalData)]
        
        return [ x.Symbol for x in selected ]
    
    def FineSelectionFunction(self, fine): 
        
        selected = [x for x in fine if (self.Time-x.SecurityReference.IPODate).days<50 and (self.Time-x.SecurityReference.IPODate).days>20 and x.OperationRatios.ROIC.ThreeMonths>0.03]
        
        sortedByPeRatio = sorted(selected,key=lambda x: x.OperationRatios.ROIC.ThreeMonths, reverse=True)[:5]
        
        for security in sortedByPeRatio:
            self.Debug(security.Symbol)
            self.Debug((self.Time-security.SecurityReference.IPODate).days)
            self.Debug(security.OperationRatios.ROIC.ThreeMonths)
        
        return [ x.Symbol for x in sortedByPeRatio ]
    
    def OnSecuritiesChanged(self, changes):
        for security in changes.RemovedSecurities:
            self.Liquidate(security.Symbol)
       
        for security in changes.AddedSecurities:
            self.SetHoldings(security.Symbol, 0.2)
    
    def OnData(self, data):
        '''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.
            Arguments:
                data: Slice object keyed by symbol containing the stock data
        '''
        pass