pe-tro-le-um (n.)

A thick, flammable, yellow-to-black mixture of gaseous, liquid, and solid hydrocarbons that occurs naturally beneath the earth’s surface, can be separated into fractions including natural gas, gasoline, naphtha, kerosene, fuel and lubricating oils, paraffin wax, and asphalt and is used as raw material for a wide variety of derivative products.

— American Heritage Dictionary


Introduction

Since the early mid-1950s, petroleum has significantly become the world’s most important source of energy. Its products underpin modern society, especially in supplying energy to the power industry, heat homes, and provide fuel for vehicles and airplanes to carry goods and people around the world. But only particular countries have an abundance of crude oil in their reserves. These countries for decades have been the major influencers on the global oil market. OPEC, the Organization of the Petroleum Exporting Countries, for instance, supplies almost half of the world’s total oil production, making it the major influencer in the global oil market. However, with US oil production growing tremendously over the last decade and becoming the world’s largest petroleum producer, there are some expectations that this will shift the role of OPEC.

However, it is not yet vividly clear if the US is going to take over the global oil market or the OPEC countries will continuously be the only driving force of this industry. Before diving into the analysis we need to address the initial question - Which countries are the major role players in the global petroleum market?

Data sources

We used the The U.S. Energy Information Administration and British Petroleum websites as our main data sources. The reason why we chose these sources for our research is based on the quality of the collected data. The information provided by the EIA is regulated by the U.S. Department of Energy and widely used for researches, policymaking, promotion of public understanding of energy, and its interaction with economy 1. Statistical reviews of British Petroleum is compiled by BP economists using publicly available information published by government agencies. The data provided by BP statistics enhanced our research by fulfilling and augmenting the analysis.


Data extraction and tidying

For our research we used the following list of files:

The analysis of every market starts with an examination of price, supply, demand, and political aspect. Since extraction of information related to the political aspect requires a more thorough approach and interpretation of this data is significantly subjective, we decided to discard this variable to stay focused on remaining ones.

In our case, after tidying of data we ended up with 5 general variables: year, country, production (thousands of barrels/day), consumption (thousand of barrels/day), and price (US dollar/barrel).

global_production <- read_csv(here::here('data_raw', 'global_production_eia.csv'), skip = 1) %>%
  select(-API) %>% 
  mutate(country = ifelse(!X2 %in% c(
    "Production",
    "Total petroleum and other liquids (Mb/d)",
    "Crude oil, NGPL, and other liquids (Mb/d)",
    "Crude oil including lease condensate (Mb/d)",
    "NGPL (Mb/d)",
    "Other liquids (Mb/d)",
    "Refinery processing gain (Mb/d)"), X2, NA),
    description = ifelse(is.na(country), X2, NA)
  ) 

countries <- global_production %>% 
  filter(!is.na(country)) %>% 
  select(country)

opec <- c("Algeria", "Angola", "Congo", "Equatorial Guinea", "Gabon", "Iran", "Iraq", "Kuwait", "Libya", "Nigeria", "Saudi Arabia", "United Arab Emirates", "Venezuela")

gp <- global_production %>% 
  filter(!is.na(description)) %>% 
  select(-country, -X2) %>% 
  mutate(country = rep(countries$country, each = 7)) %>% 
  gather(key = year, value = rate, '1973':'2019') %>% 
  spread(key = description, value = rate) %>% 
  clean_names() %>% 
  select(-production, -total_petroleum_and_other_liquids_mb_d, -crude_oil_ngpl_and_other_liquids_mb_d) %>% 
  rename(crude = crude_oil_including_lease_condensate_mb_d,
         ngpl = ngpl_mb_d,
         other = other_liquids_mb_d,
         refinery_gain = refinery_processing_gain_mb_d) %>% 
  mutate(year = as.numeric(year),
         crude = as.numeric(crude),
         ngpl = as.numeric(ngpl),
         other = as.numeric(other),
         refinery_gain = as.numeric(refinery_gain),
         production = crude + ngpl + other + refinery_gain) %>% 
  filter(country != "World") %>% 
  select(country, year, production) %>% 
  filter(production > 1) %>% 
  mutate(opec = case_when(
    country %in% opec ~ 'opec',
    TRUE ~ 'non-opec'
  )) %>% 
  glimpse()
