def create_datasets(company): # 'AAPL','GOOG' df_1 = (intrinio.prices(company)) df_2 = (intrinio.financials(company)) df_1.to_csv(company+'_prices.csv') df_2.to_csv(company+'_financials.csv') return
def test_prices(self): if local: inject_response("prices_aapl.json") r = intrinio.prices("AAPL") if local: self.assertEqual(len(r), 2) self.assertEqual(r[0].date, "2016-09-23") self.assertEqual(r[1].adj_open, 114.35) else: self.assertGreater(len(r), 0)
def price_extract(ticker): price = intrinio.prices(ticker, start_date=2008, frequency="yearly", sort_order='asc') price.index = pd.to_datetime(price.index, format="%Y-%m-%d") price["year"] = pd.DatetimeIndex(price.index).year price = price[price.index > "2008-12-31"] price_norm = pd.concat((Normalisation(price.drop("year", axis=1)), price["year"]), axis=1) return price, price_norm
def getData(self, ticker): data = {} dataTag = "yearlyprices" if not os.path.exists(self.cacheData.filename(ticker, dataTag)): print "getting %s data for %s" % (dataTag, ticker) data[dataTag] = intrinio.prices(ticker, start_date=PRICES_PULL_START_DATE, frequency="yearly") self.cacheData.save(data[dataTag], ticker, dataTag) else: data[dataTag] = self.cacheData.open(ticker, dataTag) dataTag = "income_statement" if not os.path.exists(self.cacheData.filename(ticker, dataTag)): print "getting %s data for %s" % (dataTag, ticker) data[dataTag] = intrinio.financials(ticker, "FY", dataTag) self.cacheData.save(data[dataTag], ticker, dataTag) else: data[dataTag] = self.cacheData.open(ticker, dataTag) dataTag = "balance_sheet" if not os.path.exists(self.cacheData.filename(ticker, dataTag)): print "getting %s data for %s" % (dataTag, ticker) data[dataTag] = intrinio.financials(ticker, "FY", dataTag) self.cacheData.save(data[dataTag], ticker, dataTag) else: data[dataTag] = self.cacheData.open(ticker, dataTag) dataTag = "cash_flow_statement" if not os.path.exists(self.cacheData.filename(ticker, dataTag)): print "getting %s data for %s" % (dataTag, ticker) data[dataTag] = intrinio.financials(ticker, "FY", dataTag) self.cacheData.save(data[dataTag], ticker, dataTag) else: data[dataTag] = self.cacheData.open(ticker, dataTag) dataTag = "calculations" if not os.path.exists(self.cacheData.filename(ticker, dataTag)): print "getting %s data for %s" % (dataTag, ticker) data[dataTag] = intrinio.financials(ticker, "FY", dataTag) self.cacheData.save(data[dataTag], ticker, dataTag) else: data[dataTag] = self.cacheData.open(ticker, dataTag) return data
def run(self): offscreen_canvas = self.matrix.CreateFrameCanvas() font = graphics.Font() font.LoadFont("../../../fonts/5x8.bdf") stockColor = graphics.Color(0, 50, 255) pos = offscreen_canvas.width intrinio.client.username = '******' intrinio.client.password = '******' value = intrinio.prices('GOOGL', start_date='2018-04-13') stock_text = 'GOOGL ' stock_text = stock_text + str(value.iloc[0][5]) percentChange = ( (value.iloc[0][5] - value.iloc[0][9]) / value.iloc[0][5]) * 100 if (percentChange < 0): percent_text = '∇' percentColor = graphics.Color(255, 0, 0) elif (percentChange > 0): percent_text = 'Δ' percentColor = graphics.Color(0, 255, 0) else: percentColor = graphics.Color(0, 0, 255) percent_text = percent_text + str(abs(round(Decimal(percentChange), 2))) percent_text = (' ' * (len(stock_text) - len(percent_text))) + percent_text while True: offscreen_canvas.Clear() length = graphics.DrawText(offscreen_canvas, font, pos, 7, stockColor, stock_text) len2 = graphics.DrawText(offscreen_canvas, font, pos, 14, percentColor, percent_text) pos -= 1 if (pos + length < 0): pos = offscreen_canvas.width time.sleep(0.05) offscreen_canvas = self.matrix.SwapOnVSync(offscreen_canvas)
x for x in input_fields[input_fields["parent"] == "Yes"]["code_or_ticker"] ] tick = [x for x in input_fields[input_fields["parent"] == "Yes"]["ticker"]] year = int(2007) import intrinio intrinio.client.username = '******' intrinio.client.password = '******' for tic, cod in zip(tick, code): # for tic, code in zip(["BKC"],["BKC"]): start = datetime(year, 1, 1) end = datetime.now() r = intrinio.prices(tic, start_date=str(year) + '-01-01') df_tick = r.rename(columns={'adj_volume': 'volume'}) df_tick = df_tick.reset_index() df_tick = df_tick.rename( columns={ 'Volume': 'volume', 'Close': 'close', 'High': 'high', 'Low': 'low', 'Open': 'open', 'Date': 'date' }) my_path = os.path.abspath(os.path.dirname('__file__')) path = os.path.join(my_path, "../data/stock/") df_tick.to_csv(path + cod + "_parent_tick_df.csv")
import intrinio import psycopg2 import pandas as pd intrinio.client.username = '' intrinio.client.password = '' Location = "./NAS.csv" Location2 = "./NYSE.csv" df = pd.read_csv(Location) df2 = pd.read_csv(Location2) dfticker = df["Symbol"] df2ticker = df2["Symbol"] lista = dfticker.append(df2ticker) password = input("Please Enter the Password for the Postgres Database: ") connectionSTR = "dbname='postgres' user='******' host='dev-datafactory-postgresql.csodrrohkuas.us-east-1.rds.amazonaws.com' password="******"INSERT INTO historical VALUES ('{i}', '{prices}');" cur.execute(insert) conn.commit()
pass print(start_line) # reads the file of all stocks, retrieves symbol, uses intrinio api to retrieve historical data from january 1, 2016 to present, and writes to csv with open("../data/all_stocks.txt", "r") as f: for i, line in enumerate(f): if i < start_line: continue # passes through until last line parsed is reached print(line) sym, rest = line.split("|", 1) # retrieves symbol print(sym) try: x = intrinio.prices(sym) x.to_csv('../data/raw/' + sym) except requests.exceptions.HTTPError as err: # if the api limit is reached, write ending line and exit if err.response.status_code == 429: print("limit reached at line " + str(i) + "...exiting") with open('../data/start_line.txt', 'w') as outfile: outfile.write(str(i)) sys.exit() else: with open('../errors', 'a') as outfile: outfile.write("error with " + sym + ", code: " + str(err.response.status_code))
# first install the required package via this cli command: # pip install requests import intrinio intrinio.client.username = "******" intrinio.client.password = "******" company = "Apple" ticker = "AAPL" start_date = "2018-07-01" prices = intrinio.prices(ticker, start_date) info = intrinio.companies(ticker) search = intrinio.companies(query=company) financials = intrinio.financials(ticker) print(info) print(search) print(financials)
def run(self): offscreen_canvas = self.matrix.CreateFrameCanvas() font = graphics.Font() # load the font displayed to screen (letter dimension font.LoadFont("../../../fonts/5x8.bdf") pos = offscreen_canvas.width # important data for accessing the stock API (pulls information) intrinio.client.username = '******' intrinio.client.password = '******' # get the yesterday yesterday = date.today() - timedelta(7) dateCheck = yesterday.strftime("%Y-%m-%d") # print the current date print("dateCheck = " + str(dateCheck)) # list to hold stocks stockdata = [] # list to hold the percentage change changedata = [] # list to hold colors of the stock stockcolors = [] # list to hold color of percent percentcolors = [] # loop thru the stocks listed in for i in stockConfig.stocks: # get value for current day (today) value = intrinio.prices(i['symbol'], dateCheck) stock_text = i['symbol'] stock_text = stock_text + ' ' + str(value.iloc[0][5]) stockdata.append(stock_text) stockColor = graphics.Color(i['red'], i['green'], i['blue']) stockcolors.append(stockColor) percentChange = ( (value.iloc[0][5] - value.iloc[0][9]) / value.iloc[0][5]) * 100 if (percentChange < 0): percent_text = '∇' percentColor = graphics.Color(255, 0, 0) elif (percentChange > 0): percent_text = 'Δ' percentColor = graphics.Color(0, 255, 0) else: percentColor = graphics.Color(0, 0, 255) percent_text = percent_text + str( abs(round(Decimal(percentChange), 2))) percent_text = ( ' ' * (len(stock_text) - len(percent_text))) + percent_text changedata.append(percent_text) percentcolors.append(percentColor) currentStock = 0 while True: offscreen_canvas.Clear() length = graphics.DrawText(offscreen_canvas, font, pos, 7, stockcolors[currentStock], stockdata[currentStock]) len2 = graphics.DrawText(offscreen_canvas, font, pos, 14, percentcolors[currentStock], changedata[currentStock]) pos -= 1 if (pos + length < 0): pos = offscreen_canvas.width currentStock += 1 if (currentStock >= len(stockdata)): currentStock = 0 time.sleep(0.07) offscreen_canvas = self.matrix.SwapOnVSync(offscreen_canvas)
'username': '', 'password': '', 'provider': 'iex', 'on_quote': on_quote } client = IntrinioRealtimeClient(options) client.join(['AAPL', 'GE', 'MSFT']) client.connect() client.keep_alive() ''' data_stock_prices = intrinio.prices('ATVI')#, start_date='2000-01-01') data_financials = intrinio.financials('AAPL') intrinio.companies('GOOG') data_stock_prices.info() atvi_adjclose = pd.Series(data_stock_prices.adj_close) atvi_adjclose_norm = atvi_adjclose/atvi_adjclose[len(atvi_adjclose)-1]*100 atvi_adjclose_norm = atvi_adjclose_norm.rename("ATVI") spy_prices = intrinio.prices('SPY', start_date='1993-10-25')
try: fudamentals_calculations = intrinio.financials( ticker, type='QTR', statement='calculations') if fudamentals_calculations is not None: filename = ticker + '_fudamentals_calculations.csv' file_to_open = os.path.join(data_folder, filename) fudamentals_calculations.to_csv(file_to_open, encoding='utf-8') else: print('%s (%s) Ignored - Doesnt have calcs.' % (ticker, i)) continue except (AttributeError, ValueError) as e: print('%s (%s) Ignored - Doesnt have calcs.' % (ticker, i)) continue # Price try: price = intrinio.prices(ticker, frequency='quarterly') if price.empty == False: filename = ticker + '_price.csv' file_to_open = os.path.join(data_folder, filename) price.to_csv(file_to_open, encoding='utf-8') else: print('%s (%s) Ignored - Doesnt have price.' % (ticker, i)) continue except (AttributeError, ValueError) as e: print('%s (%s) Ignored - Doesnt have price.' % (ticker, i)) continue # Cash try: fudamentals_caseflow = intrinio.financials( ticker, type='QTR', statement='cash_flow_statement') if fudamentals_caseflow is not None:
intrinio.client.password = #Get your own password! #Extract common dates and adjusted closing #prices; adjusted closes allow total return #computation #returns will start one period later than startdate startdate='1997-12-31' #Intrinio uses 12-31 even if it's not a business day enddate=LastYearEnd()[:4]+'-12-31' tickerlist=['ORCL','ED','F'] for i,t in enumerate(tickerlist): #This can be very slow print('Getting ticker',t) df1=intrinio.prices(t,sort_order='ASC', \ start_date=startdate,end_date=enddate, \ frequency='monthly') #Get rid of everything except adjusted close df1.drop(['adj_high','adj_low','adj_open', \ 'adj_volume','adj_factor','close', \ 'high','low','open','split_ratio', \ 'volume','ex_dividend'],axis='columns',inplace=True) df1.rename({'adj_close':t},axis='columns',inplace=True) if i==0: dfcomb=df1 else: dfcomb=dfcomb.join(df1) #Combined dataframe dfcomb now has a column #with adjusted closes of each ticker. #Form log-returns
# base_url = "https://api.intrinio.com" # # # Get the latest FY Income Statement for AAPL # ticker = "AAPL" # request_url = base_url + "/financials/standardized" # query_params = { # 'ticker': ticker, # 'statement': 'income_statement', # 'type': 'FY' # } # # response = requests.get(request_url, params=query_params, auth=(api_username, api_password)) # if response.status_code == 401: print("Unauthorized! Check your username and password."); exit() # # data = response.json()['data'] # # for row in data: # tag = row['tag'] # value = row['value'] # print(tag + ": " + str(value)) import intrinio # intrinio.client.username = '' intrinio.client.password = '' print(intrinio.prices('AAPL')) #print(intrinio.companies('GOOG')) #print(intrinio.companies(query='Popeyes'))