| 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 0.366 Tracking Error 0.117 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset Portfolio Turnover 0% |
from AlgorithmImports import *
import pandas as pd
import os
from QuantConnect import Globals
class Testlocal(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2019, 9, 19) # Will be ignored in live trading
self.SetEndDate(2019, 10, 20) # Will be ignored in live trading
self.SetWarmup(20)
self.SetCash(100000) # Will be ignored in live trading
self.fundamentals_dict = {}
self.UniverseSettings.Resolution = Resolution.Daily
self.tickers = ["MSFT", "AEP", "CAT"]
self.SetBenchmark("SPY")
self.AddUniverseSelection(FineFundamentalUniverseSelectionModel(self.CoarseFilter, self.FineFilter))
self.Schedule.On(self.DateRules.MonthStart(0), self.TimeRules.Midnight, self.Trade)
def CoarseFilter(self, coarse):
usEquities = [c for c in coarse if (c.Symbol.ID.Market.lower() == "usa") and (c.Symbol.SecurityType == SecurityType.Equity) and c.HasFundamentalData and (c.Symbol.Value in self.tickers)]
return [c.Symbol for c in usEquities]
def FineFilter(self, fine):
self.fundamentals_dict = {}
for f in fine:
self.fundamentals_dict[f.Symbol.Value] = f.ValuationRatios.PERatio
return [f.Symbol for f in fine]
def OnSecuritiesChanged(self, changes):
for security in changes.RemovedSecurities:
self.RemoveSecurity(security.Symbol)
for security in changes.AddedSecurities:
self.AddEquity(security.Symbol, Resolution.Daily)
def OnWarmupFinished(self):
self.Debug("Warmed Up")
self.Trade()
def Trade(self):
# Triggered by time event
current_portfolio = [(sec.Symbol.Value,sec.Quantity) for sec in self.Portfolio.Values if sec.Quantity>0]
self.Debug(f"Current Portfolio:{current_portfolio}")
flag = "BAC" in list(self.fundamentals_dict.keys())
self.Debug(f"Dict contains BAC {flag}")
# self.Debug([elem.Value for elem in list(self.ActiveSecurities.Keys)])
df = self.History(list(self.fundamentals_dict.keys()), 5, resolution=Resolution.Daily)
self.Debug(f"Shape of hist {df.shape}")
def OnData(self, data):
"""OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.
Arguments:
data: Slice object keyed by symbol containing the stock data
"""
self.Trade()