| 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