Aim of this Study

Contents

  1. Historical Overview of Natural Gas Market in Turkey

  2. What is Gas Reference Price?

  3. More Analysis on Gas Reference Price
  1. Key Takeaways

1. Historical Overview of Natural Gas Market in Turkey

From the 1970s to early 2000s, BOTAŞ (Boru Hatları ile Petrol Taşıma A.Ş.) was the only entity in the market that managed both the importation, distribution and transportation of natural gas. With the goal of increasing the number of actors in the market so that the market can be more competitive and fairness in prices can be achieved, the government introduced a law in 2001.

After the introduction of the law, BOTAŞ was no more the only importer, nor the only distributor in the market but totally kept its transportation duties. These newly added parties started to exchange natural gas between them, since it is not possible to be 100% precise in forecasting the demand and supply. These differences between supplies and demands are called “imbalances” and getting rid of these imbalances proved troublesome over time. Also, most of these exchange agreements were bilateral, so it was a really difficult task to generate a base price in the market and prevent fraud.

Based upon the reasons explained above, EPİAŞ (Enerji Piyasaları İşletme A.Ş.) launched an online platform called OTSP (Organize Toptan Doğalgaz Satış Piyasası) in September 2018, aiming

  • To have an online platform where participants can easily trade natural gas 24/7, so that the market can be more dynamic.
  • To easily overcome the occurred imbalances in the market.
  • To have a better offering system with constantly updating the cumulative mean of the prices from matched offers, namely Gas Reference Price (GRP), which the participants are able to see perpetually.
  • To have Turkey determine the natural gas price in its region, so that the country can avoid excessive importation prices.

2. What is Gas Reference Price?

In natural gas market, trades are being done in intervals called “Gas Day”. A gas day (assuming we are in day “G”) is defined as the interval starting from the day-ahead (“G-1”) at 8 am to day-after (“G+1”) at 2 pm. So basically, it is a 54 hour period.

Natural Gas Reference Price (GRP) is the cumulative mean of the matched sale / purchase offer prices. It is designated to guide participants while they are trading, so that the market can lead itself and also to be used in imbalance corrections. GRP calculations only take prices of day-ahead (“G-1”) and intraday (“G”) matches into consideration, not day-after (“G+1”) prices.

By looking at the percentage of GRP matches among all matches, we can see that it is trending slightly upwards but it is not close to what I was expecting. (The data I used belongs to EPİAŞ Transparency Platform.)

Including the libraries that will be needed.

library(data.table)
library(dplyr)
library(ggplot2)
library(readxl)
library(lubridate)
library(zoo)
library(latticeExtra)
library(tidyr)

Importing the data about the number of matches occured in “G-1”, “G” and “G+1” days, from 2018-09-01 to 2019-11-16.

match_numbers <- read_excel("match_numbers.xls")

Reaaranging the data so that we can have a nicely formatted and named table.

match_numbers <- as.data.table(match_numbers)
match_numbers <- match_numbers %>%
                        rename(Date = Kontrat,
                               DBM = GÖEM,
                               IDM = GİEM,
                               DAM = GEEM) %>%
                        separate(Date, c("nulled", "Date_New"), "GG")
match_numbers$Date_New <- as.Date(match_numbers$Date_New, "%Y%m%d")
match_numbers$DBM <- as.numeric(match_numbers$DBM)
match_numbers$IDM <- as.numeric(match_numbers$IDM)
match_numbers$DAM <- as.numeric(match_numbers$DAM)

Adding the GRP Percentage column, finding monthly averages and one final formatting.

match_numbers <- match_numbers %>%
                        select(Date_New, DBM, IDM, DAM) %>%
                        rename(Date = Date_New) %>%
                        mutate(GRP_Percantage = 100*(DBM+IDM)/(DBM+IDM+DAM))
