Pemodelan Teori dan Risiko

Tugas 2


Kontak : \(\downarrow\)
Email
Instagram 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 :

library(data.table)
data.table(ANTM.JK) # Data PT Bumi Resources Tbk
data.table(BUMI.JK) # Data PT Aneka Tambang Tbk
data.table(TCPI.JK) # Data PT Transcoal Pacific Tbk 

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

market_value <- 5000000

VAR.antm <- persentil_5.antm * market_value
VAR.antm
##        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

market_value <- 5000000

VAR.bumi <- persentil_5.bumi * market_value
VAR.bumi
##        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

market_value <- 5000000

VAR.tcpi <- persentil_5.tcpi * market_value
VAR.tcpi
##        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.

asset_return <- na.omit(ROC(harga_portofolio, type="discrete"))

data.table(asset_return)

Determine Asset Weights

Menentukan berapa bobot (%) suatu aset, saya menentukan bobotnya pada 20% di semua sektor.

library(fPortfolio)
portofolio_weights <- c(rep(0.2,5))

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.

asset_return <- na.omit(ROC(harga_portofolio, type="discrete"))

data.table(asset_return)

Determine Asset Weights

Menentukan berapa bobot (%) suatu aset, saya menentukan bobotnya 20% di semua sektor.

library(fPortfolio)
portofolio_weights <- c(rep(0.2,5))

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.