| Kontak | \(\downarrow\) |
| valensiusjimy27@gmail.com | |
| https://www.instagram.com/valjimy_/ | |
| RPubs | https://rpubs.com/valensiusjimy/ |
1 Pendahuluan
Sejak pandemi COVID-19 menyerang lini kehidupan di seluruh dunia,
termasuk Indonesia banyak sekali hal baru yang dipelajari oleh
masyarakat, khususnya di Indonesia untuk kalangan muda pada masa
pandemi, kegiatan trading menjadi suatu hal yang sangat menarik
untuk dipelajari. Trading sendiri memiliki banyak partisi,
misalnya saham, forex, kripto dan lainnya. Hal ini merupakan
sebuah kenyataan bagi penulis sendiri, dimana semasa pandemi penulis
belajar banyak tentang trading, khususnya dalam bidang kripto
dan hingga sekarang masih terus berjalan walaupun banyak pil pahit yang
harus ditelan.
Berbicara tentang kripto, banyak masyarakat yang
sangat tertarik untuk terjun dalam kripto karena beranggapan bisa meraih
keuntungan yang cukup besar dan di beberapa negara Eropa pembayaran
sudah bisa menggunakan kripto, sehingga terdapat beberapa konspirasi
bahwa kripto akan menjadi satu kesatuan mata uang untuk seluruh negara
pada waktu yang akan datang. Hal ini menjadi kontroversial yang cukup
panas dalam kalangan masyarakat Indonesia, terdapat pihak yang pro dan
tentunya ada yang kontra.
Kripto sendiri sering disebut
cryptocurrency atau mata uang kripto karena fungsinya yang
memang dapat menjadi alat pembayaran pada beberapa negara, misalnya
untuk membeli KFC di negara Spanyol sudah bisa menggunakan mata uang
kripto ini. Kripto bersifat aset digital, hal ini sejalan dengan yang
diungkapkan oleh Teguh Kurniawan Harmanda, M.Ec.Dev. yang merupakan
Ketua Asosiasi Pedagang Aset Kripto Indonesia (ASPAKRINDO), dimana
beliau menjelaskan bahwa aset kripto merupakan komoditi yang tidak
berwujud berbentuk digital yang menggunakan kriptografi dan jaringan
peer to peer.
Pada kesempatan kali ini, penulis ingin
memberikan salah satu ilmu dalam mata kuliah Optimasi yang mana
menggunakan beberapa konsep yang telah dipelajari untuk membuat
Optimisasi pada Portofolio Kripto. Umumnya, untuk proses optimisasi
menggunakan portfolio saham, tetapi penulis ingin mencoba hal baru yang
jarang dilakukan oleh beberapa orang. Pada portofolio kripto akan
menggunakan beberapa contoh koin yang dimiliki oleh penulis, dengan
tujuan penulis juga dapat belajar dan mendapat informasi untuk
optimisasi agar kedepannya lebih baik lagi.
2 Library Pada Proses Optimalisasi
Pada proses optimisasi portofolio menggunakan bantuan bahasa pemrograman R, kita perlu meng-install beberapa paket atau library untuk memerintahkan atau membuat suatu sintaks dalam melakukan analisa. Library yang dibutuhkan dapat diperhatikan seperti berikut ini:
3 Grafik Market Kripto Sejak Awal Tahun 2023
koin <- c('BTC-USD', 'ETH-USD', 'MATIC-USD', 'SHIB-USD', 'DOGE-USD')
harga <- tq_get(koin,
from = '2023-01-01',
to = Sys.Date(),
get = 'stock.prices')
harga %>%
plot_ly(x = ~date,
type = 'candlestick',
open = ~open,
close = ~close,
high = ~high,
low = ~low)Grafik di atas sebagai gambaran umum mengenai perjalanan kripto sejak awal tahun 2023 atau lebih tepatnya 1 Januari 2023 hingga sekarang. Secara umum, kripto terkhususnya untuk Bitcoin mengalami kondisi yang dinamakan Bullish atau diartikan kondisi yang trennya meningkat. Hal ini dibuktikan dari grafik yang mana pada bulan Januari angkanya di bawah 20ribu USD dan pada saat ini sudah menyentuh 40ribu USD.
4 Proses Optimalisasi
Pada proses optimalisasi kripto ini yang mana bertujuan unuk
mengendalikan resiko pada investasi kripto ini dan menanalisis bagaimana
keuntungan yang didapat. Nantinya akan dianalisis resiko untuk
masing-masing koin dan tentunya dengan menganalisis return yang
didapat juga. Langkah yang harus ditempuh atau dilakukan dalam melakukan
optimalisasi portofolio ini adalah sebagai berikut:
* Mengumpulkan
data harga koin kripto yang ingin dianalisis
* Melakukan analisa
pada koin tersebut.
* Menghitung besaran risiko dan return
sebagai penilai untuk mengambil keputusan dalam melakukan pemilihan
koin.
4.1 Mengumpulkan Data
Hal yang paling penting pada permulaan adalah mengumpulkan datanya,
jika tidak ada data langkah selanjutnya tidak akan bisa dijalankan.
Untuk data yang dikumpulkan adalah data harga untuk beberapa koin yang
ingin dianalisis, khususnya koin yang dimiliki oleh penulis. Adapun
untuk koinnya sebagai berikut ini:
* BITCOIN (BTC)
* ETHEREUM
(ETH)
* BITTORENT (BTT)
* SHIBA INU (SHIB)
* DOGE COIN
(DOGE)
koin <- c('BTC-USD', 'ETH-USD', 'MATIC-USD', 'SHIB-USD', 'DOGE-USD')
harga <- tq_get(koin,
from = '2023-01-01',
to = Sys.Date(),
get = 'stock.prices')
head(harga, 5)## # A tibble: 5 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 BTC-USD 2023-01-01 16548. 16630. 16521. 16625. 9244361700 16625.
## 2 BTC-USD 2023-01-02 16626. 16759. 16572. 16688. 12097775227 16688.
## 3 BTC-USD 2023-01-03 16689. 16760. 16622. 16680. 13903079207 16680.
## 4 BTC-USD 2023-01-04 16680. 16965. 16668. 16863. 18421743322 16863.
## 5 BTC-USD 2023-01-05 16863. 16884. 16790. 16837. 13692758566 16837.
Catatan : data yang ditampilkan hanya 5 data teratas.
4.2 Return
Selanjutnya, ketika sudah melakukan proses pengumpulan data kita dapat melanjutkan dengan mencari tahu atau menghitung bagaimana return yang didapatkan ketika memiliki koin kripto tersebut, untuk perhitungannya dalam jangka harian.
4.3 Rerataan Return
untuk nilai return di atas adalah nilai untuk hariannya, kita dapat mencari untuk nilai rata-rata nilai tersebut untuk memudahkan kita menyimpulkan suatu informasinya.
## Warning: Non-numeric columns being dropped: date
## Using column `date` for date_var.
| x | |
|---|---|
| BTC-USD | 0.00272 |
| DOGE-USD | 0.00090 |
| ETH-USD | 0.00181 |
| MATIC-USD | 0.00042 |
| SHIB-USD | 0.00060 |
koin <- c("BTC", "ETH", "DOGE", "MATIC", "SHIB")
return <- c(0.00266, 0.00176, 0.0009, 0.00039, 0.00052)
data <- data.frame(koin, return)
library(ggplot2)
warna <- c("#FFB6C1", "#ADD8E6", "#90EE90", "#FFD700", "#D3D3D3")
ggplot(data, aes(x = koin, y = return)) +
geom_bar(stat = "identity", fill = warna, alpha = 0.8) +
geom_text(aes(label = round(return, 6)), vjust = -0.5, color = "black", size = 3) +
labs(title = "Return Koin Kripto",
x = "Koin",
y = "Return") +
theme_minimal()
Pada hasil di atas dapat dilihat bahwa rata-rata nilai return paling tinggi adalah koin BTC atau Bitcoin karena memang secara data juga dapat dibuktikan bahwa koin ini mengalami kenaikan yang cukup signifikan, diikuti oleh ETH. Sebaliknya, koin MATIC mendapat nilai paling rendah dibanding 4 koin lainnya karena koin ini sempat mengalami penurunan yang drastis.
4.4 Matriks Kovariansi
Perhitungan ini cukup penting pada proses optimalisasi, dimana tujuannya untuk mencari tahu hubungan arah antara harga koin tertentu. Pada proses ini terdapat 2 nilai, untuk positif artinya koin bergerak dengan arah yang sama dan untuk nilai negatif berlaku sebaliknya.
| BTC-USD | DOGE-USD | ETH-USD | MATIC-USD | SHIB-USD | |
|---|---|---|---|---|---|
| BTC-USD | 0.1911 | 0.1645 | 0.1700 | 0.1925 | 0.1504 |
| DOGE-USD | 0.1645 | 0.3878 | 0.1785 | 0.2439 | 0.2562 |
| ETH-USD | 0.1700 | 0.1785 | 0.2152 | 0.2328 | 0.1718 |
| MATIC-USD | 0.1925 | 0.2439 | 0.2328 | 0.4865 | 0.2357 |
| SHIB-USD | 0.1504 | 0.2562 | 0.1718 | 0.2357 | 0.8837 |
Mungkin terdapat pertanyaan, terlihat pada kodingan di atas, mengapa dikalikan dengan nilai 365 dan untuk menjawab ini didasarkan pada waktu pasar kripto tidak ada libur, artinya terus berjalan entah jual atau beli akan tetap dilakukan setiap saat. Berbeda dengan saham, dimana terdapat hari libur yang tidak bisa digunakan untuk perdagangan saham, sehingga dalam setahun hanya 252 hari bersihnya. Nilai 365 hari dihitung secara satu tahun full selama tahun 2023.
5 Penerapan Metode Portofolio
Untuk menerapkan metode portofolio secara efektif, pertimbangan utama melibatkan perhitungan teliti terkait pengembalian dan risiko portofolio. Langkah-langkah ini bergantung pada beberapa faktor kunci yang perlu dipertimbangkan. Pertama, adalah penetapan bobot atau alokasi yang tepat untuk setiap aset dalam portofolio. Misalnya, penggunaan bobot acak atau strategi tertentu yang didasarkan pada preferensi investor. Selanjutnya, perhitungan rata-rata pengembalian dari masing-masing aset menjadi krusial untuk mengetahui hasil yang diharapkan dari portofolio secara keseluruhan.
Saat mempertimbangkan risiko, perhitungan standar deviasi atau risiko portofolio menjadi penting untuk memahami tingkat variabilitas atau ketidakpastian hasil investasi. Pengukuran ini mencerminkan seberapa jauh pengembalian aktual dari portofolio dapat berfluktuasi dari rata-rata yang diharapkan. Selain itu, bobot portofolio yang disesuaikan dengan baik juga merupakan faktor penting. Bobot ini menggambarkan seberapa besar setiap aset berkontribusi terhadap keseluruhan kinerja portofolio. Dengan memperhitungkan komponen-komponen ini secara hati-hati, investor dapat mengelola risiko, mengoptimalkan pengembalian, serta membangun portofolio yang sejalan dengan tujuan investasi.
| x |
|---|
| 0.3411579 |
| 0.2057575 |
| 0.0619007 |
| 0.3524682 |
| 0.0387158 |
5.1 Return Pada Portofolio
Selanjutnya, penulis ingin menghitung berapa banyak return yang sudah didapat sejauh ini dari koin yang ada
| x |
|---|
| 0.6663963 |
5.2 Risiko Portofolio
Kemudian, setelah menganalisa return yang didapat, penting juga untuk menghitung risiko yang diterima ketika membeli koin yang ada pada proses ini.
| 0.4931643 |
Ternyata lebih besar risiko dibanding dengan nilai return yang didapat oleh penulis.
5.3 Menghitung Nilai Sharpe Ratio
Nilai Sharpe Ratio adalah salah satu ukuran yang digunakan dalam
dunia keuangan untuk mengevaluasi kinerja portofolio investasi. Sharpe
Ratio mengukur pengembalian yang dihasilkan oleh portofolio investasi
per unit risiko yang diambil.
Secara matematis, Sharpe Ratio dihitung dengan membagi excess
return dari portofolio dengan risiko yang diambil, diukur dalam satuan
deviasi dari pengembalian portofolio. Excess return adalah selisih
antara pengembalian portofolio dengan tingkat bunga bebas risiko.
Formula untuk Sharpe Ratio adalah: Sharpe Ratio = (Rp - Rf) / σp
- Rp adalah pengembalian rata-rata dari portofolio.
- Rf adalah tingkat bunga bebas risiko.
- σp adalah deviasi standar dari pengembalian portofolio.
Secara umum, semakin tinggi nilai Sharpe Ratio, semakin baik
kinerja relatif dari portofolio tersebut karena menunjukkan bahwa
portofolio telah menghasilkan pengembalian yang lebih tinggi dalam
kaitannya dengan risiko yang diambil. Sebaliknya, nilai Sharpe Ratio
yang lebih rendah menandakan bahwa portofolio mungkin tidak memberikan
pengembalian yang sebanding dengan tingkat risiko yang diambil.
Sharpe Ratio digunakan sebagai alat untuk membantu investor memilih portofolio yang optimal, karena memungkinkan mereka untuk membandingkan efisiensi pengembalian portofolio relatif terhadap risiko yang diambil, dan juga membantu dalam proses pengambilan keputusan investasi. Namun, perlu diingat bahwa Sharpe Ratio memiliki batasan, termasuk asumsi terkait distribusi pengembalian portofolio dan tingkat bunga bebas risiko yang digunakan dalam perhitungannya.
| 1.351266 |
5.4 Melakukan Optimalisasi Dengan Data Random
num_port <- 5000
random <- matrix(nrow = num_port,
ncol = length(koin))
port_returns <- vector('numeric', length = num_port)
port_risk <- vector('numeric', length = num_port)
sharpe_ratio <- vector('numeric', length = num_port)
set.seed(1)
for (i in seq_along(port_returns)) {
bobot <- runif(length(koin))
bobot <- bobot/sum(bobot)
#store the weights in the matrix
random[i,] <- bobot
#portfolio returns
port_ret <- sum(bobot * rerata_ret)
port_ret <- ((port_ret + 1)^365) - 1
#store the Portfolio Returns values
port_returns[i] <- port_ret
#create and store portfolio risk
port_sd <- sqrt(t(bobot) %*% (cov_mat %*% bobot))
port_risk[i] <- port_sd
#create and store Portfolio Sharpe Ratios
#assume a 0% Risk free rate
sr <- port_ret/port_sd
sharpe_ratio[i] <- sr
}6 Visualisasi Portofolio
Setelah melakukan pengujian dengan 5000 data untuk portofolio, kita dapat melakukan visualisasi untuk menganalisa lebih lagi untuk model yang telah kita bangun.
portfolio_baru <- tibble(Return = port_returns,
Risk = port_risk,
SharpeRatio = sharpe_ratio)
random <- tk_tbl(random)## Warning in tk_tbl.data.frame(as.data.frame(data), preserve_index, rename_index,
## : Warning: No index to preserve. Object otherwise converted to tibble
## successfully.
## Warning in tk_tbl.data.frame(cbind(random, portfolio_baru)): Warning: No index
## to preserve. Object otherwise converted to tibble successfully.
| BTC-USD | DOGE-USD | ETH-USD | MATIC-USD | SHIB-USD | Return | Risk | SharpeRatio |
|---|---|---|---|---|---|---|---|
| 0.1144249 | 0.1603723 | 0.2468796 | 0.3914055 | 0.0869178 | 0.5059316 | 0.5128132 | 0.9865808 |
| 0.2812070 | 0.2956949 | 0.2068378 | 0.1969204 | 0.0193399 | 0.7300737 | 0.4720236 | 1.5466889 |
| 0.0926353 | 0.0794049 | 0.3089827 | 0.1727474 | 0.3462297 | 0.5295431 | 0.5407272 | 0.9793166 |
| 0.1479177 | 0.2132783 | 0.2947974 | 0.1129476 | 0.2310590 | 0.6162338 | 0.4964658 | 1.2412411 |
| 0.4265534 | 0.0968114 | 0.2973918 | 0.0572972 | 0.1219463 | 0.9889535 | 0.4434509 | 2.2301306 |
| 0.1938390 | 0.0067223 | 0.1919684 | 0.4366066 | 0.1708637 | 0.5323032 | 0.5265322 | 1.0109603 |
min <- portfolio_baru[which.min(portfolio_baru$Risk),]
max <- portfolio_baru[which.max(portfolio_baru$SharpeRatio),]6.1 Risiko Kecil, Return Maksimal!!
data <- data.frame(
Koin = c("BTC-USD", "ETH-USD", "DOGE-USD", "MATIC-USD", "SHIB-USD"),
Return = c(0.5714939, 0.5773458, 0.5495337, 0.5196439, 0.5699668),
Risk = c(0.4159848, 0.4585667, 0.4720121, 0.5136514, 0.4766808),
SharpeRatio = c(0.5261665, 1.2590225, 1.5455825, 0.6417659, 1.1956993)
)
# Menampilkan scatter plot
library(ggplot2)
ggplot(data, aes(x = Risk, y = Return, label = Koin)) +
geom_point(size = 3, color = "red", alpha = 0.6) +
geom_text(hjust = 0, vjust = 0, size = 3) +
labs(
x = "Risiko",
y = "Return") +
theme_minimal()
6.2 Tingkat Sharpe Ratio Koin
warni <- c("#FF0066", "#FFCC33", "#00FF66", "#6699FF", "#FF6699")
ggplot(data, aes(x = Koin, y = SharpeRatio)) +
geom_bar(stat = "identity", fill = warni, alpha = 0.7) +
geom_text(aes(label = round(SharpeRatio, 2)), vjust = -0.5, color = "black", size = 3) +
labs(title = "Tingkat Sharpe Ratio Koin",
x = "Koin",
y = "Sharpe Ratio") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))6.3 Portofolio Optimalisasi Keseluruhan
p <- portfolio_baru %>%
ggplot(aes(x = Risk, y = Return, color = SharpeRatio)) +
geom_point(size = 3, alpha = 0.7) +
scale_color_gradient(low = "blue", high = "red") +
theme_minimal() +
labs(x = 'Annualized Risk',
y = 'Annualized Returns',
title = "Portfolio Optimization & Efficient Frontier") +
geom_point(aes(x = Risk, y = Return), data = min, color = 'green', size = 4) +
geom_point(aes(x = Risk, y = Return), data = max, color = 'black', size = 2) +
annotate('text', x = 0.32, y = 0.26, label = "Tangency Portfolio", color = "red", size = 4) +
annotate('text', x = 0.21, y = 0.13, label = "Minimum variance portfolio", color = "blue", size = 4) +
annotate(geom = 'segment', x = 0.2, xend = 0.3, y = 0.1,
yend = 0.2, color = 'purple', arrow = arrow(type = "open", angle = 30, length = unit(0.3, "cm")))
ggplotly(p, height = 500, width = 800)7 Kesimpulan
Pada proses mencari tahu seberapa optimal portfolio yang dimiliki penulis untuk aspek investasi koin kripto yang mencakup 5 jenis koin, yaitu BTC, ETH, MATIC, SHIB dan DOGE ternyata disimpulkan bahwa risiko yang diterima oleh penulis lebih besar dibanding dengan return yang didapatkan dalam satu tahun ini. Dan terlihat bahwa koin dengan risiko yang paling kecil, tetapi return yang cukup besar adalah BTC, hal ini sangat jelas dan sesuai dengan apa yang terjadi di pasar kripto (seperti yang sudah digambarkan pada grafik awal). Sedangkan, koin MATIC menjadi koin dengan risiko dan return paling rendah dibandingkan dengan koin yang lainnya. Maka dari itu, penulis memilih untuk menghindari koin MATIC pada masa yang akan datang karena memberikan return yang cukup rendah bagi portfolio kripto penulis.