The Primary Trader ingin melakukan Decompose IHSG dengan menggunakan beberapa metode Decompose yaitu :

  1. Classical Decompose
  2. X11 Decompose
  3. SEATS Decompose
  4. STL Decompose

The Primary Trader ingin mempraktikan metode Decomposition terhadap IHSG sehingga dapat ditemukan karakteristik dan seasonality-nya. Penjelasan detil ada di sumber buku “Forecasting: Principles and Practice” dari Rob J Hyndman.

File

The Primary Trader menggunakan data IHSG bulanan dari tahun 2000 sampai Maret 2020 (ihsg.ts) dan dari tahun 2015 sampai Maret 2020 (ihsg.ts.2015).

Classical Decompose

Classical Decomposition mengasumsikan komponen Seasonal berulang setiap tahun.

Multiplicative Classical Decompose

ihsg.mult <- decompose(ihsg.ts, type = "multiplicative")
autoplot(ihsg.mult)+ 
  xlab("Year")+
  ggtitle("Classical Multiplicative Decompose IHSG")

plot of chunk unnamed-chunk-3

Additive Classical Decompose

ihsg.add <- decompose(ihsg.ts, type = "additive")
autoplot(ihsg.add)+ 
  xlab("Year")+
  ggtitle("Classical Additive Decompose IHSG")

plot of chunk unnamed-chunk-4

Ada setidaknya 3 metode lagi untuk Decompose yaitu X11, SEATS dan STL dimana ketiganya cukup rumit. Untuk artikel ini, The Primary Trader hanya mempraktikan menggunakan Classical Decomposition. Namun beberapa poin dibawah ini menunjukkan plot Decomposition dari ketiga metode tersebut.

X11 Decompose

X11 menggunakan dasar Classical Decomposition namun untuk Trend dan Cycle-nya, X11 memperhatikan seluruh observasi dari titik awal sampai akhir (tidak hanya tahun ke tahun seperti Classical Decomposition). X11 juga langsung menyesuaikan metode Additive dan Multiplicative yang mana pada Classical Decompose, pemilihan metode tersebut harus dilakukan secara manual.

ihsg.x11 <- seas(ihsg.ts, x11="")
autoplot(ihsg.x11)+ 
  xlab("Year")+
  ggtitle("X11 Decompose IHSG")

plot of chunk unnamed-chunk-5

SEATS Decompose

SEATS atau SEasonal Extraction in ARIMA Time Series adalah Decomposition yang hanya berlaku pada Quarterly maupun Monthly data.

ihsg.seats <- seas(ihsg.ts)
autoplot(ihsg.seats)+
  ggtitle("SEATS decomposition of electrical equipment index")

plot of chunk unnamed-chunk-6

STL Decompose

STL atau Seasonal and Trend Decomposition using Loess dimana Loess adalah metode untuk mengestimasi hubungan nonlinear dari data. Beberapa keunggulan STL dibanding metode Decompose yang lain adalah STL dapat menghitung data seasonality lain (tidak hanya bulanan maupun kuartalan seperti SEATS). Komponen Seasonal-nya serta Rate of Change-nya dapat diganti serta dirubah manual begitupun dengan Smoothness dari Trend-Cycle nya.

ihsg.stl <- stl(ihsg.mo, t.window = 13, s.window = "periodic", robust = TRUE)
autoplot(ihsg.stl)+
  ggtitle("STL decomposition of electrical equipment index")

plot of chunk unnamed-chunk-7

Peak and Trough

The Primary Trader menyukai salah satu penggunaan metode Decompose adalah untuk mengetahui Peak and Trough dari suatu data – menggunakan unsur Seasonal yang dihitung dalam metode Decompose.

Berikut adalah contoh Peak and Trough menggunakan unsur Seasonal pada Classical Decompose dan X11 Decompose :

ihsg.mult.2015 <- decompose(window(ihsg.ts.2015, start = c(2015,1)), type = "multiplicative")
ihsg.add.2015 <- decompose(window(ihsg.ts.2015, start = c(2015,1)), type = "additive")
ihsg.x11.2015 <- seas(window(ihsg.ts.2015, start = c(2015,1)), x11="")

autoplot(ihsg.mult$seasonal)+
  ggtitle("Seasonality of Multiplicative Classical Decomposition")

plot of chunk unnamed-chunk-8
autoplot(ihsg.add$seasonal)+
  ggtitle("Seasonality of Additive Classical Decomposition")

plot of chunk unnamed-chunk-8
autoplot(seasonal(ihsg.x11))+
  ggtitle("Seasonality of X11 Decomposition")

