R’da Yeni Bir Paket: TCMB

Türkiye Cumhuriyet Merkez Bankası’nın (TCMB) Elektronik Veri Dağıtım Sistemi (EVDS) önemli veri kaynaklarından biridir. Bu bilinç ile siz EVDS’den faydalanan R kullanıcılarının alternatif bir yol ile veri indirmesini sağlayacak bir paket yazdım: TCMB

Benim açımdan önemi R alanında yazmış olduğum ilk ciddi paket; genel açıdan önemi ise içeriğinin Türkçe olmasıdır. Fonksiyonlarını ve dokümanını Türkçe yazmamdaki amaç katılımı arttırmak; hiç R kullanmayan birinin dahi ilgisini çekerek R programlama dilini kullanmasına önayak olmaktır.

Paketi devtools yardımı ile aşağıdaki gibi yükleyebilirsiniz.

devtools::install_github("rpydaneogrendim/TCMB")

Yükleme işleminden sonra paket aşağıdaki gibi çağrılabilir. Dilerseniz TCMB:: ile de fonksiyonlara ulaşabilirsiniz.

library(TCMB)

Yükleme ve çağırma işlemlerinden sonra TCMB/EVDS’den alacağınız bir API anahtarına ihtiyacınız olacak. Yardımcı olması için yardim() fonksiyonunu kullanabilirsiniz.

yardim()

[1] https://evds2.tcmb.gov.tr/index.php?/evds/login adresine gidin.
[1] Uye ekraninda giris yaptiktan sonra Kullanici ismine tiklayip gelen menudeki Profil secenegine tiklayin.
[1] Gelen ekrandan API Anahtari dugmesine tiklayarak ihtiyaciniz olan degere ulasabilirsiniz.
[1] Paketi cagirdiktan sonra anahtar() fonksiyonu ile anahtarinizi tanitin.

yardim() fonksiyonu ile ilgili detaylı bilgiye ?yardim komutu ile ulaşabilirsiniz.

API anahtarını aldıktan sonra bunu anahtar() fonksiyonu yardımı ile tanıtmalısınız. Eğer tanıtmazsanız bu bilgiye ihtiyaç duyan fonksiyonların bir hata mesajı döndürdüğünü göreceksiniz. İlgili hata mesajı: Lutfen TCMB’den API anahtarinizi alin. Detayli bilgi icin yardim() fonksiyonunu calistirin.

anahtar(api_anahtar = "api_anahtar")

anahtar() fonksiyonu ile ilgili detaylı bilgiye ?anahtar komutu ile ulaşabilirsiniz.

Paket 4 adet majör fonksiyona sahip ve bir sırayı takip ediyorlar: kategoriler() > verigruplari() > seriler() > veriler()

kategoriler(): Piyasa verileri, kurlar, faiz istatistikleri gibi ana başlıkları içeriyor ve her birinin bir kodu vardır. Örneğin, 2 no’lu kategori kodu kurlardır.

kategoriler()

Fonksiyon çalıştırıldıktan sonra kategori isminde bir obje oluşturacak. Buradan ilgilendiğiniz kategori ya da kategorileri belirleyebilirsiniz. Fonksiyon ile ilgili detaylı bilgiye ?kategori komutu ile ulaşabilirsiniz.

verigruplari(): Döviz kurları, efektif kurlar gibi kategoriye ait alt başlıkları içermektedir ve her birinin bir veri grubu kodu vardır. Örneğin, kategori olarak kurları seçtiğimizi varsayarsak; bie_dkdovytl kodu döviz kurlarına aittir.

verigruplari(kategoriKodu = 2)

Fonksiyon çalıştırıldıktan sonra verigrubu isminde bir obje oluşturacak.

Birden fazla kategori kodu girip bunların da veri gruplarına bakabilirsiniz. Kurların yanında fiyat endekslerine de bakmak istediğimizi varsayalım.

verigruplari(kategoriKodu = c(2,14))

