Giriş
Daha önce sadece dolar alış kuruna ilişkin olarak bu site üzerinde farklı analiz yöntemleri ile karşılaştırmalı olarak geleceğe yönelik tahmin (forecast) çalışması yapılmıştır. Bu çalışmada ise T.C. Merkez Bankası günlük Dolar ve Euro alış kuru verileri kullanılarak tahmin yapılmıştır. Alış kuru tahminlerinde kullanılan değişkenler, 1980 yılından 19.03.2020 tarihine kadar olan gösterge niteliğindeki günlük dolar alış kuru ile 04.01.1999 tarihinden 19.03.2020 tarihine kadar olan euro alış kuru değerleridir.
Dolar kurunu etkileyen birçok farklı değişken modele dahil edilerek dolar alış kurunun tahmin edilmesi elbette her zaman mümkündür. Bu durumda dolar kuru ve diğer değişkenler arasındaki nedensellik (causality) ilişkisi ortaya konulmasından sonra model oluşturularak dolar kuru tahmini yapılabilir. Ancak bu durumda ortaya konulan bu değişkenlerin ölçülebilir olması da gereklidir. Diğer taraftan ölçülebilir olmayan nitel bir çok faktör de kurları etkileyebilmektedir. Örneğin uluslararası ilişkiler, salgınlar veya pandemiler, iç siyasi ortam, terör, küresel ekonomik durgunluk gibi pek çok faktör de modele sokulup analiz edilmesi gereklidir. Ancak bu faktörler ölçülebilir olmadığından modele sokulması oldukça zordur ve çoğu zaman dışarda bırakılmaktadır. Dışarda bırakılan bu faktörler ölçülebilir olan nicel değişkenlerden daha da önemli de olabilir. Bu durumda sadece nicel ölçülebilir olan değişkenlerin modele sokulması eksik sonuçlar ortaya koyacaktır. Diğer bir konu, değişkenler belirlense bile bu değişkenlerin kendi içerisinde ve aralarında oluşturabileceği geçişkenlik ile çifte etki (double effect) dikkate alınması gereklidir.
Gözlem sayısı oldukça yüksek olan dolar ve euro günlük alış kuru veri setlerinin kullanılması başlı başına çok değerli çıkarımlar ortaya konulmasına katkı sağlayacaktır. Çünkü, iç veya dış farklı sebeplerden ortaya çıkan ülkemizde döviz kuru dalgalanmaları, oynaklıkları ve şokları 40 yılı aşkın bir zaman içerisinde bir döngü olarak sürekli yaşanmıştır. Dolayısıyla, döviz kurunu etkileyen faktörler zaten mevcut olan veri setinin içerisindeki alış kur değerlerine yansımış olduğu ve döviz kurlarının ekonomide öncü göstergelerden biri olduğu düşünülmektedir.
Bahsedilen yukarıdaki sebeplerden dolayı bu çalışmada sadece dolar ve euro alış kurlarının kendi içinde izlediği seyir dikkate alınarak tahminleme modeli oluşturulmuştur.
Deneysel olarak Merkez Bankası veri tabanından 19.03.2020 tarihinde indirilmiş gösterge niteliğindeki günlük dolar ve euro alış kuru verisi üzerinden 19.03.2020 tarihinden başlayarak 31.12.2020 tarihine kadar (dahil) geçen 287 günlük bir zaman dilimi için tahmin yapılması amaçlanmıştır. Bu kapsamda sırasıyla izlenen adımlar şöyle özetlenebilir:
- Merkez Bankası online veri tabanından 02.01.1980 tarihinden 19.03.2019 tarihine kadar (bu tarih dahil) olan gösterge niteliğindeki günlük dolar ve euro alış kurları verisi xlsx olarak indirilmiştir. Bu veri setinde euro alış kur değerleri 04.01.1999 tarihinden itibaren yayınlandığı görülmektedir.
- Önceki dolar alış kuru tahminlemelerinden farklı olarak bu çalışmada daha iyi bir model kurmak ve tam zaman serisi oluşturmak adına Merkez Bankası haftalık son işlem gününe ait alış kur değeri haftalık bir sonraki ilk işlem gününe ait dolar alış kur değerleri oluşuncaya kadar tatil günlerinin kur değerleri olarak alınmıştır. Böylece modelleme için alış kur değerlerine ait tam zaman serisi elde edilmiştir. Burada izlenen yol şöyledir: örneğin, cumartesi ve pazar günü Merkez Bankası işlem günü olmadığı için yayınlanan en son güne ait alış kuru değeri cumartesi ve pazar günlerine yazılmıştır. İşlem günü dışındaki bütün günler için bu uygulama yapılmıştır. Yapılan bu işlem ticari işlemler mantığıyla örtüşmektedir. Bu işlem için küçük bir algoritma yazılmıştır. Sadece Merkez Bankası işlem günlerine ait dolar alış kurundaki gözlem sayısı 10138 iken, euro alış kurundaki gözlem sayısı ise 5338’dir. Ancak Merkez Bankası işlem günleri dışındaki günler de dahil edildiğinde dolar kuru için gözlem sayısı 14688, euro alış kuru için gözlem sayısı ise 7746’dır.
- Veri seti R programına yüklendikten sonra aylık, yıllık maksimum ve minimum kur değerlerine ilişkin grafikler verilmiştir.
- Maksimum ve minimum alış kur değerleri esas alınarak yıllık ve aylık dalga boyları hesaplanarak grafikleri çizilmiştir. Dalga boyu, ilgili döneme ait maksimum alış kuru değerinin minimum alış kuru değerinden farkının minimum dolar alış kuru değerine bölünerek 100 ile çarpılmasını ifade etmektedir. Dalga boyu en yalın ifadeyle aşağıdaki eşitlik yardımıyla hesaplanmıştır: Dalga Boyu= ((Maksimum Kur Değeri-Minimum Kur Değeri) / Minimum Kur Değeri) X 100. Dalga boyları ekonomide döviz şoklarının ve krizlerinin boyutunu görmek açısından önem arz etmektedir.
- 02.01.1980 tarihinden 19.03.2020 tarihine kadar zaman serisi oluşturularak dolar alış kurunun izlediği seyir zaman serisi bağlamında ele alınmıştır. Euro alış kuru için ise bu işlem 04.01.1999 tarihinden 19.03.2020 tarihine kadar yapılmıştır.04.01.1999 tarihinden önce Merkez Bankasının yayınladığı Euro alış kur değerleri bulunmamaktadır.
- TBATS (Exponential smoothing state space model with Box-Cox transformation, ARMA errors, Trend and Seasonal components) metodu kullanılarak 20.03.2020 tarihinden 31.12.2020 tarihine kadar (dahil) geçen 287 günlük bir tahmin yapılmıştır.
- 20.03.2020 tarihinden 31.12.2020 tarihine kadar (dahil) geçen zaman dilimine ait tahmini dolar alış kur değerleri ile 02.01.1980 tarihinden 24.04.2019 tarihine kadar olan gerçekleşmiş dolar alış kuru değerlerinin grafiği çizilerek dolar alış kurunun izlediği trend bir bütün olarak gösterilmiştir.
Keşifsel Veri Analizi
İlk olarak R’da analiz için gerekli aşağıdaki kütüphaneler yüklenmiştir.
sapply(c("dplyr","tibble","tidyr","ggplot2","formattable","ggthemes","forecast","xts","zoo","lubridate","readxl","xlsx"), require, character.only = TRUE)
Analizde kullanılan Merkez Bankası Dolar Alış Kuru verisinin okunması için yazılan R kod bloğu aşağıda verilmiştir.
df <- read_excel("aliskuruv1.xlsx", col_types = c("text", "numeric", "numeric"))
Veri setinin okunmasından sonra veri setinin “tibble” tablo düzenine alınması ve tarih verisinin ay ve yıla dönüştürülmesi için gerekli R kod bloğuna aşağıda yer verilmiştir.
d1 <-tibble(Tarih=dmy(df$Tarih), Yıl= year(dmy(df$Tarih)), Ay=month(df$Tarih), Dolar_Alis=as.numeric(df$Dolar_Alis), Euro_Alis=as.numeric(df$Euro_Alis))
Dolar Alış Kurunun Keşifsel Analizi
Veri setinden yıllara göre üretilen dolar alış kurunun seyrini gösteren grafiğe ilişkin R kod bloğu ise aşağıdadır.
d1 %>% ggplot(aes(Dolar_Alis, Yıl))+
geom_line(color="red")+
scale_y_continuous(breaks=seq(1980, 2020, 4))+
scale_x_continuous(breaks=seq(min(d1$Dolar_Alis), max(d1$Dolar_Alis),1.7))+
ggtitle("Yıllara Göre Dolar Alış Kuru Trendi") +
xlab("Kur (TL)") + ylab("Yıl")+
theme(plot.title = element_text(family = "Trebuchet MS", face="bold", size=14, hjust=0.5)) +
theme(axis.title = element_text(family = "Trebuchet MS", face="bold", size=10))+
theme(plot.caption = element_text(color = "blue", face="italic", hjust=0.5))+
labs(caption = "19/03/2020 Tarihli Merkez Bankası verilerinden Tevfik Bulut tarafından analiz edilmiştir.")
Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen yıllara göre dolar alış kuru seyri aşağıdaki grafikte verilmiştir.