plot of chunk unnamed-chunk-8
autoplot(ihsg.mult.2015$seasonal)+
  ggtitle("Seasonality of Multiplicative Classical Decomposition since 2015")

plot of chunk unnamed-chunk-8
autoplot(ihsg.add.2015$seasonal)+
  ggtitle("Seasonality of Additive Classical Decomposition since 2015")

plot of chunk unnamed-chunk-8
autoplot(seasonal(ihsg.x11.2015))+
  ggtitle("Seasonality of X11 Decomposition since 2015")

plot of chunk unnamed-chunk-8

Bila melihat kedua metode (Classical dan X11), terlihat X11 lebih rumit karena Seasonality X11 sepanjang periode tidak stabil. Hal ini karena metode X11 benar – benar melihat data secara detil, tidak terpaku dengan data tahun ke tahun seperti Classical Decomposition.

Grafik di atas juga menunjukkan bahwa angka siklus Peak and Trough IHSG berbeda – beda setiap metode. Hal ini cukup wajar namun pada satu metode, ada perbedaan apabila total periodenya berbeda.

Untuk melihat Peak and Trough, berikut adalah angka Seasonal dari Classical Decomposition metode (Multiplicative dan Additive) dengan periode yang berbeda. Angka Seasonal tertinggi adalah Peak sementara angka Seasonal terendah adalah Trough.

### Classical Decompose Multiplicative : July and Oct 
range(ihsg.mult$seasonal)

## [1] 0.9681424 1.0253185
head(ihsg.mult$seasonal, 12)

##            Jan       Feb       Mar       Apr       May       Jun       Jul
## 2000 1.0012314 1.0039945 1.0057929 1.0223423 1.0182244 1.0125698 1.0253185
##            Aug       Sep       Oct       Nov       Dec
## 2000 0.9930703 0.9860049 0.9681424 0.9683132 0.9949955
### Classical Decompose Multiplicative 2015 : Feb and Nov
range(ihsg.mult.2015$seasonal)

## [1] 0.9727762 1.0266903
head(ihsg.mult.2015$seasonal, 12)

##            Jan       Feb       Mar       Apr       May       Jun       Jul
## 2015 1.0247965 1.0266903 1.0154625 1.0044016 0.9878793 0.9949372 1.0036845
##            Aug       Sep       Oct       Nov       Dec
## 2015 0.9986347 0.9818674 0.9834012 0.9727762 1.0054689
### Classical Decompose Additive : Apr and Nov
range(ihsg.add$seasonal)

## [1] -83.57064  55.17163
head(ihsg.add$seasonal, 12)

##             Jan        Feb        Mar        Apr        May        Jun
## 2000   7.160684  32.889453  50.837431  55.171632  22.153855   2.141557
##             Jul        Aug        Sep        Oct        Nov        Dec
## 2000  49.218353 -30.365464 -43.315344 -49.307086 -83.570639 -13.014433
### Classical Decompose Additive 2015 : Feb and Nov
range(ihsg.add.2015$seasonal)

## [1] -149.884  156.214
head(ihsg.add.2015$seasonal, 12)

##              Jan         Feb         Mar         Apr         May
## 2015  154.118949  156.213976   85.252963   22.170138  -74.133527
##              Jun         Jul         Aug         Sep         Oct
## 2015  -39.096942   12.300302   -9.089981  -94.200776  -97.398817
##              Nov         Dec
## 2015 -149.884031   33.747744

Menggunakan metode Classical Decomposition Multiplicative dari tahun 2000, terdeteksi bahwa Peak and Trough IHSG ada di bulan Juli dan Oktober. Sementara dengan metode yang sama namun pada periode 2015, Peak and Trough IHSG terdeteksi di bulan Februari dan November.

Hal ini tentu karena adanya perubahan yang terjadi dari IHSG itu sendiri. Perubahan Seasonality serta Cycle pada pasar modal dapat terjadi karena perubahan rezim pemerintahan dan teknologi. Periode dari tahun 2000 sampai 2020 adalah periode yang cukup panjang.

The Primary Trader lebih percaya pada metode yang menggunakan data pendek terbaru (yaitu untuk periode dari 2015). Berikut adalah IHSG dengan Peak and Trough pada bulan April dan November (menggunakan Classical Decompose Additive) :

IHSG <- getSymbols("^JKSE", from = "2000-01-01", to = "2020-04-30", auto.assign = FALSE)
IHSG.mo <- na.omit(to.monthly(IHSG))
ihsg.mo <- IHSG.mo$IHSG.Adjusted
ihsg.ts <- ts(ihsg.mo, frequency = 12, start = c(2000,1))

