World of Warcraft and the online black market.

A question I had after learning about the impact of Venezulean gold farmers on the Runescape economy with the natural experiment of a power outage in Venezulea. How are gold sellers influeneced in other online game markets? For this first installment, of hopefully a few intresting projects, I am going to look at how the implementation of the wow token impacted wow gold sellers. (When I say wow, I mean World of Warcraft) The first thing we will do is set-up a few packages(forecast and prophet wont be used in this episode) and read in the data:

library(ggplot2)
library(scales)
library(zoo)
library(readstata13)
library(haven)
library(forecast)
library(prophet)
wowgold <-read.dta13("wowgold.dta", convert.dates = TRUE)

So, I had the data in a stata file which the readstata13 package conviently allows me to read it in as:

summary(wowgold)
##     region              Month             Year          usdtog     
##  Length:360         Min.   : 1.000   Min.   :2009   Min.   :   95  
##  Class :character   1st Qu.: 3.750   1st Qu.:2015   1st Qu.: 1998  
##  Mode  :character   Median : 6.000   Median :2016   Median : 6321  
##                     Mean   : 6.458   Mean   :2016   Mean   : 7629  
##                     3rd Qu.: 9.000   3rd Qu.:2018   3rd Qu.:10942  
##                     Max.   :12.000   Max.   :2019   Max.   :27149  
##                                                     NA's   :16     
##       date          
##  Min.   :1.557e+12  
##  1st Qu.:1.751e+12  
##  Median :1.791e+12  
##  Mean   :1.776e+12  
##  3rd Qu.:1.831e+12  
##  Max.   :1.870e+12  
## 

The date variable isn't in R format so we have to change it

wowgold$time<- as.POSIXct(wowgold$date/1000, origin = "1960-01-10")
wowgold$rtime <- as.Date(wowgold$time)

Looking at the summary you can see a large spread of the gold per dollar

wowgold$gtousd <-log10(wowgold$usdtog)

Knowing how important expansions are to wow, I added the release dates for each one in the data and also the wowtoken release date which we will cover later.

wowgold$releasedatecata <- as.Date("2010-12-10 12:00:00")
wowgold$releasedatemop <- as.Date( "2012-09-25 12:00:00")
wowgold$releasedatedra <- as.Date( "2014-11-13 12:00:00")
wowgold$releasedatelegi <- as.Date( "2016-08-30 12:00:00")
wowgold$releasedatebfa <- as.Date( "2018-08-13 12:00:00")
wowgold$releasedategold <- as.Date("2015-04-07 12:00:00")

Finally, we plot just how odd this data looks and how influential the expansions actually are:

xpacs <- ggplot(wowgold, aes(x=rtime, y=gtousd)) +
  geom_line(aes(group=region, color = region),  linetype=1)+
  scale_x_date(breaks = date_breaks("3 months"), labels = date_format("%Y-%m"))+
  theme( axis.text.x = element_text(angle = 90, hjust = 1, size =5))+
  labs(x = "Date", y="Gold to USD in Log", title="Gold to USD in World of Warcraft" ) +
  geom_vline(data = wowgold, aes(xintercept = as.numeric(releasedatecata)))+
  geom_vline(data = wowgold, aes(xintercept = as.numeric(releasedatemop)))+
  geom_vline(data = wowgold, aes(xintercept = as.numeric(releasedatedra)))+
  geom_vline(data = wowgold, aes(xintercept = as.numeric(releasedatelegi)))+
  geom_vline(data = wowgold, aes(xintercept = as.numeric(releasedatebfa)))+
  geom_vline(data = wowgold, aes(xintercept = as.numeric(releasedategold)))+
  geom_text(aes(x = releasedatecata, y = 3.5, label = "Cata"))+
  geom_text(aes(x = releasedatemop, y = 3.7, label = "Mop"))+
  geom_text(aes(x = releasedatedra, y = 3.6, label = "Draenor"))+
  geom_text(aes(x = releasedatelegi, y = 2.7, label = "Legion"))+
  geom_text(aes(x = releasedatebfa, y = 3.5, label = "BFA"))+
  geom_text(aes(x = releasedategold, y = 4.3, label = "Token"))
print(xpacs)
## Warning: Removed 1 rows containing missing values (geom_path).
plot of chunk html-wowgold-line

Let's hone in on that portion where the tokens come into play and see what it looks like by patch now. If you didn't know, in each expansion they are comprised of content patches which will pace the game. THey usually have around 3, but it varies with each expansion as expansions are more heterogenous then homogenous.