Eğer veri gruplarının tamamını görmek isterseniz kategoriKodu parametresini boş bırakıp; hepsi parametresini TRUE yapabilirsiniz. Fonksiyon ile ilgili detaylı bilgiye ?verigruplari komutu ile ulaşabilirsiniz.

seriler(): Döviz alış, genel fiyat endeksi gibi serileri içermektedir. Örneğin, TP.DK.USD.A.YTL kodu ABD Doları döviz alışına; TP.FG.J0 kodu genel fiyat endeksine eşittir.

seriler(verigrupKodu = "bie_dkdovytl")
#ya da
seriler(verigrupKodu = "bie_tukfiy4")

Fonksiyon çalıştırıldıktan sonra seri isminde bir obje oluşturacak. Fonksiyon ile ilgili detaylı bilgiye ?seriler komutu ile ulaşabilirsiniz.

veriler(): Serileri belirledikten sonra çalıştıracağınız son majör fonksiyondur. Artık bununla beraber verileri elde edebilirsiniz. Fonksiyon ile ilgili detaylı bilgiye ?veriler komutu ile ulaşabilirsiniz. Sizlere bazı örnekler göstereceğim.

Örneklere geçmeden önce parametreler() fonksiyonuna bakalım. Bu fonksiyon içinde gözlem, formül ve frekans parametreleri ile ilgili bilgiler içermektedir. Çalıştırıldıktan sonra gozlem, formul ve frekans adında üç adet obje oluşturacaktır.

gozlem: Ortalama (avg), en düşük (min), en yüksek (max), başlangıç (first), bitiş (last) ve kümülatif (sum). Belirtilmediği zaman orijinal gözlemi getirir.

formul: Düzey (0), yüzde değişim (1), fark (2), yıllık yüzde değişim (3), yıllık fark (4), bir önceki yılın sonuna göre değişim (5), bir önceki yılın sonuna göre fark (6), hareketli ortalama (7) ve hareketli toplam (8). Belirtilmediği zaman düzey uygulayacaktır.

frekans: Günlük (1), işgünü (2), haftalık (3), ayda 2 kez (4), aylık (5), 3 aylık (6), 6 aylık (7) ve yıllık (8). Belirtilmediği zaman ortak frekansı alacaktır.

Fonksiyon ile ilgili detaylı bilgiye ?parametreler komutu ile ulaşılabilir.

Örnek-1: ABD Doları döviz alışı için aylık bazda (Ocak 2015 – Mart 2021) ortalama değerleri alalım.

veriler(seriKodu = "TP.DK.USD.A.YTL", baslangicTarihi = "01-01-2015", bitisTarihi = "15-03-2021", gozlemParametresi = "avg", formulParametresi = 0, sayisalFrekans = 5)

Fonksiyona ait tüm parametreler kullanıldı.

Örnek-2: Genel fiyat endeksi ve gıda ve alkolsüz içecekler serileri için yıllık yüzde değişim alalım. Tarih aralığı Ocak 2010 – Şubat 2021 olsun.

veriler(seriKodu = c("TP.FG.J0","TP.FG.J01"), baslangicTarihi = "01-01-2010", bitisTarihi = "01-02-2021", formulParametresi = 3)

Fonksiyona ait gozlemParametresi ve sayisalFrekans parametreleri kullanılmadı; sisteme bırakıldı.

Örnek-3: Hem ABD Doları döviz alışının hem de genel fiyat endeksinin yüzde değişimini alalım. Tarih Ocak 2020’den başlasın.

veriler(seriKodu = c("TP.DK.USD.A.YTL","TP.FG.J0"), baslangicTarihi = "01-01-2020", formulParametresi = 1)

Fonksiyona ait bitisTarihi, gozlemParametresi ve sayisalFrekans parametreleri kullanılmadı; sisteme bırakıldı. ABD Doları döviz alışı günlük bir seri iken genel fiyat endeksi aylık bir seridir. Sistem bu durumda ortak frekansı dikkate aldı ki bu da aylıktır. Ayrıca orijinal gözlemleri üzerinden yüzde değişimler alındı.