## Observations: 3,620
## Variables: 4
## $ country    <chr> "Albania", "Albania", "Albania", "Albania", "Albania", "Al…
## $ year       <dbl> 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989…
## $ production <dbl> 44.000000, 44.000000, 64.000000, 75.000000, 55.000000, 55.…
## $ opec       <chr> "non-opec", "non-opec", "non-opec", "non-opec", "non-opec"…
bp_consumption <- read_xlsx(here::here('data_raw', 'bp_stats.xlsx'), sheet = 'Oil Consumption - Barrels', skip = 2, range = "Oil Consumption - Barrels!A3:BC108") %>% 
  gather(key = "year", value = "consumption", '1965':'2018') %>%
  rename("country" = "Thousand barrels daily") %>% 
  filter(!is.na(country)) %>% 
  spread(key = country, value = consumption) %>% 
  select(-contains("total")) %>% 
  gather(key = country, value = consumption, 'Algeria':'Western Africa') %>% 
  mutate(year = as.numeric(year),
         consumption = as.numeric(consumption))

glimpse(bp_consumption)
## Observations: 4,968
## Variables: 3
## $ year        <dbl> 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 197…
## $ country     <chr> "Algeria", "Algeria", "Algeria", "Algeria", "Algeria", "A…
## $ consumption <dbl> 26.71619, 35.35323, 33.28597, 35.37443, 37.71433, 43.0099…
spot_price <- read_excel(here::here('data_raw', 'spot_prices_wti_brent.xls'), sheet = 'Data 1', skip = 1, col_types = c("date", "numeric", "numeric")) %>% 
  rename(
    date = Sourcekey, 
    wti= RWTC, 
    brent = RBRTE
  ) %>% 
  gather(key = crude, value = price, 'wti':'brent') %>% 
  separate(date, into = c("year", "month", "day"), sep = "-", convert = TRUE) %>% 
  select(-month, -day)

glimpse(spot_price)
## Observations: 70
## Variables: 3
## $ year  <int> NA, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,…
## $ crude <chr> "wti", "wti", "wti", "wti", "wti", "wti", "wti", "wti", "wti", …
## $ price <dbl> NA, 15.05, 19.20, 15.97, 19.64, 24.53, 21.54, 20.58, 18.43, 17.…


Analysis

Who is leading in oil production in 2019?

Two figures below represent the state of the petroleum industry in 2019. According to Figure 1, the United States is leading in production by almost reaching 20 mln barrels per day even leaving every OPEC member behind. However, the contribution of OPEC countries into the global market is hard to underestimate since members of the organization own almost 80% of the world’s total petroleum reserve2. Figure 2 provides the evidence to the fact that although the US became a leader in petroleum production, the total output of the OPEC is still dominating.

Nevertheless, the US is already producing more than half (56.9%) of OPEC’s production as it is shown in Figure 2. This fact implies that the role of the US as a petroleum exporter will rise if it’s production keeps increasing. To predict the future state of the global petroleum market we decided to examine historical data of both production and consumption of crude.


gp2019 <- gp %>% 
  filter(year == 2019 & production > 100) %>%
  mutate(country = fct_other(country, drop = c("South Africa", "Denmark", "South Korea", "Brunei", "Japan", "Chad", "Italy", "Peru", "South Sudan", "Ghana", "Germany", "Vietnam", "Turkmenistan", "Congo-Brazzaville", "France"), other_level = "Other countries")) %>% 
  mutate(country = fct_reorder(country, production)) %>%
  ggplot() +
  geom_col(aes(x = country, y = production, fill = opec)) +
  coord_flip() +
  scale_y_continuous(
        expand = expand_scale(mult = c(0, 0.05))) +
  theme_minimal_vgrid(font_family = "Roboto Condensed") +
  theme(axis.ticks = element_blank(),
        legend.position = 'none')+
  labs(x = "",
       y = "Production in thousands barrels per day",
       title = "Figure 1. Global petroleum production in 2019",
       subtitle = "by country")

