Overall Statistics
Total Trades
0
Average Win
0%
Average Loss
0%
Compounding Annual Return
0%
Drawdown
0%
Expectancy
0
Net Profit
0%
Sharpe Ratio
0
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0
Beta
0
Annual Standard Deviation
0
Annual Variance
0
Information Ratio
0
Tracking Error
0
Treynor Ratio
0
Total Fees
$0.00
import numpy as np

### <summary>
### Basic template algorithm simply initializes the date range and cash. This is a skeleton
### framewo

class Fundamentals(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2013,10, 7)  #Set Start Date
        self.SetEndDate(2013,10,11)    #Set End Date
        self.SetCash(100000)           #Set Strategy Cash
        self.UniverseSettings.Resolution = Resolution.Daily
        self.AddUniverse(self.SelectCoarse, self.SelectFine)

    def SelectCoarse(self, coarse):
        sorted_coarse = sorted(coarse, key=lambda x: x.DollarVolume, reverse=True)
        return [i.Symbol for i in sorted_coarse[:300]]

    def SelectFine(self, fine):
    
        # The company's headquarter must in the U.S.
        # The stock must be traded on either the NYSE or NASDAQ
        # The stock's market cap must be greater than 500 million
        selected = [x for x in fine if x.CompanyReference.CountryId == "USA"
        and x.ValuationRatios.FCFYield > 0
        and x.EarningReports.BasicAverageShares.ThreeMonths * \
        x.EarningReports.BasicEPS.TwelveMonths * x.ValuationRatios.PERatio > 5e8]
        

        self.top = [i.Symbol for i in selected[:int(0.1*len(selected))]]
        self.bottom = [i.Symbol for i in selected[-int(0.1*len(selected)):]]
        
        return self.bottom+self.top