Exemplo n.º 1
0
def portfolio_stocks(stocks):
	tickers = []
	index = 0
	for stock in stocks:
		names = [
		'Company Name', 
		'Ticker', 
		'Price',
		'Market Cap', 
		'P/E Ratio', 
		'Earnings Yield', 
		'Div Yield',
		'50 Day MA',
		'200 Day MA',
		'Price Target'
		]
		ticker = Share(stock)
		
		comp_name = ticker.get_name() #company name
		
		tick = stock #ticker
		
		price = ticker.get_price() #price

		market_cap = ticker.get_market_cap() #market_cap

		pe = ticker.get_price_earnings_ratio() #gets pe as a string 
		pe_two = float(pe) if pe else 0 #returns a float of the p/e if there is a result, otherwise returns 0
		final_pe = pe_two if float(pe_two) > 0 else 0 #returns pe_two if > 0 else returns 0

		EPS = ticker.get_EPS_estimate_current_year() # gets eps as a string
		final_eps = EPS if EPS else 0 #returns eps if there is a result, else returns 0
		
		earn_yield = float(final_eps)/float(price) #returns float of earnings yield
		pos_ey = earn_yield if earn_yield > 0 else 0 #turns negitive numbers to 0
		print(tick, 'earn yield', pos_ey)
		ey = round(pos_ey*100, 2) #returns in % format
		
		div = ticker.get_dividend_yield() #returns div in string
		final_div = 0 if div == None else float(div) #if no result returns 0 else returns float of div 
		
		fifty = ticker.get_50day_moving_avg() #returns as string
		short_fifty = round(float(fifty), 2) #returns div with 2 decimal places
		two_hundred = ticker.get_200day_moving_avg() #returns as string
		short_two = round(float(two_hundred), 2) #returns float with 2 decimal places

		target = ticker.get_one_yr_target_price() #returns as string
		short_target = round(float(target), 2)

		values = [comp_name, tick, price, market_cap, final_pe, ey, final_div, short_fifty, short_two, short_target]
		final_values = list(zip(names, values))
		index += 1
		tickers.append(final_values)
	return tickers
Exemplo n.º 2
0
def getAllStockData(ticker):
    '''Get a few random tickers.'''
    stock = Share(ticker)
    stock.refresh()
    data = {
        'name': stock.get_name(),
        'price': stock.get_price(),
        'change': stock.get_change(),
        'volume': stock.get_volume(),
        'prev_close': stock.get_prev_close(),
        'open': stock.get_open(),
        'avg_daily_volume': stock.get_avg_daily_volume(),
        'stock_exchange': stock.get_stock_exchange,
        'market_cap': stock.get_market_cap(),
        'book_value': stock.get_book_value(),
        'ebitda': stock.get_ebitda(),
        'dividend_share': stock.get_dividend_share(),
        'dividend_yield': stock.get_dividend_yield(),
        'earnings_share': stock.get_earnings_share(),
        'days_high': stock.get_days_high(),
        'days_low': stock.get_days_low(),
        'year_high': stock.get_year_high(),
        'year_low': stock.get_year_low(),
        '50day_moving_avg': stock.get_50day_moving_avg(),
        '200day_moving_avg': stock.get_200day_moving_avg(),
        'price_earnings_ratio': stock.get_price_earnings_ratio(),
        'price_earnings_growth_ratio': stock.get_price_earnings_growth_ratio(),
        'get_price_sales': stock.get_price_sales(),
        'get_price_book': stock.get_price_book(),
        'get_short_ratio': stock.get_short_ratio(),
        'trade_datetime': stock.get_trade_datetime(),
        'percent_change_from_year_high': stock.get_percent_change_from_year_high(),
        'percent_change_from_year_low': stock.get_percent_change_from_year_low(),
        'change_from_year_low': stock.get_change_from_year_low(),
        'change_from_year_high': stock.get_change_from_year_high(),
        'percent_change_from_200_day_moving_average': stock.get_percent_change_from_200_day_moving_average(),
        'change_from_200_day_moving_average': stock.get_change_from_200_day_moving_average(),
        'percent_change_from_50_day_moving_average': stock.get_percent_change_from_50_day_moving_average(),
        'change_from_50_day_moving_average': stock.get_change_from_50_day_moving_average(),
        'EPS_estimate_next_quarter': stock.get_EPS_estimate_next_quarter(),
        'EPS_estimate_next_year': stock.get_EPS_estimate_next_year(),
        'ex_dividend_date': stock.get_ex_dividend_date(),
        'EPS_estimate_current_year': stock.get_EPS_estimate_current_year(),
        'price_EPS_estimate_next_year': stock.get_price_EPS_estimate_next_year(),
        'price_EPS_estimate_current_year': stock.get_price_EPS_estimate_current_year(),
        'one_yr_target_price': stock.get_one_yr_target_price(),
        'change_percent_change': stock.get_change_percent_change(),
        'divended_pay_date': stock.get_dividend_pay_date(),
        'currency': stock.get_currency(),
        'last_trade_with_time': stock.get_last_trade_with_time(),
        'days_range': stock.get_days_range(),
        'years_range': stock.get_year_range()
    }
    return data
