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
Probabilistic 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
17.424
Tracking Error
0.002
Treynor Ratio
0
Total Fees
$0.00
Estimated Strategy Capacity
$0
Lowest Capacity Asset
import pandas as pd
import numpy as np
from clr import AddReference
AddReference("QuantConnect.Research")
from QuantConnect.Research import QuantBook


class TestingAlgorithm(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2021,4,26)  
        self.SetEndDate(2021,4,28)
        self.SetCash(10000) 
        self.UniverseSettings.Resolution = Resolution.Minute
        self.AddUniverse(self.CoarseFilterFunction, self.FineFilterFunction)
 
        self.spy = self.AddEquity("SPY")
        
        self.Schedule.On(self.DateRules.EveryDay("SPY"), self.TimeRules.AfterMarketOpen("SPY", 60), self.MainFunction)
        
        # Set display option for logging purposes
        pd.set_option('display.float_format', '{:.7E}'.format)



    # Coarse filter
    def CoarseFilterFunction(self, coarse):
        self.Log("Running coarse filter function")
        self.coarsefilter = [x.Symbol for x in coarse if x.DollarVolume > 100000000 and x.HasFundamentalData]
        return self.coarsefilter


    #  Fine filter
    def FineFilterFunction(self, fine):
        self.Log("Running fine filter function")
        self.stocks = sorted(fine, key=lambda x: x.MarketCap, reverse=True)
        finefilter = [x.Symbol for x in self.stocks]
        self.tickers = [x.Symbol.Value for x in self.stocks]
        return finefilter

    def MainFunction(self):
        self.Log("Running main function")
        qb = QuantBook()
            
        shares = [x.FinancialStatements.BalanceSheet.OrdinarySharesNumber.ThreeMonths for x in self.stocks]
        mktcap = [x.MarketCap for x in self.stocks]
        revenue = []
        for x in self.stocks:
            revenue.append(qb.GetFundamental(x.Symbol, "FinancialStatements.IncomeStatement.TotalRevenue.ThreeMonths", self.Time - timedelta(1), self.Time).iloc[0,0])
        
        self.df = pd.DataFrame({
            'shares': shares,
            'mktcap': mktcap,
            'revenue': revenue
        },
            index = self.tickers)
        self.df = self.df.dropna()


        self.LoggingFunction()
        return


    def LoggingFunction(self):
        for index, row in self.df.head(10).iterrows():
            self.Log(str(row))
        return