gp2019_1 <- gp %>% 
  filter(year == 2019 & production > 100) %>% 
  mutate(country = fct_other(country, drop = c("Algeria", "Angola", "Congo", "Equatorial Guinea", "Gabon", "Iran", "Iraq", "Kuwait", "Libya", "Nigeria", "Saudi Arabia", "United Arab Emirates", "Venezuela"), other_level = "OPEC")) %>% 
  group_by(country) %>% 
  summarise(production = sum(production)) %>% 
  mutate(country = fct_other(country, drop = c("South Africa", "Denmark", "South Korea", "Brunei", "Japan", "Chad", "Italy", "Peru", "South Sudan", "Ghana", "Germany", "Vietnam", "Turkmenistan", "Congo-Brazzaville", "France"), other_level = "Other countries")) %>% 
  mutate(country = fct_reorder(country, production),
         cartel = ifelse(country == "OPEC", TRUE, FALSE)) %>% 
ggplot() +
  geom_col(aes(x = country, y = production, fill = cartel)) +
  coord_flip() +
  annotate('text', y = 34313, x = "OPEC", label = "34313", hjust = 1, fontface = 3) +
  annotate('text', y = 19520, x = "United States", label = "19520", hjust = 1, fontface = 3) +
  scale_y_continuous(
        expand = expand_scale(mult = c(0, 0.05))) +
  theme_minimal_vgrid(font_family = "Roboto Condensed") +
  theme(axis.ticks = element_blank(),
        legend.position = 'none') +
  labs(x = "",
       y = "Production in thousands barrels per day",
       title = "Figure 2. Global petroleum production in 2019",
       subtitle = "by comparing total output of OPEC members and other countries")

plot_grid(gp2019, gp2019_1)


How petroleum production and consumption changed with time?

The historical overview represented by Figure 3 provides information about the production history of the OPEC and the next largest petroleum-producing countries between 1980 and 2019. The filtering of the countries was conducted by identifying the maximum output across all available years in the table (see code). It is important to note that Figure 3 represents only the subset of available data and the contribution of OPEC and other countries to the subset.

The analysis of the figure revealed that OPEC kept its dominating position throughout the specified period. The United States and Russia kept the second and third places, respectively. Even though, US production seems to be dramatically lower than OPEC the figure shows how the technology development in the extraction of shale oil drives US production starting from 2010. The displacement of OPEC’s output closer to 2019 is indicative of the significance of the rise in petroleum production of the United States and the independence of the US from OPEC’s regulations.


big_producers <- gp %>% 
  mutate(test = ifelse(opec == 'opec', opec, country)) %>% 
  group_by(test) %>% 
  summarise(max_production = max(production)) %>% 
  arrange(desc(max_production)) %>% 
  slice(1:10) %>% 
  select(test)

gp %>% 
  mutate(test = ifelse(opec == 'opec', opec, country)) %>% 
  filter(test %in% big_producers$test) %>%
  group_by(test, year) %>% 
  summarise(production = sum(production)) %>% 
  filter(test != "Former U.S.S.R.") %>% 
  ungroup() %>% 
  add_row(test = "Russia", year = 1991, production = 0) %>% 
  add_row(test = "United Kingdom", year = 1993, production = 0) %>% 
ggplot() +
  geom_area(aes(x = year, y = production, fill = test), 
          position = 'fill',
          width = 1) +
  theme_half_open(font_family = 'Roboto Condensed') +
  theme(legend.position = 'none') +
  coord_cartesian(clip = 'off') +
  scale_y_continuous(
        expand = expand_scale(mult = c(0, 0.05))) +
  scale_x_continuous(
        expand = expand_scale(mult = c(0, 0.05))) +
  scale_fill_viridis(discrete = TRUE) +
  labs(x = "Year",
       y = "",
       title = "Figure 3. Historical overview of OPEC and next 9 largest producers") +
  annotate(geom = 'text', x = 1995, y = 0.10,
           label = "USA") +
  annotate(geom = 'text', x = 1996, y = 0.18,
           label = "UK") +
  annotate(geom = 'text', x = 1998, y = 0.26,
           label = "Russia") +
  annotate(geom = 'text', x = 2001, y = 0.55,
           label = "OPEC") + 
  annotate(geom = 'text', x = 2003, y = 0.79,
           label = "Norway") +
  annotate(geom = 'text', x = 2004, y = 0.85,
           label = "Mexico") +
  annotate(geom = 'text', x = 2006, y = 0.90,
           label = "China", colour = 'white') +
  annotate(geom = 'text', x = 2010, y = 0.95,
           label = "Canada", colour = 'white') +
  annotate(geom = 'text', x = 2015, y = 0.98,
           label = "Brazil", colour = 'white')