Aylara göre döviz alış kurundaki maksimum ve minimum kur değerleri ile maksimum ve minimum kur farkının yüzdesel değişimi (Dalga Boyu)’ni hesaplamak için yazılan R kod bloğu aşağıdadır. Burada aynı zamanda tabloda yıl ve ayın olduğu sütunlar “Yilin_Ayi” adında birleştirilerek ayrı bir değişken olarak tanımlanmıştır.
ay<-d1 %>% group_by(Ay, Yıl)%>%summarise(Max_Dolar=max(Dolar_Alis),
Min_Dolar=min(Dolar_Alis), Dalga_Boyu=((max(Dolar_Alis)-
min(Dolar_Alis))/(min(Dolar_Alis))*100))
ay$Yilin_Ayi<-paste(ay$Yıl,"-",ay$Ay)
ay
Dolar alış kurlarında aylık dalga boylarının en yüksek olduğu ayları içeren ilk 20 kayıt bulunduğu yılı içerek şekilde aşağıdaki kod bloğu ile verilmiştir.
k4<-ay %>% select(Yilin_Ayi, Dalga_Boyu)%>%
arrange(desc(Dalga_Boyu))
k5<-head(k4[, -1],20)
#Dolar alış kuru dalga boyu en yüksek yıllar ve ait olduğu aylar
k5 %>% ggplot(aes(x=Yilin_Ayi, y=Dalga_Boyu))+
geom_area(size=2, color="red")+
theme(axis.text.x = element_text(face="bold",
size=8, angle=90),
axis.text.y = element_text(face="bold",
size=8, angle=90))+
geom_hline(yintercept=mean(k5$Dalga_Boyu), linetype="twodash", color = "green", size=1)+
ggtitle("Dolar Alış Kuru Aylık Dalga Boyları") +
xlab("Yılın Ayı") + ylab("Dalga Boyu (%)")+
labs(caption = "Source: Tevfik Bulut")+
theme(plot.title = element_text(family = "Trebuchet MS", face="bold", size=16, hjust=0.5)) +
theme(axis.title = element_text(family = "Trebuchet MS", face="bold", size=12))+
theme(plot.caption = element_text(color = "blue", face="italic", hjust=0.5))+
labs(caption = "19/03/2020 Tarihli Merkez Bankası verilerinden Tevfik Bulut tarafından analiz edilmiştir.")
Yukarıdaki kod bloğunun çalıştırılmasından sonra dolar alış kurlarında aylık dalga boylarının en yüksek olduğu ayları içeren ilk 20 kayıt bulunduğu yılı içerecek şekilde aşağıdaki grafikte verilmiştir. Aşağıdaki şekilde x eksenine yatay kırmızı çizgi dalga boylarının ortalamasını göstermektedir. Aşağıdaki grafik Türkiye’deki dolar kuruna ait şoklarının hangi yıl ve ayda en sert yaşadığını göstermesi açısından önem arz etmektedir. Bu grafik aynı zamanda dalga boyu ne kadar yüksek olursa ekonomiye verilen zararın boyutu o derece yüksek olur anlamına da gelmektedir. Bulgulardan ekonomide dalga boyunun en yüksek olduğu 1980 yılının 1. ayının ardın en yüksek 2. dalga boyu 1994 yılının 4. ayı olduğu görülmektedir. Dalga boyları aslında toplumdaki sosyolojik olguların bir sonucu olarak da yorumlanabilir. 1980 yılı darbesi, 1994 yılında alınan 5 Nisan Kararları sayılan bu sosyolojik olgulara örnek verilebilir.