Exemplo n.º 3
0
def get_symbol_yahoo_stats_yql(symbols, exclude_name=False):
    """
    Get the symbols' basic statistics from Yahoo Finance.
    Input:
       symbols - a list of symbol strings, e.g. ['AAPL']
    Output: stats in Pandas DataFrame.
    This function is ported from pandas_datareader/yahoo/components.py
    """
    sym_list = str2list(symbols)
    if sym_list == None:
        return DataFrame()

    # Yahoo Finance tags, refer to http://www.financialwisdomforum.org/gummy-stuff/Yahoo-data.htm
    tags = ['Symbol']
    if not exclude_name:
        tags += ['Name']
    tags += ['Exchange', 'MarketCap', 'Volume', 'AverageDailyVolume', 'BookValue', 'P/E', 'PEG', 'Price/Sales',
            'Price/Book', 'EBITDA', 'EPS', 'EPSEstimateNextQuarter', 'EPSEstimateCurrentYear', 'EPSEstimateNextYear',
            'OneyrTargetPrice', 'PriceEPSEstimateCurrentYear', 'PriceEPSEstimateNextYear', 'ShortRatio',
            'Dividend/Share', 'DividendYield', 'DividendPayDate', 'ExDividendDate']
    lines = []
    for sym in sym_list:
        stock = Share(sym)
        line = [sym]
        if not exclude_name:
            line += [stock.get_name()]
        line += [stock.get_stock_exchange(), str2num(stock.get_market_cap(), m2b=True),
                str2num(stock.get_volume()), str2num(stock.get_avg_daily_volume()), str2num(stock.get_book_value()),
                str2num(stock.get_price_earnings_ratio()), str2num(stock.get_price_earnings_growth_ratio()),
                str2num(stock.get_price_sales()), str2num(stock.get_price_book()), str2num(stock.get_ebitda()),
                str2num(stock.get_earnings_share()), str2num(stock.get_EPS_estimate_next_quarter()),
                str2num(stock.get_EPS_estimate_current_year()), str2num(stock.get_EPS_estimate_next_year()),
                str2num(stock.get_one_yr_target_price()), str2num(stock.get_price_EPS_estimate_current_year()),
                str2num(stock.get_price_EPS_estimate_next_year()), str2num(stock.get_short_ratio()),
                str2num(stock.get_dividend_share()), str2num(stock.get_dividend_yield()), stock.get_dividend_pay_date(),
                stock.get_ex_dividend_date()]
        lines.append(line)

    stats = DataFrame(lines, columns=tags)
    stats = stats.drop_duplicates()
    stats = stats.set_index('Symbol')
    return stats
Exemplo n.º 4
0
def stock_info(ticker):
    obj = session['objective']
    stock_list = session['stock_list']
    time = session['time']
    stock = Share(ticker)
    name = stock.get_name()
    price = stock.get_price()
    pe = stock.get_price_earnings_ratio()
    final_pe = 0 if not pe else pe
    EPS = float(stock.get_EPS_estimate_current_year())
    earn_yield = 0 if float(EPS) <= 0 else float(price) / EPS
    final_yield = '%.2f' % earn_yield
    div = stock.get_dividend_yield()
    final_div = 0 if div == None else div
    target = stock.get_one_yr_target_price()
    fifty = stock.get_50day_moving_avg()
    two_hundred = stock.get_200day_moving_avg()
    info = Stock(name, price, pe, final_yield, final_div, target, fifty,
                 two_hundred)
    beta = Beta(ticker)
    return render_template("stock-info.html",
                           name=info.name,
                           num_beta=beta.calculate_beta(),
                           beta=beta.compare_beta(),
                           pe_num=final_pe,
                           pe=info.compare_pe(),
                           ey_num=final_yield,
                           ey=info.compare_earn_yield(),
                           div_num=final_div,
                           div=info.compare_div(),
                           fifty=fifty,
                           two=two_hundred,
                           ma_compare=info.compare_ma(),
                           target_num=target,
                           target=info.compare_target(),
                           obj=obj,
                           time=time,
                           stock=stock_list)
