Teh*_*unk 5 python stock pandas alpha-vantage
所以基本上我有 Alpha Vantage 的免费 API 密钥,我用它来获取随机股票的基本数据。需要明确的是,我已经成功连接并使用了该 API,并且不需要提取 5 年以上的股票价格数据。
总而言之,有谁知道是否有办法获得 5 年以上选定股票的收入、资产负债表和现金流量数据? 这是一项高级功能吗?我在任何地方都找不到任何东西。
https://www.alphavantage.co/documentation/ <-- 文档在“基本数据”示例中仅显示了 5 年的数据。
import requests
import pandas as pd
from pandasgui import show
from alpha_vantage.alphavantage import AlphaVantage
from alpha_vantage.timeseries import TimeSeries
# ///////////////////////////////////////////////////////////
# FUNCTIONS FOR ALPHA VANTAGE
# ///////////////////////////////////////////////////////////
TIME_SERIES_INTRADAY = 'TIME_SERIES_INTRADAY'
TIME_SERIES_INTRADAY_EXTENDED = 'TIME_SERIES_INTRADAY_EXTENDED'
TIME_SERIES_DAILY = 'TIME_SERIES_DAILY'
TIME_SERIES_DAILY_ADJUSTED = 'TIME_SERIES_DAILY_ADJUSTED'
TIME_SERIES_WEEKLY = 'TIME_SERIES_WEEKLY'
TIME_SERIES_WEEKLY_ADJUSTED = 'TIME_SERIES_WEEKLY_ADJUSTED'
TIME_SERIES_MONTHLY = 'TIME_SERIES_MONTHLY'
TIME_SERIES_MONTHLY_ADJUSTED = 'TIME_SERIES_MONTHLY_ADJUSTED'
GLOBAL_QUOTE = 'GLOBAL_QUOTE'
SYMBOL_SEARCH = 'SYMBOL_SEARCH'
OVERVIEW = 'OVERVIEW'
EARNINGS = 'EARNINGS'
INCOME_STATEMENT = 'INCOME_STATEMENT'
BALANCE_SHEET = 'BALANCE_SHEET'
CASH_FLOW = 'CASH_FLOW'
LISTING_STATUS = 'LISTING_STATUS'
EARNINGS_CALENDAR = 'EARNINGS_CALENDAR'
IPO_CALENDAR = 'IPO_CALENDAR'
CURRENCY_EXCHANGE_RATE = 'CURRENCY_EXCHANGE_RATE'
FX_INTRADAY = 'FX_INTRADAY'
FX_DAILY = 'FX_DAILY'
FX_WEEKLY = 'FX_WEEKLY'
FX_MONTHLY = 'FX_MONTHLY'
CURRENCY_EXCHANGE_RATE = 'CURRENCY_EXCHANGE_RATE'
CRYPTO_RATING = 'CRYPTO_RATING'
CRYPTO_INTRADAY = 'CRYPTO_INTRADAY'
DIGITAL_CURRENCY_DAILY = 'DIGITAL_CURRENCY_DAILY'
DIGITAL_CURRENCY_WEEKLY = 'DIGITAL_CURRENCY_WEEKLY'
DIGITAL_CURRENCY_MONTHLY = 'DIGITAL_CURRENCY_MONTHLY'
# ///////////////////////////////////////////////////////////
# TIME SERIES FOR STOCK DATA
# ///////////////////////////////////////////////////////////
ONEMIN = 'Time Series (1min)'
FIVEMIN = 'Time Series (5min)'
FIVETEENMIN = 'Time Series (15min)'
THIRTYMIN = 'Time Series (30min)'
HOUR = 'Time Series (60min)'
FIVEMIN = 'Time Series (5min)'
DAILY = 'Time Series (Daily)'
WEEKLY = 'Weekly Time Series'
WEEKLY_ADJ = 'Weekly Adjusted Time Series'
MONTLY = 'Monthly Time Series'
MONTLY_ADJ = 'Monthly Adjusted Time Series'
# /////////////////////////////////////////////////////////
# query fundamental stock data of selected type ///////////
# /////////////////////////////////////////////////////////
def query_fundamental_data(func, symbol, outputsize='full', datatype='json', apikey='TUBY75I2F4D58X6M'):
data = {
"function": func,
"symbol": symbol,
"outputsize": outputsize, # (full) and (compact) are accepted
"datatype": datatype,
"apikey": apikey
}
return requests.get("https://www.alphavantage.co/query", data).json()
# /////////////////////////////////////////////////////////
# convert fund stock data of selected type to json ////////
# /////////////////////////////////////////////////////////
def get_fundamental_dataframe(json):
df = pd.DataFrame(json['annualReports'])
df.set_index('fiscalDateEnding', inplace=True)
return df
# /////////////////////////////////////////////////////////
# query timeseries stock data of selected type ////////////
# /////////////////////////////////////////////////////////
def query_timeseries_data(func, symbol, outputsize='full', datatype='json', apikey='TUBY75I2F4D58X6M'):
data = {
"function": func,
"symbol": symbol,
"outputsize": outputsize, # (full) and (compact) are accepted
"datatype": datatype,
"apikey": apikey
}
return requests.get("https://www.alphavantage.co/query", data).json()
# /////////////////////////////////////////////////////////
# convert time-series stock data of selected type to JSON//
# /////////////////////////////////////////////////////////
def get_timeseries_dataframe(json, type):
df = pd.DataFrame.from_dict(json[type], orient= 'index')
df.index = pd.to_datetime(df.index, format='%Y-%m-%d')
df = df.rename(columns={ '1. open': 'Open', '2. high': 'High', '3. low': 'Low', '4. close': 'Close', '5. volume': 'Volume'})
df = df.astype({'Open': 'float64', 'High': 'float64', 'Low': 'float64','Close': 'float64','Volume': 'float64',})
df = df[[ 'Open', 'High', 'Low', 'Close', 'Volume']]
return df
# /////////////////////////////////////////////////////////
# how to create dataframes for matplotlib usage //////////
# /////////////////////////////////////////////////////////
response_json = query_fundamental_data(INCOME_STATEMENT, 'MSFT')
INCOME_DATA = get_fundamental_dataframe(response_json)
#response_json = query_fundamental_data(BALANCE_SHEET, 'MSFT')
#BALANCE_DATA = get_fundamental_dataframe(response_json)
#response_json = query_fundamental_data(CASH_FLOW, 'MSFT')
#CASHFLOW_DATA = get_fundamental_dataframe(response_json)
#response_json = query_timeseries_data(TIME_SERIES_DAILY, 'MSFT')
#STOCKPRICE_DATA = get_timeseries_dataframe(response_json, DAILY)
show(INCOME_DATA)
#show(BALANCE_DATA)
#show(CASHFLOW_DATA)
#show(STOCKPRICE_DATA)
Run Code Online (Sandbox Code Playgroud)
预先感谢任何可以提供帮助或可以通知我目前是否可能的人。我试图自己找到一种方法,但我似乎无法在文档或任何地方找到一种方法。