Dolar alış kurlarında yıllık dalga boylarının en yüksek olduğu ilk 20 kayıt aşağıdaki kod bloğu ile verilmiştir.
yil<-ay %>% select(Yıl, Dalga_Boyu)%>%
arrange(desc(Dalga_Boyu))
ydb<-head(yil[,-1],20)
ydb %>% ggplot(aes(x=Yıl, y=Dalga_Boyu))+
geom_line(arrow = arrow(angle = 15, ends = "last", type = "open"),size=2, color="red")+
scale_x_continuous(breaks=seq(1980, 2020, 2))+
theme(axis.text.x = element_text(face="bold",
size=8, angle=90),
axis.text.y = element_text(face="bold",
size=8, angle=90))+
geom_hline(yintercept=mean(ydb$Dalga_Boyu), linetype="twodash", color = "green", size=2)+
ggtitle("Dolar Alış Kuru Yıllık Dalga Boyları") +
xlab("Yıl") + ylab("Dalga Boyu (%)")+
theme(plot.title = element_text(family = "Trebuchet MS", face="bold", size=16, hjust=0.5)) +
theme(axis.title = element_text(family = "Trebuchet MS", face="bold", size=12))+
theme(plot.caption = element_text(color = "blue", face="italic", hjust=0.5))+
labs(caption = "19/03/2020 Tarihli Merkez Bankası verilerinden Tevfik Bulut tarafından analiz edilmiştir.")
Yukarıdaki kod bloğunun çalıştırılmasından sonra dolar alış kurlarında yıllık dalga boylarının en yüksek olduğu ilk 20 kayıt aşağıdaki şekilde verilmiştir. Şekilde x eksenine yatay yeşil çizgi dalga boylarının ortalamasını göstermektedir.

Euro Alış Kurunun Keşifsel Analizi
Veri setinden yıllara göre üretilen euro alış kurunun seyrini gösteren grafiğe ilişkin R kod bloğu ise aşağıdadır.
d1<-d1 %>% filter(Tarih >= as.Date("1999-01-04"))#Euro alış kur değerleri 04.01.1999 tarihinden itibaren yayınlandığı için.
d1 %>% ggplot(aes(Euro_Alis, Yıl))+
geom_line(color="brown")+
scale_y_continuous(breaks=seq(1999, 2020, 4))+
scale_x_continuous(breaks=seq(min(d1$Euro_Alis), max(d1$Euro_Alis),1))+
labs(caption = "Source: Tevfik Bulut")+
ggtitle("Yıllara Göre Euro Alış Kurunun Seyri") +
xlab("Kur (TL)") + ylab("Yıl")+
theme(plot.title = element_text(face="bold", size=14, hjust=0.5)) +
theme(axis.title = element_text(face="bold", size=10))+
theme(plot.caption = element_text(color = "blue", face="italic", hjust=0.5))+
labs(caption = "19/03/2020 Tarihli Merkez Bankası verilerinden Tevfik Bulut tarafından analiz edilmiştir.")

Euro alış kurlarında aylık dalga boylarının en yüksek olduğu ayları içeren ilk 20 kayıt bulunduğu yılı içerek şekilde aşağıdaki kod bloğu ile verilmiştir.
k4<-ay %>% select(Yilin_Ayi, Dalga_Boyu)%>%
arrange(desc(Dalga_Boyu))
k5<-head(k4[, -1],20)
k5 %>% ggplot(aes(x=Yilin_Ayi, y=Dalga_Boyu))+
geom_area(size=2, color="red")+
theme(axis.text.x = element_text(face="bold",
size=8, angle=90),
axis.text.y = element_text(face="bold",
size=8, angle=90))+
geom_hline(yintercept=mean(k5$Dalga_Boyu), linetype="twodash", color = "blue", size=1)+
ggtitle("Euro Alış Kuru Aylık Dalga Boyları") +
xlab("Yılın Ayı") + ylab("Dalga Boyu (%)")+
theme(plot.title = element_text(face="bold", size=16, hjust=0.5)) +
theme(axis.title = element_text(face="bold", size=12))+
theme(plot.caption = element_text(color = "blue", face="italic", hjust=0.5))+
labs(caption = "19/03/2020 Tarihli Merkez Bankası verilerinden Tevfik Bulut tarafından analiz edilmiştir.")

