def setPotentialStocksAsRankBase(self): ''' Retrieve List of Potential Stock and insert to the Fundamental Guru table as ranking base. ''' generalMethods = clsGeneralMethods.GeneralMethods() insertPotentialSQL = generalMethods.getSqlFromFile( self.INSERT_POTENTIAL_SQL_FILE_PATH) potentialSQL = generalMethods.getSqlFromFile( self.SOURCE_POTENTIAL_SQL_FILE_PATH) insertPotentialSQL = insertPotentialSQL.replace( "<-potentialSQL->", potentialSQL) if ("" != insertPotentialSQL): databaseOper = clsDatabaseOper.DatabaseOper() databaseOper.insertSelectRecords(insertPotentialSQL) del databaseOper return None
def retrievePotentialStocks(self): ''' Retrieve List of Potential Stock from DB. First column is Stock Code; Second column is listed exchange code; Third column is company name. ''' listOfPotentialStocks = [] potentialSQL = "" generalMethods = clsGeneralMethods.GeneralMethods() potentialSQL = generalMethods.getSqlFromFile( self.RETRIEVE_INIT_POTENTIAL_SQL_FILE_PATH) if ("" != potentialSQL): databaseOper = clsDatabaseOper.DatabaseOper() listOfPotentialStocks = databaseOper.retrieveSelectMultiValuesSQL( potentialSQL) del databaseOper return listOfPotentialStocks
def markPotentialStocks(self, sqlField, sqlSort, sqlNumOfItems, updateCol): ''' Rank Stocks by Revenues figures (EPS, ) from DB. First column is Stock Code; Second column is listed exchange code; Third column is company name. ''' # PLACEHOLDER_LIST = ["<-CheckFieldParam->", "<-SortParam->", "<-CheckItems->"] # SQL_VALUES_LIST = ["EpsRegressGrowth_Reuters", REVENUE_SQL_SORT, clsGeneralConstants.GeneralConstants.NUM_OF_ITEMS_TO_RANK] listOfMarkedStocks = [] markSQL = "" generalMethods = clsGeneralMethods.GeneralMethods() markSQL = generalMethods.getSqlFromFile( self.MARK_POTENTIAL_SQL_FILE_PATH) if ("" != markSQL): #format the SQL markSQL = markSQL.replace("<-CheckFieldParam->", sqlField) markSQL = markSQL.replace("<-SortParam->", sqlSort) markSQL = markSQL.replace("<-CheckItems->", str(sqlNumOfItems)) listOfPotentialStocks = [] databaseOper = clsDatabaseOper.DatabaseOper() listOfPotentialStocks = databaseOper.retrieveSelectMultiValuesSQL( markSQL) del databaseOper listOfMarkedStocks = generalMethods.putRankingMarksToList( listOfPotentialStocks, sqlSort) for markedStock in listOfMarkedStocks: #databaseOper.updateSingleValue(self, tableName, updateCol, updateVal, listOfKeyCols, listOfKeyValues): listOfKeyValues = [] listOfKeyValues.append(markedStock[0]) listOfKeyValues.append(markedStock[1]) listOfKeyValues.append( clsGeneralConstants.GeneralConstants.SQL_IS_LATEST_TRUE) updateVal = "{:10.6f}".format(markedStock[-1]).strip() databaseOper = clsDatabaseOper.DatabaseOper() databaseOper.updateSingleValue( self.FUNDAMENTAL_GURU_TABLE, updateCol, updateVal, self.LIST_OF_FUNDAMENTAL_GURU_UPDATE_FIELD, listOfKeyValues) del databaseOper return listOfMarkedStocks
import sys import traceback import datetime from GeneralTools import clsGeneralConstants from GeneralTools import clsGeneralMethods from FundamentalBrain import clsReutersMktIndexSourceOper from FundamentalBrain import clsReutersMktIndexDataStructure from FundamentalBrain import clsReutersUsStockSourceOper from FundamentalBrain import clsNasdaqUsStockSourceOper from StreetBrain import clsGoogleStockNewsOper from FundamentalBrain import clsUsStockFundamentalGuru #Start: Constatns generalMethods = clsGeneralMethods.GeneralMethods() NUM_OF_ITEMS = clsGeneralConstants.GeneralConstants.NUM_OF_ITEMS_TO_RANK NUM_OF_ITEMS_HALF = int(generalMethods.tryParseFloat(NUM_OF_ITEMS) / 2) LIST_OF_FILES_TO_RANK = [ [ "EpsRegressGrowth_Reuters", clsGeneralConstants.GeneralConstants.SQL_DESC_ORDER, NUM_OF_ITEMS, "EpsRegressGrowth_Reuters_rm" ], [ "EpsRegressGrowth_Nasdaq", clsGeneralConstants.GeneralConstants.SQL_DESC_ORDER, NUM_OF_ITEMS, "EpsRegressGrowth_Nasdaq_rm" ], [
def __init__(self, _stockTicker, _exchangeCode): self.generalMethods = clsGeneralMethods.GeneralMethods() self.compTicker = _stockTicker self.listedExchCode = _exchangeCode self.asOfDate = datetime.datetime.now() self.isSymbolValid = True self.stockNasdaqUrl = self.NASDAQ_URL.replace("{stockTicker}", self.compTicker.lower()) #Stock Report self.sharesOutstanding = 0 #Institutional Holdings # self.totalInstitutionalSharsHeld = 0 # self.totalInstitutionalNetActivity = 0 # self.numberOfInstitHolderIncreasedPos = 0 # self.numberOfSharesInstitHolderIncreased = 0 # self.numberOfInstitHolderDecreasedPos = 0 # self.numberOfSharesInstitHolderDecreased = 0 self.numberOfInstitHolderHeldPos = 0 self.sharesInstitHolderHeld = 0 self.percentageHeldByInstit = 0 self.numberOfInstitHolderBoughtNewPos = 0 self.numberOfInstitHolderSoldOutPos = 0 self.netNumberOfInstitHolderTradedOutPos = 0 self.sharesInstitHolderBoughtNew = 0 self.sharesInstitHolderSoldOut = 0 self.netSharesInstitHolderTradedNew = 0 #Insider Trades self.numberOfInsiderBoughtInThreeMonth = 0 self.numberOfInsiderSoldInThreeMonth = 0 self.netNumberOfInsiderHoldingInThreeMonth = 0 self.numberOfInsiderBoughtInTwelveMonth = 0 self.numberOfInsiderSoldInTwelveMonth = 0 self.netNumberOfInsiderHoldingInTwelveMonth = 0 self.sharesInsiderBoughtInThreeMonth = 0 self.sharesInsiderSoldInThreeMonth = 0 self.netSharesInsiderTradedInThreeMonth = 0 self.sharesInsiderBoughtInTwelveMonth = 0 self.sharesInsiderSoldInTwelveMonth = 0 self.netSharesInsiderTradedInTwelveMonth = 0 self.forecastEarningsGrowth = 0 ## Guru Analysis self.guruPeterLynchVerdict = "" self.guruPeterLynchValue = 0 self.guruBenjaminGarhamVerdict = "" self.guruBenjaminGarhamValue = 0 self.guruPMomentumStrategyVerdict = "" self.guruPMomentumStrategyValue = 0 self.guruJamesOShaughnessyVerdict = "" self.guruJamesOShaughnessyValue = 0 self.guruMotleyFoolVerdict = "" self.guruMotleyFoolValue = 0 self.guruDavidDremanVerdict = "" self.guruDavidDremanValue = 0 self.guruMartinZweigVerdict = "" self.guruMartinZweigValue = 0 self.guruKennethFisherVerdict = "" self.guruKennethFisherValue = 0
def __init__(self, _stockTicker, _exchangeCode): self.generalMethods = clsGeneralMethods.GeneralMethods() self.stockTicker = _stockTicker self.exchangeCode = _exchangeCode self.relatedGoogleStoriesUrls = [] self.stockNewsList = []