Exemplo n.º 5
0
class StockAnalysis:

	stock_symbol = 'YHOO'	
	stock_company_name = "Yahoo Inc,"
	quote = Share(stock_symbol)
	name = quote.get_name()
	stock_company_name = name.split(". ")

	def __init__(self,symbol):
		self.stock_symbol = symbol
		self.quote = Share(self.stock_symbol)
		self.name = self.quote.get_name()
		self.stock_company_name = self.name.split(". ")
		
		
	def getStockSymbol(self):
		return self.stock_symbol 

	def getStockPriceInfo(self,symbol):
		stock_price = self.quote.get_price()
		currency = self.quote.get_currency()
		#name = self.quote.get_name()
		#stock_company_name = name.split(". ")
		price_info = {'Symbol':symbol,'Price':stock_price,'Currency':currency,'Name':self.stock_company_name[0]}
		return price_info

	def getDividendYieldInfo(self,symbol):
		dividend_yield = self.quote.get_dividend_yield()
		dividend_info = {'Symbol':symbol,'DividendYield':dividend_yield,'Unit':'%'}
		return dividend_info

	def getPayOurRatio(self,symbol):
		dividend_per_share = self.quote.get_dividend_share()
		EPS_current_year = self.quote.get_EPS_estimate_current_year()
		pay_out_ratio = (float(dividend_per_share) / float(EPS_current_year))*100
		pay_out_ratio =  float("{0:.2f}".format(pay_out_ratio))
		pay_out_info = {'Symbol':symbol,'PayOut Ratio':pay_out_ratio, "Unit":"%",'Name':self.stock_company_name[0]}
		return pay_out_info

	def getDeividendDetails(self,symbol):
		dividend_per_share = self.quote.get_dividend_share()
		EPS_current_year = self.quote.get_EPS_estimate_current_year()
		dividend_yield = self.quote.get_dividend_yield()
		hold_date = self.quote.get_ex_dividend_date()
		payout_date = self.quote.get_dividend_pay_date()

		if dividend_per_share is None:
			dividend_per_share = "0"
			dividend_yield = "0%"
			payout_date = "None"
			hold_date = "None"
		pay_out_ratio = (float(dividend_per_share) / float(EPS_current_year))*100
		pay_out_ratio =  str(float("{0:.2f}".format(pay_out_ratio)))+"%"
		
		dividend_info = {'Symbol':symbol, 'DividedPerShare':dividend_per_share, 'EPSCurrentYearEstimation': EPS_current_year, 'PayOutRatio':pay_out_ratio,'ExDividedDate':hold_date,'LastPayoutDate':payout_date,'DividendYield':dividend_yield,'Name':self.stock_company_name[0]}
		return dividend_info
	
	def getExDividedDate(self,symbol):
		hold_date = self.quote.get_ex_dividend_date()
		payout_date = self.quote.get_dividend_pay_date()
		data = {'Symbol':symbol,'ExDividedDate':hold_date,'LastPayoutDate':payout_date,'Name':self.stock_company_name[0]}
		return data
		
	def isDividedRateHealthy(self):
		pass

	def getDividendDateDetails(self):
		pass
	def getNumberOfOutStandingShares(self,symbol):
		total_market_cap = self.quote.get_market_cap()
		current_price = self.quote.get_prev_close()
		if "B" in total_market_cap:
			total_market_cap = total_market_cap.rstrip("B")
			total_market_cap = float(total_market_cap)*1000000000
		elif "M" in total_market_cap:
			total_market_cap = total_market_cap.rstrip("M")
			total_market_cap = float(total_market_cap)*100000000
		out_standing_shares = (total_market_cap/float(current_price))/1000000
		out_standing_shares = round(out_standing_shares,2)
		data = {'Symbol':symbol,'OutStandingShares':out_standing_shares,'Name':self.stock_company_name[0]}
		return data

	def get200DaysLowPrice(self,symbol):
		pass
	def get200DaysHighPrice(self,symbol):
		pass
	
	def get50DaysLowPrice(self,symbol):
		pass
	def get50DaysHighPrice(self,symbol):
		pass
	def getPERation(self):
		pass
Exemplo n.º 6
0
print "get_percent_change_from_year_low:", tesla.get_percent_change_from_year_low(
)
print "get_change_from_year_low:", tesla.get_change_from_year_low()
print "get_change_from_year_high:", tesla.get_change_from_year_high()
print "get_percent_change_from_200_day_moving_average:", tesla.get_percent_change_from_200_day_moving_average(
)
print "get_change_from_200_day_moving_average:", tesla.get_change_from_200_day_moving_average(
)
print "get_percent_change_from_50_day_moving_average:", tesla.get_percent_change_from_50_day_moving_average(
)
print "get_change_from_50_day_moving_average:", tesla.get_change_from_50_day_moving_average(
)
print "get_EPS_estimate_next_quarter:", tesla.get_EPS_estimate_next_quarter()
print "get_EPS_estimate_next_year:", tesla.get_EPS_estimate_next_year()
print "get_ex_dividend_date:", tesla.get_ex_dividend_date()
print "get_EPS_estimate_current_year:", tesla.get_EPS_estimate_current_year()
print "get_price_EPS_estimate_next_year:", tesla.get_price_EPS_estimate_next_year(
)
print "get_price_EPS_estimate_current_year:", tesla.get_price_EPS_estimate_current_year(
)
print "get_one_yr_target_price:", tesla.get_one_yr_target_price()
print "get_change_percent_change:", tesla.get_change_percent_change()
print "get_dividend_pay_date:", tesla.get_dividend_pay_date()
print "get_currency:", tesla.get_currency()
print "get_last_trade_with_time:", tesla.get_last_trade_with_time()
print "get_days_range:", tesla.get_days_range()
print "get_year_range:", tesla.get_year_range()

# http://stackoverflow.com/questions/24233385/pulling-yahoo-finance-data-using-python
# http://chartapi.finance.yahoo.com/instrument/1.0/TSLA/chartdata;type=quote;range=1y/csv