Euro alış kurlarında yıllık dalga boylarının en yüksek olduğu ilk 20 kayıt aşağıdaki kod bloğu ile verilmiştir.
yil<-ay %>% select(Yıl, Dalga_Boyu)%>%
arrange(desc(Dalga_Boyu))
ydb<-head(yil[,-1],20)
ydb %>% ggplot(aes(x=Yıl, y=Dalga_Boyu))+
geom_line(arrow = arrow(angle = 15, ends = "last", type = "open"),size=2, color="red")+
scale_x_continuous(breaks=seq(1999, 2020, 2))+
theme(axis.text.x = element_text(face="bold",
size=8, angle=90),
axis.text.y = element_text(face="bold",
size=8, angle=90))+
geom_hline(yintercept=mean(ydb$Dalga_Boyu), linetype="twodash", color = "green", size=2)+
ggtitle("Euro Alış Kuru Yıllık Dalga Boyları") +
xlab("Yıl") + ylab("Dalga Boyu (%)")+
labs(caption = "Source: Tevfik Bulut")+
theme(plot.title = element_text(face="bold", size=16, hjust=0.5)) +
theme(axis.title = element_text(face="bold", size=12))+
theme(plot.caption = element_text(color = "blue", face="italic", hjust=0.5))+
labs(caption = "19/03/2020 Tarihli Merkez Bankası verilerinden Tevfik Bulut tarafından analiz edilmiştir.")

Tahmin
Dolar ve Euro alış kurlarının tahmininde kullanılan yöntem zaman serisi analiz yöntemlerinden biri olan TBATS’tir. Bu yöntem aşağıdaki yer alan bileşenleri bünyesinde barındırır.
- Üstel Düzeltme Metodu (Exponential Smoothing Method)
- Box-Cox Dönüşümü (Box-Cox Transformation)
- Artıklar için ARMA modeli (ARMA model for residuals)
- Mevsimsellik terimlerinin trigonometrik ifadesi (Trigonometric expression of seasonality terms)
De Livera, Hyndman ve Snyder (2011) tarafından geliştirilen TBATS (Trigonometric Seasonal, Box-Cox Transformation, ARMA residuals, Trend and Seasonality) yönteminin yazılışı parantez içerisinde koyu büyük harfle yazılan bileşenlerin baş harflerinden oluşur.
Zaman serisi analizlerinde tahmin yöntemi olarak kullanılarak TBATS yöntemi algoritmasıyla birlikte aşağıdaki R kod bloğunda verilmiştir.
function (x)
{
if (!is.null(x$lambda)) {
y <- BoxCox(x$y, x$lambda)
lambda <- attr(y, "lambda")
}
else {
y <- x$y
}
tau <- ifelse(!is.null(x$k.vector), 2 * sum(x$k.vector),
0)
w <- .Call("makeTBATSWMatrix", smallPhi_s = x$damping.parameter,
kVector_s = as.integer(x$k.vector), arCoefs_s = x$ar.coefficients,
maCoefs_s = x$ma.coefficients, tau_s = as.integer(tau),
PACKAGE = "forecast")
out <- cbind(observed = c(y), level = x$x[1, ])
if (!is.null(x$beta)) {
out <- cbind(out, slope = x$x[2, ])
}
if (tau > 0) {
nonseas <- 2 + !is.null(x$beta)
nseas <- length(x$seasonal.periods)
seas.states <- cbind(x$seed.states, x$x)[-(1:(1 + !is.null(x$beta))),
]
seas.states <- seas.states[, -ncol(seas.states)]
w <- w$w.transpose[, -(1:(1 + !is.null(x$beta))), drop = FALSE]
w <- w[, 1:tau, drop = FALSE]
j <- cumsum(c(1, 2 * x$k.vector))
for (i in 1:nseas) out <- cbind(out, season = c(w[, j[i]:(j[i +
1] - 1), drop = FALSE] %*% seas.states[j[i]:(j[i +
1] - 1), ]))
if (nseas > 1) {
colnames(out)[nonseas + 1:nseas] <- paste("season",
1:nseas, sep = "")
}
}
out <- ts(out)
tsp(out) <- tsp(y)
return(out)
}
Dolar Alış Kur Değerlerinin Tahmini
Tahmin için ilk olarak mevcut veri seti zaman serisine dönüştürülmüştür. Bu amaçla yazılan kod bloğu aşağıda verilmiştir.
y10 < - as.Date(df$Tarih, format = "%d - %m - %Y")
tev <- ts(as.vector(df[,2]), as.vector(y10))
data <- msts(tev,seasonal.periods=c(7,365.25))
Şimdi sıra TBATS yöntemi kullanılarak modelin oluşturulmasına gelmiştir. Dolar alış kuruna ait 287 günlük bir zaman serisi için tahmin yapılacağı için aşağıdaki R kod bloğunda h=287 olarak belirlenmiştir. Kurulan modele, kurulan modelden üretilen tahminlere ilişkin grafik için R kod bloğu bir bütün olarak aşağıda sunulmuştur.
data <- msts(tev,seasonal.periods=c(7,365.25))
model <- tbats(data)
sonuc<-forecast(model,h=287)
as.Date(df$Tarih, format = "%d - %m - %Y")
today1 <- seq(from = as.Date("2020-03-20"), to = as.Date("2020-12-31"), by = 1)
today2<-as.Date(today1, format = "%d - %m - %Y")
today3<-as_tibble(sonuc)
tbats<-cbind(Tarih=today2,today3)
tbats %>% ggplot(aes(x=Tarih, y=`Point Forecast`))+
geom_line(size=2, color="red")+
theme(axis.text.x = element_text(face="bold",
size=9, angle=0),
axis.text.y = element_text(face="bold",
size=9, angle=0))+
ggtitle("20/03/2020-31/12/2020 Tarihleri Günlük Dolar Alış Kuru Tahmin Değerleri") +
xlab("Tarih") + ylab("Tahmin Değeri (TL)")+
theme(plot.title = element_text(face="bold", size=12, hjust=0.5)) +
theme(axis.title = element_text(face="bold", size=10))+
scale_x_date(date_labels = "%Y %b %d")+
ylim(min(tbats$`Point Forecast`),max(tbats$`Point Forecast`))+
theme(plot.caption = element_text(color = "blue", face="italic", hjust=0.5))+
labs(caption = "19/03/2020 Tarihli Merkez Bankası verilerinden Tevfik Bulut tarafından analiz edilmiştir.")
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 287 günlük dolar kuru tahminleri aşağıdaki şekilde verilmiştir. Burada verilen tahminler nokta tahmin (point forecast)’lerini göstermektedir.

