def fundamentals(identifier, type='FY', statement='calculations'): """ Get available periods with standardized fundamental data for a company. Args: identifier: stock market ticker symbol associated with the company's common stock. If the company is foreign, use the stock exchange code, followed by a colon, then the ticker. type: Period type: FY (default) | QTR | TTM | YTD statement: Type of fundamental data: calculations (default) | income_statement | balance_sheet | cash_flow_statement Returns: Dataset as a Pandas DataFrame """ return get('fundamentals/standardized', identifier=identifier.upper(), statement=statement.lower(), type=type.upper())
def securities(identifier=None, query=None, exch_symbol=None): """ Get securities with optional filtering using parameters. Args: identifier: Identifier for the legal entity or a security associated with the company: TICKER SYMBOL | FIGI | OTHER IDENTIFIER query: Search of security name or ticker symbol exch_symbol: Exchange symbol Returns: Dataset as a Pandas DataFrame """ if identifier is not None: identifier = str.upper(identifier) return get('securities', identifier=identifier, query=query, exch_symbol=exch_symbol)
def prices(identifier, start_date=None, end_date=None, frequency='daily', sort_order='desc'): """ Get historical stock market prices or indices. Args: identifier: Stock market symbol or index start_date: Start date of prices (default no filter) end_date: Last date (default today) frequency: Frequency of prices: daily (default) | weekly | monthly | quarterly | yearly sort_order: Order of prices: asc | desc (default) Returns: Dataset as a Pandas DataFrame """ if identifier is not None: identifier = str.upper(identifier) df = get('prices', identifier=identifier, start_date=start_date, end_date=end_date, frequency=frequency, sort_order=sort_order) df.index = pd.DatetimeIndex(df.date) df.drop('date', axis=1, inplace=True) return df
def test_get_companies_data_with_query(): companies = get('companies', query='Cola') assert len(companies) > 1 assert companies.name.str.contains('Cola').any()
def test_get_missing_endpoint(): with pytest.raises(HTTPError): get('missing_endpoint')
def test_get_companies_data_with_query_that_returns_many_pages(): companies = get('companies', query='Corp') assert len(companies) > get_page_size('companies') assert len(companies) > 300 assert companies.name.str.contains('Corp').any()