The approach to the creation of Figure 4 was the same as in the previous figure but in this case, we shifted our attention to petroleum consumption. Figure 4 represents the historical overview of the 10 largest petroleum consumers between 1980 and 2018.

The analysis of the figure revealed that the United States played a leading role in the consumption of petroleum throughout the specified period. However, it is also important to mention a significant increase in the consumption of China from 1990 to 2018.


big_consumers <- bp_consumption %>% 
  filter(year >= 1980) %>% 
  group_by(country) %>% 
  summarise(consumption = max(consumption, na.rm = TRUE)) %>% 
  arrange(desc(consumption)) %>% 
  slice(1:10) %>% 
  select(country)

bp_consumption %>% 
  filter(country %in% big_consumers$country) %>% 
  filter(year >= 1980) %>% 
  filter(country != "USSR") %>% 
  add_row(year =1984, country = "Russian Federation", consumption = 0) %>% 
ggplot() +
  geom_area(aes(x = year, y = consumption, fill = country), 
          position = 'fill',
          width = 1) +
  theme_half_open(font_family = 'Roboto Condensed') +
  theme(legend.position = 'none') +
  coord_cartesian(clip = 'off') +
  scale_y_continuous(
        expand = expand_scale(mult = c(0, 0.05))) +
  scale_x_continuous(
        expand = expand_scale(mult = c(0, 0.05))) +
  scale_fill_viridis(discrete = TRUE) +
  labs(x = "Year",
       y = "",
       title = "Figure 4. Historical overview of 10 largest consumers") +
  annotate(geom = 'text', x = 1990, y = 0.30,
           label = "USA") +
  annotate(geom = 'text', x = 1995, y = 0.48,
           label = "S.Korea") +
  annotate(geom = 'text', x = 1999, y = 0.53,
           label = "Saudi Arabia") +
  annotate(geom = 'text', x = 2001, y = 0.58,
           label = "Russia") +
  annotate(geom = 'text', x = 2002, y = 0.65,
           label = "Japan") +
  annotate(geom = 'text', x = 2005, y = 0.73,
           label = "India") +
  annotate(geom = 'text', x = 2006, y = 0.78,
           label = "Germany", color = 'white') +
  annotate(geom = 'text', x = 2010, y = 0.88,
           label = "China", color = 'white') +
  annotate(geom = 'text', x = 2014, y = 0.98,
           label = "Brazil", color = 'white')


The observation of Figure 3 & 4 gave us valuable insight into the history of the global petroleum market. Specifically, we learned that OPEC’s domination in production is recognizable throughout decades but the US’s role is still expected to be played. Whereas, the historical overview of petroleum consumption revealed the US’s leading position and increasing China’s performance starting from 1990.

However, we still need to know how exactly OPEC, US, and China are contributing to the global petroleum market. As we stated earlier, every market research starts with supply, demand, and price…

How responsive the price is to the contribution of major players?

Figures 5a, 5b, and 5c are concluding the analysis of our research. In order to examine the nature of the interaction of OPEC, US, and China with the global petroleum market in terms of supply, demand, and price - we constructed plots related to the price of WTI, total production of OPEC, and total consumption by US and China. We indicated specific periods in Figure 5a that should be substantiated by the following figures.

The influence of OPEC on the price of WTI is vividly observable. The reduction in OPEC’s production in 1995, 1999 and 2002 led to the surge in price in 1996, 2000, and 2003 (see figures). However, we see different behavior of the price after 2003. Despite the dramatic increase in OPEC’s production the price of WTI is still increasing and reaching the highest value for 3 decades. The possible explanation for this observation is that the total consumption of the US and China kept rising surpassing the equilibrium between supply and demand.


