Pengambilan keputusan pada bidang keuangan dibutuhkan data yang lengkap dan cepat. Internet telah memudahkan pengambil keputusan untuk mendapatkan data secara online. Salah satu data yang dibutuhkan adalah data saham untuk para investor saham yang akan melakukan keputusan jual atau beli saham.
Software statistik R memudahkan para pengambil keputusan untuk segera melakukan analisis data, dalam hal ini data saham. Yahoo Finance sebagai salah satu penyedia data online menyediakan data saham EOD (end of day).
Berikut adalah contoh command untuk mengambil data saham ASII.JK ke dalam dataset R. Saya menggunakan R Studio untuk memudahkan penggunaan R.
[code lang=”R”]URL <- "http://ichart.finance.yahoo.com/table.csv?s=ASII.JK"
data <- read.csv(URL)
data$Date <- as.Date(data$Date, "%Y-%m-%d")[/code]
Command pada baris pertama mengarahkan URL API yahoo finance untuk mengambil data saham ASII. Command pada baris kedua menyimpan data ASII pada yahoo finance pada object bernama data. Pada baris ketiga melakukan konversi string pada kolom Date menjadi format Date.
Alternatif lainnya menggunakan package {tseries}. Package {tseries} adalah paket untuk analisis time series dan keuangan komputasi (computational finance).
[code lang=”R”]library(tseries)
data <- get.hist.quote("ASII.JK")
[/code]
data yang diperoleh dari package {tseries} berupa object zoo.
Package {quantmod} juga menyediakan cara yang mudah untuk mendapatkan data saham, berikut adalah contoh mendapatkan harga saham ASII Adjusted dari 1 Januari 2000 sampai dengan 31 Desember 2016
[code lang=”R”]
library(quantmod)
getSymbols("ASII.JK", from = "2000-01-01", to = "2016-12-30", src = "yahoo", adjust = TRUE)
[/code]
Selanjutnya data yang didapat dari {quantmod} dapat diakses pada object ASII.JK, berupa class xts dan zoo.
Object xts merupakan singkatan dari eXtensible Time Series. Object xts didesain untuk data time series. Object xts merupakan ekstensi dari object zoo.
Saat penulisan ini, src bisa memilih dari: yahoo, google, MySQL, FRED, csv, RData, and oanda
Selanjutnya untuk melihat data dapat digunakan command:
[code lang=”R”]View(data)[/code]
Sedangkan untuk mengakses vector (vector adalah sebutan array pada R) salah satu kolom, misalnya kolom harga penutupan (Close) dapat dilakukan dengan cara:
[code lang=”R”]View(data$Close)[/code]
Untuk menampilkan plot antara tanggal dan harga penutupan dapat dilakukan dengan mengeksekusi command:
[code lang=”R”]plot(data$Date, data$Close)[/code]
apabila menggunakan library tseries, maka data yang didapat berupa zoo object, sehingga commandnya cukup:
[code lang=”R”]plot(data$Close)[/code]
Untuk melakukan plot candlestick dapat menggunakan library plotly.
Berikut adalah script untuk melakukan plot data ke candlestick
Pertama, copykan dulu object data ke object df
[code lang=”R”]df <- data[/code]
Buat object hovertxt
[code lang=”R”]hovertxt <- Map(function(x,y)paste0(x, ":", y), names(df), df)
hovertxt <- Reduce(function(x, y)paste0(x, "<br&;gt;", y), hovertxt)[/code]
panggil fungsi plot_ly()
[code lang=”R”]plot_ly(df, x = ~Date, xend = ~Date, hoverinfo = "none",
color = ~Close > Open, colors = c("#00b386","#ff6666")) %>%
add_segments(y = ~Low, yend = ~High, line = list(width = 1, color = "black")) %>%
add_segments(y = ~Open, yend = ~Close, line = list(width = 3)) %>%
add_markers(y = ~(Low + High)/2, hoverinfo = "text",
text = hovertxt, marker = list(color = "transparent")) %>%
layout(showlegend = FALSE,
yaxis = list(title = "Price", domain = c(0, 0.9)),
annotations = list(
list(xref = "paper", yref = "paper",
x = 0, y = 1, showarrow = F,
xanchor = "left", yanchor = "top",
align = "left",
text = paste0("<b>ASII</b>")),
list(xref = "paper", yref = "paper",
x = 0.75, y = 1, showarrow = F,
xanchor = "left", yanchor = "top",
align = "left",
text = paste(range(df$Date), collapse = " : "),
font = list(size = 8))),
plot_bgcolor = "#f2f2f2")[/code]
Tampilan grafik seperti berikut ini:

Leave a Reply