GRP_Percent_Monthly <- match_numbers %>%
                        mutate(Year = year(Date), Month = month(Date)) %>%
                        group_by(Year, Month) %>%
                        summarise(GRP_AVG_PERCENT = mean(GRP_Percantage))
GRP_Percent_Monthly$Date <- as.yearmon(paste(GRP_Percent_Monthly$Year," ",
                                             GRP_Percent_Monthly$Month),
                                       "%Y %m")
GRP_Percent_Monthly$Date <- as.Date(GRP_Percent_Monthly$Date, format = "%b %Y")

Finally, plotting the data over time.

ggplot(GRP_Percent_Monthly, aes(x=GRP_Percent_Monthly$Date, 
                                           y=GRP_Percent_Monthly$GRP_AVG_PERCENT)) +
                geom_line(color="darkblue") +
                labs(title = "Percentage of Average Monthly GRP Matches", 
                        x = "Date",
                        y = "GRP Matches (%)") +
                ylim(0,100) +
                scale_x_date(date_breaks = "1 month", date_labels = "%b %Y") +
                theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
                geom_smooth(method = "lm", color = "red")

Let’s see the statistical summary of average GRP percentage.

summary(GRP_Percent_Monthly$GRP_AVG_PERCENT)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   14.33   32.12   40.68   39.15   46.55   57.80

To have a conclusion in this part, I think as time passes and participants are getting more and more used to the online market, trading with Gas Reference Price will be more popular.

3. More Analysis on Gas Reference Price

A. Gas Reference Price Behaviour with Time

Now let’s investigate the behaviour of GRP. First, importing the data. (The data I used belongs to EPİAŞ Transparency Platform.)

grp <- read_excel("daily_grf.xlsx")

Organizing the data.

grp <- grp %>%
        slice(2:443) %>%
        rename(Date = daily_grf,
               GRP = ...2)
grp$Date <- dmy(grp$Date)
grp$GRP <- as.numeric(grp$GRP)

Now, plotting daily GRP data over time with a trendline.

ggplot(grp, aes(x=grp$Date, y=grp$GRP)) +
                geom_line(color="darkblue") +
                labs(title = "Natural Gas Reference Price over Time", 
                        x = "Date",
                        y = "Natural GRP (TL/1000Sm3)") +
                scale_x_date(date_breaks = "1 month", date_labels = "%b %Y") +
                theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
                geom_smooth(method = "lm", color = "red")

It seems like GRP is trending downwards. To have a better understanding, let’s find the monthly averages.

grp_monthly <- grp %>%
                mutate(Year = year(Date), Month = month(Date)) %>%
                group_by(Year, Month) %>%
                summarise(Monthly_GRP = mean(GRP))
grp_monthly$Year <- as.numeric(unlist(grp_monthly$Year))
grp_monthly$Month <- as.numeric(unlist(grp_monthly$Month))
grp_monthly$Date <- as.yearmon(paste(grp_monthly$Year," ",grp_monthly$Month), "%Y %m")
grp_monthly$Date <- as.Date(grp_monthly$Date, format = "%b %Y")

And we are ready to see the plot.

ggplot(grp_monthly, aes(x=grp_monthly$Date, y=grp_monthly$Monthly_GRP)) +
                geom_line(color="darkblue") +
                geom_point(shape=5, size=2, color="red") +
                labs(title = "Monthly Average of GRP over Time",
                     x = "Date",
                     y = "Natural GRF (TL/1000Sm3)") +
                ylim(1400, 1600) +
                scale_x_date(date_breaks = "1 month", date_labels = "%b %Y") +
                theme(axis.text.x = element_text(angle = 45, hjust = 1))

As we can see, participants had a hard time finding the balance in GRP in first couple of months but as the system settled down, prices slowly decreased. And in the last couple of months, GRP had its lowest values.

Since data we have is from September 2018 to November 2019, we cannot analyze the daily average of GRP for each month. It would have been a informing analysis about the seasonal behaviour of GRP in each month of the year, if we had more data points.

