Overall Statistics
Total Trades
233
Average Win
0.12%
Average Loss
-0.11%
Compounding Annual Return
12.941%
Drawdown
1.400%
Expectancy
0.176
Net Profit
2.021%
Sharpe Ratio
1.775
Probabilistic Sharpe Ratio
62.811%
Loss Rate
45%
Win Rate
55%
Profit-Loss Ratio
1.13
Alpha
0.129
Beta
-0.06
Annual Standard Deviation
0.051
Annual Variance
0.003
Information Ratio
-4.09
Tracking Error
0.136
Treynor Ratio
-1.521
Total Fees
$254.99
Estimated Strategy Capacity
$11000000.00
Lowest Capacity Asset
TWTR VLE97YS7S57P
from AlgorithmImports import *

class ExtractAlphaTacticalModelAlgorithm(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2019, 1, 1)
        self.SetEndDate(2019, 3, 1)
        self.SetCash(100000)
        
        self.time = datetime.min
        
        self.AddUniverse(self.MyCoarseFilterFunction)
        self.UniverseSettings.Resolution = Resolution.Minute
        
    def MyCoarseFilterFunction(self, coarse):
        sorted_by_dollar_volume = sorted([x for x in coarse if x.HasFundamentalData and x.Price > 4], 
                                key=lambda x: x.DollarVolume, reverse=True)
        selected = [x.Symbol for x in sorted_by_dollar_volume[:100]]
        return selected

    def OnData(self, data):
        if self.time > self.Time: return
    
        # Accessing Data
        points = data.Get(ExtractAlphaTacticalModel)
        sorted_by_score = sorted([x for x in points.items() if x[1].Score], key=lambda x: x[1].Score)
        long_symbols = [x[0].Underlying for x in sorted_by_score[-10:]]
        short_symbols = [x[0].Underlying for x in sorted_by_score[:10]]
        
        for symbol in [x.Symbol for x in self.Portfolio.Values if x.Invested]:
            if symbol not in long_symbols + short_symbols:
                self.Liquidate(symbol)
        
        long_targets = [PortfolioTarget(symbol, 0.05) for symbol in long_symbols]
        short_targets = [PortfolioTarget(symbol, -0.05) for symbol in short_symbols]
        self.SetHoldings(long_targets + short_targets)
        
        self.time = Expiry.EndOfDay(self.Time)
        
    def OnSecuritiesChanged(self, changes):
        for security in changes.AddedSecurities:
            # Requesting Data
            extract_alpha_tactical_model_symbol = self.AddData(ExtractAlphaTacticalModel, security.Symbol).Symbol

            # Historical Data
            history = self.History(extract_alpha_tactical_model_symbol, 60, Resolution.Daily)
            self.Debug(f"We got {len(history)} items from our history request")