def resultsAlphaVsSP500(self): print("This needs to be redone such that a dict is created for the purchase dates and SP500 on that day") currentSP500 = -1 startSP500 = -1 currentSP500 = float(StockHelper.getSharePrice("%5EGSPC")) from datetime import date today = date.today() if ( self.purchasedate.day == today.day and self.purchasedate.month == today.month and self.purchasedate.year == today.year ): gspcOpenPrice = StockHelper.getShareOpenPrice("^GSPC") if ( gspcOpenPrice[0] != "N" ): # check for na value, WEAK TEST could do a regex to see if the price contains a letter startSP500 = float(gspcOpenPrice) else: startSP500 = 0.1 else: startSP500 = float( StockHelper.get_historical_price("^GSPC", (self.purchasedate.strftime("%Y%m%d"))) ) # "%EGSPC",(self.purchasedate.strftime('%Y%m%d'))) if startSP500 != 0 and self.totalpurchaseprice != 0 and self.currentWorth_func() != 0: return ( (self.currentWorth_func() - (self.totalpurchaseprice * (1 + (currentSP500 - startSP500) / startSP500))) / (self.currentWorth_func()) * 100 ) # this returns the percentage over/under (alpha) of the current investment when compared to the SP500 index.; negative values are bad, positive are good else: return 0
def resultsIfInvestedInX(self): print("This needs to be redone such that a dict is created for the purchase dates and TickerX on that day") currentTickerX = -1 startTickerX = -1 currentTickerX = float(StockHelper.getSharePrice(self.comparisonticker)) # we need to check if this is the first day for this security, as we can't get historical data if this is the first day from datetime import date today = date.today() if ( self.purchasedate.day == today.day and self.purchasedate.month == today.month and self.purchasedate.year == today.year ): startTickerX = float(StockHelper.getShareOpenPrice(self.comparisonticker)) else: startTickerX = float( StockHelper.get_historical_price(self.comparisonticker, (self.purchasedate.strftime("%Y%m%d"))) ) if startTickerX != 0: return self.totalpurchaseprice * (1 + (currentTickerX - startTickerX) / startTickerX) else: return 0
def __init__(self,data): self.ticker=data['ticker'] temp=data["purchaseDate"].split('/') self.purchaseDate=datetime.datetime(int(temp[2]),int(temp[0]),int(temp[1])) self.totalPurchasePrice=data['totalPurchasePrice'] self.commissionToBuy=data['commissionToBuy'] #self.unitPriceAtPurchase=get_historical_prices_plus_one_day(self.ticker,(self.purchaseDate.strftime('%Y%m%d'))) #NO LONGER USING this version since IBD lists are published the night before their list date, so you could purchase at the open. self.unitPriceAtPurchase=StockHelper.get_historical_price(self.ticker,(self.purchaseDate.strftime('%Y%m%d'))) self.unitPriceAtPresent=StockHelper.getSharePrice(self.ticker)
def resultsIfInvestedInSP500(self): print("This needs to be redone such that a dict is created for the purchase dates and SP500 on that day") currentSP500=-1 startSP500=-1 currentSP500=float(StockHelper.getSharePrice("%5EGSPC")) #we need to check if this is the first day for this security, as we can't get historical data if this is the first day from datetime import date today = date.today() if ( self.purchasedate.day == today.day and self.purchasedate.month == today.month and self.purchasedate.year == today.year): startSP500=float(StockHelper.getShareOpenPrice("^GSPC")) else: startSP500=float(StockHelper.get_historical_price("^GSPC",(self.purchasedate.strftime('%Y%m%d')))) if (startSP500 != 0): return (self.totalpurchaseprice*(1+(currentSP500-startSP500)/startSP500)) else: return 0
def __init__(self,inputfilename): print("To really be effective, UT needs to get the open,close,high,low,trend ...for a given ticker so that it fills in the 'blanks' that getSharePrice() does.") input=open(inputfilename) tickerList=[] tickerSet=set() data_string=json.load(input) for portfolio in data_string["portfolio"]: if portfolio["display"] == "yes": for data in portfolio["portfolioStocks"]: #print(data["ticker"]) if data["ticker"] not in tickerSet: tickerSet.add(data["ticker"]) if data["ticker"] not in self.tickerDict: key=data["ticker"] value=StockHelper.getSharePrice(key) self.tickerDict[key]=value #I need to also store the prev close price and other data otherwise this doesn't really fulfill its purpose; Really I need to make an object for the uniqueTickers and look up into a list of those. #tickerDict.setdefault(data["ticker"],default) #https://wiki.python.org/moin/KeyError if data["purchaseDate"] not in self.dateList: self.dateList.append(data["purchaseDate"]) input.close() print(tickerSet)