flipsideR: Support for ASX Option Chain Data

I previously wrote about some R code for downloading Option Chain data from Google Finance. I finally wrapped it up into a package called flipsideR, which is now available via GitHub. Since I last wrote on this topic I’ve also added support for downloading option data from the Australian Securities Exchange (ASX).

Installation

Installation is straightforward using devtools.

library(devtools)
install_github('DataWookie/flipsideR')

You’re ready to roll!

Functionality

As I mentioned previously, there’s already functionality in quantmod for retrieving option chain data.

library(quantmod)
AAPL = getOptionChain('AAPL')
head(AAPL$calls)
                    Strike  Last  Chg   Bid   Ask Vol OI
AAPL160205C00070000     70 25.71 2.06 26.95 27.25   1 53
AAPL160205C00075000     75 20.50 0.00 21.95 22.25   1  2
AAPL160205C00080000     80 15.65 1.85 16.95 17.25  75 50
AAPL160205C00085000     85 10.61 1.42 11.95 12.25 151 44
AAPL160205C00086000     86 10.72 3.47 10.95 11.25  99 52
AAPL160205C00087000     87 10.30 0.00  9.95 10.25   1  1
head(AAPL$puts)
                    Strike Last   Chg  Bid  Ask  Vol   OI
AAPL160205P00070000   70.0 0.01  0.00 0.00 0.02   13  428
AAPL160205P00075000   75.0 0.02  0.00 0.00 0.02    2  464
AAPL160205P00080000   80.0 0.02 -0.02 0.00 0.04  156 2774
AAPL160205P00083000   83.0 0.01 -0.06 0.01 0.05  102  625
AAPL160205P00085000   85.0 0.03 -0.07 0.03 0.04 1390 2999
AAPL160205P00085500   85.5 0.05 -0.15 0.02 0.06   10  248
> detach('package:quantmod', unload = TRUE)

The data that you’ll get with flipsideR is pretty similar. The major differences are:

  • it’s all in a single data frame (as opposed to being split into separate frames for put and call options);
  • there’s additional information regarding the expiry date for the option and the date and time at which these data were retrieved.

Let’s grab the AAPL data using flipsideR.

library(flipsideR)
AAPL = getOptionChain('AAPL')   
head(AAPL)
  symbol type     expiry strike premium   bid   ask volume open.interest           retrieved
1   AAPL Call 2016-02-05     50      NA 46.95 47.25     NA             0 2016-01-31 06:03:30
2   AAPL Call 2016-02-05     55   42.05 41.95 42.25      9             0 2016-01-31 06:03:30
3   AAPL Call 2016-02-05     60      NA 36.95 37.25     NA             0 2016-01-31 06:03:30
4   AAPL Call 2016-02-05     65      NA 31.95 32.25     NA             0 2016-01-31 06:03:30
5   AAPL Call 2016-02-05     70   25.71 26.95 27.25     NA            53 2016-01-31 06:03:30
6   AAPL Call 2016-02-05     75   20.50 21.95 22.25     NA             2 2016-01-31 06:03:30
tail(AAPL)
     symbol type     expiry strike premium   bid   ask volume open.interest           retrieved
1225   AAPL  Put 2018-01-19    155   58.30 60.15 62.50     NA            71 2016-01-31 06:03:46
1226   AAPL  Put 2018-01-19    160   63.95 64.30 66.70     NA            84 2016-01-31 06:03:46
1227   AAPL  Put 2018-01-19    165   71.75 68.95 71.35     17           197 2016-01-31 06:03:46
1228   AAPL  Put 2018-01-19    170   73.35 72.50 77.00     NA          3022 2016-01-31 06:03:46
1229   AAPL  Put 2018-01-19    175   66.55 77.30 81.35     NA            68 2016-01-31 06:03:46
1230   AAPL  Put 2018-01-19    180   88.00 82.00 86.80     NA          1074 2016-01-31 06:03:46

The AAPL data were retrieved from the default exchange, NASDAQ. However, it’s also possible to specify an alternative exchange. For example, CVX data from the NYSE.

CVX = getOptionChain('CVX', 'NYSE')

Finally, it’s also now possible to grab data from ASX.

OZL = getOptionChain('OZL', 'ASX')