| 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 1.539 Tracking Error 0.143 Treynor Ratio 0 Total Fees $0.00 |
import pandas as pd
class MyAlgo(QCAlgorithm):
def Initialize(self):
self.SetCash(100000)
self.SetStartDate(2020, 11, 13)
columns = ['SYMBOL', 'VOL', 'SIZE', 'RATING']
self.data = pd.DataFrame(columns=columns)
self.AddUniverse(self.CoarseSelectionFunction, self.FineSelectionFunction)
def CoarseSelectionFunction(self, coarse):
selected = [x for x in coarse if (x.HasFundamentalData) and (float(x.Price) > 5) and x.DollarVolume][:10]
for x in selected:
v = x.DollarVolume
z = x.Symbol.Value
if v > 20000000:
self.data.append(pd.DataFrame({'VOL': [1], 'SYMBOL': z, 'SIZE':0, 'RATING':0}, index=['SYMBOL']))
else:
self.data.append(pd.DataFrame({'VOL': [v/20000000], 'SYMBOL': z, 'SIZE':0, 'RATING':0}, index=['SYMBOL']))
return [x.Symbol for x in selected]
def FineSelectionFunction(self, fine):
for x in fine:
if not x.MarketCap:
continue
m = x.MarketCap
z = x.Symbol.Value
if m >= 10000000000:
self.data.loc[z, "SIZE"] = 1
elif m <= 1000000000:
self.data.loc[z, "SIZE"] = 0
else:
self.data.loc[z, "SIZE"] = ((m - 1000000000) / 9000000000)
return [x.Symbol for x in fine]