ihsg.df <- data.frame(ihsg.mo, date = index(ihsg.mo))
ihsg.df <- ihsg.df %>%
  mutate(dates = as.Date(date), month = month(date))

plot(ihsg.df$date, ihsg.df$IHSG.Adjusted, type = "l")
points(x = ihsg.df[ihsg.df$month ==4, "date"],
       y = ihsg.df[ihsg.df$month ==4, "IHSG.Adjusted"], col = "blue", pch = 19)
points(x = ihsg.df[ihsg.df$month ==11, "date"],
       y = ihsg.df[ihsg.df$month ==11, "IHSG.Adjusted"], col = "red", pch = 19)

plot of chunk unnamed-chunk-10

Seasonality Line

Setiap metode Decompose menghasilkan dua komponen penting yaitu Seasonally Adjusted serta Trend. Keduanya pun dapat di-plot bersama dengan data IHSG.

Seasonally Adjusted dan Trend dari X11 Decompose

autoplot(ihsg.ts, series="Data") +
  autolayer(trendcycle(ihsg.x11), series="Trend") +
  autolayer(seasadj(ihsg.x11), series="Seasonally Adjusted") +
  xlab("Year") +
  ggtitle("X11 Decompose IHSG") +
  scale_colour_manual(values=c("green","blue","red"),
             breaks=c("Data","Seasonally Adjusted","Trend"))

plot of chunk unnamed-chunk-11

Agar terlihat jelas garis Seasonally Adjusted dan Trend – nya maka The Primary Trader melakukan zoom in dengan melihat data IHSG dari tahun 2015 :

ihsg.ts.2015 <- window(ihsg.ts, start = 2015)

autoplot(ihsg.ts.2015, series="Data") +
  autolayer(trendcycle(seas(ihsg.ts.2015, x11="")), series="Trend") +
  autolayer(seasadj(seas(ihsg.ts.2015, x11="")), series="Seasonally Adjusted") +
  xlab("Year") +
  ggtitle("X11 Decompose IHSG") +
  scale_colour_manual(values=c("green","blue","red"),
             breaks=c("Data","Seasonally Adjusted","Trend"))

plot of chunk unnamed-chunk-12

Seasonally Adjusted dan Trend dari Classical Decompose

Berikut adalah Seasonality dan Trend line dari Classical Decomposition secara Additive dan Multiplicative dari tahun 2015 :

autoplot(ihsg.ts.2015, series="Data") +
  autolayer(trendcycle(decompose(ihsg.ts.2015, type = "additive")), series="Trend") +
  autolayer(seasadj(decompose(ihsg.ts.2015, type = "additive")), series="Seasonally Adjusted") +
  xlab("Year") +
  ggtitle("Additive Classical Decompose IHSG") +
  scale_colour_manual(values=c("green","blue","red"),
             breaks=c("Data","Seasonally Adjusted","Trend"))

plot of chunk unnamed-chunk-13
autoplot(ihsg.ts.2015, series="Data") +
  autolayer(trendcycle(decompose(ihsg.ts.2015, type = "multiplicative")), series="Trend") +
  autolayer(seasadj(decompose(ihsg.ts.2015, type = "multiplicative")), series="Seasonally Adjusted") +
  xlab("Year") +
  ggtitle("Multiplicative Classical Decompose IHSG") +
  scale_colour_manual(values=c("green","blue","red"),
             breaks=c("Data","Seasonally Adjusted","Trend"))

plot of chunk unnamed-chunk-14

Seasonal Sub-Series dari Seasonal X11 IHSG

Beberapa metode memberikan coding untuk lebih menspesifikan Seasonal atau Sub-Series Seaonal yang ada seperti metode X11 Decomposition berikut :

ihsg.x11 %>% seasonal() %>% ggsubseriesplot() + ylab("Seasonal X11")

plot of chunk unnamed-chunk-15

Berdasarkan metode Decompose menggunakan X11, The Primary Trader melihat kecenderungan IHSG Sideways cenderung Uptrend di 1Q. Terlihat jelas bahwa IHSG lebih sering jatuh (Crash) di 2Q dan Bottoming di 3Q. Ada tendensi naik di 4Q.

Bila disimpulkan, Market cenderung naik mulai dari 4Q sampai 1Q dimana 2Q adalah puncak kenaikan dan awal kejatuhan sampai 3Q.

Kesimpulan

Menemukan titik Peak and Trough adalah suatu hal. Namun tentu pembuktian mana Peak and Trough yang terbaik menggunakan Backtesting adalah hal penting lainnya. The Primary Trader akan menuliskan Backtesting di artikel selanjutnya.