---
title: "rpredictit"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{rpredictit}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

# An R interface to the PredictIt API
The `rpredictit` package provides an interface to the PredictIt public API.

In addition to providing a wrapper to retrieve market data, this package includes visualization functions for plotting historical price data and exploring available markets. The package also comes with a demo shiny application for illustrating example use cases.

`rpredictit` is not affiliated with any predictive markets and is presented for informational purposes only. Always confirm with your own research before making an investment. 
**License to use data made available via the API is for non-commercial use and PredictIt is the sole source of such data.**

## Installation

Once released, you may install the stable version from CRAN, or the development version using *devtools*:
```{r setup, eval=FALSE}
# development version, via devtools
devtools::install_github('danielkovtun/rpredictit')
```

## Usage

#### Demo Shiny Application
To start off, try running a demo Shiny application included with the package by running:
```{r, eval=FALSE}
library(rpredictit)
rpredictit::runExample('demo')  
```


#### All Markets
Try `rpredictit::all_markets()` to return a tibble containing bid and ask data for all PredictIt markets:

```{r}
rpredictit::all_markets()
```

#### Interactive Table
Alternatively, to return an interactive htmlwidget (DT::datatable) table containing HTML formatted market data, pass the returned bid/ask data to `rpredictit::markets_table()`:

```{r}
data <- rpredictit::all_markets()
rpredictit::markets_table(data)
```

#### Interactive Plot
To plot historical prices, download a 'csv' file for a specific contract from PredictIt's website and pass the file path to `rpredictit::parse_historical_ohlcv()`.
Then, pass in the returned contract data object to `rpredictit::historical_plot()`:
```{r}
filename <- "What_will_be_the_balance_of_power_in_Congress_after_the_2020_election.csv"
csv_path <- system.file("extdata", filename, package = "rpredictit")
contract_data <- rpredictit::parse_historical_csv(csv_path)
rpredictit::historical_plot(contract_data)
```


#### Individual Market
To return data for a specific market, use `rpredictit::single_market(id)`, where `id` refers to the numerical code pertaining to the market of interest. 
You can find a market's numerical code by consulting its URL or by first calling the all markets API (`all_markets()`)
```{r, eval=FALSE}
markets <- rpredictit::all_markets()
id <- markets$id[1]
rpredictit::single_market(id)
```

See the full documentation at https://danielkovtun.github.io/rpredictit/. 
