Author: Myriam Ibrahim
Date: 2021-04-23

# IEX Stocks and Market Data via IEX API

#### Myriam Ibrahim

#### 2021-04-23

The main goal of `Riex` is to efficiently retrieve financial and market data using `IEX Cloud API`. In addition, provide robust tool to:

- Enable data analysis and visualization
- Monitor account usage and alerts

Please make sure to review and acknowledge IEX Terms of Use before using `Riex`.

Effective June 1st, 2019, subscription will be required to access third party data.

For subscriptions details, visit IEX - Flexible, scalable pricing.

- Multiple tiers are available to users depending on their requirements with capability to upgrade
- Usage is measured based on message counts which depends on API Call and associated weight
- Example Company - API Call has a weight of 1 for each Symbol

Additional details about usage calculations available in Data Weight - section as well as best practice about storing and sharing Private & Public Secret Key

## Installation

You can `install` the released version of Riex from CRAN with:

    install.packages("Riex")

## Examples

Following are basic examples that will demonstrate how to use `Riex` to retrieve Stock and Market information via `IEX Cloud API`.

List of parameters and their valid values:

- iex_sk : `IEX Cloud API` Secret Token.

  Secret Token is available to use via Account Console and assigned the variable sk in the documentation. e.g. sk <- “sk_xxxxxx”. Please note that term “Secret Token” and “Secret Key” are used interchangeably in `Riex` documentation

  Keep your Secret Token safe. Your Secret Token can make any API call on behalf of your account, including changes that may impact billing such as enabling pay-as-you-go charges.

- x : A valid IEX Stock Symbol

- p : “annual” or “quarter”

- r : Takes only of of the values accepted in API request. {“5y”, “2y”, “1y”, “ytd”, “6m”, “3m”, “1m”, “1d”}

## Load `Riex`

    library(Riex)
    #> Loading required package: xts
    #> Loading required package: zoo
    #>
    #> Attaching package: 'zoo'
    #> The following objects are masked from 'package:base':
    #>
    #>     as.Date, as.Date.numeric
    #> Loading required package: TTR
    #> Loading required package: tidyr
    #> Loading required package: tibble
    #> Registered S3 method overwritten by 'quantmod':
    #>   method            from
    #>   as.zoo.data.frame zoo

- Assign Secret key to Variable sk

    sk <- "[SECRET KEY]"

- Assign valid stock symbol to x

    x <- "TSLA"

- Assign valid period to variable r

    r <- "6m"

## Chart

    TSLA <- iex.chart(x, r, sk)

Load `quantmod` package

    library(quantmod)

Generate Barchart

    barChart(TSLA)

TSLA 6 Months Chart

To check available themes to customize visualization

    names(quantmod:::.chart.theme)

To apply a different Theme

    barChart(TSLA, theme="white")

If you receive an error run:

    par("mar")

In case response is similar to the following: [1] 5.1 4.1 4.1 2.1, then run:

    par(mar=c(1,1,1,1))
    barChart(TSLA)

    chartSeries(TSLA)

When possible, results from functions matches OHLC standards for `quantomd` package to leverage its capabilities. Future enhancements to `Riex` will be geared toward enabling comprehensive financial analysis & modeling.

Refer to `quantomd` documentation for additional details about customizing visualization.

## Most Active

    Most_Active <- iex.most.active(sk)
    Most_Active['companyName']

## Book

    iex.book("GM", sk)

## Earnings

    iex.earnings("GM", sk)

## Financials

The following default functions retrieve income statement, balance sheet, and cash flow data from the most recent reported quarter. Upon further testing of `IEX Cloud API`, additional parameter “p” will be added to allow user to specify annual or quarterly financials.

- iex.balance.sheet (x, sk)
- iex.cash.flow (x, sk)
- iex.income (x, sk)

Results are rendered in data frame format to allow further manipulation in case of multiple stocks

    GM_BS <- iex.balance.sheet("GM", sk)
    str(GM_BS)

Similarly, you can generate the previous quarter Income Statement and Cash Flow statement:

    GM_IS <- iex.income("GM", sk)
    GM_CF <- iex.cash.flow("GM", sk)

## Key Stats

Function returns a data frame that includes 20 observations - e.g. PE ratio, number of employees and 52 Weeks high and low, ..etc.

    iex.stats("TSLA", sk)

## Crypto

    Bitcoin <- crypto("BTCUSDT", sk)
    Bitcoin

list of available crypto currency symbols in `IEX` as of April 26th, 2019 is included as dataset with `Riex` package and can be viewed using crypto_symbols.

    crypto_symbols

for most current list, Visit IEX-Reference Data

## Company Information

    TSLA_Co <- iex.company(x, sk)

## Company Logo

    TSLA_Logo <- logo (x, sk)

To store image in current directory, use:

    download.file(TSLA_Logo,"TSLA.png",mode="wb")

To check current directory path:

    getwd()

TSLA Logo

## Account

Visit IEX Cloud API - Account Section for more details. The following functions provide Account and usage details based on Secret Token provided. Please make sure to monitor usage regularly as it impacts billing depending on your Account setup.

## Account Metadata

Output includes Total Message Limit and Total Message Used in addition to useful info. - e.g. Tier Name

    iex.account(sk)

## Usage

Output includes Monthly Usage, Monthly Pay As You Go and Token Usage.

    iex.usage(sk)

## Key Usage

Key Usage includes the detailed usage by API Call type.

    iex.key.usage (sk)

For example:

- STOCK_QUOTE
- HISTORICAL_PRICES
- COMPANY
- REF_DATA
- CRYPTO_QUOTE
- COMPANY_LOGO
- EARNINGS
- KEY_STATS
- ACCOUNT_USAGE
- CASH_FLOW
- BALANCE_SHEET
- INCOME

Type with “0” usage are included as well. For example, ACCOUNT_USAGE.

## Daily Usage

Output includes Total usage per day. Date format is xyyyymmdd - e.g. X20190423

    iex.daily.usage(sk)

## Monthly Usage

Output includes Total usage per month.

    iex.monthly.usage(sk)

## Quote of the Day and Everyday !

> “He who gives up [code] safety for [code] speed deserves neither.” - Hadley Wickham

Hadley Wickham Quote