wowtokenstata <- read.dta13("wowtokenstata.dta")
wowtokenstata$gtousd <- wowtokenstata$buyprice/20
#adding patch variables
wowtokenstata$sixonetwo <- as.Date("2015-03-24 12:00:00")
wowtokenstata$sixtwo <- as.Date( "2015-06-22 12:00:00")
wowtokenstata$sixtwotwo <- as.Date( "2015-09-01 12:00:00")
wowtokenstata$sixtwothree <- as.Date( "2015-10-17 12:00:00")
wowtokenstata$sixtwofour <- as.Date( "2016-03-22 12:00:00")
wowtokenstata$sevenzerothree <- as.Date("2016-07-19 12:00:00")
wowtokenstata$sevenone <- as.Date("2016-10-25 12:00:00")
wowtokenstata$sevenonefive <- as.Date( "2017-01-10 12:00:00")
wowtokenstata$seventwo <- as.Date( "2017-03-28 12:00:00")
wowtokenstata$seventwofive <- as.Date( "2017-06-13 12:00:00")
wowtokenstata$seventhree <- as.Date( "2017-08-29 12:00:00")
wowtokenstata$seventhreetwo <- as.Date("2017-10-24 12:00:00")
wowtokenstata$seventhreefive <- as.Date("2018-01-16 12:00:00")
wowtokenstata$eightzeroone <- as.Date( "2018-07-17 12:00:00")
wowtokenstata$eightone <- as.Date( "2018-12-11 12:00:00")
wowtokenstata$eightonefive <- as.Date( "2019-03-12 12:00:00")
wowtokenstata$releasedatelegi <- as.Date( "2016-08-30 12:00:00")
wowtokenstata$releasedatebfa <- as.Date( "2018-08-13 12:00:00")
wowtokenplot<- ggplot(wowtokenstata, aes(x=date, y=gtousd)) +
  geom_line(aes(group=region, color = region),  linetype=1)+
  labs(x = "Date", y="Gold to USD", title="Gold to USD in World of Warcraft" ) +
  geom_vline(data = wowtokenstata, aes(xintercept = as.numeric(releasedatelegi)))+
  geom_vline(data = wowtokenstata, aes(xintercept = as.numeric(releasedatebfa)))+
  geom_vline(data = wowtokenstata, aes(xintercept = as.numeric(sixonetwo)))+
  geom_vline(data = wowtokenstata, aes(xintercept = as.numeric(sixtwo)))+
  geom_vline(data = wowtokenstata, aes(xintercept = as.numeric(sixtwotwo)))+
  geom_vline(data = wowtokenstata, aes(xintercept = as.numeric(sixtwothree)))+
  geom_vline(data = wowtokenstata, aes(xintercept = as.numeric(sixtwofour)))+
  geom_vline(data = wowtokenstata, aes(xintercept = as.numeric(sevenone)))+
  geom_vline(data = wowtokenstata, aes(xintercept = as.numeric(seventwofive)))+
  geom_vline(data = wowtokenstata, aes(xintercept = as.numeric(seventhree)))+
  geom_vline(data = wowtokenstata, aes(xintercept = as.numeric(seventhreetwo)))+
  geom_vline(data = wowtokenstata, aes(xintercept = as.numeric(seventhreefive)))+
  geom_vline(data = wowtokenstata, aes(xintercept = as.numeric(eightzeroone)))+
  geom_vline(data = wowtokenstata, aes(xintercept = as.numeric(eightone)))+
  geom_vline(data = wowtokenstata, aes(xintercept = as.numeric(eightonefive)))+
  geom_text(aes(x = releasedatelegi, y = 20000, label = "Legion"))+
  geom_text(aes(x = releasedatebfa, y = 2000, label = "BFA"))+
  geom_text(aes(x = sixonetwo, y = 16000, label = "6.1.2"))+
  geom_text(aes(x = sixtwo, y = 6000, label = "6.2"))+
  geom_text(aes(x = sixtwotwo, y = 12000, label = "6.2.2"))+
  geom_text(aes(x = sixtwothree, y = 5000, label = "6.2.3"))+
  geom_text(aes(x = sixtwofour, y = 13000, label = "6.2.4"))+
  geom_text(aes(x = sevenone, y = 200, label = "7.1"))+
  geom_text(aes(x = seventwofive, y = 23000, label = "7.2.5"))+
  geom_text(aes(x = seventhree, y = 5000, label = "7.3"))+
  geom_text(aes(x = seventhreetwo, y = 25000, label = "7.3.2"))+
  geom_text(aes(x = seventhreefive, y = 7000, label = "7.3.5"))+
  geom_text(aes(x = eightzeroone, y = 28000, label = "8.0.1"))+
  geom_text(aes(x = eightone, y = 2000, label = "8.1"))+
  geom_text(aes(x = eightonefive, y = 17000, label = "8.1.5"))
wowtokenplot
## Warning: Removed 5 rows containing missing values (geom_path).
plot of chunk html-wowtokenstata-line

Looking at the plot you can se the sharp increse in gold prices, remember this is gold to usd, right after each expansion which shouldn't be suprising as people are spending their gold to buy gametime. An oddity that will have to be investigated at another time is the korean market dropping after 7.3.2 with an almost mirroed action in china with the opposite impact. North American and European prices do not fluctate as much as the other regions. Some interesting questions come about with this plot that will be looked at in the next phase of this investigation.

Note: Data sources for blackmarket gold prices came from a single server Aegywn-US as before token prices, each server's economy was generally self-contained and regulated itself based on population. Tranfers from another server had a stipualtion of only being able to bring 10k worth of gold over. This is circumvented by people due to items that may have significant value can be bought and sold on the new server, and therefore effectivley removing the limit. See Basic economics by my boi Thomas Sowell to understand how supply and demand work.

Wowgold.dta Wowtokenstata.dta