Güven aralıklı (CI: Confidence Interval) 287 günlük dolar kuru tahminlerine ilişkin grafik için yazılan R kod bloğu aşağıda sunulmuştur.
tbats %>% ggplot(aes(x=Tarih, y=`Point Forecast`))+
geom_line(size=1, color="red")+
theme(axis.text.x = element_text(face="bold",
size=8, angle=0),
axis.text.y = element_text(face="bold",
size=8, angle=0))+
ggtitle("20/03/2020-31/12/2020 Tarihleri Günlük Dolar Alış Kuru Tahmin Değerleri") +
xlab("Yıl") + ylab("Tahmin Değeri")+
theme(plot.title = element_text(face="bold", size=10, hjust=1)) +
theme(axis.title = element_text(face="bold", size=10))+
scale_x_date(date_labels = "%Y %b %d")+
ylim(min(tbats$`Lo 95`),max(tbats$`Hi 95`))+
geom_line(aes(y = `Lo 95`, color = "darkred", linetype = "dotted"))+
geom_line(aes(y = `Hi 95`, color="steelblue", linetype="twodash"))+
labs(caption = "19/03/2020 Tarihli Merkez Bankası verilerinden Tevfik Bulut tarafından analiz edilmiştir.")
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen güven aralıklı (CI: Confidence Interval) 287 günlük dolar alış kuru tahminleri aşağıdaki şekilde verilmiştir. Burada grafikte ortadaki tahminler nokta tahmin (point forecast)’lerini göstermektedir. Onun altındaki ve üstündeki eğriler ise alt ve üst limitleri göstermektedir.

Şimdi dolar alış kuru nokta tahmin (point forecast) değerlerini daha yakın planda görmek için tahminlere ilişkin zaman serileri ayrıştırılmıştır. İlk olarak dolar alış kuru tahmin değerlerine ilişkin 3, 4 ve 5. aylar için hesaplanmış zaman serileri verilmiş olup, buna ilişkin R kod bloğu aşağıda verilmiştir.
tbats1<-tbats %>%
group_by(Month=month(tbats$Tarih))%>%filter(Month>2&Month<6)
tbats1 %>% ggplot(aes(x=Tarih, y=`Point Forecast`))+
geom_line(size=1, color="red")+
theme(axis.text.x = element_text(face="bold",
size=8, angle=90),
axis.text.y = element_text(face="bold",
size=8, angle=90))+
ggtitle("3, 4 ve 5. Aylar Dolar Alış Kuru Nokta Tahmin Değerleri") +
xlab("Tarih") + ylab("Tahmin Değeri (TL)")+
theme(plot.title = element_text(face="bold", size=14, hjust=0.5)) +
theme(axis.title = element_text(face="bold", size=12))+
scale_x_date(date_labels = "%Y %b %d")+
ylim(min(tbats1$`Point Forecast`),max(tbats1$`Point Forecast`))+
theme(plot.caption = element_text(color = "blue", face="italic", hjust=0.5))+
labs(caption = "19/03/2020 Tarihli Merkez Bankası verilerinden Tevfik Bulut tarafından analiz edilmiştir.")
Yukarıdaki kod bloğunun çalıştırılmasından sonra dolar alış kuru tahmin değerlerine ilişkin 3, 4 ve 5. aylar için elde edilen grafik aşağıda verilmiştir.

Dolar alış kuru tahmin değerlerine ilişkin 6, 7 ve 8. aylar için hesaplanmış zaman serileri ilişkin R kod bloğu ise aşağıda verilmiştir.
tbats2<-tbats %>%
group_by(Month=month(tbats$Tarih))%>%filter(Month>5&Month<9)
tbats2 %>% ggplot(aes(x=Tarih, y=`Point Forecast`))+
geom_line(size=1, color="red")+
theme(axis.text.x = element_text(face="bold",
size=8, angle=0),
axis.text.y = element_text(face="bold",
size=8, angle=90))+
ggtitle("6, 7 ve 8. Aylar Dolar Alış Kuru Nokta Tahmin Değerleri") +
xlab("Tarih") + ylab("Tahmin Değeri(TL)")+
theme(plot.title = element_text(face="bold", size=14, hjust=0.5)) +
theme(axis.title = element_text(face="bold", size=12))+
scale_x_date(date_labels = "%Y %b %d")+
ylim(min(tbats2$`Point Forecast`),max(tbats2$`Point Forecast`))+
theme(plot.caption = element_text(color = "blue", face="italic", hjust=0.5))+
labs(caption = "19/03/2020 Tarihli Merkez Bankası verilerinden Tevfik Bulut tarafından analiz edilmiştir.")
Yukarıdaki kod bloğunun çalıştırılmasından sonra dolar alış kuru tahmin değerlerine ilişkin 6, 7 ve 8. aylar için elde edilen grafik aşağıda verilmiştir.

