# invest
Python access to structure stock market information
To install: ```pip install invest```
- [invest](#invest)
- [Quick Start](#quick-start)
* [ticker_symbols argument](#ticker-symbols-argument)
* [Notes](#notes)
- [Configuring Ticker objects](#configuring-ticker-objects)
* [Configure a Ticker instance](#configure-a-ticker-instance)
* [Example](#example)
* [Configure a Tickers instance](#configure-a-tickers-instance)
- [Getting (only) specific information about tickers](#getting--only--specific-information-about-tickers)
* [Example: Historical data](#example--historical-data)
* [Example: Specific `'info'` fields](#example--specific---info---fields)
- [BulkHistory](#bulkhistory)
* [Notes](#notes-1)
- [All information](#all-information)
# Quick Start
```python
from invest import Tickers
```
Get a default list of tickers
```python
tickers = Tickers()
```
`tickers` is a dict-like container of tickers. So you can do dict-like things with it, like...
- ask for it's length
```python
len(tickers)
```
4039
- list the keys
```python
list(tickers)[:5]
```
['EGLE', 'KMPH', 'LONG', 'CYBR', 'PTC']
- check for containment of a key
```python
'GOOG' in tickers
```
True
The values of this dict-like object are `Ticker` instances.
```python
ticker = tickers['GOOG']
ticker
```
Ticker('GOOG')
This `ticker` object is also dict-like. Let's see how many keys there are:
```python
len(ticker)
```
40
What are these keys?
```python
list(ticker)
```
['balancesheet',
'dividends',
'get_sustainability',
'get_info',
'get_institutional_holders',
'sustainability',
'quarterly_balance_sheet',
'get_balance_sheet',
'info',
'quarterly_earnings',
'isin',
'earnings',
'history',
'get_balancesheet',
'get_financials',
'balance_sheet',
'get_earnings',
'options',
'splits',
'get_recommendations',
'get_major_holders',
'get_dividends',
'actions',
'recommendations',
'cashflow',
'get_cashflow',
'get_splits',
'major_holders',
'institutional_holders',
'option_chain',
'get_actions',
'quarterly_financials',
'get_calendar',
'quarterly_cashflow',
'calendar',
'financials',
'quarterly_balancesheet',
'get_mutualfund_holders',
'get_isin',
'mutualfund_holders']
Let's look at one of these, `'info'`, which contains a dict with a bunch of information about the ticker...
```python
info = ticker['info']
print(*info, sep=', ')
```
zip, sector, fullTimeEmployees, longBusinessSummary, city, phone, state, country, companyOfficers, website, maxAge, address1, industry, previousClose, regularMarketOpen, twoHundredDayAverage, trailingAnnualDividendYield, payoutRatio, volume24Hr, regularMarketDayHigh, navPrice, averageDailyVolume10Day, totalAssets, regularMarketPreviousClose, fiftyDayAverage, trailingAnnualDividendRate, open, toCurrency, averageVolume10days, expireDate, yield, algorithm, dividendRate, exDividendDate, beta, circulatingSupply, startDate, regularMarketDayLow, priceHint, currency, trailingPE, regularMarketVolume, lastMarket, maxSupply, openInterest, marketCap, volumeAllCurrencies, strikePrice, averageVolume, priceToSalesTrailing12Months, dayLow, ask, ytdReturn, askSize, volume, fiftyTwoWeekHigh, forwardPE, fromCurrency, fiveYearAvgDividendYield, fiftyTwoWeekLow, bid, tradeable, dividendYield, bidSize, dayHigh, exchange, shortName, longName, exchangeTimezoneName, exchangeTimezoneShortName, isEsgPopulated, gmtOffSetMilliseconds, quoteType, symbol, messageBoardId, market, annualHoldingsTurnover, enterpriseToRevenue, beta3Year, profitMargins, enterpriseToEbitda, 52WeekChange, morningStarRiskRating, forwardEps, revenueQuarterlyGrowth, sharesOutstanding, fundInceptionDate, annualReportExpenseRatio, bookValue, sharesShort, sharesPercentSharesOut, fundFamily, lastFiscalYearEnd, heldPercentInstitutions, netIncomeToCommon, trailingEps, lastDividendValue, SandP52WeekChange, priceToBook, heldPercentInsiders, nextFiscalYearEnd, mostRecentQuarter, shortRatio, sharesShortPreviousMonthDate, floatShares, enterpriseValue, threeYearAverageReturn, lastSplitDate, lastSplitFactor, legalType, lastDividendDate, morningStarOverallRating, earningsQuarterlyGrowth, dateShortInterest, pegRatio, lastCapGain, shortPercentOfFloat, sharesShortPriorMonth, category, fiveYearAverageReturn, regularMarketPrice, logo_url
```python
info['shortName']
```
'Alphabet Inc.'
```python
info['sector']
```
'Communication Services'
```python
df = ticker['history']
df
```
<div>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>Open</th>
<th>High</th>
<th>Low</th>
<th>Close</th>
<th>Volume</th>
<th>Dividends</th>
<th>Stock Splits</th>
</tr>
<tr>
<th>Date</th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<th>2020-10-28</th>
<td>1559.739990</td>
<td>1561.349976</td>
<td>1514.619995</td>
<td>1516.619995</td>
<td>1834000</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-10-29</th>
<td>1522.359985</td>
<td>1593.709961</td>
<td>1522.239990</td>
<td>1567.239990</td>
<td>2003100</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-10-30</th>
<td>1672.109985</td>
<td>1687.000000</td>
<td>1604.459961</td>
<td>1621.010010</td>
<td>4329100</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-02</th>
<td>1628.160034</td>
<td>1660.770020</td>
<td>1616.030029</td>
<td>1626.030029</td>
<td>2535400</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-03</th>
<td>1631.780029</td>
<td>1661.699951</td>
<td>1616.619995</td>
<td>1650.209961</td>
<td>1661700</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-04</th>
<td>1710.280029</td>
<td>1771.364990</td>
<td>1706.030029</td>
<td>1749.130005</td>
<td>3570900</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-05</th>
<td>1781.000000</td>
<td>1793.640015</td>
<td>1750.510010</td>
<td>1763.369995</td>
<td>2065800</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-06</th>
<td>1753.949951</td>
<td>1772.430054</td>
<td>1740.349976</td>
<td>1761.750000</td>
<td>1660900</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-09</th>
<td>1790.900024</td>
<td>1818.060059</td>
<td>1760.020020</td>
<td>1763.000000</td>
<td>2268300</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-10</th>
<td>1731.089966</td>
<td>1763.000000</td>
<td>1717.300049</td>
<td>1740.390015</td>
<td>2636100</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-11</th>
<td>1750.000000</td>
<td>1764.219971</td>
<td>1747.364990</td>
<td>1752.709961</td>
<td>1264000</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-12</th>
<td>1747.630005</td>
<td>1768.270020</td>
<td>1745.599976</td>
<td>1749.839966</td>
<td>1247500</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-13</th>
<td>1757.630005</td>
<td>1781.040039</td>
<td>1744.550049</td>
<td>1777.020020</td>
<td>1499900</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-16</th>
<td>1771.699951</td>
<td>1799.069946</td>
<td>1767.689941</td>
<td>1781.380005</td>
<td>1246800</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-17</th>
<td>1776.939941</td>
<td>1785.000000</td>
<td>1767.000000</td>
<td>1770.150024</td>
<td>1147100</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-18</th>
<td>1765.229980</td>
<td>1773.469971</td>
<td>1746.140015</td>
<td>1746.780029</td>
<td>1173500</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-19</th>
<td>1738.380005</td>
<td>1769.589966</td>
<td>1737.005005</td>
<td>1763.920044</td>
<td>1249900</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-20</th>
<td>1765.209961</td>
<td>1774.000000</td>
<td>1741.859985</td>
<td>1742.189941</td>
<td>2313500</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-23</th>
<td>1749.599976</td>
<td>1753.900024</td>
<td>1717.719971</td>
<td>1734.859985</td>
<td>2161600</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-24</th>
<td>1730.500000</td>
<td>1771.599976</td>
<td>1727.689941</td>
<td>1768.880005</td>
<td>1578000</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-25</th>
<td>1772.890015</td>
<td>1778.540039</td>
<td>1756.540039</td>
<td>1771.430054</td>
<td>1045800</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-27</th>
<td>1773.089966</td>
<td>1804.000000</td>
<td>1772.439941</td>
<td>1793.189941</td>
<td>884900</td>
<td>0</td>
<td>0</td>
</tr>
</tbody>
</table>
</div>
```python
from mplfinance import plot as candlestick_plot # pip install mplfinance if you don't have it already
candlestick_plot(df)
```

But these are daily metrics and only for the recent (yes, I'm doing this on a Thanksgiving week-end!) past.
How do I get something different? Like a longer history, and/or at a finer time-granularity?
See the next _Configuring Ticker objects_ section on how to do that.
## ticker_symbols argument
The first argument of `Tickers` is the `ticker_symbols` argument.
One can specify a collection (list, set, tuple, etc.) of ticker symbol strings, or a path to a file containing a pickle of such a collection.
The default is the string `'local_list'` which has the effect of using a default list (currently of about 4000 tickers), but it's contents can change in the future.
Note that this `ticker_symbols` will have an effect on such affairs as `list(tickers)`, `len(tickers)`, or `s in tickers`, when it's relevant to use these.
But any `Tickers` object will allow access to any ticker symbol, regardless if it's in the `ticker_symbols` collection or not.
```python
tickers = Tickers(ticker_symbols=('GOOG', 'AAPL', 'AMZN'))
assert list(tickers) == ['GOOG', 'AAPL', 'AMZN']
assert len(tickers) == 3
assert 'AAPL' in tickers
assert 'NFLX' not in tickers
# and yet we have access to NFLX info
assert tickers['NFLX']['info']['shortName'] == 'Netflix, Inc.'
```
```python
```
## Notes
- Both `Tickers` and `Ticker` instances have tab-triggered auto-suggestion enabled when you get an item. Example: `tickers['AA<now press the TAB button...>`.
- The specification of
```python
```
# Configuring Ticker objects
## Configure a Ticker instance
You can instantiate a `Ticker` instance directly, from **any valid ticker symbol**. The `Tickers` class is just a way to make a collection of tickers to work with.
```python
from invest import Tickers, Ticker
ticker = Ticker('GOOG')
ticker
```
Ticker('GOOG')
But you'll notice that `Ticker` (and `Tickers`) have more than one argument.
```python
from inspect import signature
print(signature(Tickers))
print(signature(Ticker))
```
(ticker_symbols='local_list', **kwargs_for_method_keys)
(ticker_symbol: str, **kwargs_for_method_keys)
What's this `kwargs_for_method_keys`?
Well, at the time of writing this, `Ticker` object is just a convenient dict-like interface to the attributes of the `Ticker` of the `yfinance` package which is itself a convenient python interface to the yahoo finance API.
When you do `list(ticker)`, you're just getting a list of attributes of `yfinance.Ticker`: Both properties and methods that don't require any arguments. Though these methods don't require any arguments -- meaning all their arguments have defaults -- you can still specify if you want to use different defaults.
That's where `kwargs_for_method_keys` comes in. It specifies what `arg=val` pairs that should be used for particular methods of `yfinance.Ticker`.
If you want to know more about what you can do with the `Ticker` object, you might want to check out `yfinance`'s and yahoo finance API's documentation.
For the basics though, `invest` provides the `help_me_with` function (as a standalone function or as a method in `Tickers` and `Ticker`) for quick access to essentials.
```python
Ticker.help_me_with('history')
```
history
wraps <function TickerBase.history at 0x11a064940>, whose signature is:
(self, period='1mo', interval='1d', start=None, end=None, prepost=False, actions=True, auto_adjust=True, back_adjust=False, proxy=None, rounding=False, tz=None, **kwargs)
:Parameters:
period : str
Valid periods: 1d,5d,1mo,3mo,6mo,1y,2y,5y,10y,ytd,max
Either Use period parameter or use start and end
interval : str
Valid intervals: 1m,2m,5m,15m,30m,60m,90m,1h,1d,5d,1wk,1mo,3mo
Intraday data cannot extend last 60 days
start: str
Download start date string (YYYY-MM-DD) or _datetime.
Default is 1900-01-01
end: str
Download end date string (YYYY-MM-DD) or _datetime.
Default is now
prepost : bool
Include Pre and Post market data in results?
Default is False
auto_adjust: bool
Adjust all OHLC automatically? Default is True
back_adjust: bool
Back-adjusted data to mimic true historical prices
proxy: str
Optional. Proxy server URL scheme. Default is None
rounding: bool
Round values to 2 decimal places?
Optional. Default is False = precision suggested by Yahoo!
tz: str
Optional timezone locale for dates.
(default data is returned as non-localized dates)
**kwargs: dict
debug: bool
Optional. If passed as False, will suppress
error message printing to console.
## Example
Here's you can get `history` to give you something different.
Say, get data for the last day, with a granularity of 15 minutes.
```python
ticker = Ticker('GOOG', history=dict(period='1d', interval='15m'))
ticker
```
Ticker('GOOG', history={'period': '1d', 'interval': '15m'})
Your ticker is almost identical to the previous one we made, or the one we got from `Tickers`, except for the fact that asking for `ticker['history']` is going to give you something different.
```python
df = ticker['history']
df
```
<div>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>Open</th>
<th>High</th>
<th>Low</th>
<th>Close</th>
<th>Volume</th>
<th>Dividends</th>
<th>Stock Splits</th>
</tr>
<tr>
<th>Datetime</th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<th>2020-11-27 09:30:00-05:00</th>
<td>1773.089966</td>
<td>1789.890015</td>
<td>1772.439941</td>
<td>1785.000000</td>
<td>119289</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-27 09:45:00-05:00</th>
<td>1785.380005</td>
<td>1786.979980</td>
<td>1780.229980</td>
<td>1785.089966</td>
<td>50660</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-27 10:00:00-05:00</th>
<td>1785.489990</td>
<td>1786.989990</td>
<td>1780.959961</td>
<td>1785.800049</td>
<td>50797</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-27 10:15:00-05:00</th>
<td>1785.319946</td>
<td>1795.925049</td>
<td>1785.319946</td>
<td>1791.589966</td>
<td>72146</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-27 10:30:00-05:00</th>
<td>1792.060059</td>
<td>1798.999878</td>
<td>1792.060059</td>
<td>1796.699951</td>
<td>48097</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-27 10:45:00-05:00</th>
<td>1796.800049</td>
<td>1800.199951</td>
<td>1795.060059</td>
<td>1799.959961</td>
<td>56292</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-27 11:00:00-05:00</th>
<td>1800.359985</td>
<td>1800.449951</td>
<td>1797.130005</td>
<td>1797.660034</td>
<td>41882</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-27 11:15:00-05:00</th>
<td>1797.819946</td>
<td>1802.599976</td>
<td>1796.949951</td>
<td>1802.579956</td>
<td>60333</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-27 11:30:00-05:00</th>
<td>1802.579956</td>
<td>1804.000000</td>
<td>1797.550049</td>
<td>1798.185059</td>
<td>45667</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-27 11:45:00-05:00</th>
<td>1798.099976</td>
<td>1798.603027</td>
<td>1788.000000</td>
<td>1788.739990</td>
<td>47900</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-27 12:00:00-05:00</th>
<td>1789.000000</td>
<td>1791.599976</td>
<td>1787.329956</td>
<td>1787.500000</td>
<td>36459</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-27 12:15:00-05:00</th>
<td>1787.347534</td>
<td>1788.530029</td>
<td>1782.574951</td>
<td>1787.952759</td>
<td>46400</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-27 12:30:00-05:00</th>
<td>1787.260010</td>
<td>1788.920044</td>
<td>1785.640015</td>
<td>1785.640015</td>
<td>45660</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-27 12:45:00-05:00</th>
<td>1785.829956</td>
<td>1793.420044</td>
<td>1785.219971</td>
<td>1792.520020</td>
<td>97273</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2020-11-27 13:00:00-05:00</th>
<td>1793.189941</td>
<td>1793.189941</td>
<td>1793.189941</td>
<td>1793.189941</td>
<td>46982</td>
<td>0</td>
<td>0</td>
</tr>
</tbody>
</table>
</div>
```python
from mplfinance import plot as candlestick_plot # pip install mplfinance if you don't have it already
candlestick_plt(df)
```

## Configure a Tickers instance
Let's say we wanted all ticker instances that `Tickers` gives us to have their `history` be over a specific interval of time in the past (say, during the 2020 pandemic), at 5 day intervals...
```python
tickers = Tickers(ticker_symbols={'NFLX', 'AMZN', 'DAL'}, # demoing the fact that we can specify an explicit collection of ticker symbols
history=dict(start='2020-03-01', end='2020-10-31', interval='5d'))
list(tickers)
```
['DAL', 'AMZN', 'NFLX']
See that indeed, all tickers given by `tickers` are configured according to our wishes.
```python
tickers['NFLX']
```
Ticker('NFLX', history={'start': '2020-03-01', 'end': '2020-10-31', 'interval': '5d'})
```python
from mplfinance import plot as candlestick_plot # pip install mplfinance if you don't have it already
candlestick_plot(tickers['NFLX']['history'])
```

```python
candlestick_plot(tickers['AMZN']['history'])
```

So Netflix and Amazon did well.
Delta, less so:
```python
candlestick_plot(tickers['DAL']['history'])
```

# Getting (only) specific information about tickers
`Tickers` and `Ticker` are convenient if you want to analyze several aspects of a ticker since you can poke around the various keys (e.g. `info`, `history`, etc.).
But if a particular analysis only needs one of these, it's more convenient to use `TickersWithSpecificInfo`,
which gives you the same interface as `Tickers` (in fact, it's a subclass if `Tickers`),
but fixes the key.
## Example: Historical data
For example, if you're only interested in the historical data (a.k.a. the `'history'` key), you might do this:
```python
from invest import TickersWithSpecificInfo
tickers = TickersWithSpecificInfo(specific_key='history', start='2008-01-01', end='2009-01-01', interval='1mo') # 2008 historical data, month granularity
tickers
```
TickersWithSpecificInfo(ticker_symbols=<local_list>, specific_key=history, start=2008-01-01, end=2009-01-01, interval=1mo)
```python
candlestick_plot(tickers['GOOG'])
```

```python
candlestick_plot(tickers['NFLX'])
```

```python
candlestick_plot(tickers['AMZN'])
```

```python
candlestick_plot(tickers['AAPL'])
```

## Example: Specific `'info'` fields
```python
from invest import TickersWithSpecificInfo
the_info_that_i_want = ['shortName', 'sector', 'earningsQuarterlyGrowth', 'sharesShortPriorMonth']
tickers = TickersWithSpecificInfo(specific_key='info', val_trans=lambda d: {k: d[k] for k in the_info_that_i_want})
tickers
```
TickersWithSpecificInfo(ticker_symbols=<local_list>, specific_key=info, val_trans=<function <lambda> at 0x11c2374c0>)
Now, you won't get the overwhelming amount of information you usually get with `info`:
```python
tickers['AAPL']
```
{'shortName': 'Apple Inc.',
'sector': 'Technology',
'earningsQuarterlyGrowth': -0.074,
'sharesShortPriorMonth': 83252522}
```python
faang_tickers = ('FB', 'AMZN', 'AAPL', 'NFLX', 'GOOG')
the_info_that_i_want = ['shortName', 'sector', 'earningsQuarterlyGrowth', 'sharesShortPriorMonth']
tickers = TickersWithSpecificInfo(faang_tickers, specific_key='info', val_trans=lambda d: {k: d[k] for k in the_info_that_i_want})
tickers
```
TickersWithSpecificInfo(ticker_symbols=('FB', 'AMZN', 'AAPL', 'NFLX', 'GOOG'), specific_key=info, val_trans=<function <lambda> at 0x11c237a60>)
```python
info_df = pd.DataFrame(list(tickers.values()))
info_df
```
<div>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>shortName</th>
<th>sector</th>
<th>earningsQuarterlyGrowth</th>
<th>sharesShortPriorMonth</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>Facebook, Inc.</td>
<td>Communication Services</td>
<td>0.288</td>
<td>21187652</td>
</tr>
<tr>
<th>1</th>
<td>Amazon.com, Inc.</td>
<td>Consumer Cyclical</td>
<td>1.967</td>
<td>2509939</td>
</tr>
<tr>
<th>2</th>
<td>Apple Inc.</td>
<td>Technology</td>
<td>-0.074</td>
<td>83252522</td>
</tr>
<tr>
<th>3</th>
<td>Netflix, Inc.</td>
<td>Communication Services</td>
<td>0.187</td>
<td>9416477</td>
</tr>
<tr>
<th>4</th>
<td>Alphabet Inc.</td>
<td>Communication Services</td>
<td>0.591</td>
<td>2381334</td>
</tr>
</tbody>
</table>
</div>
# BulkHistory
```python
from invest import BulkHistory
tickers = BulkHistory(start='2019-01-01', end='2020-01-01', interval='1mo') # 2019 historical data, month granularity
tickers
```
BulkHistory(ticker_symbols=['FB', 'AMZN', 'AAPL', 'NFLX', 'GOOG'], history={'start': '2019-01-01', 'end': '2020-01-01', 'interval': '1mo'})
```python
candlestick_plot(tickers['FB'])
```
[*********************100%***********************] 5 of 5 completed

Notice that the data doesn't download again when we ask for `GOOG` data. That's because the first download bulk downloaded the data for our whole list of ticker symbols.
```python
candlestick_plot(tickers['GOOG'])
```

## Notes
- - Though `Tickers` allows you to deal with a collection of tickers, it does so (for time being) by calling
yahoo's API for each individual ticker.
The API does, on the other hand, contain some bulk tickers routes which we intend to integrate.
For historical data (`history`), we have `BulkHistory` that uses the bulk API (through `yfinance.Tickers`),
but for other information (such at the `info` key), we don't (yet).
# All information
Some utils to get all data on a single ticker.
```python
from invest import Ticker
from invest import all_info, all_info_printable_string
ticker = Ticker('GOOG')
d = dict(all_info(ticker)) # all_info is a generator of (key, val) pairs (only for non-empty values), so can use dict to accumulate
list(d) # list of keys (data names) we have data (values) for, for the given ticker
```
['financials',
'quarterly_balance_sheet',
'institutional_holders',
'major_holders',
'history',
'quarterly_earnings',
'info',
'mutualfund_holders',
'calendar',
'option_chain',
'quarterly_cashflow',
'recommendations',
'cashflow',
'options',
'balance_sheet',
'quarterly_financials',
'isin',
'earnings']
```python
print(f"The following data is for ticker: {ticker.ticker_symbol}\n\n")
print(all_info_printable_string(ticker))
```
The following data is for ticker: GOOG
----------financials-------------
2019-12-31 2018-12-31 2017-12-31 \
Research Development 2.6018e+10 2.1419e+10 1.6625e+10
Effect Of Accounting Charges None None None
Income Before Tax 3.9625e+10 3.4913e+10 2.7193e+10
Minority Interest None None None
Net Income 3.4343e+10 3.0736e+10 1.2662e+10
Selling General Administrative 2.7461e+10 2.3256e+10 1.9733e+10
Gross Profit 8.9961e+10 7.727e+10 6.5272e+10
Ebit 3.6482e+10 3.2595e+10 2.8914e+10
Operating Income 3.6482e+10 3.2595e+10 2.8914e+10
Other Operating Expenses None None None
Interest Expense -1e+08 -1.14e+08 -1.09e+08
Extraordinary Items None None None
Non Recurring None None None
Other Items None None None
Income Tax Expense 5.282e+09 4.177e+09 1.4531e+10
Total Revenue 1.61857e+11 1.36819e+11 1.10855e+11
Total Operating Expenses 1.25375e+11 1.04224e+11 8.1941e+10
Cost Of Revenue 7.1896e+10 5.9549e+10 4.5583e+10
Total Other Income Expense Net 3.143e+09 2.318e+09 -1.721e+09
Discontinued Operations None None None
Net Income From Continuing Ops 3.4343e+10 3.0736e+10 1.2662e+10
Net Income Applicable To Common Shares 3.4343e+10 3.0736e+10 1.2662e+10
2016-12-31
Research Development 1.3948e+10
Effect Of Accounting Charges None
Income Before Tax 2.415e+10
Minority Interest None
Net Income 1.9478e+10
Selling General Administrative 1.747e+10
Gross Profit 5.5134e+10
Ebit 2.3716e+10
Operating Income 2.3716e+10
Other Operating Expenses None
Interest Expense -1.24e+08
Extraordinary Items None
Non Recurring None
Other Items None
Income Tax Expense 4.672e+09
Total Revenue 9.0272e+10
Total Operating Expenses 6.6556e+10
Cost Of Revenue 3.5138e+10
Total Other Income Expense Net 4.34e+08
Discontinued Operations None
Net Income From Continuing Ops 1.9478e+10
Net Income Applicable To Common Shares 1.9478e+10
----------quarterly_balance_sheet-------------
2020-09-30 2020-06-30 2020-03-31 \
Intangible Assets 1.520000e+09 1.697000e+09 1.840000e+09
Total Liab 8.632300e+10 7.117000e+10 6.974400e+10
Total Stockholder Equity 2.129200e+11 2.073220e+11 2.036590e+11
Other Current Liab 2.406800e+10 2.193400e+10 2.187200e+10
Total Assets 2.992430e+11 2.784920e+11 2.734030e+11
Common Stock 5.730700e+10 5.593700e+10 5.368800e+10
Other Current Assets 5.425000e+09 5.579000e+09 5.165000e+09
Retained Earnings 1.555670e+11 1.516810e+11 1.510680e+11
Other Liab 1.323700e+10 1.278500e+10 1.406300e+10
Good Will 2.087000e+10 2.082400e+10 2.073400e+10
Treasury Stock 4.600000e+07 -2.960000e+08 -1.097000e+09
Other Assets 3.799000e+09 3.626000e+09 3.478000e+09
Cash 2.012900e+10 1.774200e+10 1.964400e+10
Total Current Liabilities 4.820000e+10 4.365800e+10 4.018900e+10
Deferred Long Term Asset Charges 9.720000e+08 8.950000e+08 7.300000e+08
Short Long Term Debt 9.990000e+08 9.990000e+08 NaN
Other Stockholder Equity 4.600000e+07 -2.960000e+08 -1.097000e+09
Property Plant Equipment 9.358200e+10 9.031500e+10 8.796600e+10
Total Current Assets 1.643690e+11 1.490690e+11 1.470180e+11
Long Term Investments 1.510300e+10 1.296100e+10 1.236700e+10
Net Tangible Assets 1.905300e+11 1.848010e+11 1.810850e+11
Short Term Investments 1.124670e+11 1.033380e+11 9.758500e+10
Net Receivables 2.551300e+10 2.159500e+10 2.373500e+10
Long Term Debt 1.282800e+10 2.963000e+09 3.960000e+09
Inventory 8.350000e+08 8.150000e+08 8.890000e+08
Accounts Payable 4.391000e+09 4.064000e+09 4.099000e+09
2019-12-31
Intangible Assets 1.979000e+09
Total Liab 7.446700e+10
Total Stockholder Equity 2.014420e+11
Other Current Liab 2.215900e+10
Total Assets 2.759090e+11
Common Stock 5.055200e+10
Other Current Assets 4.412000e+09
Retained Earnings 1.521220e+11
Other Liab 1.447800e+10
Good Will 2.062400e+10
Treasury Stock -1.232000e+09
Other Assets 3.063000e+09
Cash 1.849800e+10
Total Current Liabilities 4.522100e+10
Deferred Long Term Asset Charges 7.210000e+08
Short Long Term Debt NaN
Other Stockholder Equity -1.232000e+09
Property Plant Equipment 8.458700e+10
Total Current Assets 1.525780e+11
Long Term Investments 1.307800e+10
Net Tangible Assets 1.788390e+11
Short Term Investments 1.011770e+11
Net Receivables 2.749200e+10
Long Term Debt 3.958000e+09
Inventory 9.990000e+08
Accounts Payable 5.561000e+09
----------institutional_holders-------------
Holder Shares Date Reported % Out \
0 Vanguard Group, Inc. (The) 22204175 2020-09-29 0.0673
1 Blackrock Inc. 20032538 2020-09-29 0.0607
2 Price (T.Rowe) Associates Inc 13396372 2020-09-29 0.0406
3 State Street Corporation 11589194 2020-09-29 0.0351
4 FMR, LLC 7687258 2020-09-29 0.0233
5 Geode Capital Management, LLC 4431554 2020-09-29 0.0134
6 Capital International Investors 4071062 2020-09-29 0.0123
7 Northern Trust Corporation 3981710 2020-09-29 0.0121
8 AllianceBernstein, L.P. 3889575 2020-09-29 0.0118
9 Bank Of New York Mellon Corporation 3519043 2020-09-29 0.0107
Value
0 32631255580
1 29439817844
2 19687308291
3 17031479502
4 11297194356
5 6512611758
6 5982832715
7 5851521016
8 5716119420
9 5171585592
----------major_holders-------------
0 1
0 5.84% % of Shares Held by All Insider
1 68.32% % of Shares Held by Institutions
2 72.56% % of Float Held by Institutions
3 3396 Number of Institutions Holding Shares
----------history-------------
Open High Low Close Volume \
Date
2020-10-30 1672.109985 1687.000000 1604.459961 1621.010010 4329100
2020-11-02 1628.160034 1660.770020 1616.030029 1626.030029 2535400
2020-11-03 1631.780029 1661.699951 1616.619995 1650.209961 1661700
2020-11-04 1710.280029 1771.364990 1706.030029 1749.130005 3570900
2020-11-05 1781.000000 1793.640015 1750.510010 1763.369995 2065800
2020-11-06 1753.949951 1772.430054 1740.349976 1761.750000 1660900
2020-11-09 1790.900024 1818.060059 1760.020020 1763.000000 2268300
2020-11-10 1731.089966 1763.000000 1717.300049 1740.390015 2636100
2020-11-11 1750.000000 1764.219971 1747.364990 1752.709961 1264000
2020-11-12 1747.630005 1768.270020 1745.599976 1749.839966 1247500
2020-11-13 1757.630005 1781.040039 1744.550049 1777.020020 1499900
2020-11-16 1771.699951 1799.069946 1767.689941 1781.380005 1246800
2020-11-17 1776.939941 1785.000000 1767.000000 1770.150024 1147100
2020-11-18 1765.229980 1773.469971 1746.140015 1746.780029 1173500
2020-11-19 1738.380005 1769.589966 1737.005005 1763.920044 1249900
2020-11-20 1765.209961 1774.000000 1741.859985 1742.189941 2313500
2020-11-23 1749.599976 1753.900024 1717.719971 1734.859985 2161600
2020-11-24 1730.500000 1771.599976 1727.689941 1768.880005 1578000
2020-11-25 1772.890015 1778.540039 1756.540039 1771.430054 1045800
2020-11-27 1773.089966 1804.000000 1772.439941 1793.189941 884900
2020-11-30 1781.180054 1788.064941 1755.010010 1765.175049 871053
Dividends Stock Splits
Date
2020-10-30 0 0
2020-11-02 0 0
2020-11-03 0 0
2020-11-04 0 0
2020-11-05 0 0
2020-11-06 0 0
2020-11-09 0 0
2020-11-10 0 0
2020-11-11 0 0
2020-11-12 0 0
2020-11-13 0 0
2020-11-16 0 0
2020-11-17 0 0
2020-11-18 0 0
2020-11-19 0 0
2020-11-20 0 0
2020-11-23 0 0
2020-11-24 0 0
2020-11-25 0 0
2020-11-27 0 0
2020-11-30 0 0
----------quarterly_earnings-------------
Revenue Earnings
Quarter
4Q2019 46075000000 10671000000
1Q2020 41159000000 6836000000
2Q2020 38297000000 6959000000
3Q2020 46173000000 11247000000
----------info-------------
{'zip': '94043', 'sector': 'Communication Services', 'fullTimeEmployees': 132121, 'longBusinessSummary': 'Alphabet Inc. provides online advertising services in the United States, Europe, the Middle East, Africa, the Asia-Pacific, Canada, and Latin America. It offers performance and brand advertising services. The company operates through Google and Other Bets segments. The Google segment offers products, such as Ads, Android, Chrome, Google Cloud, Google Maps, Google Play, Hardware, Search, and YouTube, as well as technical infrastructure. It also offers digital content, cloud services, hardware devices, and other miscellaneous products and services. The Other Bets segment includes businesses, including Access, Calico, CapitalG, GV, Verily, Waymo, and X, as well as Internet and television services. The company has an agreement with Sabre Corporation to develop an artificial intelligence-driven technology platform for travel. Alphabet Inc. was founded in 1998 and is headquartered in Mountain View, California.', 'city': 'Mountain View', 'phone': '650-253-0000', 'state': 'CA', 'country': 'United States', 'companyOfficers': [], 'website': 'http://www.abc.xyz', 'maxAge': 1, 'address1': '1600 Amphitheatre Parkway', 'industry': 'Internet Content & Information', 'previousClose': 1793.19, 'regularMarketOpen': 1781.18, 'twoHundredDayAverage': 1534.4911, 'trailingAnnualDividendYield': None, 'payoutRatio': 0, 'volume24Hr': None, 'regularMarketDayHigh': 1788.065, 'navPrice': None, 'averageDailyVolume10Day': 1596760, 'totalAssets': None, 'regularMarketPreviousClose': 1793.19, 'fiftyDayAverage': 1673.1482, 'trailingAnnualDividendRate': None, 'open': 1781.18, 'toCurrency': None, 'averageVolume10days': 1596760, 'expireDate': None, 'yield': None, 'algorithm': None, 'dividendRate': None, 'exDividendDate': None, 'beta': 1.023111, 'circulatingSupply': None, 'startDate': None, 'regularMarketDayLow': 1755.01, 'priceHint': 2, 'currency': 'USD', 'trailingPE': 34.105736, 'regularMarketVolume': 870307, 'lastMarket': None, 'maxSupply': None, 'openInterest': None, 'marketCap': 1191815020544, 'volumeAllCurrencies': None, 'strikePrice': None, 'averageVolume': 1823157, 'priceToSalesTrailing12Months': 6.9411025, 'dayLow': 1755.01, 'ask': 1763.88, 'ytdReturn': None, 'askSize': 1100, 'volume': 870307, 'fiftyTwoWeekHigh': 1818.06, 'forwardPE': 28.793476, 'fromCurrency': None, 'fiveYearAvgDividendYield': None, 'fiftyTwoWeekLow': 1013.536, 'bid': 1762.58, 'tradeable': False, 'dividendYield': None, 'bidSize': 900, 'dayHigh': 1788.065, 'exchange': 'NMS', 'shortName': 'Alphabet Inc.', 'longName': 'Alphabet Inc.', 'exchangeTimezoneName': 'America/New_York', 'exchangeTimezoneShortName': 'EST', 'isEsgPopulated': False, 'gmtOffSetMilliseconds': '-18000000', 'quoteType': 'EQUITY', 'symbol': 'GOOG', 'messageBoardId': 'finmb_29096', 'market': 'us_market', 'annualHoldingsTurnover': None, 'enterpriseToRevenue': 6.452, 'beta3Year': None, 'profitMargins': 0.20798999, 'enterpriseToEbitda': 23.045, '52WeekChange': 0.3901559, 'morningStarRiskRating': None, 'forwardEps': 61.3, 'revenueQuarterlyGrowth': None, 'sharesOutstanding': 329867008, 'fundInceptionDate': None, 'annualReportExpenseRatio': None, 'bookValue': 314.169, 'sharesShort': 2606917, 'sharesPercentSharesOut': 0.0039, 'fundFamily': None, 'lastFiscalYearEnd': 1577750400, 'heldPercentInstitutions': 0.68324995, 'netIncomeToCommon': 35712999424, 'trailingEps': 51.752, 'lastDividendValue': None, 'SandP52WeekChange': 0.16843343, 'priceToBook': 5.6181226, 'heldPercentInsiders': 0.0584, 'nextFiscalYearEnd': 1640908800, 'mostRecentQuarter': 1601424000, 'shortRatio': 1.32, 'sharesShortPreviousMonthDate': 1602720000, 'floatShares': 609554771, 'enterpriseValue': 1107906789376, 'threeYearAverageReturn': None, 'lastSplitDate': 1430092800, 'lastSplitFactor': '10000000:10000000', 'legalType': None, 'lastDividendDate': None, 'morningStarOverallRating': None, 'earningsQuarterlyGrowth': 0.591, 'dateShortInterest': 1605225600, 'pegRatio': 2.09, 'lastCapGain': None, 'shortPercentOfFloat': None, 'sharesShortPriorMonth': 2381334, 'category': None, 'fiveYearAverageReturn': None, 'regularMarketPrice': 1781.18, 'logo_url': 'https://logo.clearbit.com/abc.xyz'}
----------mutualfund_holders-------------
Holder Shares Date Reported \
0 Vanguard Total Stock Market Index Fund 8166693 2020-06-29
1 Vanguard 500 Index Fund 6100848 2020-06-29
2 Growth Fund Of America Inc 3027888 2020-09-29
3 SPDR S&P 500 ETF Trust 3008850 2020-10-30
4 Invesco ETF Tr-Invesco QQQ Tr, Series 1 ETF 2986897 2020-10-30
5 Price (T.Rowe) Blue Chip Growth Fund Inc. 2867378 2020-06-29
6 Fidelity 500 Index Fund 2612122 2020-08-30
7 Vanguard Institutional Index Fund-Institutiona... 2566970 2020-06-29
8 Vanguard Growth Index Fund 2263691 2020-06-29
9 iShares Core S&P 500 ETF 2254397 2020-09-29
% Out Value
0 0.0248 11544518891
1 0.0185 8624219741
2 0.0092 4449784204
3 0.0091 4877375938
4 0.0091 4841789905
5 0.0087 4053354214
6 0.0079 4268677529
7 0.0078 3628694461
8 0.0069 3199976234
9 0.0068 3313061831
----------calendar-------------
Empty DataFrame
Columns: []
Index: [Earnings Date, Earnings Average, Earnings Low, Earnings High, Revenue Average, Revenue Low, Revenue High]
----------option_chain-------------
Options(calls=Empty DataFrame
Columns: [contractSymbol, lastTradeDate, strike, lastPrice, bid, ask, change, percentChange, volume, openInterest, impliedVolatility, inTheMoney, contractSize, currency]
Index: [], puts=Empty DataFrame
Columns: [contractSymbol, lastTradeDate, strike, lastPrice, bid, ask, change, percentChange, volume, openInterest, impliedVolatility, inTheMoney, contractSize, currency]
Index: [])
----------quarterly_cashflow-------------
2020-09-30 2020-06-30 \
Investments -9.372000e+09 -3.011000e+09
Change To Liabilities 7.000000e+08 2.570000e+08
Total Cashflows From Investing Activities -1.519700e+10 -8.448000e+09
Net Borrowings 9.802000e+09 -3.500000e+07
Total Cash From Financing Activities 5.460000e+08 -7.498000e+09
Change To Operating Activities 3.726000e+09 1.367000e+09
Net Income 1.124700e+10 6.959000e+09
Change In Cash 2.387000e+09 -1.902000e+09
Repurchase Of Stock -7.897000e+09 -6.852000e+09
Effect Of Exchange Rate 3.500000e+07 5.100000e+07
Total Cash From Operating Activities 1.700300e+10 1.399300e+10
Depreciation 3.478000e+09 3.367000e+09
Other Cashflows From Investing Activities -4.060000e+08 1.190000e+08
Change To Account Receivables -3.601000e+09 -8.000000e+07
Other Cashflows From Financing Activities -1.359000e+09 -6.110000e+08
Change To Netincome 1.522000e+09 1.340000e+09
Capital Expenditures -5.406000e+09 -5.391000e+09
2020-03-31 2019-12-31
Investments 3.936000e+09 3.370000e+09
Change To Liabilities -7.980000e+08 1.000000e+09
Total Cashflows From Investing Activities -1.847000e+09 -4.703000e+09
Net Borrowings -4.900000e+07 -4.700000e+07
Total Cash From Financing Activities -8.186000e+09 -7.326000e+09
Change To Operating Activities -4.517000e+09 5.481000e+09
Net Income 6.836000e+09 1.067100e+10
Change In Cash 1.146000e+09 2.466000e+09
Repurchase Of Stock -8.496000e+09 -6.098000e+09
Effect Of Exchange Rate -2.720000e+08 6.800000e+07
Total Cash From Operating Activities 1.145100e+10 1.442700e+10
Depreciation 3.108000e+09 3.283000e+09
Other Cashflows From Investing Activities 4.120000e+08 1.210000e+08
Change To Account Receivables 2.602000e+09 -4.365000e+09
Other Cashflows From Financing Activities 3.590000e+08 -1.181000e+09
Change To Netincome 4.465000e+09 1.695000e+09
Capital Expenditures -6.005000e+09 -6.052000e+09
----------recommendations-------------
Firm To Grade From Grade Action
Date
2012-03-14 15:28:00 Oxen Group Hold init
2012-03-28 06:29:00 Citigroup Buy main
2012-04-03 08:45:00 Global Equities Research Overweight main
2012-04-05 06:34:00 Deutsche Bank Buy main
2012-04-09 06:03:00 Pivotal Research Buy main
... ... ... ... ...
2020-07-31 11:44:08 Raymond James Outperform main
2020-08-25 17:05:53 UBS Buy main
2020-10-30 11:38:47 Raymond James Outperform main
2020-10-30 12:38:37 Credit Suisse Outperform main
2020-10-30 17:00:50 Mizuho Buy main
[226 rows x 4 columns]
----------cashflow-------------
2019-12-31 2018-12-31 \
Investments -4.017000e+09 -1.972000e+09
Change To Liabilities 4.650000e+08 1.438000e+09
Total Cashflows From Investing Activities -2.949100e+10 -2.850400e+10
Net Borrowings -2.680000e+08 -6.100000e+07
Total Cash From Financing Activities -2.320900e+10 -1.317900e+10
Change To Operating Activities 7.822000e+09 7.890000e+09
Net Income 3.434300e+10 3.073600e+10
Change In Cash 1.797000e+09 5.986000e+09
Repurchase Of Stock -1.839600e+10 -9.075000e+09
Effect Of Exchange Rate -2.300000e+07 -3.020000e+08
Total Cash From Operating Activities 5.452000e+10 4.797100e+10
Depreciation 1.165100e+10 9.029000e+09
Other Cashflows From Investing Activities 5.890000e+08 5.890000e+08
Change To Account Receivables -4.340000e+09 -2.169000e+09
Other Cashflows From Financing Activities -4.545000e+09 -4.043000e+09
Change To Netincome 7.707000e+09 3.298000e+09
Capital Expenditures -2.354800e+10 -2.513900e+10
2017-12-31 2016-12-31
Investments -1.944800e+10 -1.822900e+10
Change To Liabilities 1.121000e+09 3.330000e+08
Total Cashflows From Investing Activities -3.140100e+10 -3.116500e+10
Net Borrowings -8.600000e+07 -1.335000e+09
Total Cash From Financing Activities -8.298000e+09 -8.332000e+09
Change To Operating Activities 3.682000e+09 2.420000e+09
Net Income 1.266200e+10 1.947800e+10
Change In Cash -2.203000e+09 -3.631000e+09
Repurchase Of Stock -4.846000e+09 -3.693000e+09
Effect Of Exchange Rate 4.050000e+08 -1.700000e+08
Total Cash From Operating Activities 3.709100e+10 3.603600e+10
Depreciation 6.899000e+09 6.100000e+09
Other Cashflows From Investing Activities 1.419000e+09 -1.978000e+09
Change To Account Receivables -3.768000e+09 -2.578000e+09
Other Cashflows From Financing Activities -3.366000e+09 -3.304000e+09
Change To Netincome 8.284000e+09 7.158000e+09
Capital Expenditures -1.318400e+10 -1.021200e+10
----------options-------------
('2020-12-01', '2020-12-04', '2020-12-11', '2020-12-18', '2020-12-24', '2020-12-31', '2021-01-08', '2021-01-15', '2021-02-19', '2021-03-19', '2021-06-18', '2021-07-16', '2021-08-20', '2021-09-17', '2021-10-15', '2022-01-21', '2022-06-17', '2023-01-20')
----------balance_sheet-------------
2019-12-31 2018-12-31 2017-12-31 \
Intangible Assets 1.979000e+09 2.220000e+09 2.692000e+09
Total Liab 7.446700e+10 5.516400e+10 4.479300e+10
Total Stockholder Equity 2.014420e+11 1.776280e+11 1.525020e+11
Other Current Liab 2.215900e+10 1.761200e+10 1.065100e+10
Total Assets 2.759090e+11 2.327920e+11 1.972950e+11
Common Stock 5.055200e+10 4.504900e+10 4.024700e+10
Other Current Assets 4.412000e+09 4.236000e+09 2.983000e+09
Retained Earnings 1.521220e+11 1.348850e+11 1.132470e+11
Other Liab 1.447800e+10 1.653200e+10 1.664100e+10
Good Will 2.062400e+10 1.788800e+10 1.674700e+10
Treasury Stock -1.232000e+09 -2.306000e+09 -9.920000e+08
Other Assets 3.063000e+09 3.430000e+09 3.352000e+09
Cash 1.849800e+10 1.670100e+10 1.071500e+10
Total Current Liabilities 4.522100e+10 3.462000e+10 2.418300e+10
Deferred Long Term Asset Charges 7.210000e+08 7.370000e+08 6.800000e+08
Other Stockholder Equity -1.232000e+09 -2.306000e+09 -9.920000e+08
Property Plant Equipment 8.458700e+10 5.971900e+10 4.238300e+10
Total Current Assets 1.525780e+11 1.356760e+11 1.243080e+11
Long Term Investments 1.307800e+10 1.385900e+10 7.813000e+09
Net Tangible Assets 1.788390e+11 1.575200e+11 1.330630e+11
Short Term Investments 1.011770e+11 9.243900e+10 9.115600e+10
Net Receivables 2.749200e+10 2.119300e+10 1.870500e+10
Long Term Debt 3.958000e+09 3.950000e+09 3.943000e+09
Inventory 9.990000e+08 1.107000e+09 7.490000e+08
Accounts Payable 5.561000e+09 4.378000e+09 3.137000e+09
2016-12-31
Intangible Assets 3.307000e+09
Total Liab 2.846100e+10
Total Stockholder Equity 1.390360e+11
Other Current Liab 5.851000e+09
Total Assets 1.674970e+11
Common Stock 3.630700e+10
Other Current Assets 3.175000e+09
Retained Earnings 1.051310e+11
Other Liab 7.770000e+09
Good Will 1.646800e+10
Treasury Stock -2.402000e+09
Other Assets 2.202000e+09
Cash 1.291800e+10
Total Current Liabilities 1.675600e+10
Deferred Long Term Asset Charges 3.830000e+08
Other Stockholder Equity -2.402000e+09
Property Plant Equipment 3.423400e+10
Total Current Assets 1.054080e+11
Long Term Investments 5.878000e+09
Net Tangible Assets 1.192610e+11
Short Term Investments 7.341500e+10
Net Receivables 1.563200e+10
Long Term Debt 3.935000e+09
Inventory 2.680000e+08
Accounts Payable 2.041000e+09
----------quarterly_financials-------------
2020-09-30 2020-06-30 2020-03-31 \
Research Development 6.856e+09 6.875e+09 6.82e+09
Effect Of Accounting Charges None None None
Income Before Tax 1.3359e+10 8.277e+09 7.757e+09
Minority Interest None None None
Net Income 1.1247e+10 6.959e+09 6.836e+09
Selling General Administrative 6.987e+09 6.486e+09 7.38e+09
Gross Profit 2.5056e+10 1.9744e+10 2.2177e+10
Ebit 1.1213e+10 6.383e+09 7.977e+09
Operating Income 1.1213e+10 6.383e+09 7.977e+09
Other Operating Expenses None None None
Interest Expense -4.8e+07 -1.3e+07 -2.1e+07
Extraordinary Items None None None
Non Recurring None None None
Other Items None None None
Income Tax Expense 2.112e+09 1.318e+09 9.21e+08
Total Revenue 4.6173e+10 3.8297e+10 4.1159e+10
Total Operating Expenses 3.496e+10 3.1914e+10 3.3182e+10
Cost Of Revenue 2.1117e+10 1.8553e+10 1.8982e+10
Total Other Income Expense Net 2.146e+09 1.894e+09 -2.2e+08
Discontinued Operations None None None
Net Income From Continuing Ops 1.1247e+10 6.959e+09 6.836e+09
Net Income Applicable To Common Shares 1.1247e+10 6.959e+09 6.836e+09
2019-12-31
Research Development 7.222e+09
Effect Of Accounting Charges None
Income Before Tax 1.0704e+10
Minority Interest None
Net Income 1.0671e+10
Selling General Administrative 8.567e+09
Gross Profit 2.5055e+10
Ebit 9.266e+09
Operating Income 9.266e+09
Other Operating Expenses None
Interest Expense -1.7e+07
Extraordinary Items None
Non Recurring None
Other Items None
Income Tax Expense 3.3e+07
Total Revenue 4.6075e+10
Total Operating Expenses 3.6809e+10
Cost Of Revenue 2.102e+10
Total Other Income Expense Net 1.438e+09
Discontinued Operations None
Net Income From Continuing Ops 1.0671e+10
Net Income Applicable To Common Shares 1.0671e+10
----------isin-------------
US02079K1079
----------earnings-------------
Revenue Earnings
Year
2016 90272000000 19478000000
2017 110855000000 12662000000
2018 136819000000 30736000000
2019 161857000000 34343000000
Raw data
{
"_id": null,
"home_page": "https://github.com/thorwhalen/invest",
"name": "invest",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "finance, stock market, trading, markets, python, quant, data",
"author": "Thor Whalen",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/a0/41/086cc77c4c2752a8faae8fbed83e95db2491a5d767441e6b6c3cbd30b2f3/invest-0.1.2.tar.gz",
"platform": "any",
"description": "# invest\n\nPython access to structure stock market information\n\n\nTo install:\t```pip install invest```\n\n- [invest](#invest)\n- [Quick Start](#quick-start)\n * [ticker_symbols argument](#ticker-symbols-argument)\n * [Notes](#notes)\n- [Configuring Ticker objects](#configuring-ticker-objects)\n * [Configure a Ticker instance](#configure-a-ticker-instance)\n * [Example](#example)\n * [Configure a Tickers instance](#configure-a-tickers-instance)\n- [Getting (only) specific information about tickers](#getting--only--specific-information-about-tickers)\n * [Example: Historical data](#example--historical-data)\n * [Example: Specific `'info'` fields](#example--specific---info---fields)\n- [BulkHistory](#bulkhistory)\n * [Notes](#notes-1)\n- [All information](#all-information)\n\n\n# Quick Start\n\n\n```python\nfrom invest import Tickers\n```\n\nGet a default list of tickers\n\n\n```python\ntickers = Tickers()\n```\n\n`tickers` is a dict-like container of tickers. So you can do dict-like things with it, like...\n\n- ask for it's length\n\n\n```python\nlen(tickers)\n```\n\n\n 4039\n\n\n\n- list the keys\n\n\n```python\nlist(tickers)[:5]\n```\n\n\n\n\n ['EGLE', 'KMPH', 'LONG', 'CYBR', 'PTC']\n\n\n\n- check for containment of a key\n\n\n```python\n'GOOG' in tickers\n```\n\n\n\n\n True\n\n\n\nThe values of this dict-like object are `Ticker` instances.\n\n\n```python\nticker = tickers['GOOG']\nticker\n```\n\n\n\n\n Ticker('GOOG')\n\n\n\nThis `ticker` object is also dict-like. Let's see how many keys there are:\n\n\n```python\nlen(ticker)\n```\n\n\n\n\n 40\n\n\n\nWhat are these keys?\n\n\n```python\nlist(ticker)\n```\n\n\n\n\n ['balancesheet',\n 'dividends',\n 'get_sustainability',\n 'get_info',\n 'get_institutional_holders',\n 'sustainability',\n 'quarterly_balance_sheet',\n 'get_balance_sheet',\n 'info',\n 'quarterly_earnings',\n 'isin',\n 'earnings',\n 'history',\n 'get_balancesheet',\n 'get_financials',\n 'balance_sheet',\n 'get_earnings',\n 'options',\n 'splits',\n 'get_recommendations',\n 'get_major_holders',\n 'get_dividends',\n 'actions',\n 'recommendations',\n 'cashflow',\n 'get_cashflow',\n 'get_splits',\n 'major_holders',\n 'institutional_holders',\n 'option_chain',\n 'get_actions',\n 'quarterly_financials',\n 'get_calendar',\n 'quarterly_cashflow',\n 'calendar',\n 'financials',\n 'quarterly_balancesheet',\n 'get_mutualfund_holders',\n 'get_isin',\n 'mutualfund_holders']\n\n\n\nLet's look at one of these, `'info'`, which contains a dict with a bunch of information about the ticker...\n\n\n```python\ninfo = ticker['info']\nprint(*info, sep=', ')\n```\n\n zip, sector, fullTimeEmployees, longBusinessSummary, city, phone, state, country, companyOfficers, website, maxAge, address1, industry, previousClose, regularMarketOpen, twoHundredDayAverage, trailingAnnualDividendYield, payoutRatio, volume24Hr, regularMarketDayHigh, navPrice, averageDailyVolume10Day, totalAssets, regularMarketPreviousClose, fiftyDayAverage, trailingAnnualDividendRate, open, toCurrency, averageVolume10days, expireDate, yield, algorithm, dividendRate, exDividendDate, beta, circulatingSupply, startDate, regularMarketDayLow, priceHint, currency, trailingPE, regularMarketVolume, lastMarket, maxSupply, openInterest, marketCap, volumeAllCurrencies, strikePrice, averageVolume, priceToSalesTrailing12Months, dayLow, ask, ytdReturn, askSize, volume, fiftyTwoWeekHigh, forwardPE, fromCurrency, fiveYearAvgDividendYield, fiftyTwoWeekLow, bid, tradeable, dividendYield, bidSize, dayHigh, exchange, shortName, longName, exchangeTimezoneName, exchangeTimezoneShortName, isEsgPopulated, gmtOffSetMilliseconds, quoteType, symbol, messageBoardId, market, annualHoldingsTurnover, enterpriseToRevenue, beta3Year, profitMargins, enterpriseToEbitda, 52WeekChange, morningStarRiskRating, forwardEps, revenueQuarterlyGrowth, sharesOutstanding, fundInceptionDate, annualReportExpenseRatio, bookValue, sharesShort, sharesPercentSharesOut, fundFamily, lastFiscalYearEnd, heldPercentInstitutions, netIncomeToCommon, trailingEps, lastDividendValue, SandP52WeekChange, priceToBook, heldPercentInsiders, nextFiscalYearEnd, mostRecentQuarter, shortRatio, sharesShortPreviousMonthDate, floatShares, enterpriseValue, threeYearAverageReturn, lastSplitDate, lastSplitFactor, legalType, lastDividendDate, morningStarOverallRating, earningsQuarterlyGrowth, dateShortInterest, pegRatio, lastCapGain, shortPercentOfFloat, sharesShortPriorMonth, category, fiveYearAverageReturn, regularMarketPrice, logo_url\n\n\n\n```python\ninfo['shortName']\n```\n\n\n\n\n 'Alphabet Inc.'\n\n\n\n\n```python\ninfo['sector']\n```\n\n\n\n\n 'Communication Services'\n\n\n\n\n```python\ndf = ticker['history']\ndf\n```\n\n\n\n\n<div>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>Open</th>\n <th>High</th>\n <th>Low</th>\n <th>Close</th>\n <th>Volume</th>\n <th>Dividends</th>\n <th>Stock Splits</th>\n </tr>\n <tr>\n <th>Date</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2020-10-28</th>\n <td>1559.739990</td>\n <td>1561.349976</td>\n <td>1514.619995</td>\n <td>1516.619995</td>\n <td>1834000</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-10-29</th>\n <td>1522.359985</td>\n <td>1593.709961</td>\n <td>1522.239990</td>\n <td>1567.239990</td>\n <td>2003100</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-10-30</th>\n <td>1672.109985</td>\n <td>1687.000000</td>\n <td>1604.459961</td>\n <td>1621.010010</td>\n <td>4329100</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-02</th>\n <td>1628.160034</td>\n <td>1660.770020</td>\n <td>1616.030029</td>\n <td>1626.030029</td>\n <td>2535400</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-03</th>\n <td>1631.780029</td>\n <td>1661.699951</td>\n <td>1616.619995</td>\n <td>1650.209961</td>\n <td>1661700</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-04</th>\n <td>1710.280029</td>\n <td>1771.364990</td>\n <td>1706.030029</td>\n <td>1749.130005</td>\n <td>3570900</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-05</th>\n <td>1781.000000</td>\n <td>1793.640015</td>\n <td>1750.510010</td>\n <td>1763.369995</td>\n <td>2065800</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-06</th>\n <td>1753.949951</td>\n <td>1772.430054</td>\n <td>1740.349976</td>\n <td>1761.750000</td>\n <td>1660900</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-09</th>\n <td>1790.900024</td>\n <td>1818.060059</td>\n <td>1760.020020</td>\n <td>1763.000000</td>\n <td>2268300</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-10</th>\n <td>1731.089966</td>\n <td>1763.000000</td>\n <td>1717.300049</td>\n <td>1740.390015</td>\n <td>2636100</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-11</th>\n <td>1750.000000</td>\n <td>1764.219971</td>\n <td>1747.364990</td>\n <td>1752.709961</td>\n <td>1264000</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-12</th>\n <td>1747.630005</td>\n <td>1768.270020</td>\n <td>1745.599976</td>\n <td>1749.839966</td>\n <td>1247500</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-13</th>\n <td>1757.630005</td>\n <td>1781.040039</td>\n <td>1744.550049</td>\n <td>1777.020020</td>\n <td>1499900</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-16</th>\n <td>1771.699951</td>\n <td>1799.069946</td>\n <td>1767.689941</td>\n <td>1781.380005</td>\n <td>1246800</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-17</th>\n <td>1776.939941</td>\n <td>1785.000000</td>\n <td>1767.000000</td>\n <td>1770.150024</td>\n <td>1147100</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-18</th>\n <td>1765.229980</td>\n <td>1773.469971</td>\n <td>1746.140015</td>\n <td>1746.780029</td>\n <td>1173500</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-19</th>\n <td>1738.380005</td>\n <td>1769.589966</td>\n <td>1737.005005</td>\n <td>1763.920044</td>\n <td>1249900</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-20</th>\n <td>1765.209961</td>\n <td>1774.000000</td>\n <td>1741.859985</td>\n <td>1742.189941</td>\n <td>2313500</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-23</th>\n <td>1749.599976</td>\n <td>1753.900024</td>\n <td>1717.719971</td>\n <td>1734.859985</td>\n <td>2161600</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-24</th>\n <td>1730.500000</td>\n <td>1771.599976</td>\n <td>1727.689941</td>\n <td>1768.880005</td>\n <td>1578000</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-25</th>\n <td>1772.890015</td>\n <td>1778.540039</td>\n <td>1756.540039</td>\n <td>1771.430054</td>\n <td>1045800</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-27</th>\n <td>1773.089966</td>\n <td>1804.000000</td>\n <td>1772.439941</td>\n <td>1793.189941</td>\n <td>884900</td>\n <td>0</td>\n <td>0</td>\n </tr>\n </tbody>\n</table>\n</div>\n\n\n\n\n```python\nfrom mplfinance import plot as candlestick_plot # pip install mplfinance if you don't have it already\n\ncandlestick_plot(df)\n```\n\n\n \n\n \n\n\nBut these are daily metrics and only for the recent (yes, I'm doing this on a Thanksgiving week-end!) past.\n\nHow do I get something different? Like a longer history, and/or at a finer time-granularity?\n\nSee the next _Configuring Ticker objects_ section on how to do that.\n\n## ticker_symbols argument\n\nThe first argument of `Tickers` is the `ticker_symbols` argument. \n\nOne can specify a collection (list, set, tuple, etc.) of ticker symbol strings, or a path to a file containing a pickle of such a collection.\n\nThe default is the string `'local_list'` which has the effect of using a default list (currently of about 4000 tickers), but it's contents can change in the future. \n\nNote that this `ticker_symbols` will have an effect on such affairs as `list(tickers)`, `len(tickers)`, or `s in tickers`, when it's relevant to use these. \n\nBut any `Tickers` object will allow access to any ticker symbol, regardless if it's in the `ticker_symbols` collection or not.\n\n\n```python\ntickers = Tickers(ticker_symbols=('GOOG', 'AAPL', 'AMZN'))\nassert list(tickers) == ['GOOG', 'AAPL', 'AMZN']\nassert len(tickers) == 3\nassert 'AAPL' in tickers\nassert 'NFLX' not in tickers\n# and yet we have access to NFLX info\nassert tickers['NFLX']['info']['shortName'] == 'Netflix, Inc.'\n```\n\n\n```python\n\n```\n\n## Notes\n\n- Both `Tickers` and `Ticker` instances have tab-triggered auto-suggestion enabled when you get an item. Example: `tickers['AA<now press the TAB button...>`.\n- The specification of \n\n\n```python\n\n```\n\n# Configuring Ticker objects\n\n## Configure a Ticker instance\n\nYou can instantiate a `Ticker` instance directly, from **any valid ticker symbol**. The `Tickers` class is just a way to make a collection of tickers to work with. \n\n\n```python\nfrom invest import Tickers, Ticker\n\nticker = Ticker('GOOG')\nticker\n```\n\n\n\n\n Ticker('GOOG')\n\n\n\nBut you'll notice that `Ticker` (and `Tickers`) have more than one argument. \n\n\n```python\nfrom inspect import signature\nprint(signature(Tickers))\nprint(signature(Ticker))\n```\n\n (ticker_symbols='local_list', **kwargs_for_method_keys)\n (ticker_symbol: str, **kwargs_for_method_keys)\n\n\nWhat's this `kwargs_for_method_keys`?\n\nWell, at the time of writing this, `Ticker` object is just a convenient dict-like interface to the attributes of the `Ticker` of the `yfinance` package which is itself a convenient python interface to the yahoo finance API. \n\nWhen you do `list(ticker)`, you're just getting a list of attributes of `yfinance.Ticker`: Both properties and methods that don't require any arguments. Though these methods don't require any arguments -- meaning all their arguments have defaults -- you can still specify if you want to use different defaults. \n\nThat's where `kwargs_for_method_keys` comes in. It specifies what `arg=val` pairs that should be used for particular methods of `yfinance.Ticker`. \n\nIf you want to know more about what you can do with the `Ticker` object, you might want to check out `yfinance`'s and yahoo finance API's documentation.\n\nFor the basics though, `invest` provides the `help_me_with` function (as a standalone function or as a method in `Tickers` and `Ticker`) for quick access to essentials.\n\n\n```python\nTicker.help_me_with('history')\n```\n\n history\n wraps <function TickerBase.history at 0x11a064940>, whose signature is:\n (self, period='1mo', interval='1d', start=None, end=None, prepost=False, actions=True, auto_adjust=True, back_adjust=False, proxy=None, rounding=False, tz=None, **kwargs)\n \n :Parameters:\n period : str\n Valid periods: 1d,5d,1mo,3mo,6mo,1y,2y,5y,10y,ytd,max\n Either Use period parameter or use start and end\n interval : str\n Valid intervals: 1m,2m,5m,15m,30m,60m,90m,1h,1d,5d,1wk,1mo,3mo\n Intraday data cannot extend last 60 days\n start: str\n Download start date string (YYYY-MM-DD) or _datetime.\n Default is 1900-01-01\n end: str\n Download end date string (YYYY-MM-DD) or _datetime.\n Default is now\n prepost : bool\n Include Pre and Post market data in results?\n Default is False\n auto_adjust: bool\n Adjust all OHLC automatically? Default is True\n back_adjust: bool\n Back-adjusted data to mimic true historical prices\n proxy: str\n Optional. Proxy server URL scheme. Default is None\n rounding: bool\n Round values to 2 decimal places?\n Optional. Default is False = precision suggested by Yahoo!\n tz: str\n Optional timezone locale for dates.\n (default data is returned as non-localized dates)\n **kwargs: dict\n debug: bool\n Optional. If passed as False, will suppress\n error message printing to console.\n \n \n\n\n## Example\n\nHere's you can get `history` to give you something different. \n\nSay, get data for the last day, with a granularity of 15 minutes.\n\n\n```python\nticker = Ticker('GOOG', history=dict(period='1d', interval='15m'))\nticker\n```\n\n\n\n\n Ticker('GOOG', history={'period': '1d', 'interval': '15m'})\n\n\n\nYour ticker is almost identical to the previous one we made, or the one we got from `Tickers`, except for the fact that asking for `ticker['history']` is going to give you something different.\n\n\n```python\ndf = ticker['history']\ndf\n```\n\n\n\n\n<div>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>Open</th>\n <th>High</th>\n <th>Low</th>\n <th>Close</th>\n <th>Volume</th>\n <th>Dividends</th>\n <th>Stock Splits</th>\n </tr>\n <tr>\n <th>Datetime</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2020-11-27 09:30:00-05:00</th>\n <td>1773.089966</td>\n <td>1789.890015</td>\n <td>1772.439941</td>\n <td>1785.000000</td>\n <td>119289</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-27 09:45:00-05:00</th>\n <td>1785.380005</td>\n <td>1786.979980</td>\n <td>1780.229980</td>\n <td>1785.089966</td>\n <td>50660</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-27 10:00:00-05:00</th>\n <td>1785.489990</td>\n <td>1786.989990</td>\n <td>1780.959961</td>\n <td>1785.800049</td>\n <td>50797</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-27 10:15:00-05:00</th>\n <td>1785.319946</td>\n <td>1795.925049</td>\n <td>1785.319946</td>\n <td>1791.589966</td>\n <td>72146</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-27 10:30:00-05:00</th>\n <td>1792.060059</td>\n <td>1798.999878</td>\n <td>1792.060059</td>\n <td>1796.699951</td>\n <td>48097</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-27 10:45:00-05:00</th>\n <td>1796.800049</td>\n <td>1800.199951</td>\n <td>1795.060059</td>\n <td>1799.959961</td>\n <td>56292</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-27 11:00:00-05:00</th>\n <td>1800.359985</td>\n <td>1800.449951</td>\n <td>1797.130005</td>\n <td>1797.660034</td>\n <td>41882</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-27 11:15:00-05:00</th>\n <td>1797.819946</td>\n <td>1802.599976</td>\n <td>1796.949951</td>\n <td>1802.579956</td>\n <td>60333</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-27 11:30:00-05:00</th>\n <td>1802.579956</td>\n <td>1804.000000</td>\n <td>1797.550049</td>\n <td>1798.185059</td>\n <td>45667</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-27 11:45:00-05:00</th>\n <td>1798.099976</td>\n <td>1798.603027</td>\n <td>1788.000000</td>\n <td>1788.739990</td>\n <td>47900</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-27 12:00:00-05:00</th>\n <td>1789.000000</td>\n <td>1791.599976</td>\n <td>1787.329956</td>\n <td>1787.500000</td>\n <td>36459</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-27 12:15:00-05:00</th>\n <td>1787.347534</td>\n <td>1788.530029</td>\n <td>1782.574951</td>\n <td>1787.952759</td>\n <td>46400</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-27 12:30:00-05:00</th>\n <td>1787.260010</td>\n <td>1788.920044</td>\n <td>1785.640015</td>\n <td>1785.640015</td>\n <td>45660</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-27 12:45:00-05:00</th>\n <td>1785.829956</td>\n <td>1793.420044</td>\n <td>1785.219971</td>\n <td>1792.520020</td>\n <td>97273</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-11-27 13:00:00-05:00</th>\n <td>1793.189941</td>\n <td>1793.189941</td>\n <td>1793.189941</td>\n <td>1793.189941</td>\n <td>46982</td>\n <td>0</td>\n <td>0</td>\n </tr>\n </tbody>\n</table>\n</div>\n\n\n\n\n```python\nfrom mplfinance import plot as candlestick_plot # pip install mplfinance if you don't have it already\n\ncandlestick_plt(df)\n```\n\n\n \n\n \n\n\n## Configure a Tickers instance\n\nLet's say we wanted all ticker instances that `Tickers` gives us to have their `history` be over a specific interval of time in the past (say, during the 2020 pandemic), at 5 day intervals...\n\n\n```python\ntickers = Tickers(ticker_symbols={'NFLX', 'AMZN', 'DAL'}, # demoing the fact that we can specify an explicit collection of ticker symbols\n history=dict(start='2020-03-01', end='2020-10-31', interval='5d'))\nlist(tickers)\n```\n\n\n\n\n ['DAL', 'AMZN', 'NFLX']\n\n\n\nSee that indeed, all tickers given by `tickers` are configured according to our wishes.\n\n\n```python\ntickers['NFLX']\n```\n\n\n\n\n Ticker('NFLX', history={'start': '2020-03-01', 'end': '2020-10-31', 'interval': '5d'})\n\n\n\n\n```python\nfrom mplfinance import plot as candlestick_plot # pip install mplfinance if you don't have it already\n\ncandlestick_plot(tickers['NFLX']['history'])\n```\n\n\n \n\n \n\n\n\n```python\ncandlestick_plot(tickers['AMZN']['history'])\n```\n\n\n \n\n \n\n\nSo Netflix and Amazon did well. \n\nDelta, less so:\n\n\n```python\ncandlestick_plot(tickers['DAL']['history'])\n```\n\n\n \n\n \n\n\n# Getting (only) specific information about tickers\n\n`Tickers` and `Ticker` are convenient if you want to analyze several aspects of a ticker since you can poke around the various keys (e.g. `info`, `history`, etc.). \n\nBut if a particular analysis only needs one of these, it's more convenient to use `TickersWithSpecificInfo`, \nwhich gives you the same interface as `Tickers` (in fact, it's a subclass if `Tickers`), \nbut fixes the key.\n\n## Example: Historical data\n\nFor example, if you're only interested in the historical data (a.k.a. the `'history'` key), you might do this:\n\n\n```python\nfrom invest import TickersWithSpecificInfo\n\ntickers = TickersWithSpecificInfo(specific_key='history', start='2008-01-01', end='2009-01-01', interval='1mo') # 2008 historical data, month granularity\ntickers\n```\n\n\n\n\n TickersWithSpecificInfo(ticker_symbols=<local_list>, specific_key=history, start=2008-01-01, end=2009-01-01, interval=1mo)\n\n\n\n\n```python\ncandlestick_plot(tickers['GOOG'])\n```\n\n\n \n\n \n\n\n\n```python\ncandlestick_plot(tickers['NFLX'])\n```\n\n\n \n\n \n\n\n\n```python\ncandlestick_plot(tickers['AMZN'])\n```\n\n\n \n\n \n\n\n\n```python\ncandlestick_plot(tickers['AAPL'])\n```\n\n\n \n\n \n\n\n## Example: Specific `'info'` fields\n\n\n```python\nfrom invest import TickersWithSpecificInfo\n\nthe_info_that_i_want = ['shortName', 'sector', 'earningsQuarterlyGrowth', 'sharesShortPriorMonth']\ntickers = TickersWithSpecificInfo(specific_key='info', val_trans=lambda d: {k: d[k] for k in the_info_that_i_want}) \ntickers\n```\n\n\n\n\n TickersWithSpecificInfo(ticker_symbols=<local_list>, specific_key=info, val_trans=<function <lambda> at 0x11c2374c0>)\n\n\n\nNow, you won't get the overwhelming amount of information you usually get with `info`:\n\n\n```python\ntickers['AAPL']\n```\n\n\n\n\n {'shortName': 'Apple Inc.',\n 'sector': 'Technology',\n 'earningsQuarterlyGrowth': -0.074,\n 'sharesShortPriorMonth': 83252522}\n\n\n\n\n```python\nfaang_tickers = ('FB', 'AMZN', 'AAPL', 'NFLX', 'GOOG')\nthe_info_that_i_want = ['shortName', 'sector', 'earningsQuarterlyGrowth', 'sharesShortPriorMonth']\ntickers = TickersWithSpecificInfo(faang_tickers, specific_key='info', val_trans=lambda d: {k: d[k] for k in the_info_that_i_want}) \ntickers\n```\n\n\n\n\n TickersWithSpecificInfo(ticker_symbols=('FB', 'AMZN', 'AAPL', 'NFLX', 'GOOG'), specific_key=info, val_trans=<function <lambda> at 0x11c237a60>)\n\n\n\n\n```python\ninfo_df = pd.DataFrame(list(tickers.values()))\ninfo_df\n```\n\n\n\n\n<div>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>shortName</th>\n <th>sector</th>\n <th>earningsQuarterlyGrowth</th>\n <th>sharesShortPriorMonth</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>Facebook, Inc.</td>\n <td>Communication Services</td>\n <td>0.288</td>\n <td>21187652</td>\n </tr>\n <tr>\n <th>1</th>\n <td>Amazon.com, Inc.</td>\n <td>Consumer Cyclical</td>\n <td>1.967</td>\n <td>2509939</td>\n </tr>\n <tr>\n <th>2</th>\n <td>Apple Inc.</td>\n <td>Technology</td>\n <td>-0.074</td>\n <td>83252522</td>\n </tr>\n <tr>\n <th>3</th>\n <td>Netflix, Inc.</td>\n <td>Communication Services</td>\n <td>0.187</td>\n <td>9416477</td>\n </tr>\n <tr>\n <th>4</th>\n <td>Alphabet Inc.</td>\n <td>Communication Services</td>\n <td>0.591</td>\n <td>2381334</td>\n </tr>\n </tbody>\n</table>\n</div>\n\n\n# BulkHistory\n\n\n```python\nfrom invest import BulkHistory\n\ntickers = BulkHistory(start='2019-01-01', end='2020-01-01', interval='1mo') # 2019 historical data, month granularity\ntickers\n```\n\n\n\n\n BulkHistory(ticker_symbols=['FB', 'AMZN', 'AAPL', 'NFLX', 'GOOG'], history={'start': '2019-01-01', 'end': '2020-01-01', 'interval': '1mo'})\n\n\n\n\n```python\ncandlestick_plot(tickers['FB'])\n```\n\n [*********************100%***********************] 5 of 5 completed\n\n\n\n \n\n \n\n\nNotice that the data doesn't download again when we ask for `GOOG` data. That's because the first download bulk downloaded the data for our whole list of ticker symbols.\n\n\n```python\ncandlestick_plot(tickers['GOOG'])\n```\n\n\n \n\n \n\n\n## Notes\n\n- - Though `Tickers` allows you to deal with a collection of tickers, it does so (for time being) by calling \nyahoo's API for each individual ticker. \nThe API does, on the other hand, contain some bulk tickers routes which we intend to integrate. \nFor historical data (`history`), we have `BulkHistory` that uses the bulk API (through `yfinance.Tickers`), \nbut for other information (such at the `info` key), we don't (yet).\n\n\n# All information\n\nSome utils to get all data on a single ticker.\n\n\n```python\nfrom invest import Ticker\nfrom invest import all_info, all_info_printable_string\n\nticker = Ticker('GOOG')\nd = dict(all_info(ticker)) # all_info is a generator of (key, val) pairs (only for non-empty values), so can use dict to accumulate\nlist(d) # list of keys (data names) we have data (values) for, for the given ticker\n```\n\n ['financials',\n 'quarterly_balance_sheet',\n 'institutional_holders',\n 'major_holders',\n 'history',\n 'quarterly_earnings',\n 'info',\n 'mutualfund_holders',\n 'calendar',\n 'option_chain',\n 'quarterly_cashflow',\n 'recommendations',\n 'cashflow',\n 'options',\n 'balance_sheet',\n 'quarterly_financials',\n 'isin',\n 'earnings']\n\n\n\n\n```python\nprint(f\"The following data is for ticker: {ticker.ticker_symbol}\\n\\n\")\nprint(all_info_printable_string(ticker))\n```\n\n\n The following data is for ticker: GOOG\n \n \n \n ----------financials-------------\n 2019-12-31 2018-12-31 2017-12-31 \\\n Research Development 2.6018e+10 2.1419e+10 1.6625e+10 \n Effect Of Accounting Charges None None None \n Income Before Tax 3.9625e+10 3.4913e+10 2.7193e+10 \n Minority Interest None None None \n Net Income 3.4343e+10 3.0736e+10 1.2662e+10 \n Selling General Administrative 2.7461e+10 2.3256e+10 1.9733e+10 \n Gross Profit 8.9961e+10 7.727e+10 6.5272e+10 \n Ebit 3.6482e+10 3.2595e+10 2.8914e+10 \n Operating Income 3.6482e+10 3.2595e+10 2.8914e+10 \n Other Operating Expenses None None None \n Interest Expense -1e+08 -1.14e+08 -1.09e+08 \n Extraordinary Items None None None \n Non Recurring None None None \n Other Items None None None \n Income Tax Expense 5.282e+09 4.177e+09 1.4531e+10 \n Total Revenue 1.61857e+11 1.36819e+11 1.10855e+11 \n Total Operating Expenses 1.25375e+11 1.04224e+11 8.1941e+10 \n Cost Of Revenue 7.1896e+10 5.9549e+10 4.5583e+10 \n Total Other Income Expense Net 3.143e+09 2.318e+09 -1.721e+09 \n Discontinued Operations None None None \n Net Income From Continuing Ops 3.4343e+10 3.0736e+10 1.2662e+10 \n Net Income Applicable To Common Shares 3.4343e+10 3.0736e+10 1.2662e+10 \n \n 2016-12-31 \n Research Development 1.3948e+10 \n Effect Of Accounting Charges None \n Income Before Tax 2.415e+10 \n Minority Interest None \n Net Income 1.9478e+10 \n Selling General Administrative 1.747e+10 \n Gross Profit 5.5134e+10 \n Ebit 2.3716e+10 \n Operating Income 2.3716e+10 \n Other Operating Expenses None \n Interest Expense -1.24e+08 \n Extraordinary Items None \n Non Recurring None \n Other Items None \n Income Tax Expense 4.672e+09 \n Total Revenue 9.0272e+10 \n Total Operating Expenses 6.6556e+10 \n Cost Of Revenue 3.5138e+10 \n Total Other Income Expense Net 4.34e+08 \n Discontinued Operations None \n Net Income From Continuing Ops 1.9478e+10 \n Net Income Applicable To Common Shares 1.9478e+10 \n \n ----------quarterly_balance_sheet-------------\n 2020-09-30 2020-06-30 2020-03-31 \\\n Intangible Assets 1.520000e+09 1.697000e+09 1.840000e+09 \n Total Liab 8.632300e+10 7.117000e+10 6.974400e+10 \n Total Stockholder Equity 2.129200e+11 2.073220e+11 2.036590e+11 \n Other Current Liab 2.406800e+10 2.193400e+10 2.187200e+10 \n Total Assets 2.992430e+11 2.784920e+11 2.734030e+11 \n Common Stock 5.730700e+10 5.593700e+10 5.368800e+10 \n Other Current Assets 5.425000e+09 5.579000e+09 5.165000e+09 \n Retained Earnings 1.555670e+11 1.516810e+11 1.510680e+11 \n Other Liab 1.323700e+10 1.278500e+10 1.406300e+10 \n Good Will 2.087000e+10 2.082400e+10 2.073400e+10 \n Treasury Stock 4.600000e+07 -2.960000e+08 -1.097000e+09 \n Other Assets 3.799000e+09 3.626000e+09 3.478000e+09 \n Cash 2.012900e+10 1.774200e+10 1.964400e+10 \n Total Current Liabilities 4.820000e+10 4.365800e+10 4.018900e+10 \n Deferred Long Term Asset Charges 9.720000e+08 8.950000e+08 7.300000e+08 \n Short Long Term Debt 9.990000e+08 9.990000e+08 NaN \n Other Stockholder Equity 4.600000e+07 -2.960000e+08 -1.097000e+09 \n Property Plant Equipment 9.358200e+10 9.031500e+10 8.796600e+10 \n Total Current Assets 1.643690e+11 1.490690e+11 1.470180e+11 \n Long Term Investments 1.510300e+10 1.296100e+10 1.236700e+10 \n Net Tangible Assets 1.905300e+11 1.848010e+11 1.810850e+11 \n Short Term Investments 1.124670e+11 1.033380e+11 9.758500e+10 \n Net Receivables 2.551300e+10 2.159500e+10 2.373500e+10 \n Long Term Debt 1.282800e+10 2.963000e+09 3.960000e+09 \n Inventory 8.350000e+08 8.150000e+08 8.890000e+08 \n Accounts Payable 4.391000e+09 4.064000e+09 4.099000e+09 \n \n 2019-12-31 \n Intangible Assets 1.979000e+09 \n Total Liab 7.446700e+10 \n Total Stockholder Equity 2.014420e+11 \n Other Current Liab 2.215900e+10 \n Total Assets 2.759090e+11 \n Common Stock 5.055200e+10 \n Other Current Assets 4.412000e+09 \n Retained Earnings 1.521220e+11 \n Other Liab 1.447800e+10 \n Good Will 2.062400e+10 \n Treasury Stock -1.232000e+09 \n Other Assets 3.063000e+09 \n Cash 1.849800e+10 \n Total Current Liabilities 4.522100e+10 \n Deferred Long Term Asset Charges 7.210000e+08 \n Short Long Term Debt NaN \n Other Stockholder Equity -1.232000e+09 \n Property Plant Equipment 8.458700e+10 \n Total Current Assets 1.525780e+11 \n Long Term Investments 1.307800e+10 \n Net Tangible Assets 1.788390e+11 \n Short Term Investments 1.011770e+11 \n Net Receivables 2.749200e+10 \n Long Term Debt 3.958000e+09 \n Inventory 9.990000e+08 \n Accounts Payable 5.561000e+09 \n \n ----------institutional_holders-------------\n Holder Shares Date Reported % Out \\\n 0 Vanguard Group, Inc. (The) 22204175 2020-09-29 0.0673 \n 1 Blackrock Inc. 20032538 2020-09-29 0.0607 \n 2 Price (T.Rowe) Associates Inc 13396372 2020-09-29 0.0406 \n 3 State Street Corporation 11589194 2020-09-29 0.0351 \n 4 FMR, LLC 7687258 2020-09-29 0.0233 \n 5 Geode Capital Management, LLC 4431554 2020-09-29 0.0134 \n 6 Capital International Investors 4071062 2020-09-29 0.0123 \n 7 Northern Trust Corporation 3981710 2020-09-29 0.0121 \n 8 AllianceBernstein, L.P. 3889575 2020-09-29 0.0118 \n 9 Bank Of New York Mellon Corporation 3519043 2020-09-29 0.0107 \n \n Value \n 0 32631255580 \n 1 29439817844 \n 2 19687308291 \n 3 17031479502 \n 4 11297194356 \n 5 6512611758 \n 6 5982832715 \n 7 5851521016 \n 8 5716119420 \n 9 5171585592 \n \n ----------major_holders-------------\n 0 1\n 0 5.84% % of Shares Held by All Insider\n 1 68.32% % of Shares Held by Institutions\n 2 72.56% % of Float Held by Institutions\n 3 3396 Number of Institutions Holding Shares\n \n ----------history-------------\n Open High Low Close Volume \\\n Date \n 2020-10-30 1672.109985 1687.000000 1604.459961 1621.010010 4329100 \n 2020-11-02 1628.160034 1660.770020 1616.030029 1626.030029 2535400 \n 2020-11-03 1631.780029 1661.699951 1616.619995 1650.209961 1661700 \n 2020-11-04 1710.280029 1771.364990 1706.030029 1749.130005 3570900 \n 2020-11-05 1781.000000 1793.640015 1750.510010 1763.369995 2065800 \n 2020-11-06 1753.949951 1772.430054 1740.349976 1761.750000 1660900 \n 2020-11-09 1790.900024 1818.060059 1760.020020 1763.000000 2268300 \n 2020-11-10 1731.089966 1763.000000 1717.300049 1740.390015 2636100 \n 2020-11-11 1750.000000 1764.219971 1747.364990 1752.709961 1264000 \n 2020-11-12 1747.630005 1768.270020 1745.599976 1749.839966 1247500 \n 2020-11-13 1757.630005 1781.040039 1744.550049 1777.020020 1499900 \n 2020-11-16 1771.699951 1799.069946 1767.689941 1781.380005 1246800 \n 2020-11-17 1776.939941 1785.000000 1767.000000 1770.150024 1147100 \n 2020-11-18 1765.229980 1773.469971 1746.140015 1746.780029 1173500 \n 2020-11-19 1738.380005 1769.589966 1737.005005 1763.920044 1249900 \n 2020-11-20 1765.209961 1774.000000 1741.859985 1742.189941 2313500 \n 2020-11-23 1749.599976 1753.900024 1717.719971 1734.859985 2161600 \n 2020-11-24 1730.500000 1771.599976 1727.689941 1768.880005 1578000 \n 2020-11-25 1772.890015 1778.540039 1756.540039 1771.430054 1045800 \n 2020-11-27 1773.089966 1804.000000 1772.439941 1793.189941 884900 \n 2020-11-30 1781.180054 1788.064941 1755.010010 1765.175049 871053 \n \n Dividends Stock Splits \n Date \n 2020-10-30 0 0 \n 2020-11-02 0 0 \n 2020-11-03 0 0 \n 2020-11-04 0 0 \n 2020-11-05 0 0 \n 2020-11-06 0 0 \n 2020-11-09 0 0 \n 2020-11-10 0 0 \n 2020-11-11 0 0 \n 2020-11-12 0 0 \n 2020-11-13 0 0 \n 2020-11-16 0 0 \n 2020-11-17 0 0 \n 2020-11-18 0 0 \n 2020-11-19 0 0 \n 2020-11-20 0 0 \n 2020-11-23 0 0 \n 2020-11-24 0 0 \n 2020-11-25 0 0 \n 2020-11-27 0 0 \n 2020-11-30 0 0 \n \n ----------quarterly_earnings-------------\n Revenue Earnings\n Quarter \n 4Q2019 46075000000 10671000000\n 1Q2020 41159000000 6836000000\n 2Q2020 38297000000 6959000000\n 3Q2020 46173000000 11247000000\n \n ----------info-------------\n {'zip': '94043', 'sector': 'Communication Services', 'fullTimeEmployees': 132121, 'longBusinessSummary': 'Alphabet Inc. provides online advertising services in the United States, Europe, the Middle East, Africa, the Asia-Pacific, Canada, and Latin America. It offers performance and brand advertising services. The company operates through Google and Other Bets segments. The Google segment offers products, such as Ads, Android, Chrome, Google Cloud, Google Maps, Google Play, Hardware, Search, and YouTube, as well as technical infrastructure. It also offers digital content, cloud services, hardware devices, and other miscellaneous products and services. The Other Bets segment includes businesses, including Access, Calico, CapitalG, GV, Verily, Waymo, and X, as well as Internet and television services. The company has an agreement with Sabre Corporation to develop an artificial intelligence-driven technology platform for travel. Alphabet Inc. was founded in 1998 and is headquartered in Mountain View, California.', 'city': 'Mountain View', 'phone': '650-253-0000', 'state': 'CA', 'country': 'United States', 'companyOfficers': [], 'website': 'http://www.abc.xyz', 'maxAge': 1, 'address1': '1600 Amphitheatre Parkway', 'industry': 'Internet Content & Information', 'previousClose': 1793.19, 'regularMarketOpen': 1781.18, 'twoHundredDayAverage': 1534.4911, 'trailingAnnualDividendYield': None, 'payoutRatio': 0, 'volume24Hr': None, 'regularMarketDayHigh': 1788.065, 'navPrice': None, 'averageDailyVolume10Day': 1596760, 'totalAssets': None, 'regularMarketPreviousClose': 1793.19, 'fiftyDayAverage': 1673.1482, 'trailingAnnualDividendRate': None, 'open': 1781.18, 'toCurrency': None, 'averageVolume10days': 1596760, 'expireDate': None, 'yield': None, 'algorithm': None, 'dividendRate': None, 'exDividendDate': None, 'beta': 1.023111, 'circulatingSupply': None, 'startDate': None, 'regularMarketDayLow': 1755.01, 'priceHint': 2, 'currency': 'USD', 'trailingPE': 34.105736, 'regularMarketVolume': 870307, 'lastMarket': None, 'maxSupply': None, 'openInterest': None, 'marketCap': 1191815020544, 'volumeAllCurrencies': None, 'strikePrice': None, 'averageVolume': 1823157, 'priceToSalesTrailing12Months': 6.9411025, 'dayLow': 1755.01, 'ask': 1763.88, 'ytdReturn': None, 'askSize': 1100, 'volume': 870307, 'fiftyTwoWeekHigh': 1818.06, 'forwardPE': 28.793476, 'fromCurrency': None, 'fiveYearAvgDividendYield': None, 'fiftyTwoWeekLow': 1013.536, 'bid': 1762.58, 'tradeable': False, 'dividendYield': None, 'bidSize': 900, 'dayHigh': 1788.065, 'exchange': 'NMS', 'shortName': 'Alphabet Inc.', 'longName': 'Alphabet Inc.', 'exchangeTimezoneName': 'America/New_York', 'exchangeTimezoneShortName': 'EST', 'isEsgPopulated': False, 'gmtOffSetMilliseconds': '-18000000', 'quoteType': 'EQUITY', 'symbol': 'GOOG', 'messageBoardId': 'finmb_29096', 'market': 'us_market', 'annualHoldingsTurnover': None, 'enterpriseToRevenue': 6.452, 'beta3Year': None, 'profitMargins': 0.20798999, 'enterpriseToEbitda': 23.045, '52WeekChange': 0.3901559, 'morningStarRiskRating': None, 'forwardEps': 61.3, 'revenueQuarterlyGrowth': None, 'sharesOutstanding': 329867008, 'fundInceptionDate': None, 'annualReportExpenseRatio': None, 'bookValue': 314.169, 'sharesShort': 2606917, 'sharesPercentSharesOut': 0.0039, 'fundFamily': None, 'lastFiscalYearEnd': 1577750400, 'heldPercentInstitutions': 0.68324995, 'netIncomeToCommon': 35712999424, 'trailingEps': 51.752, 'lastDividendValue': None, 'SandP52WeekChange': 0.16843343, 'priceToBook': 5.6181226, 'heldPercentInsiders': 0.0584, 'nextFiscalYearEnd': 1640908800, 'mostRecentQuarter': 1601424000, 'shortRatio': 1.32, 'sharesShortPreviousMonthDate': 1602720000, 'floatShares': 609554771, 'enterpriseValue': 1107906789376, 'threeYearAverageReturn': None, 'lastSplitDate': 1430092800, 'lastSplitFactor': '10000000:10000000', 'legalType': None, 'lastDividendDate': None, 'morningStarOverallRating': None, 'earningsQuarterlyGrowth': 0.591, 'dateShortInterest': 1605225600, 'pegRatio': 2.09, 'lastCapGain': None, 'shortPercentOfFloat': None, 'sharesShortPriorMonth': 2381334, 'category': None, 'fiveYearAverageReturn': None, 'regularMarketPrice': 1781.18, 'logo_url': 'https://logo.clearbit.com/abc.xyz'}\n \n ----------mutualfund_holders-------------\n Holder Shares Date Reported \\\n 0 Vanguard Total Stock Market Index Fund 8166693 2020-06-29 \n 1 Vanguard 500 Index Fund 6100848 2020-06-29 \n 2 Growth Fund Of America Inc 3027888 2020-09-29 \n 3 SPDR S&P 500 ETF Trust 3008850 2020-10-30 \n 4 Invesco ETF Tr-Invesco QQQ Tr, Series 1 ETF 2986897 2020-10-30 \n 5 Price (T.Rowe) Blue Chip Growth Fund Inc. 2867378 2020-06-29 \n 6 Fidelity 500 Index Fund 2612122 2020-08-30 \n 7 Vanguard Institutional Index Fund-Institutiona... 2566970 2020-06-29 \n 8 Vanguard Growth Index Fund 2263691 2020-06-29 \n 9 iShares Core S&P 500 ETF 2254397 2020-09-29 \n \n % Out Value \n 0 0.0248 11544518891 \n 1 0.0185 8624219741 \n 2 0.0092 4449784204 \n 3 0.0091 4877375938 \n 4 0.0091 4841789905 \n 5 0.0087 4053354214 \n 6 0.0079 4268677529 \n 7 0.0078 3628694461 \n 8 0.0069 3199976234 \n 9 0.0068 3313061831 \n \n ----------calendar-------------\n Empty DataFrame\n Columns: []\n Index: [Earnings Date, Earnings Average, Earnings Low, Earnings High, Revenue Average, Revenue Low, Revenue High]\n \n ----------option_chain-------------\n Options(calls=Empty DataFrame\n Columns: [contractSymbol, lastTradeDate, strike, lastPrice, bid, ask, change, percentChange, volume, openInterest, impliedVolatility, inTheMoney, contractSize, currency]\n Index: [], puts=Empty DataFrame\n Columns: [contractSymbol, lastTradeDate, strike, lastPrice, bid, ask, change, percentChange, volume, openInterest, impliedVolatility, inTheMoney, contractSize, currency]\n Index: [])\n \n ----------quarterly_cashflow-------------\n 2020-09-30 2020-06-30 \\\n Investments -9.372000e+09 -3.011000e+09 \n Change To Liabilities 7.000000e+08 2.570000e+08 \n Total Cashflows From Investing Activities -1.519700e+10 -8.448000e+09 \n Net Borrowings 9.802000e+09 -3.500000e+07 \n Total Cash From Financing Activities 5.460000e+08 -7.498000e+09 \n Change To Operating Activities 3.726000e+09 1.367000e+09 \n Net Income 1.124700e+10 6.959000e+09 \n Change In Cash 2.387000e+09 -1.902000e+09 \n Repurchase Of Stock -7.897000e+09 -6.852000e+09 \n Effect Of Exchange Rate 3.500000e+07 5.100000e+07 \n Total Cash From Operating Activities 1.700300e+10 1.399300e+10 \n Depreciation 3.478000e+09 3.367000e+09 \n Other Cashflows From Investing Activities -4.060000e+08 1.190000e+08 \n Change To Account Receivables -3.601000e+09 -8.000000e+07 \n Other Cashflows From Financing Activities -1.359000e+09 -6.110000e+08 \n Change To Netincome 1.522000e+09 1.340000e+09 \n Capital Expenditures -5.406000e+09 -5.391000e+09 \n \n 2020-03-31 2019-12-31 \n Investments 3.936000e+09 3.370000e+09 \n Change To Liabilities -7.980000e+08 1.000000e+09 \n Total Cashflows From Investing Activities -1.847000e+09 -4.703000e+09 \n Net Borrowings -4.900000e+07 -4.700000e+07 \n Total Cash From Financing Activities -8.186000e+09 -7.326000e+09 \n Change To Operating Activities -4.517000e+09 5.481000e+09 \n Net Income 6.836000e+09 1.067100e+10 \n Change In Cash 1.146000e+09 2.466000e+09 \n Repurchase Of Stock -8.496000e+09 -6.098000e+09 \n Effect Of Exchange Rate -2.720000e+08 6.800000e+07 \n Total Cash From Operating Activities 1.145100e+10 1.442700e+10 \n Depreciation 3.108000e+09 3.283000e+09 \n Other Cashflows From Investing Activities 4.120000e+08 1.210000e+08 \n Change To Account Receivables 2.602000e+09 -4.365000e+09 \n Other Cashflows From Financing Activities 3.590000e+08 -1.181000e+09 \n Change To Netincome 4.465000e+09 1.695000e+09 \n Capital Expenditures -6.005000e+09 -6.052000e+09 \n \n ----------recommendations-------------\n Firm To Grade From Grade Action\n Date \n 2012-03-14 15:28:00 Oxen Group Hold init\n 2012-03-28 06:29:00 Citigroup Buy main\n 2012-04-03 08:45:00 Global Equities Research Overweight main\n 2012-04-05 06:34:00 Deutsche Bank Buy main\n 2012-04-09 06:03:00 Pivotal Research Buy main\n ... ... ... ... ...\n 2020-07-31 11:44:08 Raymond James Outperform main\n 2020-08-25 17:05:53 UBS Buy main\n 2020-10-30 11:38:47 Raymond James Outperform main\n 2020-10-30 12:38:37 Credit Suisse Outperform main\n 2020-10-30 17:00:50 Mizuho Buy main\n \n [226 rows x 4 columns]\n \n ----------cashflow-------------\n 2019-12-31 2018-12-31 \\\n Investments -4.017000e+09 -1.972000e+09 \n Change To Liabilities 4.650000e+08 1.438000e+09 \n Total Cashflows From Investing Activities -2.949100e+10 -2.850400e+10 \n Net Borrowings -2.680000e+08 -6.100000e+07 \n Total Cash From Financing Activities -2.320900e+10 -1.317900e+10 \n Change To Operating Activities 7.822000e+09 7.890000e+09 \n Net Income 3.434300e+10 3.073600e+10 \n Change In Cash 1.797000e+09 5.986000e+09 \n Repurchase Of Stock -1.839600e+10 -9.075000e+09 \n Effect Of Exchange Rate -2.300000e+07 -3.020000e+08 \n Total Cash From Operating Activities 5.452000e+10 4.797100e+10 \n Depreciation 1.165100e+10 9.029000e+09 \n Other Cashflows From Investing Activities 5.890000e+08 5.890000e+08 \n Change To Account Receivables -4.340000e+09 -2.169000e+09 \n Other Cashflows From Financing Activities -4.545000e+09 -4.043000e+09 \n Change To Netincome 7.707000e+09 3.298000e+09 \n Capital Expenditures -2.354800e+10 -2.513900e+10 \n \n 2017-12-31 2016-12-31 \n Investments -1.944800e+10 -1.822900e+10 \n Change To Liabilities 1.121000e+09 3.330000e+08 \n Total Cashflows From Investing Activities -3.140100e+10 -3.116500e+10 \n Net Borrowings -8.600000e+07 -1.335000e+09 \n Total Cash From Financing Activities -8.298000e+09 -8.332000e+09 \n Change To Operating Activities 3.682000e+09 2.420000e+09 \n Net Income 1.266200e+10 1.947800e+10 \n Change In Cash -2.203000e+09 -3.631000e+09 \n Repurchase Of Stock -4.846000e+09 -3.693000e+09 \n Effect Of Exchange Rate 4.050000e+08 -1.700000e+08 \n Total Cash From Operating Activities 3.709100e+10 3.603600e+10 \n Depreciation 6.899000e+09 6.100000e+09 \n Other Cashflows From Investing Activities 1.419000e+09 -1.978000e+09 \n Change To Account Receivables -3.768000e+09 -2.578000e+09 \n Other Cashflows From Financing Activities -3.366000e+09 -3.304000e+09 \n Change To Netincome 8.284000e+09 7.158000e+09 \n Capital Expenditures -1.318400e+10 -1.021200e+10 \n \n ----------options-------------\n ('2020-12-01', '2020-12-04', '2020-12-11', '2020-12-18', '2020-12-24', '2020-12-31', '2021-01-08', '2021-01-15', '2021-02-19', '2021-03-19', '2021-06-18', '2021-07-16', '2021-08-20', '2021-09-17', '2021-10-15', '2022-01-21', '2022-06-17', '2023-01-20')\n \n ----------balance_sheet-------------\n 2019-12-31 2018-12-31 2017-12-31 \\\n Intangible Assets 1.979000e+09 2.220000e+09 2.692000e+09 \n Total Liab 7.446700e+10 5.516400e+10 4.479300e+10 \n Total Stockholder Equity 2.014420e+11 1.776280e+11 1.525020e+11 \n Other Current Liab 2.215900e+10 1.761200e+10 1.065100e+10 \n Total Assets 2.759090e+11 2.327920e+11 1.972950e+11 \n Common Stock 5.055200e+10 4.504900e+10 4.024700e+10 \n Other Current Assets 4.412000e+09 4.236000e+09 2.983000e+09 \n Retained Earnings 1.521220e+11 1.348850e+11 1.132470e+11 \n Other Liab 1.447800e+10 1.653200e+10 1.664100e+10 \n Good Will 2.062400e+10 1.788800e+10 1.674700e+10 \n Treasury Stock -1.232000e+09 -2.306000e+09 -9.920000e+08 \n Other Assets 3.063000e+09 3.430000e+09 3.352000e+09 \n Cash 1.849800e+10 1.670100e+10 1.071500e+10 \n Total Current Liabilities 4.522100e+10 3.462000e+10 2.418300e+10 \n Deferred Long Term Asset Charges 7.210000e+08 7.370000e+08 6.800000e+08 \n Other Stockholder Equity -1.232000e+09 -2.306000e+09 -9.920000e+08 \n Property Plant Equipment 8.458700e+10 5.971900e+10 4.238300e+10 \n Total Current Assets 1.525780e+11 1.356760e+11 1.243080e+11 \n Long Term Investments 1.307800e+10 1.385900e+10 7.813000e+09 \n Net Tangible Assets 1.788390e+11 1.575200e+11 1.330630e+11 \n Short Term Investments 1.011770e+11 9.243900e+10 9.115600e+10 \n Net Receivables 2.749200e+10 2.119300e+10 1.870500e+10 \n Long Term Debt 3.958000e+09 3.950000e+09 3.943000e+09 \n Inventory 9.990000e+08 1.107000e+09 7.490000e+08 \n Accounts Payable 5.561000e+09 4.378000e+09 3.137000e+09 \n \n 2016-12-31 \n Intangible Assets 3.307000e+09 \n Total Liab 2.846100e+10 \n Total Stockholder Equity 1.390360e+11 \n Other Current Liab 5.851000e+09 \n Total Assets 1.674970e+11 \n Common Stock 3.630700e+10 \n Other Current Assets 3.175000e+09 \n Retained Earnings 1.051310e+11 \n Other Liab 7.770000e+09 \n Good Will 1.646800e+10 \n Treasury Stock -2.402000e+09 \n Other Assets 2.202000e+09 \n Cash 1.291800e+10 \n Total Current Liabilities 1.675600e+10 \n Deferred Long Term Asset Charges 3.830000e+08 \n Other Stockholder Equity -2.402000e+09 \n Property Plant Equipment 3.423400e+10 \n Total Current Assets 1.054080e+11 \n Long Term Investments 5.878000e+09 \n Net Tangible Assets 1.192610e+11 \n Short Term Investments 7.341500e+10 \n Net Receivables 1.563200e+10 \n Long Term Debt 3.935000e+09 \n Inventory 2.680000e+08 \n Accounts Payable 2.041000e+09 \n \n ----------quarterly_financials-------------\n 2020-09-30 2020-06-30 2020-03-31 \\\n Research Development 6.856e+09 6.875e+09 6.82e+09 \n Effect Of Accounting Charges None None None \n Income Before Tax 1.3359e+10 8.277e+09 7.757e+09 \n Minority Interest None None None \n Net Income 1.1247e+10 6.959e+09 6.836e+09 \n Selling General Administrative 6.987e+09 6.486e+09 7.38e+09 \n Gross Profit 2.5056e+10 1.9744e+10 2.2177e+10 \n Ebit 1.1213e+10 6.383e+09 7.977e+09 \n Operating Income 1.1213e+10 6.383e+09 7.977e+09 \n Other Operating Expenses None None None \n Interest Expense -4.8e+07 -1.3e+07 -2.1e+07 \n Extraordinary Items None None None \n Non Recurring None None None \n Other Items None None None \n Income Tax Expense 2.112e+09 1.318e+09 9.21e+08 \n Total Revenue 4.6173e+10 3.8297e+10 4.1159e+10 \n Total Operating Expenses 3.496e+10 3.1914e+10 3.3182e+10 \n Cost Of Revenue 2.1117e+10 1.8553e+10 1.8982e+10 \n Total Other Income Expense Net 2.146e+09 1.894e+09 -2.2e+08 \n Discontinued Operations None None None \n Net Income From Continuing Ops 1.1247e+10 6.959e+09 6.836e+09 \n Net Income Applicable To Common Shares 1.1247e+10 6.959e+09 6.836e+09 \n \n 2019-12-31 \n Research Development 7.222e+09 \n Effect Of Accounting Charges None \n Income Before Tax 1.0704e+10 \n Minority Interest None \n Net Income 1.0671e+10 \n Selling General Administrative 8.567e+09 \n Gross Profit 2.5055e+10 \n Ebit 9.266e+09 \n Operating Income 9.266e+09 \n Other Operating Expenses None \n Interest Expense -1.7e+07 \n Extraordinary Items None \n Non Recurring None \n Other Items None \n Income Tax Expense 3.3e+07 \n Total Revenue 4.6075e+10 \n Total Operating Expenses 3.6809e+10 \n Cost Of Revenue 2.102e+10 \n Total Other Income Expense Net 1.438e+09 \n Discontinued Operations None \n Net Income From Continuing Ops 1.0671e+10 \n Net Income Applicable To Common Shares 1.0671e+10 \n \n ----------isin-------------\n US02079K1079\n \n ----------earnings-------------\n Revenue Earnings\n Year \n 2016 90272000000 19478000000\n 2017 110855000000 12662000000\n 2018 136819000000 30736000000\n 2019 161857000000 34343000000\n\n\n",
"bugtrack_url": null,
"license": "mit",
"summary": "Python access to structure stock market information",
"version": "0.1.2",
"project_urls": {
"Homepage": "https://github.com/thorwhalen/invest"
},
"split_keywords": [
"finance",
" stock market",
" trading",
" markets",
" python",
" quant",
" data"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "606da7d3a443b299a80589056e3811d1522faa9888f0b1cfd98b5046bcde478d",
"md5": "889936f51ae17d9cbe314c0e6bd54557",
"sha256": "49ac6480e18cb717b35bb3ea34aaf251f0c4ae27d3f4c8aaeb813aadc3fa09eb"
},
"downloads": -1,
"filename": "invest-0.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "889936f51ae17d9cbe314c0e6bd54557",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 29361,
"upload_time": "2025-02-04T15:01:01",
"upload_time_iso_8601": "2025-02-04T15:01:01.500400Z",
"url": "https://files.pythonhosted.org/packages/60/6d/a7d3a443b299a80589056e3811d1522faa9888f0b1cfd98b5046bcde478d/invest-0.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a041086cc77c4c2752a8faae8fbed83e95db2491a5d767441e6b6c3cbd30b2f3",
"md5": "7bfbfa1aafd8e3bfaf6817b4cba84761",
"sha256": "afe8c3b1e63b785871c8a869fe5f1cbfd3d89ddcee821003637cc056f4a08ee7"
},
"downloads": -1,
"filename": "invest-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "7bfbfa1aafd8e3bfaf6817b4cba84761",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 56334,
"upload_time": "2025-02-04T15:01:03",
"upload_time_iso_8601": "2025-02-04T15:01:03.648282Z",
"url": "https://files.pythonhosted.org/packages/a0/41/086cc77c4c2752a8faae8fbed83e95db2491a5d767441e6b6c3cbd30b2f3/invest-0.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-02-04 15:01:03",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "thorwhalen",
"github_project": "invest",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "invest"
}