--- title: "Usecase" subtitle: "What happens when Elon Musk Tweets about Dogecoin?" output: rmarkdown::html_vignette always_allow_html: true vignette: > %\VignetteIndexEntry{Usecase} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = FALSE, out.width = "100%", comment = "#>", message = FALSE, out.height = "620px", fig.align = "center" ) ``` ```{r, message=FALSE} library(cryptoQuotes) ``` ## Introduction This high-level `API`-client provides open access to cryptocurrency market data without relying on low-level coding and `API`-keys. Currently all actively traded cryptocurrencies on `r paste(length(invisible(available_exchanges)))` major exchanges are available, see the [wiki](https://github.com/serkor1/cryptoQuotes/wiki/Available-Exchanges) for more details. In this vignette we will explore a case study to showcase the capabilities of [{cryptoQuotes}](https://github.com/serkor1/cryptoQuotes); how did the `Dogecoin`-market react to Elon Musks following tweet,
```{r, echo=FALSE, out.width="80%", fig.cap="Tweet by Elon Musk - the timezone is CET.",fig.align='center'} ## include tweet from ## Elon Musk knitr::include_graphics( path = "elonTweet.png" ) ```
## Cryptocurrency Market Analysis in R Elon Musk tweeted (Well, now he X'ed) about `Dogecoin` January 14, 06.18 AM (UTC) - and `Dogecoin` rallied. To determine how fast the markets reacted to his tweets, we could get the market data for Dogecoin in 1 minute intervals the day he tweeeted using the `get_quotes()`-function, ```{r, eval=FALSE} ## DOGEUSDT the day ## of the tweet on the ## 1m chart DOGE <- cryptoQuotes::get_quote( ticker = 'DOGE-USDT', interval = '1m', source = 'kucoin', futures = FALSE, from = '2022-01-14 07:00:00', to = '2022-01-14 08:00:00' ) ``` This returns an object of class `r paste(class(DOGE),collapse = ' and ')` with `r nrow(DOGE)` rows. To calculate the rally within the first minute of the tweet, we can use [{xts}](https://github.com/joshuaulrich/xts)-syntax to determine its magnitude, ```{r} ## extrat the ## tweet moment tweet_moment <- DOGE["2022-01-14 07:18:00"] ## calculate ## rally cat( "Doge closed:", round((tweet_moment$close/tweet_moment$open - 1),4) * 100, "%" ) ``` `Dogecoin` rallied `r paste0(round((tweet_moment$close/tweet_moment$open - 1),4) * 100, "%")` within the minute Elon Musk tweeted. ### Charting price action with candlesticks We can visualize the rally this with candlestick charts using the `chart()`- and `kline()`-function, ```{r, fig.align='center', fig.alt= "Elon Musk DOGE"} ## chart the ## price action ## using klines cryptoQuotes::chart( ticker = DOGE, main = cryptoQuotes::kline(), indicator = list( cryptoQuotes::bollinger_bands() ), sub = list( cryptoQuotes::volume() ), options = list( dark = FALSE ) ) ``` ### Charting price action with event lines To create a, presumably, better visual overview we can add event lines using the `event_data`-argument, which takes a `data.frame` of any kind as argument, ```{r} ## 1) create event data.frame ## by subsetting the data event_data <- as.data.frame( zoo::coredata( DOGE["2022-01-14 07:18:00"] ) ) ## 1.1) add the index ## to the event_data event_data$index <- zoo::index( DOGE["2022-01-14 07:18:00"] ) # 1.2) add event label # to the data event_data$event <- 'Elon Musk Tweets' # 1.3) add color to the # event label event_data$color <- 'steelblue' ``` This event data, can be passed into the chart as follows, ```{r, fig.alt= "Elon Musk DOGE"} ## 1) chart the ## price action ## using klines cryptoQuotes::chart( ticker = DOGE, event_data = event_data, main = cryptoQuotes::kline(), indicator = list( cryptoQuotes::bollinger_bands() ), sub = list( cryptoQuotes::volume() ), options = list( dark = FALSE ) ) ```