Dolar alış kuru tahmin değerlerine ilişkin 9, 10, 11 ve 12. aylar için hesaplanmış zaman serileri ilişkin R kod bloğu ise aşağıda verilmiştir.
tbats3<-tbats %>%
group_by(Month=month(tbats$Tarih))%>%filter(Month>8&Month<13)
tbats3 %>% ggplot(aes(x=Tarih, y=`Point Forecast`))+
geom_line(size=1, color="red")+
theme(axis.text.x = element_text(face="bold",
size=8, angle=0),
axis.text.y = element_text(face="bold",
size=8, angle=90))+
ggtitle("9, 10, 11 12. Aylar Dolar Alış Kuru Nokta Tahmin Değerleri") +
xlab("Tarih") + ylab("Tahmin Değeri(TL)")+
theme(plot.title = element_text(face="bold", size=14, hjust=0.5)) +
theme(axis.title = element_text(face="bold", size=12))+
scale_x_date(date_labels = "%Y %b %d")+
ylim(min(tbats3$`Point Forecast`),max(tbats3$`Point Forecast`))+
theme(plot.caption = element_text(color = "blue", face="italic", hjust=0.5))+
labs(caption = "19/03/2020 Tarihli Merkez Bankası verilerinden Tevfik Bulut tarafından analiz edilmiştir.")
Yukarıdaki kod bloğunun çalıştırılmasından sonra dolar alış kuru tahmin değerlerine ilişkin 9, 10, 11 ve 12. aylar için elde edilen grafik aşağıda verilmiştir.

Dolar alış kuru tahminlerinde zaman serisine göre ilk ve son 10 dolar alış kuru değerine ilişkin R kod bloğu aşağıda verilmiştir. Aşağıdaki R kod bloğunda elde edilen sonuçlar aynı zamanda xlsx uzantılı dosyaya da yazdırılmıştır.
tbats10d<-rbind(head(tbats[,-c(3:4)],10),tail(tbats[,-c(3:4)],10))
write.xlsx(tbats10d, file = "tbats10.xlsx",
sheetName = "dolaralistahmin", append = FALSE)
Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen ilk ve son 10 dolar alış kuru değerine aşağıdaki tabloda yer verilmiştir. Burada baz alınması gereken alan kırmızıya boyalı nokta tahminlerin (point forecasts) yer aldığı alandır. Diğer sütunlar % 95 güven aralığındaki alt ve üst limitleri ifade etmektedir.

Euro Alış Kur Değerlerinin Tahmini
Tahmin için ilk olarak mevcut veri seti zaman serisine dönüştürülmüştür. Bu amaçla yazılan kod bloğu aşağıda verilmiştir. Merkez Bankası tarafından yayınlanan gösterge niteliğindeki kurlarda euro alış kur değerleri zaman serisi 04.01.1999 tarihinden itibaren başlamaktadır.
d1<-d1%>%filter(Tarih >= as.Date("1999-01-04"))
y10<-d1$Tarih
tev<-ts(as.vector(d1[,5]), as.vector(y10))
eurodata <- msts(tev,seasonal.periods=c(7,365.25))
Şimdi sıra TBATS yöntemi kullanılarak modelin oluşturulmasına gelmiştir. Euro alış kuruna ait 287 günlük bir zaman serisi için tahmin yapılacağı için aşağıdaki R kod bloğunda h=287 olarak belirlenmiştir. Kurulan modele, kurulan modelden üretilen tahminlere ilişkin grafik için R kod bloğu bir bütün olarak aşağıda sunulmuştur.
eurodata <- msts(tev,seasonal.periods=c(7,365.25))
model <- tbats(eurodata)
sonuc<-forecast(model,h=287)
today1 <- seq(from = as.Date("2020-03-20"), to = as.Date("2020-12-31"), by = 1)
today2<-as.Date(today1, format = "%d - %m - %Y")
today3<-as_tibble(sonuc)
tbats<-cbind(Tarih=today2,today3)
tbats %>% ggplot(aes(x=Tarih, y=`Point Forecast`))+
geom_line(size=2, color="red")+
theme(axis.text.x = element_text(face="bold",
size=9, angle=0),
axis.text.y = element_text(face="bold",
size=9, angle=0))+
ggtitle("20/03/2020-31/12/2020 Tarihleri Günlük Euro Alış Kuru Tahmin Değerleri") +
xlab("Tarih") + ylab("Tahmin Değeri (TL)")+
theme(plot.title = element_text(face="bold", size=12, hjust=0.5)) +
theme(axis.title = element_text(face="bold", size=10))+
scale_x_date(date_labels = "%Y %b %d")+
ylim(min(tbats$`Point Forecast`),max(tbats$`Point Forecast`))+
theme(plot.caption = element_text(color = "blue", face="italic", hjust=0.5))+
labs(caption = "19/03/2020 Tarihli Merkez Bankası verilerinden Tevfik Bulut tarafından analiz edilmiştir.")
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 287 günlük euro alış kuru tahminleri aşağıdaki şekilde verilmiştir. Burada verilen tahminler nokta tahmin (point forecast)’lerini göstermektedir.

Güven aralıklı (CI: Confidence Interval) 287 günlük euro alış kuru tahminlerine ilişkin grafik için yazılan R kod bloğu aşağıda sunulmuştur.
tbats %>% ggplot(aes(x=Tarih, y=`Point Forecast`))+
geom_line(size=1, color="blue")+
theme(axis.text.x = element_text(face="bold",
size=8, angle=0),
axis.text.y = element_text(face="bold",
size=8, angle=90))+
ggtitle("20/03/2020-31/12/2020 Tarihleri Günlük Euro Alış Kuru Tahmin Değerleri") +
xlab("Yıl") + ylab("Tahmin Değeri")+
theme(plot.title = element_text(face="bold", size=10, hjust=1)) +
theme(axis.title = element_text(face="bold", size=10))+
scale_x_date(date_labels = "%Y %b %d")+
ylim(min(tbats$`Lo 95`),max(tbats$`Hi 95`))+
geom_line(aes(y = `Lo 95`, color = "darkred", linetype = "dotted"))+
geom_line(aes(y = `Hi 95`, color="steelblue", linetype="twodash"))+
labs(caption = "19/03/2020 Tarihli Merkez Bankası verilerinden Tevfik Bulut tarafından analiz edilmiştir.")
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen güven aralıklı (CI: Confidence Interval) 287 günlük euro alış kuru tahminleri aşağıdaki şekilde verilmiştir. Burada grafikte ortadaki tahminler nokta tahmin (point forecast)’lerini göstermektedir. Onun altındaki ve üstündeki eğriler ise alt ve üst limitleri göstermektedir.

