Preface: In this video series Matt shows how to use the EODHD Financial APIs for the Stock Analysis with Python.
Don’t forget to explore other 2 Parts to learn more:
Part 1 Obtaining Stocks Data for the Analysis in Python
Part 2 Processing Stocks Data in Python for the Analysis
Part 3 Filtering and visualizing the Stocks Data Analysis results in Python
import json
import pandas as pd
import requests
def get_exchange_data(key, exchange='NYSE'):
"""
returns metadata for a specific exchange
available: US, NASDAQ, OTCBB, PINK, BATS
"""
endpoint = f"https://eodhistoricaldata.com/api/exchange-symbol-list/"
endpoint += f"{exchange}?api_token={key}&fmt=json"
print("Downloading data")
call =requests.get(endpoint).text
exchange_data = pd.DataFrame(json.loads(call))
print("Completed")
return exchange_data
def main():
key = open('api_token.txt').read()
print(get_exchange_data(key))
if __name__ == '__main__':
main()
import json
import pandas as pd
import requests
def get_security_type(exchange_data, type= "Common Stock"):
"""
Returns a list of filtered security types
Types available: Common Stock, ETF, Fund, Preferred Stock
"""
symbols = exchange_data[exchange_data.Type == type]
return symbols.Code.to_list()
def get_sp(symbols =True, sector= False):
"""
returns S&P 500 metadata
Sectors: Communication Services, Consumer Discretionary, Consumer Staples,
Energy, Financials, Health Care, Industrials, Information Technology,
Materials, Real Estate, Utilities
"""
sp = pd.read_csv('sp500.csv')
if sector:
sp = sp[sp.Sector == sector]
if symbols:
return sp['Symbol']
else:
return sp
def main():
key = open('api_token.txt').read()
print(get_security_type(get_exchange_data(key)))
print(get_sp(symbols=False, sector='Energy'))
if __name__ == '__main__':
main()
import datetime as dt
from eod import EodHistoricalData
import json
import os
import pandas as pd
import requests
DEFAULT_DATE = dt.date.today() - dt.timedelta(396)
TODAY =dt.date.today()
def get_data(*tickers, key, path='data_files', date=DEFAULT_DATE):
"""
downloads and stores as csv price data for selected securities
"""
if not os.path.exists(f"{os.getcwd()}/{path}"):
os.mkdir(path)
downloaded = 0
skipped = 0
tickers_skipped = []
client = EodHistoricalData(key)
for ticker in tickers:
try:
print(f"Downloading {ticker}")
df = pd.DataFrame(client.get_prices_eod(ticker, from_=date))
df.index = pd.DatetimeIndex(df.date)
df.drop(columns=['date'], inplace=True)
df.to_csv(f"{path}/{ticker}.csv")
downloaded += 1
except:
print(f"{ticker} not found, skipping...")
skipped += 1
tickers_skipped.append(ticker)
print("Download completed")
print(f"Data download for {downloaded} securities")
print(f"{skipped} tickers skipped")
if tickers_skipped:
print(" Tickers skipped ".center(30, "="))
for ticker in tickers_skipped:
print(ticker)
def main():
key = open('api_token.txt').read()
get_data("AAPL", "GOOG",key= key, path= 'mine')
if __name__ == '__main__':
main()