R’ı daha önce duymuştum fakat sadece ekonometrik analiz için bir yazılım sanıyordum (cahil ben!). Yapabildiği şeyleri duyunca bu programlama diline merak sardım ve neler yapabilirim diye kurcalamaya başladım. Başlıca kullandığım kaynak ilk etapta [R for Data Science](https://web.archive.org/web/20191027181931/http:/r4ds.had.co.nz/) oldu. Bu yazıda temel düzeyde veri çekme ve grafik çizme maceramı anlatacağım.
R ile kod yazmak ve çalıştırmak için aslında fazla şeye ihtiyaç yok. Biri R ([http://cran.r-project.org](https://web.archive.org/web/20191027181931/http:/cran.r-project.org/)), diğeri de işleri kolaylaştırmak için RStudio ([http://www.rstudio.com](https://web.archive.org/web/20191027181931/http:/www.rstudio.com/)).
RStudio’yu açtığınızda karşınıza şu ekran gelecek:
Sol üst R dosyamızı, sol alt konsolu, sağ üst değişken vb.lerin gösterileceği kısmı, sağ alt ise paketleri, yardım dosyalarını ama en önemlisi grafiğin gösterileceği plot sekmelerini içeriyor.
#### quantmod ile Yahoo’dan veri çekme ve grafiğini çıkartma
R iktisatçılar için birçok analize yardımcı olacak paketler içeriyor. Buna çeşitli kaynaklardan veri çeken paketler de dahil. Kullanımı en kolay olanlardan biri quantmod.
Paketleri R’a yüklemek çok kolay. quantmod için:
```R
install.packages("quantmod")
library(quantmod)
```
Büyük-küçük harf ayrımı R için önemli, her karaktere, tırnak işareti vs. dikkat edilmesi gerekiyor. Bu iki komutu çalıştırınca quantmod paketi aktif hale geliyor.
quantmod’un getSymbols fonksiyonu veriyi çekmeye yarıyor ve şu şekilde işliyor (Tabi ki fonksiyonun çok fazla değişkeni var, ama benim işimi en basit düzeyde olanı görecek.) :
```R
getSymbols("KUR/HİSSE VB.", src = "yahoo", from = "BAŞLANGIÇ TARİHİ", to = "BİTİŞ TARİHİ")
```
Kurlar için USDTRY=X, USDEUR=X vb., BİST’te işlem gören şirketler için ADEL.IS, PETKM.IS vb. kullanabiliyorsunuz. Yahoo!’dan ticker listesine bakabilirsiniz.
Mesela THY için 2016’dan 2018 ortalarına fiyatları çekecek olursak;
```R
getSymbols("THYAO.IS", src = "yahoo", from = "2016-01-01", to = "2018-06-01")
```
THYAO.IS veriseti (zaman serisi) oluştu. _summary(THYAO.IS)_ ile değişkenleri ve bilgilerini kısaca görmek istersek aşağıdaki ekran geliyor. Adlarından da anlaşılabileceği gibi her bir kolonda açılış, kapanış, en düşük fiyat vb. bilgiler var.
Son olarak _chartSeries(THYAO.IS)_ ile aşağıdaki grafiği elde edebiliyoruz.
Kriptopara benim asıl ilgi alanlarımdan biri. Finansal analiz kısmıyla pek ilgilenmesem de "para" olarak sahip olduğu potansiyeli beni heyecanlandırıyor. Bu yazıda temel olarak BTC/USD kurunu quantmod ile Yahoo!’dan çekme ve candlestick chart oluşturma üzerinde durmakla beraber, 5 yıllık BTC verisinden de ne tür grafikler çıkartılabilir paylaşacağım.
#### quantmod ile Yahoo!’dan BTCUSD verisi çekme
Öncelikle quantmod’u yüklüyor ve veri setim için başlangıç ile bitiş tarihleri oluşturuyorum. candlestick yaparken grafiği net görebilmek adına 1 aylık bir veri alıyorum.
```R
library(quantmod)
start <- as.Date("2018-01-01")
end <- as.Date("2018-02-01")
```
Daha önce yazdığım gibi kurlar USDTRY=X, USDEUR=X gibi ifade ediliyor. BTC için de durum aynı.
```R
getSymbols("BTCUSD=X", src = "yahoo", from = start, to = end)
```
BTCUSD=X adında zaman serisi oluştu. O "=" işareti yazarken işleri bazen bozabiliyor. Veri setinin adını BTCUSD yapıyorum.
```R
BTCUSD <- 'BTCUSD=X'
```
Kapanış fiyatları ile normal bir grafik çıkartalım.
```R
plot(BTCUSD[, "BTCUSD=X.Close"], main = "BTC/USD Kuru")
```
Eğer biraz daha finansal analiz meraklısıysanız, candlechart denen grafikleri duymuşsunuzdur. Renkler, çizgiler vb. fiyatla ilgili çeşitli değişimleri sembolize ediyor.
```R
candleChart(BTCUSD,theme=’white’, type=’candles’)
```
Bazı işlem hacmi bilgileri eksik olduğu için o günler 0 gözükmekte. candleChart komutunun çok fazla değişkeni var, bu kısım pek ilgimi çekmediği için dileyenlere bırakıyorum bu grafiği göze daha hoş hale getirmeyi.
#### 5 yıllık BTC verisi
reddit’te [şu başlıkta](https://web.archive.org/web/20191027181931/https:/www.reddit.com/r/CryptoCurrency/comments/988lxb/i_have_5_years_of_coinmarketcapcom_crypto_price/) bulunan 5 yıllık BTC ve altcoin verileri coinmarketcap kaynaklı ve .csv formatında. Üzerinde oynamak için güzel bir veri seti. Ben dosyayı "BTC.csv" adıyla kaydettim.
Öncelikle dosyayı R’ın içine aktarmamız gerekiyor.
```R
bitcoindata <- read.csv("klasör adresi/alt klasör/BTC.csv")
```
Yükledikten sonra 800.000 küsür gözlem ve 10 değişken göreceksiniz. Sembol, tarih, en yüksek fiyat, en düşük fiyat vb. gözlemler var.
Diyelim ki ben BTC, LTC, ETH, XRP için ayrı bir set oluşturmak istiyorum. Bir filtre oluşturuyorum ve R’a "Symbol" kolonunda bu filtreye uyanları "BTCLTCETHXRP" olarak kaydet diyorum.
```R
filtre <- c("BTC", "LTC", "ETH", "XRP")
BTCLTCETHXRP <- bitcoindata[bitcoindata$Symbol %in% filtre,]
```
Tarih kolonunda saat bilgisi de var, saatlik veya çok ileri bir analiz yapmadığım için gerek yok. Kaldırıyorum.
```R
BTCLTCETHXRP$Date <- as.Date(BTCLTCETHXRP$Date, format = "%Y-%m-%d")
```
Grafikte gözükeceği için "Symbol" kolonunu değiştiriyorum.
```R
colnames(BTCLTCETHXRP)[3] <- "Sembol"
```
Grafiğe döküyorum. Her sembol için bir renk atadım geom_line komutunda. Geri kalan taraflar başlık vb. bilgiler.
```R
library(tidyverse)
library(ggthemes)
ggplot(data=BTCLTCETHXRP) +
labs(title = "Zaman ve Kriptopara", subtitle = "Fiyat Hareketleri", x = "Tarih", y = "Fiyat(USD)", caption = "(Coinmarketcap verileri)")+
geom_line(mapping = aes(x = Date, y = Close, color = Sembol))+
theme_economist()
```
Bir zaman aralığı için ise;
```R
min <- as.Date("2017-1-1")
max <- as.Date("2018-7-1")
ggplot(data=BTCLTCETHXRP) +
labs(title = "Zaman ve Kriptopara", subtitle = "Fiyat Hareketleri", x = "Tarih", y = "Fiyat(USD)", caption = "(Coinmarketcap verileri)")+
geom_line(mapping = aes(x = Date, y = Close, color = Sembol))+
scale_x_date(limits = c(min, max))+
theme_economist()
```