Analisis dan Visualisasi Data Saham Menggunakan Python — Part 3

ExplainingTech
4 min readOct 31, 2020

--

Pendahuluan

Pada bagian kedua, kita sudah dapat membaca dataset beberapa saham, melakukan normalisasi, menghitung return selama 5 tahun terakhir, serta melakukan analisis. Pada bagian ini, saya akan membahas mengenai return harian dari saham-saham tersebut.

Informasi yang ada pada artikel ini hanya untuk pendidikan, bukan saran investasi. Semua keputusan investasi menjadi tanggung jawab masing-masing pembaca.

Kode Program

Bagi pembaca yang ingin langsung mempelajari kode program yang digunakan di artikel ini, maka bisa men-download-nya dari repository ini.

Menganalisis Return Harian

Pada bagian ini, kita akan menghitung return harian untuk setiap saham. Berikut ini merupakan kode untuk menghitung daily return:

def daily_return(df):
df_daily_return = df.copy()
for i in df.columns[1:]:
for j in range(1, len(df)):
df_daily_return[i][j] = ((df[i][j] — df[i][j-1]) / df[i][j-1]) * 100
df_daily_return[i][0] = 0
return df_daily_return

Berikut ini merupakan cara kerja dari kode tersebut:

  • Langkah pertama, kita copy DataFrame df ke variable sementara df_daily_return.
  • Langkah kedua, kita gunakan for loop untuk melakukan iterasi ke setiap kolom close (kolom date tidak termasuk). Kemudian kita menghitung daily return dengan mengurangkan nilai close baris j dengan nilai close baris j-1. Selanjutnya, kita bagi dengan nilai close baris j-1 dan dikali dengan 100%.
  • Langkah ketiga, kita set baris pertama dari df_daily_return menjadi 0 (karena di hari pertama kita belum memiliki return).

Gunakan kode berikut ini untuk plot daily return:

stocks_daily_return = daily_return(stock_all)
interactive_plot(stocks_daily_return, 'Stocks Daily Return')
Daily return untuk beberapa saham
Daily return untuk beberapa saham

Dari plot tersebut, ada saham-saham yang dapat menghasilkan daily return >10%, tetapi saham-saham seperti ini juga terkadang menghasilkan daily return negatif yang sama besarnya juga. Hal ini sesuai dengan prinsip dasar investasi yaitu “high risk high return”.

Selain ada saham-saham yang “high risk high return”, ada juga saham-saham yang “low risk low return”, seperti misalnya ICBP. Dimana daily return-nya sangat jarang melebihi ±10%, keculai pada saat pandemik (Maret 2020).

Correlation Analysis

Pada bagian ini, kita akan melakukan analisis korelasi terhadap daily return dari saham-saham tersebut. Analisis korelasi digunakan menghitung tingkat kemiripan daily return antara saham-saham tersebut.

Nilai korelasi yang tinggi menginformasikan bahwa saham tersebut performanya sangat mendekati, sedangkan Nilai korelasi yang rendah menginformasikan bahwa saham tersebut performanya sangat berbeda.

Gunakan kode berikut ini untuk menghitung korelasi dan melakukan plot matriks korelasi:

cm = stocks_daily_return.drop(columns=['Date']).corr()
plt.figure(figsize=(10,10))
sns.heatmap(cm, annot=True)
Matriks korelasi antara daily return dari saham-saham
Matriks korelasi antara daily return dari saham-saham

Jika kita gunakan IHSG sebagai patokan (perhatikan kolom pertama yang ditandai dengan warna hijau), maka kita bisa mendapatkan beberapa informasi:

  • IHSG dengan IHSG memiliki nilai korelasi 1. Hal ini masuk akal karena korelasi dengan dirinya sendiri akan memberikan kemiripan 100%.
  • BBNI dengan IHSG memiliki nilai korelasi 0.71. Hal ini berarti performa BBNI memiliki kemiripan sebesar 71% jika dibandingkan dengan IHSG. Hal ini masuk akal karena fluktuasi daily return BBNI mirip dengan IHSG.
  • PTRO dengan IHSG memiliki nilai korelasi 0.31. Hal ini berarti performa BBNI memiliki kemiripan sebesar 31% jika dibandingkan dengan IHSG. Hal ini masuk akal karena daily return PTRO lebih fluktuatif jika dibandingkan dengan IHSG.

Histogram Analysis

Pada bagian ini, kita akan melakukan plot histogram untuk daily return dari setiap saham tersebut. Dengan plot histogram, kita akan memvisualisasikan seberapa fluktuatif daily return saham-saham tersebut.

Gunakan kode berikut ini untuk melakukan plot histogram:

stocks_daily_return.hist(figsize=(10,10), bins=40);
Histogram untuk daily return setiap saham
Histogram untuk daily return setiap saham

Dari plot tersebut, kita dapat melihat bahwa distribusi daily return pada setiap saham rata-rata ada pada 0%, hal ini terjadi karena rata-rata pada setiap harinya tidak terjadi fluktuasi yang besar.

Distribusi BBCA yaitu antara ±5%, hal ini berarti BBCA memiliki risk yang lebih rendah dibandingkan dengan INKP yang memiliki distribusi antara ±10%. Distribusi yang lebih besar menandakan bahwa daily return saham tersebut lebih fluktuatif dan memiliki risk yang lebih besar.

Kesimpulan

Pada artikel ini, kita sudah melakukan analisi dan visualisasi data beberapa saham-saham di Indonesia. Beberapa teknik data preporcessing yang dibahas yaitu handling missing values, normalization. Beberapa metrics saham yang dianalisis yaitu overall return, daily return, risk. Beberapa teknik data visualization yang dibahas yaitu plot, heat map plot, histogram plot.

Reference

  • Python & Machine Learning for Financial Analysis, Udemy Course.

--

--

ExplainingTech
ExplainingTech

Written by ExplainingTech

A guide to digital technologies

No responses yet