Şimdi euro alış kuru nokta tahmin (point forecast) değerlerini daha yakın planda görmek için tahminlere ilişkin zaman serileri ayrıştırılmıştır. İlk olarak euro alış kuru tahmin değerlerine ilişkin 3, 4 ve 5. aylar için hesaplanmış zaman serileri verilmiş olup, buna ilişkin R kod bloğu aşağıda verilmiştir.
tbats1<-tbats %>% group_by(Month=month(tbats$Tarih))%>%filter(Month>2&Month<6)
tbats1 %>% ggplot(aes(x=Tarih, y=`Point Forecast`))+
geom_line(size=1, color="red")+
theme(axis.text.x = element_text(face="bold",
size=8, angle=0),
axis.text.y = element_text(face="bold",
size=8, angle=0))+
ggtitle("3, 4 ve 5. Aylar Euro Alış Kuru Nokta Tahmin Değerleri") +
xlab("Tarih") + ylab("Tahmin Değeri(TL)")+
theme(plot.title = element_text(face="bold", size=14, hjust=0.5)) +
theme(axis.title = element_text(face="bold", size=12))+
scale_x_date(date_labels = "%Y %b %d")+
ylim(min(tbats1$`Point Forecast`),max(tbats1$`Point Forecast`))+
theme(plot.caption = element_text(color = "blue", face="italic", hjust=0.5))+
labs(caption = "19/03/2020 Tarihli Merkez Bankası verilerinden Tevfik Bulut tarafından analiz edilmiştir.")
Yukarıdaki kod bloğunun çalıştırılmasından sonra euro alış kuru günlük tahmin değerlerine ilişkin 3, 4 ve 5. aylar için elde edilen grafik aşağıda verilmiştir.

Euro alış kuru tahmin değerlerine ilişkin 6, 7 ve 8. aylar için hesaplanmış zaman serileri ilişkin R kod bloğu ise aşağıda verilmiştir.
tbats2<-tbats %>%
group_by(Month=month(tbats$Tarih))%>%filter(Month>5&Month<9)
tbats2 %>% ggplot(aes(x=Tarih, y=`Point Forecast`))+
geom_line(size=1, color="red")+
theme(axis.text.x = element_text(face="bold",
size=8, angle=0),
axis.text.y = element_text(face="bold",
size=8, angle=0))+
ggtitle("6, 7 ve 8. Aylar Euro Alış Kuru Nokta Tahmin Değerleri") +
xlab("Tarih") + ylab("Tahmin Değeri(TL)")+
theme(plot.title = element_text(face="bold", size=14, hjust=0.5)) +
theme(axis.title = element_text(face="bold", size=12))+
scale_x_date(date_labels = "%Y %b %d")+
ylim(min(tbats2$`Point Forecast`),max(tbats2$`Point Forecast`))+
theme(plot.caption = element_text(color = "blue", face="italic", hjust=0.5))+
labs(caption = "19/03/2020 Tarihli Merkez Bankası verilerinden Tevfik Bulut tarafından analiz edilmiştir.")
Yukarıdaki kod bloğunun çalıştırılmasından sonra euro alış kuru günlük tahmin değerlerine ilişkin 6, 7 ve 8. aylar için elde edilen grafik aşağıda verilmiştir.

Euro alış kuru tahmin değerlerine ilişkin 9, 10, 11 ve 12. aylar için hesaplanmış zaman serileri ilişkin R kod bloğu ise aşağıda verilmiştir.
tbats3<-tbats %>% group_by(Month=month(tbats$Tarih))%>%filter(Month>8&Month<13)
tbats3 %>% ggplot(aes(x=Tarih, y=`Point Forecast`))+
geom_line(size=1, color="red")+
theme(axis.text.x = element_text(face="bold",
size=8, angle=0),
axis.text.y = element_text(face="bold",
size=8, angle=0))+
ggtitle("9, 10, 11 ve 12. Aylar Euro Alış Kuru Nokta Tahmin Değerleri") +
xlab("Tarih") + ylab("Tahmin Değeri(TL)")+
theme(plot.title = element_text(face="bold", size=14, hjust=0.5)) +
theme(axis.title = element_text(face="bold", size=12))+
scale_x_date(date_labels = "%Y %b %d")+
ylim(min(tbats3$`Point Forecast`),max(tbats3$`Point Forecast`))+
theme(plot.caption = element_text(color = "blue", face="italic", hjust=0.5))+
labs(caption = "19/03/2020 Tarihli Merkez Bankası verilerinden Tevfik Bulut tarafından analiz edilmiştir.")
Yukarıdaki kod bloğunun çalıştırılmasından sonra euro alış kuru günlük tahmin değerlerine ilişkin 9, 10, 11 ve 12. aylar için elde edilen grafik aşağıda verilmiştir.

Euro alış kuru tahminlerinde zaman serisine göre ilk ve son 10 euro günlük alış kuru değerine ilişkin R kod bloğu aşağıda verilmiştir. Aşağıdaki R kod bloğunda elde edilen sonuçlar aynı zamanda xlsx uzantılı dosyaya da yazdırılmıştır.
tbats10e<-rbind(head(tbats[,-c(3:4)],10),tail(tbats[,-c(3:4)],10))
write.xlsx(tbats10e, file = "tbats10e.xlsx",
sheetName = "euroalistahmin", append = FALSE)
Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen ilk ve son 10 Euro günlük alış kuru değerine aşağıdaki tabloda yer verilmiştir. Burada baz alınması gereken alan kırmızıya boyalı nokta tahminlerin (point forecasts) yer aldığı alandır. Diğer sütunlar % 95 güven aralığındaki alt ve üst limitleri ifade etmektedir.