B. Gas Reference Price Behaviour with Currency Rate

Since, importer companies do not reveal the importation prices, I decided to compare the GRP with the Russian Ruble - Turkish Lira currency rate. The reason I picked Russian Ruble is that 47% percent of natural gas imports of Turkey in 2018 was from Russia. (The data I used belongs to TC Merkez Bankası.)

Importing the data,

rub_try <- read_excel("ruble_kuru.xlsx")

Now, let’s organize the data.

rub_try <- rub_try %>%
            select(Tarih:`TP DK RUB A`) %>%
            rename(Exc_Rate = `TP DK RUB A`,
                   Date = Tarih) %>%
            slice(1:1050)
rub_try <- as.data.table(rub_try)

Since exchange markets are closed at the weekend, the data points for these weekend days are missing. I filled the blank cells with the currency rate of previous friday and made a couple of formatting.

rub_try <- rub_try[, Currency_Rate := na.locf0(Exc_Rate)]
rub_try <- rub_try %>%
            select(Date, Currency_Rate)
rub_try$Date <- dmy(rub_try$Date)

Let’s take a look at the table now. (There is one NA in the first row but it is already outside our time interval.)

rub_try
##             Date Currency_Rate
##    1: 2017-01-01            NA
##    2: 2017-01-02       0.05732
##    3: 2017-01-03       0.05728
##    4: 2017-01-04       0.05835
##    5: 2017-01-05       0.05838
##   ---                         
## 1046: 2019-11-12       0.08979
## 1047: 2019-11-13       0.08966
## 1048: 2019-11-14       0.08905
## 1049: 2019-11-15       0.08929
## 1050: 2019-11-16       0.08929

Merging the GRP and RUB-TRY currency by time.

grp_with_currency <- merge(grp, rub_try, by="Date")
grp_with_currency$GRP <- as.numeric(grp_with_currency$GRP)

Let’s take a look at the first 8 columns of the table.

head(grp_with_currency,8)
##         Date     GRP Currency_Rate
## 1 2018-09-01 1650.00       0.09359
## 2 2018-09-02 1650.00       0.09359
## 3 2018-09-03 1656.45       0.09575
## 4 2018-09-04 1644.23       0.09697
## 5 2018-09-05 1655.90       0.09732
## 6 2018-09-06 1639.40       0.09716
## 7 2018-09-07 1649.06       0.09589
## 8 2018-09-08 1633.70       0.09589

Now to have a better visual understanding, let’s plot these two variables together.

obj1 <- xyplot(grp_with_currency$GRP ~ grp_with_currency$Date, data=grp_with_currency,
               main="GRP - Currency Rate over Time",
               type ="l",
               xlab="Time",
               ylab="GRP (TL/1000Sm3)",
               scales=list(x=list(rot=90,tick.number=15, format="%b %Y")))

obj2 <- xyplot(grp_with_currency$Currency_Rate ~ grp_with_currency$Date, 
               data=grp_with_currency,
               type = "l",
               ylab="Currency Rate")
               
doubleYScale(obj1, obj2, add.ylab2 = TRUE)

By looking at the plot, there seems to be correlation between these two variables. Now let’s take a look at the correlation statistic.

cor(grp_with_currency$GRP, grp_with_currency$Currency_Rate)
## [1] 0.281929

So by looking at the value of 0.282 , we can conclude that there is a poor positive correlation between gas reference price and currency rate.

C. Relationship between GRP and Consumer Price Index of Natural Gas

In this part, what I wanted to analyze was to have a clear view of the effect of Gas Reference Price on Consumer Price Index of Natural Gas. By doing so, we can see how people in general is effected by the price that natural gas is being traded with in the market.

First, importing the file. (The data I used belongs to TUİK.)

cpi <- read.csv(file="CIP_Natural_Gas.csv", header=TRUE, sep="|")

