Seiring dengan perkembangan internet dan adanya kasus pandemi COVID-19, semakin banyak orang yang menyadari pentingnya manajemen finansial dan memulai investasi. Namun dengan banyaknya perusahaan yang ada, pemula akan kebingungan untuk memulai investasi saham di perusahaan yang cocok. Jika kita investasi ke perusahaan tanpa mengenali profil perusahaan dan track record manajemen keuangan dari perusahaan tersebut, besar kemungkinan kita akan merugi dari segi waktu, effort, dan biaya. Oleh karena itu, sebagai pemula direkomendasikan untuk mencoba saham Bluechip
Untuk Daftar saham Bluechip di Indonesia cukup bervariasi. Dalam pengerjaan submission ini, saya mencoba untuk memprediksi harga saham TLKM oleh PT. Telkom Indonesia (Persero) Tbk. menggunakan data yang ada.
- Bagaimana cara mengetahui fitur yang berpengaruh terhadap pergerakan harga saham PT. Telkom Indonesia (Persero) Tbk. ?
- Bagaimana cara membuat model machine learning untuk memprediksi saham PT. Telkom Indonesia (Persero) Tbk. menggunakan data uji yang ada?
- Mengetahui fitur yang mempengaruhi harga saham PT Telkom Indonesia (Persero) Tbk.
- Membuat model machine learning untuk memprediksi saham PT Telkom Indonesia (Persero) Tbk.
Karena dataset terkait hanya berisi tentang data tanggal dan harga, maka solusi yang tepat untuk masalah ini adalah dengan menggunakan pendekatan Time Series. Untuk memahami fitur yang memiliki pengaruh terhadap harga saham, saya akan menggunakan Heatplot agar pemetaan korelasi antar kolom menjadi lebih mudah dimengerti.
Untuk model machine learning yang digunakan, saya menggunakan 1 buah layer LSTM (Long Short Term Memory) dalam model.LSTM adalah jenis jaringan saraf berulang yang memiliki kemampuan untuk mengingat atau melupakan output dari data yang melalui arsitekturnya. Ini dilakukan tanpa mengubah konteks dari data yang ada. Dengan pendekatan ini, LSTM mampu mengatasi masalah RNN, yang mana RNN tidak mampu memprediksi kata yang disimpan dalam memori jangka panjang. Dengan bertambahnya panjang celah, RNN tidak memberikan kinerja yang efisien. Berbeda dengan LSTM yang dapat secara default menyimpan informasi. Dengan kinerja seperti ini, LSTM cocok untuk digunakan dalam proses analisa dan prediksi data deret waktu. Beberapa keuntungan untuk menggunakan LSTM untuk kasus Time Series adalah:
- Tidak ada prasyarat tertentu dalam implementasi model
- Dapat bekerja dengan baik untuk neural network dengan fungsi non-linear
- Cocok untuk digunakan di dataset yang banyak
- Dapat mengatur parameter tuning secara kustom agar menyesuaikan bentuk data.
Menurut referensi yang saya baca, Saya memutuskan untuk menggunakan pembuatan model menggunakan layer LSTM (Long Short Term Memory). Untuk penggunaan optimizer yang cocok di case Time Series, Saya akan menggunakan Adam Optimizer karena secara keseluruhan, optimizer ini sangat bagus jika dibandingkan dengan optimizer lain.
Untuk submission ini, saya mengambil data dari Kaggle yang bernama Indonesian Government Owned Company Stock Price. Berikut adalah daftar kolom di file CSV yang tersedia:
- Date - Tanggal trading saham TLKM (datatype : string object)
- Open - Harga ketika pertama kali diumumkan di tanggal tersebut (datatype : float64)
- High - Harga tertinggi di tanggal tersebut (datatype : float64)
- Low - Harga terendah di tanggal tersebut (datatype : float64)
- Close - Harga saham ketika diakhir period (datatype : float64)
- Adj Close - Close value setelah mempertimbangkan dividen dan stock split (datatype : float64)
- Volume - Jumlah transaksi saham di tanggal tersebut (datatype : float64)
Dari data tersebut, terlihat bahwa rata-rata harga saham TLKM disajikan sangat lengkap mulai dari Harga Open sampai Adj Close nya periode 2004 sampai 2020. Disertai dengan informasi penting lainnya, seperti harga saham tertinggi dan terendah dalam durasi tersebut.
Dari grafik tersebut, dapat diambil kesimpulan bahwa harga saham TLKM mengalami perubahan secara signifikan dalam durasi tersebut. Pada tahun 2004 sampai 2008 merupakan lonjakan harga saham TLKM pertama, kemudian terjadi peningkatan yang sangat drastis di tahun 2012 - Q1 2018. Kemudian mengalami penurunan yang cukup signifikan di akhir tahun 2019 sampai 2 Oktober 2020 karena pengaruh COVID-19.
Sebelum melanjutkan ke tahap preparation, kita perlu untuk melihat korelasi antar fitur yang mempengaruhi pergerakan saham berdasarkan dataset yang ada. Saya mencoba menyajikan korelasi tersebut dalam bentuk heatmap agar dapat dipetakan dengan jelas.
Dalam tahap ini, saya menyiapkan dataframe yang telah menyimpan data dari CSV tersebut untuk dilakukan beberapa pengecekan, pertama kita perlu memeriksa adanya null values. Ini perlu dilakukan untuk menjaga akurasi dari prediksi model yang akan kita lakukan di proses pelatihan data.
Berikut hasil cek data null oleh library pandas :
Dari 3980 data, terdapat 3944 data yang tidak ada null valuesnya, ini artinya ada beberapa data yang null. Untuk mengatasinya, kita bisa menghapus row yang null dengan dropna() dari library pandas
df_new = df.dropna(how='any',axis=0)
df_new
Kemudian, kita cek juga untuk duplikasi data. Berikut hasil cek duplikasi data oleh library pandas :
Langkah berikutnya adalah reduksi dimensi dengan menggunakan PCA. Dari Heatmap korelasi di bagian Data Understanding, dapat kita simpulkan bahwa kolom yang mempunyai korelasi rendah adalah kolom 'Volume'. Setelah menghapus kolom tersebut, tersisa kolom 'Low', 'Open','High','Close', dan 'Adj Close'. Untuk meningkatkan efisiensi pelatihan model dengan cara meminimalisasi fitur yang digunakan tanpa menghapus informasi yang ada didalamnya
Selain pengecekan data dan pembagian dataset ke data latih dan data uji, kita juga perlu untuk mengatur skala data. Hal ini perlu dilakukan agar skor MAE kita tidak menjadi terlalu besar, jika hal ini terjadi, akan mengakibatkan prediksi kita sangat buruk. Oleh karena itu, saya melakukan skala data menggunakan MinMax Scaler. Berikut formula dari MinMax Scaler:
Sebagai rangkuman, langkah yang telah saya lakukan untuk tahap ini adalah:
- Penghapusan missing values
- Penghapusan duplikat data
- Reduksi Dimensi dengan PCA
- Train Test Split dengan ratio 80% data latih dan 20% data uji.
- Penskalaan data latih dan data uji dengan MinMax Scaler untuk mencegah data leakage
Dari banyaknya opsi penggunaan model yang ada untuk kasus Time Series, saya mencoba mengimplementasikan LSTM dalam pembuatan model.
Dalam prosesnya, kita telah mengetahui bahwa LSTM ini merupakan perbaikan dari RNN Tradisional dimana LSTM mampu menyimpan nilai yang penting dan menghapus nilai yang tidak penting dalam jangka waktu yang lama secara default.
Semakin kompleks sebuah model ML, maka kemungkinan model tersebut mengalami overfitting pun semakin tinggi. Walaupun secara arsitektur sudah cocok dengan data, menggunakan loss function yang tepat, dan metrik yang sesuai, masih ada kemungkinan overfitting. Oleh karena itu, selain LSTM saya juga menggunakan Dropout layer untuk mencegah terjadinya overfitting selama proses pelatihan data. Simpelnya, dropout layer yang berperan sebagai perantara hidden layer dan output layer ini dimatikan secara bergantian selama proses pelatihan data berlangsung. Dalam project ini, menggunakan dropout value sebesar 0.5, berikut ilustrasinya:
Secara keseluruhan, alur dari arsitektur model ini adalah LSTM layer sebagai input layer, kemudian melewati dropout layer dengan value sebesar 0.5 untuk meningkatkan variasi output, barulah menggunakan Dense Layer dengan 1 unit perceptron sebagai output layernya.
Berikut visualisasi untuk nilai MAE dan loss value di tahap pelatihan dan pengujian
Berikut visualisasi untuk prediksi data latih harga saham TLKM dibandingkan dengan data aslinya dalam periode 28 September 2004 - 29 November 2016 (80% dataset)
Metrik ini digunakan untuk mengetahui kesalahan model atau memberitahu seberapa besar error model yang sudah di latih kepada data yang akan diuji.
Model deep learning yang telah dibuat dapat melakukan proses training data dengan metrik dan loss function tersebut. Dalam prosesnya, terlihat hasil MAE yang relatif kecil yaitu sekitar 0.0370. Hal ini menunjukan bahwa model ini memiliki error dibawah 1.8%
Demikian laporan dan metrik dari implementasi Machine Learning untuk analisis harga saham TLKM oleh PT. Telkom Indonesia Tbk. Terimakasih telah membaca laporan ini, semoga bermanfaat.