price <- spot_price %>% 
  filter(!is.na(price) & crude == "wti") %>% 
  ggplot() +
  geom_line(aes(x = year, y = price),
            alpha = 0.6,
            color = 'steelblue') +
  geom_curve(aes(x = 1995, xend = 1996,
                 y = 70, yend = 25),
             size = 0.5,
             curvature = 0.1,
             arrow = arrow(length = unit(0.01, "npc"),
                           type = "closed")) +
  geom_curve(aes(x = 1995, xend = 2000,
                 y = 70, yend = 33),
             size = 0.5,
             curvature = 0.1,
             arrow = arrow(length = unit(0.01, "npc"),
                           type = "closed")) +
  geom_curve(aes(x = 1995, xend = 2002.8,
                 y = 70, yend = 33),
             size = 0.5,
             curvature = 0.1,
             arrow = arrow(length = unit(0.01, "npc"),
                           type = "closed")) +
  geom_curve(aes(x = 2000, xend = 2006.5,
                 y = 95, yend = 75),
             size = 0.5,
             curvature = 0.1,
             arrow = arrow(length = unit(0.01, "npc"),
                           type = "closed")) +
  geom_label(aes(x = 1993, y = 70, label = "Increased price\nis explained by\ndecline in\nOPEC production"),
             hjust = 0, lineheight = 0.8) +
  theme_half_open(font_size = 12) +
  geom_label(aes(x = 2000, y = 95, label = "Dramatic increase\nin price is\nexplained by surge\nin consumption"),
             hjust = 0, lineheight = 0.8) +
  theme_half_open(font_size = 12) +
    labs(
        y = "US dollar per barrel",
        title = "Figure 5a. WTI price"
    )

opec_prod <- gp %>% 
  mutate(test = ifelse(opec == 'opec', opec, country)) %>% 
  group_by(test, year) %>% 
  summarise(production = sum(production)) %>% 
  filter(test == "opec" & year >= 1987) %>% 
  ggplot() +
  geom_line(aes(x = year, y = production),
            alpha = 0.6,
            color = 'steelblue') +
  theme_half_open(font_size = 12) +
    labs(y = "Thousand barrels per day",
         title = "Figure 5b. OPEC production")

usa_prod <- bp_consumption %>%
  filter(country == "US" | country == "China") %>% 
  group_by(year) %>% 
  summarise(consumption = sum(consumption)) %>% 
  filter(year >= 1987) %>% 
 ggplot() +
 geom_line(aes(x = year, y = consumption),
           alpha = 0.6,
           color = 'steelblue') +
  theme_half_open(font_size = 12) +
    labs(y = "Thousand barrels per day",
         title = "Figure 5c. US & China consumption" )
  


plot_grid(price, opec_prod, usa_prod, ncol = 1)


Results of analysis

From the start of our research, we expected the dominance of OPEC in the global petroleum market and the increasing role of the US. The historical analysis proved the influencing role of OPEC but it also showed that technological advancements in the US petroleum industry allowed them to start changing the balance in the market.

Further analysis of the WTI price suggested that OPEC’s regulations in production are not the only force that shapes the market. The rapid increase in consumption of oil driven by the US and China pushed prices up meeting the historically highest value.

Nevertheless, our research is only a glimpse of what is going on in the global petroleum market it is already obvious that the US’s role in the market is significant. If the production of American oil continues to grow we can expect it’s influence will outpace OPEC leaving the whole market behind. However, the prediction of the future of the market requires additional research.


References

  1. The information on quality of data provided by the EIA.gov

  2. OPEC share of world crude oil reserve

Appendix


Global production by EIA


* Country - Country of corresponding production * Year - Year of production * Production - Average production rate expressed in thousand barrels per day * Opec - Indication whether the country is a member of OPEC



Global consumption by BP


* Country - Country of corresponding consumption * Year - Year of consumption * Consumption - Average consumption rate expressed in thousand barrels per day


Market price by EIA


* Year - Year of the price * Crude - Type of crude sold * Price - Market price of the crude