Overall Statistics
Total Trades
87
Average Win
2.12%
Average Loss
-2.69%
Compounding Annual Return
-22.341%
Drawdown
40.000%
Expectancy
-0.150
Net Profit
-11.843%
Sharpe Ratio
0.03
Probabilistic Sharpe Ratio
20.641%
Loss Rate
52%
Win Rate
48%
Profit-Loss Ratio
0.79
Alpha
-0.216
Beta
1.012
Annual Standard Deviation
0.645
Annual Variance
0.417
Information Ratio
-0.336
Tracking Error
0.635
Treynor Ratio
0.019
Total Fees
$153.49
Estimated Strategy Capacity
$85000000.00
Lowest Capacity Asset
TSLA UNU3P8Y3WFAD
Portfolio Turnover
15.96%
from AlgorithmImports import *

class USCoarseUniverseConstituentsDataAlgorithm(QCAlgorithm):

    _number_of_symbols = 3
    _changes = None

    def Initialize(self) -> None:
        self.SetStartDate(2021, 1, 1)
        self.SetEndDate(2021, 7, 1)
        self.SetCash(100000)
        
        # Requesting data
        self.AddUniverse(self.FundamentalSelectionFunction)

    def FundamentalSelectionFunction(self, fundamental: List[Fundamental]) -> List[Symbol]:
        sortedByDollarVolume = sorted(fundamental, key=lambda x: x.DollarVolume, reverse=True)
        return [ x.Symbol for x in sortedByDollarVolume[:self._number_of_symbols] ]


    def OnData(self, data: Slice) -> None:
        # if we have no changes, do nothing
        if self._changes is None: return

        # liquidate removed securities
        for security in self._changes.RemovedSecurities:
            if security.Invested:
                self.Liquidate(security.Symbol)

        # we want 1/N allocation in each security in our universe
        for security in self._changes.AddedSecurities:
            self.SetHoldings(security.Symbol, 1 / self._number_of_symbols)

        self._changes = None

    def OnSecuritiesChanged(self, changes: SecurityChanges) -> None:
        self._changes = changes
        
        for security in changes.AddedSecurities:
            # Historical data
            history = self.History(security.Symbol, 7, Resolution.Daily)
            self.Debug(f"We got {len(history)} from our history request for {security.Symbol}")