def stock_price_eur(symbol): """Returns current price of a stock in EUR. Args: symbol (str): Identifying symbol of the stock. Returns: numpy.float64: Current stock price in EUR. """ stock = pdr.get_quote_yahoo(symbol) currency = stock.currency.values[0] price = pdr.get_quote_yahoo(f"{currency.upper()}EUR=X").price.values[0] ratio = price if currency.upper() != "GBP" else price / 100 return stock.price.values[0] * ratio
def market_cap_data(assets): """ Helper function to get market cap information from yahoo finance :param assets: List[str], ticker symbols :return: np.ndarray """ return data.get_quote_yahoo(assets)['marketCap'].values
def track(watchlist): start_time = time() while True: print(pdr.get_quote_yahoo(watchlist)['price']) elapsed = time() - start_time if elapsed >= 10: prompt = input("Would you like to continue? y/n: ") if prompt == 'n': break start_time = time() elapsed = 0 sleep(1)
def home(): import pandas_datareader as pdr import csv import pandas import json from pandas_datareader.data import Options from datetime import date from sqlalchemy import create_engine stocks = ['AAPL','GOOGL', 'AMZN', 'FB', 'SSNLF', 'MSFT', 'SNE', 'IBM', 'NTDOY', 'ORCL', 'VMW', 'INTC', 'HPQ', 'DVMT', 'CSCO', 'ADBE', 'SAP', 'LNVGY', 'RHT', 'SYMC', 'TWTR', 'ATNY', 'ACTS', 'ATVI', 'IOTS', 'ADRO', 'AMD', 'ADVS', 'ZBRA', 'XPLR', 'XBIT', 'WIX', 'WBMD', 'VNOM', 'VIA', 'VECO', 'UPLD', 'UBNT', 'UFPT', 'TYME', 'TRIV', 'TRIP', 'TGA', 'TSI', 'TESS', 'AIR', 'ATEN', 'AQN', 'DDD', 'WUBA', 'ASX', 'A', 'AYX', 'AMBR', 'AEE', 'BHE', 'BIO', 'CPL', 'CTS', 'CMI', 'DGI', 'D', 'HEI', 'ASUR', 'AVID', 'EPAY', 'CBAK', 'CPSH', 'CYAN', 'DBVT', 'DELT', 'EDGW', 'XELA', 'FALC', 'SVVC', 'FBIO', 'GEOS', 'QQQC', 'GPRO', 'MRVL', 'MZOR', 'BKFS', 'BA', 'CAJ', 'CRY', 'CUB', 'DGI', 'GME', 'GM', 'GNE', 'ASR', 'PAC', 'MDT', 'MTD', 'MIXT', 'MULE', 'NC', 'NPTN', 'NXPI', 'NSTG', 'UEPS'] stock_df = pdr.get_quote_yahoo(stocks) #s = Options('AAPL')._get_data_in_date_range(date.today()) #print s stock_df.index.name = "StockSymbol" stock_df.to_csv("stock.csv") company_stock = pandas.read_csv("stock.csv") companies = pandas.read_csv("companies.csv") merged = company_stock.merge(companies, on = 'StockSymbol') merged['Amount'] = merged['last']*(merged['NumberofStocks']).astype(float) merged.columns = map(str.lower, merged.columns) merged.rename(columns = {'change_pct':'changepct','last':'lastprice','amount':'totalpricestocks','short_ratio' : 'shortratio'}, inplace = True) merged.to_csv('new_stock.csv', index=False) df = pd.read_csv('new_stock.csv') engine = create_engine('postgresql:///finance') df.to_sql('j', engine) return render_template("home.html")
def getSP500Details(start, end): sp500DF = pd.DataFrame() #sp500ComponentDf = pd.read_csv(sp500MemberListFile) sp500ComponentDf = pd.read_csv(sp500MemberListFundamentalFile) sp500SymbolList = sp500ComponentDf['symbol'].tolist() successCount = 0 for symbol in sp500SymbolList: try: tickerQuote = dr.get_quote_yahoo(symbol) getDailyPrice([symbol], start, end).to_pickle('{}{}.pkl'.format(symbolPriceDataLocation, symbol)) sp500DF = sp500DF.append(tickerQuote, sort=False) successCount += 1 except Exception as e: print('Error {} for symbol {}'.format(e, symbol)) print('Successfully retrieved data for {} stocks'.format(successCount)) print(sp500DF) sp500DF.to_pickle(sp500PickleLocation)
# conda install -c pandas-datareader import pandas_datareader as pdr from time import time, sleep start_time = time() while True: print(pdr.get_quote_yahoo('GOOG')['price']) elapsed = time() - start_time print(elapsed) if elapsed >= 10: prompt = input("Would you like to continue? y/n: ") if prompt == 'n': break start_time = time() elapsed = 0 sleep(1)
# x = str(symbol) + '.T' # # print(x) # symbols.append(x) for symbol in df['symbol']: symbols.append(symbol) for symbol in symbols: # 150日間で調べる start = dt.datetime.now() - dt.timedelta(days=150) end = dt.datetime.now() count += 1 print(count) try: symbol_df = yf.download(symbol, start, end, interval='1d') market_capdata = web.get_quote_yahoo(symbol)['marketCap'] market_cap = int(str(market_capdata).split()[1]) print('時価総額は' + str(market_cap)) except: print('時価総額なし' + str(symbol)) if symbol_df.empty: continue print(symbol) # 標準偏差を計算 try: # high in the past 81 days symbol_df['Highest81'] = symbol_df['Adj Close'].rolling(
Part 2 Created on Mon Mar 18 14:20:27 2019 @author: mjmacarty """ import pandas as pd import pandas_datareader as pdr from time import sleep # get prices from many symbols symbols = ['AMZN', 'GOOG', 'NFLX', 'FB', 'GLD', 'SPY'] # sort list, get prices def get_prices(symbols): symbols.sort() return pdr.get_quote_yahoo(symbols)['price'] # program entry point --> gets prices every 5 seconds until broken def main(): while True: print(get_prices(symbols)) print("CNTL + C to quit") sleep(5) if __name__ == "__main__": main()
def prices(companies): companies.sort() return pdr.get_quote_yahoo(companies)['price']
money.append(x) #for market capital y = 0 for j in range(len(session_state.stock_list)): y = y + (no_shares_cap[j] * price[session_state.stock_list[j]].iloc[0]) money_cap.append(y) curr_value = money[len(money) - 1] #st.write("Curr val",curr_value) curr_value_cap = money_cap[len(money_cap) - 1] # getting weights for market capital ratios market_cap_weights = np.array( web.get_quote_yahoo(session_state.stock_list, curr_date, curr_date)['marketCap']) market_cap_weights = market_cap_weights / np.sum( market_cap_weights) for j in range(len(session_state.stock_list)): money_for_share = curr_value * optimum_weights[j] no_shares[j] = money_for_share / price[ session_state.stock_list[j]].iloc[0] #for market capital ratios money_for_share = curr_value_cap * market_cap_weights[j] no_shares_cap[j] = money_for_share / price[ session_state.stock_list[j]].iloc[0] for single_date in (curr_date + timedelta(1) + timedelta(n) for n in range(29)): price = yf.download(session_state.stock_list, str(single_date),
def get_stock_prices(list): for i in list: res = pdr.get_quote_yahoo(i)["price"] print(res)
def get_quote(ticker): data = pdr.get_quote_yahoo(ticker) return json.loads(data.to_json(orient="index"))
import pandas_datareader as pdr import csv import pandas import json stocks = ['AAPL','GOOGL', 'AMZN', 'FB', 'SSNLF', 'MSFT', 'SNE', 'IBM', 'NTDOY', 'ORCL', 'VMW', 'INTC', 'HPQ', 'DVMT', 'CSCO', 'ADBE', 'SAP', 'LNVGY', 'RHT', 'SYMC', 'TWTR', 'ATNY', 'ACTS', 'ATVI', 'IOTS', 'ADRO', 'AMD', 'ADVS', 'ZBRA', 'XPLR', 'XBIT', 'WIX', 'WBMD', 'VNOM', 'VIA', 'VECO', 'UPLD', 'UBNT', 'UFPT', 'TYME', 'TRIV', 'TRIP', 'TGA', 'TSI', 'TESS', 'AIR', 'ATEN', 'AQN', 'DDD', 'WUBA', 'ASX', 'A', 'AYX', 'AMBR', 'AEE', 'BHE', 'BIO', 'CPL', 'CTS', 'CMI', 'DGI', 'D', 'HEI', 'ASUR', 'AVID', 'EPAY', 'CBAK', 'CPSH', 'CYAN', 'DBVT', 'DELT', 'EDGW', 'XELA', 'FALC', 'SVVC', 'FBIO', 'GEOS', 'QQQC', 'GPRO', 'MRVL', 'MZOR', 'BKFS', 'BA', 'CAJ', 'CRY', 'CUB', 'DGI', 'GME', 'GM', 'GNE', 'ASR', 'PAC', 'MDT', 'MTD', 'MIXT', 'MULE', 'NC', 'NPTN', 'NXPI', 'NSTG', 'UEPS'] stock_df = pdr.get_quote_yahoo(stocks) stock_df.index.name = "StockSymbol" stock_df.to_csv("stock.csv") company_stock = pandas.read_csv("stock.csv") companies = pandas.read_csv("companies.csv") merged = company_stock.merge(companies, on = 'StockSymbol') merged.to_csv('new.csv', index=False)
import pandas as pd import numpy as np from openpyxl import load_workbook wb = load_workbook('/Users/maria/Job/Python/Ws.xlsx') # Work Book file that I have ws = wb['Sheet2'] # Work Sheet column = ws['C'] # Column tickers_list = [column[x].value for x in range(len(column))] print(*tickers_list, sep='\n') #επιβεβαιώνω ότι λειτουργεί σωστά και τυπώνει τα tickers από excel print(len(tickers_list)) #επιβεβαιώνω ότι το μέγεθος των στοιχείων είναι σωστό #extract the marketcaps import pandas_datareader as web tickers = tickers_list[1:] print(tickers) market_cap_data= web.get_quote_yahoo(tickers)['marketCap'] print(market_cap_data)
def get_prices(symbols): print(symbols.sort()) return pdr.get_quote_yahoo(symbols)[ 'price'] # live stock data for finance from yahoo about apple inc
def get_stock(stock): return DataFrame(pdr.get_quote_yahoo(stock, session=session))
def __init__(self, feed_dict, full_analysis): # initiate common vatiables self.returns = feed_dict['input'] self.covar = self.returns.cov() del feed_dict['input'] columns = [] self.inital_weights = [] for col in self.returns.columns: name = col.split('_')[0] self.inital_weights.append(get_quote_yahoo(name).marketCap) columns.append(name) self.inital_weights = np.array(self.inital_weights) self.inital_weights = self.inital_weights / np.sum(self.inital_weights) # save parameters in case replication is desired self.Parameters = deepcopy(feed_dict) objective, features, constraints, simulations, methods, tol, maxiter, disp = oc.unfeeder( feed_dict) try: views = [] chg = [] for view in objective['target']: chg.append(view[0] / 100) views.append(view[1:]) views = np.array(views) chg = np.array(chg) except: raise AttributeError( 'Black Litterman requires target views to be specified.') # features if 'benchmark' in features: self.benchmark = features['benchmark'] else: raise AttributeError('Black Litterman requires a benchmark.') self.periodicity = _embed_periodicity(features['periodicity']) if methods == 'arithmetic': self.mean_returns = self.returns.mean() * self.periodicity self.benchmark_mean = self.benchmark.mean() * self.periodicity if methods == 'geometric': self.mean_returns = _geomean(self.returns, self.periodicity) self.benchmark_mean = _geomean(self.benchmark, self.periodicity) if 'margin_int_rate' in features: self.margin_rate = features['margin_int_rate'] else: self.margin_rate = 0 if 'rf' in features: self.rf = features['rf'] else: self.rf = 0 # constraints if 'min_weights' in constraints: self.weight_bounds = tuple( zip(constraints['min_weights'], constraints['max_weights'])) else: self.weight_bounds = None constraints = self.get_constraints(constraints) # return computation A = (self.benchmark_mean - self.rf) / ( (self.benchmark.std()**2) * self.periodicity) pi = A * np.matmul(np.mat(self.covar * self.periodicity), self.inital_weights) omega = np.matmul( np.matmul(views, np.mat(self.covar * self.periodicity)), views.T) e1 = np.mat( np.mat(self.covar * self.periodicity).I + np.matmul(np.matmul(views.T, np.mat(omega).I), views)).I e2 = np.matmul(np.mat(self.covar * self.periodicity).I, pi) + np.matmul(np.matmul(views.T, np.mat(omega).I), chg).T self.Expected_Returns = np.matmul(e1, e2) # optimal portfolio self.OptiParam = minimize(self.optimize_sharpe_ratio, self.inital_weights, method='SLSQP', bounds=self.weight_bounds, tol=tol, constraints=constraints, options={ 'maxiter': maxiter, 'disp': disp }) if not self.OptiParam['success']: print('Warning!', self.OptiParam['message']) tanw = self.OptiParam['x'] tanww = pd.DataFrame(tanw).T tanww.columns = columns tanr = self.weighted_annual_return(tanw) margin = np.sum(np.abs(tanw)) - 1 tanra = tanr - self.rf - self.margin_rate * margin tans = self.weighted_annual_stddev(tanw) self.Optimal = { 'Weights': tanww, 'Return': tanr, 'AdjReturn': tanra, 'StdDev': tans, 'Sharpe': tanra / tans, 'Series': self.weighted_return(tanw) } # efficent frontier if full_analysis == True: analyze = np.linspace(max(self.Optimal['Return'] / 4, 0.0001), min(self.Optimal['Return'] * 4, 0.5), simulations) efficent = [] eff = [] for ret in analyze: e = self.optimize_efficent(ret, constraints, tol, maxiter, disp) we = e['x'] wew = pd.DataFrame(we).T wew.columns = columns margin = np.sum(np.abs(we)) - 1 re = self.weighted_annual_return( we) - self.rf - self.margin_rate * margin se = self.weighted_annual_stddev(we) efficent.append({ 'Weights': wew, 'Returns': re, 'StdDevs': se, 'Sharpe': re / se }) eff.append(e) self.EfficentParam = eff self.EfficentFrontier = efficent # close self.ConstituentSharpe = self.get_sharpes(columns)
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Part 1 Created on Mon Mar 18 12:17:42 2019 @author: mjmacarty """ # open a command line window (terminal) and enter the following: # pip install pandas-datareader import pandas as pd import pandas_datareader as pdr # read data from one of the APIs # i.e. pdr.get_data_yahoo('SPY') --> returns dataframe of historical quotes for symbol SPY pdr.get_data_yahoo("SPY") # many data sources and variations on data sets, we are interested in a current price: # get_quote downloads "live" data from the API print(pdr.get_quote_yahoo('AAPL')) print(pdr.get_quote_yahoo('AAPL')['price'])
def get_prices(symbols): symbols.sort() return pdr.get_quote_yahoo(symbols)['price']
# -*- coding: utf-8 -*- """ Created on Fri Jan 3 13:51:10 2020 @author: """ import pandas as pd import pandas_datareader as pdr print(pdr.get_quote_yahoo("AAPL")['price'])