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
예제 #6
0
 def __init__(self, _stockTicker, _exchangeCode):
     self.generalMethods = clsGeneralMethods.GeneralMethods()
     self.stockTicker = _stockTicker
     self.exchangeCode = _exchangeCode
     self.relatedGoogleStoriesUrls = []
     self.stockNewsList = []