Sonuç
Yapılan çalışma kapsamında Merkez Bankası online veri tabanından 02.01.1980 tarihinden 19.03.2019 tarihine kadar (bu tarih dahil) olan gösterge niteliğindeki günlük dolar ve euro alış kurları verisi alınmıştır. Bu kur verileri üzerinden keşifsel veri analizi yapılarak analizin ilk adımı gerçekleştirilmiştir. Önceki çalışmalardan farklı olarak küçük bir algoritmayla bu çalışmada haftalık son işlem günü baz alınarak işlem günü dışında günlere ait alış kur değerleri de üretilerek daha iyi modelleme yapılabilmesi adına tam zaman serisi oluşturulmuştur. TBATs yönteminin kullanıldığı tahmin modellemesinde kullanılan gözlem sayısı günlük dolar alış kuru için 14688, günlük euro alış kuru için ise 7746’dir. Bu aynı zamanda şu anlama gelmektedir; dolar alış kuru için 14688, euro alış kuru için ise 7746 günün alış kur değeri gözlem sayısı olarak alınmıştır.
% 95 güven aralıklarıyla ortaya konulan tahmin bulgularına göre 31.12.2020 tarihinde dolar alış kuru nokta tahmin (point forecast) değeri 6,70239, euro alış kuru nokta tahmin değeri ise 7,16282 TL’dir. Yaklaşık 40 yıllık bir zaman diliminde dolar kurunun izlediği genel seyir pozitif ve yukarı yönlü olduğu dikkate alındığında dönem sonu dolar tahmininin nokta tahminin üstünde ancak % 95 güven aralığındaki üst limitin altında olması öngörülmektedir. Diğer taraftan benzer durum euro kurunda da mümkündür ancak euro kurunun izlediği genel seyir dolar kuruna göre daha yumuşaktır. Dolayısıyla burada yapılan modellemeden elde edilen tahminler nokta tahminler ve bu tahminlerin % 95 güven aralığındaki üst limite kadar olan aralıkta ele alınmasının daha sağlıklı olacağı düşünülmektedir.
Son olarak koronavirüs pandemisinden dolayı başta Türkiye olmak üzere Dünyadaki hemen bütün ülkeler para arzını artırarak piyasaya müdahale de bulunmaktadır. Hatta bazı ülkelerde Merkez Bankalarına sınırsız para basma hakkı bile verilmiştir. Ancak artan para arzı belirli düzeye kadar kurlarda düşüş sağlayabilse de risk ve belirsizlik çok yüksek olduğundan kurlardaki yükselme trendi devam edeceği düşünülmektedir.
Bu çalışmanın şeffaflık, açık kaynak olması ve yapılan modelleme açısından özellikle dolar ve euro alış kuru tahminlerinde sektörlere ve akademik camiaya önemli ve yenilikçi bir katkı sunacağı düşünülmektedir.
Faydalı olması ve farkındalık oluşturması dileğiyle.
Bilimle ve teknolojiyle kalınız.
Saygılarımla…
Not: Emeğe saygı adına, burda yapılan çalışmanın başka bir mecrada ya da ortamda paylaşılması halinde alındığı yer adının belirtilmesini rica ederim.
Note: In the name of respect for labor, I would kindly request that the name of the place where this work is taken if the work done on this web site is shared in another medium or environment.
Yararlanılan Kaynaklar
https://www.r-project.org/
De Livera, Alysha M. “Automatic forecasting with a modified exponential smoothing state space framework.” Monash Econometrics and Business Statistics Working Papers 10, no. 10 (2010).
De Livera, Alysha M., Rob J. Hyndman, and Ralph D. Snyder. “Forecasting time series with complex seasonal patterns using exponential smoothing.” Journal of the American Statistical Association 106, no. 496 (2011): 1513-1527.
http://tagteam.harvard.edu/hub_feeds/1981/feed_items/273923
http://trap.ncirl.ie/3424/1/sonaligupta.pdf
https://pdfs.semanticscholar.org/65d4/7c33e1a4f01c45c44479df3356ad191dafb6.pdf
Antonio Preti & Gianluca Lentini (2016) Forecast models for suicide: Time-series analysis with data from Italy, Chronobiology International, 33:9, 1235-1246, DOI:10.1080/07420528.2016.1211669
https://yintingchou.com/posts/bats-and-tbats-model/
https://michaeltoth.me/the-ultimate-opinionated-guide-to-base-r-date-format-functions.html
https://robjhyndman.com/publications/complex-seasonality/
https://otexts.com/fpp2/combinations.html
https://tevfikbulut.com/2019/09/30/doviz-kurlarindaki-dalga-boylarinin-hesaplanmasina-yonelik-yontem-onerileri-ii-wt-ve-ct-yontemleri/
https://tevfikbulut.com/2020/01/21/2020-yil-sonu-dolar-tl-alis-kurunun-tahmini-uzerine-karsilastirmali-bir-vaka-calismasi-ii-a-comparative-case-study-on-forecast-of-usd-try-exchange-rate-at-the-end-of-2020-year-ii/
https://tevfikbulut.com/2020/01/06/dolar-kurunun-tahmini-uzerine-bir-vaka-calismasi-a-case-study-on-forecast-of-usd-exchange-rate/
Antonio Preti & Gianluca Lentini (2016) Forecast models for suicide: Time-series analysis with data from Italy, Chronobiology International, 33:9, 1235-1246, DOI:10.1080/07420528.2016.1211669
https://tevfikbulut.com/2020/01/14/2020-yil-sonu-dolar-tl-alis-kurunun-tahmini-uzerine-karsilastirmali-bir-vaka-calismasi-a-comparative-case-study-on-forecast-of-usd-try-exchange-rate-at-the-end-of-2020-year/