Manipulating the data, so we can compare it with GRP.

#removing unnecassary columns and some renaming
cpi <- cpi %>%
        select(X.2:X.13) %>%
        filter(!is.na(X.2)) %>%
        rename(Years = X.2,
               January = Sütunlar,
               February = X.3,
               March = X.4,
               April = X.5,
               May = X.6,
               June = X.7,
               July = X.8,
               August = X.9,
               September = X.10,
               October = X.11,
               November = X.12,
               December = X.13)
cpi <- as.data.table(cpi)
#need to get the data from 2018-09-01 to 2019-11-01
cpi_2018 <- cpi[14,]
cpi_2019 <- cpi[15,]
cpi_2018_2019 <- as.data.table(c(cpi_2018, cpi_2019))
#now we should transpose this table
cpi_2018_2019 <- t(cpi_2018_2019)
cpi_2018_2019 <- as.data.table(cpi_2018_2019)
#we should remove unnecassary columns now
cpi_2018_2019 <- cpi_2018_2019[-c(1,14,25,26)]
cpi_2018_2019 <- cpi_2018_2019 %>%
                        mutate(Date=seq.Date(from=as.Date("2018-01-01"), 
                                             to=as.Date("2019-10-01"), by="month")) %>%
                        rename(Cpi_Gas = V1)

Now the table is ready to merge with GRP table.

#merging grp with cpi
grp_with_cpi <- merge(cpi_2018_2019, grp_monthly, by="Date")
grp_with_cpi$Cpi_Gas <- as.numeric(grp_with_cpi$Cpi_Gas)
grp_with_cpi <- grp_with_cpi %>%
                        select(Date, Cpi_Gas, Monthly_GRP)

Let’s take a look at the final version of the table.

grp_with_cpi
##          Date Cpi_Gas Monthly_GRP
## 1  2018-09-01  1.3671    1576.284
## 2  2018-10-01  1.4890    1580.432
## 3  2018-11-01  1.5046    1480.222
## 4  2018-12-01  1.4992    1452.163
## 5  2019-01-01  1.3742    1550.164
## 6  2019-02-01  1.3713    1459.291
## 7  2019-03-01  1.3711    1499.178
## 8  2019-04-01  1.3732    1473.625
## 9  2019-05-01  1.3800    1512.374
## 10 2019-06-01  1.3924    1505.658
## 11 2019-07-01  1.3968    1505.177
## 12 2019-08-01  1.6013    1471.441
## 13 2019-09-01  1.8242    1483.943
## 14 2019-10-01  1.8262    1458.225

Since the online platform is a fairly new system and consumer price index values are published monthly, the number of data points radically decreased, specifically to 14.

Nevertheless, it still makes sense to check the correlation in between.

cor(grp_with_cpi$Monthly_GRP, grp_with_cpi$Cpi_Gas)
## [1] -0.3746983

This value is not something we would have expected. Logically, we would have expected them to be strongly positive correlated, because the market price of the gas should directly effect the price of the gas people consume. At this point we can guess, the goverment has not been marking up the prices sufficiently up until now and there might be some more mark ups in the near future.

4. Key Takeaways

  • Preferring Gas Reference Price as the trading price in the market is getting more and more popular and I think this trend is going to continue as the system continues to mature.
  • Over the course of the last 14 months, Gas Reference Price had a downwards trend and I think it is getting closer to the balance value. Unfortunately, there was not enough data points to have a better analysis on the seasonality.
  • Gas Reference Price and the exchange rate between Russian Ruble and Turkish Lira have a slightly positive correlation between them, which is reasonable considering almost half of our imports are from Russia.
  • Gas Reference Price, unexpectedly, did not have a positive effect on Consumer Price Index of Natural Gas. The reason behind this might be that government did not mark up sufficiently due to couple of elections Turkey had last year. We might see some increases in natural gas prices in the near future.