hilalrd commited on
Commit
b7ba101
1 Parent(s): 37e726b

Upload 5 files

Browse files
Files changed (5) hide show
  1. EDA.py +97 -0
  2. app.py +10 -0
  3. model_lin_reg.pkl +3 -0
  4. model_scaler.pkl +3 -0
  5. prediction.py +73 -0
EDA.py ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import seaborn as sns
4
+ import matplotlib.pyplot as plt
5
+ import plotly.express as px
6
+ from PIL import Image
7
+
8
+ st.set_page_config(
9
+ page_title = 'SAHAM BBCA - EDA',
10
+ layout = 'wide',
11
+ initial_sidebar_state = 'expanded'
12
+ )
13
+
14
+ def run():
15
+
16
+ # Membuat Judul
17
+ st.title('BBCA Stock Daily Prediction')
18
+
19
+ # Membaut subheader
20
+ st.subheader('EDA untuk Analisis Saham BBCA 2020 - 2023')
21
+
22
+ # Membuat garis lurus
23
+ st.markdown('---')
24
+
25
+ # Membuat layout dengan dua kolom
26
+ col1, col2 = st.columns([1, 3])
27
+
28
+ # Menambahkan Gambar
29
+ with col1:
30
+ image = st.image("BCA.jpg", caption="Grup BCA")
31
+ with col2:
32
+ st.write('PT Bank Central Asia Tbk')
33
+ st.write('Kode Saham : BBCA')
34
+ st.write('Kapitalisasi Pasar : 1.112 Triliun')
35
+
36
+ # Menambahkan deskripsi
37
+ st.write('**Profil Perusahaan**')
38
+
39
+ st.write('PT Bank Central Asia Tbk. atau BBCA dalam bidang usaha bank umum. Anak perusahaan diantaranya: PT BCA Finance (Pembiayaan Konsumen, Sewa Guna Usaha dan Anjak Piutang), BCA Finance Limited (Money Lending- Jasa Pengiriman Uang), PT Bank BCA Syariah (Perbankan Syariah), PT BCA Sekuritas (Penjamin Emisi Efek dan Pialang Perdagangan Saham), dan PT Asuransi Umum BCA (Asuransi Umum atau Asuransi Kerugian).Pada 2017 BCA mendirikan PT Central Capital Ventura (CCV) guna mengikuti inovasi layanan keuangan berbasis digital.Produk dan layanan Perseroan yaitu: produk simpanan, layanan transaksi perbankan, perbankan elektronik, layanan cash management, kartu kredit, bancassurance, produk investasi, fasilitas kredit, Bank garansi, fasilitas ekspor impor dan fasilitas valuta asing. Pada 2017 Jumlah kantor wilayah ada 12 terdiri dari (146 kantor cabang utama, 856 kantor cabang pembantu dan 244 kantor kas) tersebar di seluruh Indonesia, kantor non wilayah (1 kantor cabang utama) dan satu kantor perwakilan di Jakarta pusat')
40
+
41
+ # Membuat garis lurus
42
+ st.markdown('---')
43
+
44
+ st.write('Pada page kali ini, penulis akan melakukan eksplorasi sederhana. Dataset yang digunakan adalah dataset saham BBCA 2020 - 2023. Dataset ini berasal dari web kaggle.com')
45
+
46
+ st.write('### BBCA STOCK DAILY 2020 - 2023')
47
+
48
+ # Show DataFrame
49
+ data = pd.read_csv('https://raw.githubusercontent.com/hilalrd/latihan_b19/master/BBCA%20Daily.csv')
50
+ st.dataframe(data)
51
+
52
+ # Menghitung presentase selisih
53
+ start_price = data['close'].iloc[0]
54
+ end_price = data['close'].iloc[-1]
55
+ percentage_change = (end_price - start_price) / start_price * 100
56
+
57
+ # Membuat plot Harga
58
+ st.write('#### Grafik Harga Saham BBCA 2020 - 2023')
59
+ fig, ax = plt.subplots(figsize=(20, 5))
60
+ ax.plot(data['timestamp'], data['close'])
61
+ ax.set_title('Perubahan Harga Saham BBCA 2020-2023\nGain/Loss: {:.2f}%'.format(percentage_change))
62
+ ax.set_xlabel('Rentang Waktu')
63
+ ax.set_ylabel('Harga Saham')
64
+ st.pyplot(fig)
65
+
66
+ st.write('Secara Kumulatif selama 3 tahun terakhir saham BBCA terus mengalami kenaikan harga dengan harga all-time-high menyentuh angka Rp 9300 / Lembar sahamnya')
67
+
68
+ # Membuat plot Harga
69
+ st.write('#### Grafik Volume Perdagangan Saham BBCA 2020 - 2023')
70
+ fig, ax = plt.subplots(figsize=(20, 5))
71
+ ax.plot(data['timestamp'], data['volume'])
72
+ ax.set_title('Perubahan Volume Perdagangan Saham BBCA 2020-2023')
73
+ ax.set_xlabel('Rentang Waktu')
74
+ ax.set_ylabel('Volume Perdagangan')
75
+ st.pyplot(fig)
76
+
77
+ st.write('Volume perdagangan cenderung fluktuatif dan mengalami peningkatan volume menjelang berakhirnya semester atau quartal. Dapat disimpulkan sementara pergerakan volume perdagangan tersebut disebabkan oleh faktor-faktor berikut:')
78
+ st.write('1. Laporan Keuangan Q1 - Q4 (Quartal)')
79
+ st.write('2. Pembagian Deviden (Semester)')
80
+
81
+
82
+ # Membuat Histogram berdasarkan Input user
83
+ st.write('#### Input Histogram yang ingin dilihat')
84
+ pilihan = st.selectbox('Pilih column : ', ('open', 'close', 'quarter_end', 'G/L'))
85
+ fig = plt.figure(figsize=(15, 5))
86
+ sns.histplot(data[pilihan], bins=30, kde=True)
87
+ st.pyplot(fig)
88
+
89
+ # Membuat Plotly plot
90
+ st.write('#### Plotly Plot - Harga dengan Volume')
91
+ fig = px.scatter(data, x='close', y='volume', hover_data=('high', 'low'))
92
+ st.plotly_chart(fig)
93
+
94
+ st.write('Page ini dibuat oleh **Hilal Amirudin**')
95
+
96
+ if __name__== '__main__':
97
+ run()
app.py ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import EDA
3
+ import prediction
4
+
5
+ navigation = st.sidebar.selectbox('Pilih Halaman : ', ('EDA', 'Prediksi Harga Penutupan'))
6
+
7
+ if navigation == 'EDA':
8
+ EDA.run()
9
+ else:
10
+ prediction.run()
model_lin_reg.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:13f36ec94629d74e010d06c7e27979dbcbb8ce375be06c97661e728a4e05eee4
3
+ size 654
model_scaler.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:493ec3f775d41112234c3e69748a429c9192cf90557aa71f2da951725fec1285
3
+ size 757
prediction.py ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import numpy as np
4
+ import pickle
5
+ import json
6
+ from datetime import datetime
7
+
8
+ # Load model dan scaler
9
+ with open('model_lin_reg.pkl', 'rb') as file:
10
+ loaded_model = pickle.load(file)
11
+
12
+ with open('model_scaler.pkl', 'rb') as file:
13
+ model_scaler = pickle.load(file)
14
+
15
+ # Daftar kolom numerik
16
+ list_num_cols = ['open', 'low', 'high', 'volume']
17
+
18
+ # Daftar kolom kategorik
19
+ list_cat_cols = []
20
+
21
+ # Daftar kolom numerik dan kategorik
22
+ list_cat_num_cols = ['Tahun', 'Bulan', 'Hari']
23
+
24
+ def run():
25
+ with st.form(key='from_harga_saham_BBCA'):
26
+ timestamp = st.date_input("Masukkan tanggal", datetime(2023, 5, 1))
27
+ open_price = st.number_input('open', min_value=0, max_value=100000)
28
+ low = st.number_input('low', min_value=0, max_value=100000)
29
+ high = st.number_input('high', min_value=0, max_value=100000)
30
+ volume = st.number_input('volume', min_value=0, max_value=800000000)
31
+ st.markdown('---')
32
+
33
+ Tahun = st.number_input('Tahun', min_value=2020, max_value=2023)
34
+ Bulan = st.number_input('Bulan', min_value=1, max_value=12)
35
+ Hari = st.number_input('Hari', min_value=1, max_value=31)
36
+
37
+ submitted = st.form_submit_button('Prediksi Harga Penutupan')
38
+
39
+ data_inf = {
40
+ 'timestamp': [timestamp],
41
+ 'open': [open_price],
42
+ 'low': [low],
43
+ 'high': [high],
44
+ 'volume': [volume],
45
+ 'Tahun': [Tahun],
46
+ 'Bulan': [Bulan],
47
+ 'Hari': [Hari],
48
+ }
49
+
50
+ data_inf = pd.DataFrame(data_inf)
51
+ st.dataframe(data_inf)
52
+
53
+ if submitted:
54
+ if open_price == 0:
55
+ st.warning('open harus diisi')
56
+ else:
57
+ # Feature Scaling
58
+ data_inf_scaled = model_scaler.transform(data_inf[list_num_cols])
59
+
60
+ # Combine numerical and categorical data
61
+ data_inf_final = np.concatenate([data_inf_scaled, data_inf[list_cat_num_cols]], axis=1)
62
+
63
+ # Predict using Linear Regression
64
+ y_pred_inf = loaded_model.predict(data_inf_final)
65
+
66
+ # Harga Saham
67
+ harga_saham = int(y_pred_inf[0])
68
+
69
+ # Hasil Prediksi Harga
70
+ st.write('Harga Saham: Rp', harga_saham)
71
+
72
+ if __name__== '__main__':
73
+ run()