Örnek-4: ABD Doları/Ons’un ve BIST-100’ün 2010’dan itibaren yıllık ortalama değerlerini alalım.

veriler(seriKodu = c("TP.MK.LON.YTL","TP.MK.F.BILESIK"), baslangicTarihi = "01-01-2010", gozlemParametresi = c("avg","avg"), sayisalFrekans = 8)

#ya da

veriler(seriKodu = c("TP.MK.LON.YTL","TP.MK.F.BILESIK"), baslangicTarihi = "01-01-2010", gozlemParametresi = "avg", sayisalFrekans = 8)

Fonksiyona ait bitisTarihi ve formulParametresi parametreleri kullanılmadı; sisteme bırakıldı. Burada altını çizmem gereken yer gozlemParametresi olacaktır. Her bir seri kodunun gozlemParametresi parametresinin tek tek tanıtılması gerekmektedir. Eğer bu diğerlerinde olduğu gibi bir tane olacak şekilde yazılırsa (ikinci alt örnek) program otomatik olarak hepsini bu parametreye göre değerlendirecektir. Burada bir serinin ortalaması; diğerinin de en yüksek değeri alınmak istenebilir. Bu durumda aşağıdaki gibi bir tanıtım olmalıdır.

veriler(seriKodu = c("TP.MK.LON.YTL","TP.MK.F.BILESIK"), baslangicTarihi = "01-01-2010", gozlemParametresi = c("avg","max"), sayisalFrekans = 8)

Fonksiyon çalıştırıldıktan sonra veri isminde bir obje oluşturacak. Finalde istenen de aslında bu objedir.

Majör fonksiyonlardan biri olan veriler() ile ilgili örneklerin yeterli olacağını düşünüyorum. Bir paketi tanımanın en iyi yolu dokümanını okumaktır. İlgili fonksiyonun başına ? koyarak detaylara bakabilirsiniz.

Paket ile ilgili kalan iki fonksiyon: aktar() ve gorsellestir()

aktar() ile veri objesini .csv, .xlsx ve .txt formatlarında kaydedebilirsiniz. Program varsayılan olarak .csv formatında kayıt yapacaktır. Kaydedeceği yer ise belirtilmediği sürece o anki dosya yolu olacaktır.

aktar(format = ".xlsx", dosyaYolu = "C:/Users/rpydaneogrendim/Desktop")

Fonksiyon ile ilgili detaylı bilgiye ?aktar komutu ile ulaşılabilir.

Tüm bu işlemlerin yanında seri ile görselleştirme yapmak isteyebilirsiniz. Tek bir seri üzerinden interaktif olarak görselleştirme yapmak için gorsellestir() fonksiyonundan faydalanabilirsiniz.

veriler(seriKodu = "TP.MK.LON.YTL", baslangicTarihi = "01-01-2000", gozlemParametresi = "avg", sayisalFrekans = 5)
gorsellestir(seriKodu = veri$TP_MK_LON_YTL, sayisalFrekans = 5)

gorsellestir() fonksiyonunda sayisalFrekans parametresi çok önemlidir. Daha önce oluşturulan veri frekansı ile aynı olmalıdır.

Görselin sağ üst köşesinde göreceğiniz üzere yakınlaştırma, kaydetme gibi bir takım işlemler yapabilirsiniz.

Umuyorum siz R kullananlar için faydalı bir paket olur. Kodlamanın doğası gereği bug (hata) bulabilirsiniz. Bunu şuradaki issues’dan bildirebilirsiniz. Açık kaynak kodun da güzelliğinden faydalanıp paketin gelişmesine katkıda bulunabilirsiniz (github).

Görüşleriniz için şimdiden teşekkür ederim.

One thought on “R’da Yeni Bir Paket: TCMB

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir