Pemodelan Teori dan Risiko
Tugas 2
| Kontak | : \(\downarrow\) |
| ali.19arifin@gmail.com | |
| https://www.instagram.com/arifin.alicia/ | |
| RPubs | https://rpubs.com/aliciaarifin/ |
| Nama | Alicia Arifin |
| NIM | 20214920001 |
| Prodi | Statistika, 2021 |
Soal 1
Calculate Value at Risk of ANTM.JK, BUMI.JK and TCPI.JK!
Pada
tugas kali ini, saya akan menggunakan tiga saham yang bergerak di bagian
tam bang seperti PT Transcoal Pacific Tbk (TCPI.JK), PT Aneka Tambang
Tbk (ANTM.JK) dan PT Bumi Resources Tbk (BUMI.JK).
import data
Untuk mengimport data, akan menggunakan library quantmod
dan coding getSymbols seperti chunk di bawah ini. Waktu
yang akan saya gunakan adalah mulai dari 3 tahun sebelum 25 April
2024.
library(quantmod)
getSymbols(c("ANTM.JK","BUMI.JK","TCPI.JK"), from = Sys.Date()-3*365, to = Sys.Date(), src ="yahoo", auto.assign = T)## [1] "ANTM.JK" "BUMI.JK" "TCPI.JK"
Berikut data yang sudak diekstrak :
ANTM.JK
ANTM.returns <- dailyReturn(ANTM.JK)
ANTM.returns <- na.omit(ANTM.returns)
sorted_return.antm <- sort(ANTM.returns)
persentil_5.antm <- quantile(sorted_return.antm, 0.05);persentil_5.antm## 5%
## -0.03802281
persentil 5% return VaR antam ada di angka -3.8%.
Jika
dimisalkan kita ingin menginvestasikan Rp5.000.000 ke dalam saham
ANTM.JK. Maka VAR nya sebagai berikut
## 5%
## -190114.1
Value at Risk di saham Antam ada di angka -Rp190.114.
BUMI.JK
BUMI.returns <- dailyReturn(BUMI.JK)
BUMI.returns <- na.omit(BUMI.returns)
sorted_return.bumi <- sort(BUMI.returns)
persentil_5.bumi <- quantile(sorted_return.bumi, 0.05);persentil_5.bumi## 5%
## -0.05555556
persentil 5% return VaR bumi ada di angka -5.55%.
Jika
dimisalkan kita ingin menginvestasikan Rp5.000.000 ke dalam saham
BUMI.JK. Maka VAR nya sebagai berikut
## 5%
## -277777.8
Value at Risk di saham bumi ada di angka -Rp277.777.
TCPI.JK
TCPI.returns <- dailyReturn(TCPI.JK)
TCPI.returns <- na.omit(TCPI.returns)
sorted_return.tcpi <- sort(TCPI.returns)
persentil_5.tcpi <- quantile(sorted_return.tcpi, 0.05);persentil_5.tcpi## 5%
## -0.04467105
persentil 5% return VaR transcoal pacific ada di angka -4.46%.
Jika dimisalkan kita ingin menginvestasikan Rp5.000.000 ke dalam saham
TCPI.JK. Maka VAR nya sebagai berikut
## 5%
## -223355.2
Value at Risk di saham Antam ada di angka -Rp223.355.
Soal1.2
portofolio_index <- c("AAPL","GOOG","MSFT","^TNX","GLD")
getSymbols(portofolio_index, src="yahoo", from= Sys.Date()-2*365, to=Sys.Date())## [1] "AAPL" "GOOG" "MSFT" "TNX" "GLD"
Import Historical Data
Pada soal ini saya akan menggunakan saham BBCA.Jk, Obligasi FVX dan Komoditas Gold.
harga_portofolio <- merge(Ad(AAPL),Ad(GOOG),Ad(MSFT),Ad(TNX),Ad(GLD))
colnames(harga_portofolio) <- portofolio_index
harga_portofolio <- na.approx(harga_portofolio)
data.table(harga_portofolio)Calculate Daily Return
Menghitung return per-hari.
Determine Asset Weights
Menentukan berapa bobot (%) suatu aset, saya menentukan bobotnya pada 20% di semua sektor.
Calculate Portofolio Return
Menghitung portofolio return
colnames(asset_return) <- NULL
portofolio_returns <- colSums(asset_return * portofolio_weights) / sum(portofolio_weights)
portofolio_returns## [1] 0.03377516 0.08573847 0.08824837 0.12362732 0.04470760
Return dari saham AAPL adalah 3.37%, GOOG sebesar 8.57%, MSFT sebesar 8.82%, Obligasi sebesar 12.36% dan emas sebesar 4.47%.
Estimate Portofolio Volatility
Menghitung volatilitas (mencari standar deviasi) dari return portofolio.
library(PerformanceAnalytics)
volatilitas_portofolio <- StdDev(portofolio_returns)
volatilitas_portofolio## [,1]
## StdDev 0.03630539
didapatkan standar deviasinya 0.36
VaR
Menghitung Value at Risk menggunakan moetode parametrik.
z_score <- qnorm(0.95)
market_value <- 10000000
VAR <- z_score * volatilitas_portofolio * market_value
VAR## [,1]
## StdDev 597170.6
Nilai kemungkinan VAR dari portofolio dengan saham AAPL, GOOG, MSFT, Obligasi TNX dan Emas adalah Rp597.170.
Soal 2
Let’s assume we have a portfolio consisting of three assets (Stocks from Indonesia): stocks (ST), bonds (BD), and commodities (CM). Calculate Value at Risk using using Copulae method!
portofolio_index <- c("ANTM.JK","BUMI.JK","TCPI.JK","^FVX","GLD")
getSymbols(portofolio_index, src="yahoo", from= Sys.Date()-3*365, to=Sys.Date())## [1] "ANTM.JK" "BUMI.JK" "TCPI.JK" "FVX" "GLD"
Import Historical Data
Pada soal ini saya akan menggunakan saham BBCA.Jk, Obligasi FVX dan Komoditas Gold.
harga_portofolio <- merge(Ad(ANTM.JK),Ad(BUMI.JK),Ad(TCPI.JK),Ad(FVX),Ad(GLD))
colnames(harga_portofolio) <- portofolio_index
harga_portofolio <- na.approx(harga_portofolio)
data.table(harga_portofolio)Calculate Daily Return
Menghitung return per-hari.
Determine Asset Weights
Menentukan berapa bobot (%) suatu aset, saya menentukan bobotnya 20% di semua sektor.
Calculate Portofolio Return
Menghitung portofolio return
colnames(asset_return) <- NULL
portofolio_returns <- colSums(asset_return * portofolio_weights) / sum(portofolio_weights)
portofolio_returns## [1] -0.03009040 0.19640550 0.07996883 0.40184090 0.05771230
Return dari saham ANTM sebesar -3%, BUMI seebsar 19.64%, TCPI sebesar 7.99%, Obligasi 40.18% dan 5.77% untuk emas.
Estimate Portofolio Volatility
Menghitung volatilitas (mencari standar deviasi) dari return portofolio.
library(PerformanceAnalytics)
volatilitas_portofolio <- StdDev(portofolio_returns)
volatilitas_portofolio## [,1]
## StdDev 0.1666142
didapatkan standar deviasinya 0.16
VAR using Copulae
Value at Risk menggunakan copula adalah metode untuk estimasi VaR
berdasarkan struktur dependensi antar aset. Pendekatan ini digunakan
ketika aset tidak independen dan distribusi gabungan perlu dimodelkan
secara akurat.
library(copula)
# simulate asset return
set.seed(1993)
n <- 2000
rho <- 0.5
normalCop <- normalCopula(param=rho, dim=2)
U <- rCopula(n,normalCop)
X <- qnorm(U)
# transform to asset returns
asset1_returns <- X[,1]
asset2_returns <- X[,2]
# calculate portofolio value
initial_portofolio <- 5000000
portofolio_value <- initial_portofolio *(1+asset1_returns+asset2_returns)
# sort simulated portofolio returns
sorted_return.portofolio <- sort(portofolio_value)
var_percentile <- 0.05
var_index <- round(var_percentile*n)
VaR <- sorted_return.portofolio[var_index]
VaR## [1] -9052319
Dari hasil metode copula, VAR yang dihasilkan adalah -Rp9.052.319.