hilalrd commited on
Commit
1319438
1 Parent(s): 488634a

Upload 8 files

Browse files
Files changed (8) hide show
  1. BCA.jpg +0 -0
  2. EDA.py +106 -0
  3. app.py +10 -0
  4. list_cat_cols.txt +1 -0
  5. list_num_cols.txt +1 -0
  6. model_lin_reg.pkl +3 -0
  7. model_scaler.pkl +3 -0
  8. prediction.py +78 -0
BCA.jpg ADDED
EDA.py ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ 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
+
42
+ # Membuat garis lurus
43
+ st.markdown('---')
44
+
45
+ # Magic Syntax
46
+ '''
47
+ Pada page kali ini, penulis akan melakukan eksplorasi sederhana.
48
+ Dataset yang digunakan adalah dataset saham BBCA 2020 - 2023.
49
+ Dataset ini berasal dari web kaggle.com
50
+ '''
51
+
52
+ st.write('### BBCA STOCK DAILY 2020 - 2023')
53
+
54
+ # Show DataFrame
55
+ data = pd.read_csv('https://raw.githubusercontent.com/hilalrd/latihan_b19/master/BBCA%20Daily.csv')
56
+ st.dataframe(data)
57
+
58
+ # Menghitung presentase selisih
59
+ start_price = data['close'].iloc[0]
60
+ end_price = data['close'].iloc[-1]
61
+ percentage_change = (end_price - start_price) / start_price * 100
62
+
63
+ # Membuat plot Harga
64
+ st.write('#### Grafik Harga Saham BBCA 2020 - 2023')
65
+ fig, ax = plt.subplots(figsize=(20, 5))
66
+ ax.plot(data['timestamp'], data['close'])
67
+ ax.set_title('Perubahan Harga Saham BBCA 2020-2023\nGain/Loss: {:.2f}%'.format(percentage_change))
68
+ ax.set_xlabel('Rentang Waktu')
69
+ ax.set_ylabel('Harga Saham')
70
+ st.pyplot(fig)
71
+
72
+ '''
73
+ Secara Kumulatif selama 3 tahun terakhir saham BBCA terus mengalami kenaikan harga dengan harga all-time-high menyentuh angka Rp 9300 / Lembar sahamnya
74
+ '''
75
+
76
+ # Membuat plot Harga
77
+ st.write('#### Grafik Volume Perdagangan Saham BBCA 2020 - 2023')
78
+ fig, ax = plt.subplots(figsize=(20, 5))
79
+ ax.plot(data['timestamp'], data['volume'])
80
+ ax.set_title('Perubahan Volume Perdagangan Saham BBCA 2020-2023')
81
+ ax.set_xlabel('Rentang Waktu')
82
+ ax.set_ylabel('Volume Perdagangan')
83
+ st.pyplot(fig)
84
+
85
+ '''
86
+ 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:
87
+ 1. Laporan Keuangan Q1 - Q4 (Quartal)
88
+ 2. Pembagian Deviden (Semester)
89
+ '''
90
+
91
+ # Membuat Histogram berdasarkan Input user
92
+ st.write('#### Input Histogram yang ingin dilihat')
93
+ pilihan = st.selectbox('Pilih column : ', ('open', 'close', 'quarter_end', 'G/L'))
94
+ fig = plt.figure(figsize=(15, 5))
95
+ sns.histplot(data[pilihan], bins=30, kde=True)
96
+ st.pyplot(fig)
97
+
98
+ # Membuat Plotly plot
99
+ st.write('#### Plotly Plot - Harga dengan Volume')
100
+ fig = px.scatter(data, x='close', y='volume', hover_data=('high', 'low'))
101
+ st.plotly_chart(fig)
102
+
103
+ st.write('Page ini dibuat oleh **Hilal Amirudin**')
104
+
105
+ if __name__== '__main__':
106
+ run()
app.py CHANGED
@@ -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()
list_cat_cols.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ []
list_num_cols.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ ["open", "low", "high", "volume", "Tahun", "Bulan", "Hari", "quarter_end", "open-close", "low-high", "G/L"]
model_lin_reg.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dbf8f842c530ad2b2eb6c2b0a6f664a9c645f300d870ed897baf5e7a919b3a98
3
+ size 579
model_scaler.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a78cf37eae9ab1bf079bb1462da605b503f6fa9a3d815229e844eee524622d05
3
+ size 1104
prediction.py ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import numpy as np
4
+ import pickle
5
+ import json
6
+
7
+ # Load all file
8
+
9
+ # Load the model
10
+ with open('model_lin_reg.pkl', 'rb') as file_1:
11
+ loaded_model = pickle.load(file_1)
12
+
13
+ # Load the scaler model
14
+ with open('model_scaler.pkl', 'rb') as file_2:
15
+ model_scaler = pickle.load(file_2)
16
+
17
+ # Load the list of numerical columns
18
+ with open('list_num_cols.txt', 'r') as file_3:
19
+ list_num_cols = json.load(file_3)
20
+
21
+ # Load the list of categorical columns
22
+ with open('list_cat_cols.txt', 'r') as file_4:
23
+ list_cat_cols = json.load(file_4)
24
+
25
+ def run():
26
+
27
+ with st.form(key='from_harga_saham_BBCA'):
28
+ open = st.number_input('open', min_value=0, max_value=100000, value=7775)
29
+ low = st.number_input('low', min_value=0, max_value=100000, value=6060)
30
+ high = st.number_input('high', min_value=0, max_value=100000, value=8050)
31
+ volume = st.number_input('volume', min_value=0, max_value=200000000, value=135519500)
32
+ st.markdown('---')
33
+
34
+ Tahun = st.number_input('Tahun', min_value=2020, max_value=2023, value=2020)
35
+ Bulan = st.number_input('Bulan', min_value=1, max_value=12, value=7)
36
+ Hari = st.number_input('Hari', min_value=1, max_value=31, value=28)
37
+ st.markdown('---')
38
+
39
+ Quarter_End = st.selectbox('quarter_end', ['0','1'], help='Akhir Quartal Atau Bukan')
40
+ Open_close = st.number_input('open-close', min_value=0, max_value=10000, value=50, help='selisih harga pembukaan dengan harga penutupan sebelumnya')
41
+ High_low = st.number_input('low-high', min_value=0, max_value=10000, value=-1990, help='selisih harga pembukaan dengan harga penutupan sebelumnya')
42
+ G_L = st.selectbox('G/L', ['0','1'], help='0 untuk harga pembukaan lebih tinggi dari harga sebelumnya dan 1 kebalikannya')
43
+
44
+ submitted = st.form_submit_button('Prediksi Harga Penutupan')
45
+
46
+ data_inf = {
47
+ 'open': 7780,
48
+ 'low': 7760,
49
+ 'high': 8050,
50
+ 'volume': 155519500,
51
+ 'Tahun': 2020,
52
+ 'Bulan': 7,
53
+ 'Hari': 28,
54
+ 'quarter_end': 0,
55
+ 'open-close': 0,
56
+ 'low-high': -1990,
57
+ 'G/L': 0
58
+ }
59
+
60
+ data_inf = pd.DataFrame([data_inf])
61
+ st.dataframe(data_inf)
62
+
63
+ if submitted:
64
+ # Split antara kolom numerik dan kategorik
65
+ data_inf_num = data_inf[list_num_cols]
66
+ data_inf_cat = data_inf[list_cat_cols]
67
+
68
+ # Feature Scalling
69
+ data_inf_num_scaled = model_scaler.transform(data_inf_num)
70
+ data_inf_final = np.concatenate([data_inf_num_scaled], axis=1)
71
+
72
+ # Prediksi menggunakan Linear regression
73
+ y_pred_inf = loaded_model.predict(data_inf_final)
74
+ harga_saham = y_pred_inf[0]
75
+ st.write('# Harga Penutupan : Rp', str(int(harga_saham )))
76
+
77
+ if __name__== '__main__':
78
+ run()