LỜI MỞ ĐẦU Ở thời điểm hiện tại, có lẽ khi nhắc đến cổ phiếu Ngân hàng trên thị trường chứng khoán Việt Nam thì chắc hắn sẽ có không ít nhà đầu tư “ngán ngắm” mà hồi tưởng lại một thời l
Trang 1NGÂN HÀNG NHÀ NƯỚC VIỆT NAM BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NGÂN HÀNG THÀNH PHÓ HÒ CHÍ MINH
TRUONG DAI HOC NGAN HANG
THANH PHO HO CHi MINH
DO AN MON: LAP TRINH PYTHON CHO PHAN TICH DU LIEU
NGUYEN THI THANH NGAN 050609210847 ĐÀO PHÚC NGÂN 050609210858
Khóa học: Khóa 9
GVHD: PHAM THANH AN
Thành phố Hồ Chí Minh, tháng 3 năm 2023
Trang 2LỜI MỞ ĐẦU
Ở thời điểm hiện tại, có lẽ khi nhắc đến cổ phiếu Ngân hàng trên thị trường chứng khoán Việt Nam thì chắc hắn sẽ có không ít nhà đầu tư “ngán ngắm” mà hồi tưởng lại một thời làm mưa làm gió của nhóm cổ phiếu này Thời mà cô phiếu ngân hàng được coi là “cô phiếu vua” trên thị trường Nhưng như vậy không có nghĩa là hiện tại nhóm cô phiếu này phải nhận sự thờ ơ của nhà đầu tư Mà ngược lại, nhóm cổ phiếu này vẫn luôn nhận được nhiều sự quan tâm từ phía các nhà đầu tư, tô chức cũng như cá nhân Không chỉ vì cô phiếu ngân hàng có mức độ an toàn cao mả còn vì cô phiếu ngân hàng luôn có vị trí hàng đầu trên thị trường chứng khoán Việt Nam xét trên nhiều khía cạnh
Sự biến động của nhóm cổ phiếu ngân hàng sẽ quyết định rất lớn đến xu hướng của thị trường, ít nhất là biến động của chỉ số chung Hơn nữa, đo vai trò quan trọng của ngành ngân hàng đối với sự
phát triển của nền kinh tế nên sự biến động của cô phiếu ngân hảng cũng gây ra những tác động
gián tiếp tới các nhóm ngành khác Thực tế lịch sử cho thấy, nhóm cô phiếu ngân hàng luôn tăng đầu tiên khi thị trường bắt đầu có dấu hiệu bước vào một chu kỳ tăng điểm Hay nói cách khác, lịch
sử khởi đầu một con sóng tăng điểm của thị trường thường là sự bật dậy trước tiên của cô phiếu
ngân hàng Và diễn biến thị trường thời gian qua là một minh chứng rõ nét cho điều nảy
Điều đó thê hiện mức độ ưu thế của nhóm cô phiếu ngành này so với các nhóm ngành còn lại trong nên kinh tế Tóm lại, với những cơ sở phân tích như trên chúng ta có thê khẳng định vị thế quan trọng của nhóm cô phiếu ngành này trên thị trường chứng khoán Nó giải thích một điều là không
phải ngẫu nhiên cô phiếu ngảnh này lại được mệnh danh là cổ phiếu “vua” Tuy nhiên nêu xét đến
diễn biến 2 năm trở lại đây của nhóm ngành này nói riêng và của cả thị trường nói chung thì chắc hắn nhiều nhà đầu tư sẽ đặt ra câu hỏi rằng cổ phiếu ngành ngân hàng hiện tại có còn là “vua” Và nếu là vua thì khi nào “vua” sẽ trở lại ngai vàng?
Trang 3MỤC LỤC
1 Mục tiêu nghiên cứu và nhiệm vụ nghiên cửu - 5 2: 2c 2c ccssssrsres 1.1 Mục tiêu nghiên cứu: -. 2L 2 1222112011 1101 11111111 111211111 11 xe 1.2 Nhiệm vụ nghiên cứu - - Q22 222111011 11111 1111111111111 1111 xk
2 Đối tượng và phạm vi nghiên cứu - - 5+ s2 11121121111 1121111211 212g 2.1 Đối tượng nghiên cứu: - s21 112122122121 0121 21 2 1g 2.2 Phạm vi nghiên Cứu: - 2c 2221222111211 1211111111111 181112212
3 Mô hình nghiệp vụ bài toán thực tế, miền ứng dụng - sec se
4 Quá trình thu thập và làm sạch đữ liệu 2: 22 2222222222222 zsx e2 4.1 Biểu đồ pairlo( - 5 ST TH TH n1 121212 121 111g rau
5 Cơ sở lý thuyết về Python cho bài toán - s11 1212217171111 Erk
“xố ẽốx a1ăăăăăẽăắăăỀăẽ 5.3 Numpy TT HH1 H1 1101111111111 111111811 111111111111 kg E11 E11 0011181166
5.6 Biểu đồ hình nến - 22222222 222211222211222711221111211112111 1c
6 Kết qua thyre 160 Ket Wat occ cc ccccccccccccecececscsesssevevsvevevsssssesesevavavsvsssssesesevesavevessssssssevsvivevesisseseveveves
TÀI LIỆU THAM KHAO ooecccccccecscsscssesesessstssescsteseseststssesvstseserestevsreststssesesees
Trang 41 Mục tiêu nghiên cứu và nhiệm vụ nghiên cứu
1.1, Mục tiêu nghiên cứu:
a Nghiên cứu và phân tích những đữ liệu chứng khoán của bốn ngân hàng tại Việt Nam bao gồm: Ngân hàng Quân Đội (MB), Ngân hàng TMCP Đầu tư và Phát Triển (BIDV), Ngân hàng TMCP
Ngoại Thương Việt Nam (VCB) và cuối cùng là Ngân hàng TMCP Á Chau (ACB) tir 2022 dén nay
Qua đó nhằm nắm được tình hình sản chứng khoán từ đầu năm 2019 đến đầu năm 2023
b Nghiên cứu về những tác động làm biến đổi giá cỗ phiếu của 4 ngân hàng từ những năm 2022 đến nay
c Nghiên cứu và nâng cao hiệu quả của việc đầu tư vào các sản giao dịch chứng khoán trong nước 1.2 Nhiệm vụ nghiên cứu
Giải quyết được số liệu của 4 ngân hàng trên đề nhằm phân tích
2 Đối tượng và phạm vi nghiên cứu
2.1 Đối tượng nghiên cứu:
Cô phiếu ngân hàng của những ngân hàng sau: Ngân hàng Quân Đội (MB), Ngân hàng TMCP Đầu
tư và Phát Triển (BIDV), Ngân hàng TMCP Ngoại Thương Việt Nam (VCB) và cuối cùng là Ngân hang TMCP A Chau (ACB) trong thị trường chứng khoán Việt Nam
Tên Ngân hàng Mã giao dịch Ngân hàng TMCP Ngoại Thương VCB
Ngân hàng Quân Đội MBB
2.2 Phạm vi nghiên cứu:
Về không gian: Thị trường chứng khoán Việt Nam, cụ thể là sở giao dịch chứng khoán của bốn ngân hàng: Ngân hàng Quân Đội (MB), Ngân hàng TMCP Đầu tư và Phát Triển (BIDV), Ngân hàng TMCP Ngoại Thương Việt Nam (VCB) và cuối cùng là Ngân hàng TMCP Á Châu (ACB)
Về thời gian: Tiến hành phân tích cô phiếu các ngân hàng từ đầu năm 2019 đến đầu năm 2023
3 Mô hình nghiệp vụ bài toán thực tế, miền ứng dụng
3.1 Mô hình nghiệp vụ bài toán thực tế
Dự báo cô phiếu luôn là bài toán thách thức vì tính không thể đoán trước của nó Giải quyết thị trường hàng ngày là không thê dự báo giá cô phiếu và giá cô phiếu là ngẫu nhiên Tuy nhiên bằng các phân tích kỹ thuật cho thây hầu hết các giá cô phiếu được phản ánh các dữ liệu liệu trước đó, do
đó xu hướng vận động giá là rất quan trọng đề dự đoán giá hiệu quả Hơn nữa, các nhóm cổ phiếu
và thị trường chứng khoán bị ảnh hưởng bởi một số yếu tô kinh tế như sự kiện chính trị, điều kiện
kinh tế chung, chỉ số giá hàng hóa, kỳ vọng của nha dau tu
Trang 5Mô hình nghiệp vụ kinh doanh chứng khoán của các nhà đầu tư, mỗi nhà đầu tư có mục đích đầu tư rất khác nhau, trước hết và quan trọng nhất là tìm kiếm lợi nhuận từ lợi tức kép của chứng khoán
Họ có thể nhằm vào mục tiêu tích lũy vốn dé tạo ra thu nhập trong tương lai, hoặc đáp ứng các nhu cầu cá nhân khác Nhà đầu tư thường có thê trực tiếp hoặc gián tiếp xác định tình hình tài chính thông qua việc thường xuyên xem xét tình hình tài chính của mình, các quan điểm về khả năng chấp nhận rủi ro, các quy chế về thuế và đặc biệt họ phải có những phân tích mang độ chính sách cao về những biến động của thị trường chứng khoán thông qua các phân tích chứng khoán được thê hiện dưới dạng biếu đồ Và mục tiêu cuối cùng của bài toán thực tế khi giao dịch trên sàn chứng khoán chính là tối đa hóa lợi ích cũng như an toàn vốn
Đôi với đỗ án này nhóm chúng em sẽ phân tích về giá đóng cửa, mở cửa của cô phiêu của 4 ngân hàng khác nhau với đữ liệu được lây từ sàn p1ao dịch chứng khoán Việt Nam vn stock
4 Quá trình thu thập và làm sạch dữ liệu
Đồ án này nhóm chúng em sử dụng ứng dụng Google colaboratory đề thực hiện việc viết code cũng như đưa ra biểu đồ phân tích chứng khoán
Đầu tiên import cac thư viện quen thuộc như sau:
import datetime
import numpy as np
import pandas as pd
Tiép theo, đề load đữ liệu chứng khoán trực tuyến, ta sử dụng thư viện vn stock, thư viện này ta phải cài đặt vào Colab
!pip install vnstock
import vnstock as vs
Giờ ta load dữ liệu chứng khoán từ 3 ngân hàng là Ngân hàng Quân Đội (MB), Ngân hàng TMCP Đầu tư và Phát Triển (BIDV), Ngân hàng TMCP Ngoại Thương Việt Nam (VCB), Ngân hàng TMCP A Chau (ACB) và thời gian lấy dữ liệu từ ngày 01/01/2019 đến ngày 31/01/2023, ta làm như
sau:
Load data VCB
VCB = vs.stock_historical_data(symbol=VCB', start_date="2019-01-01", end_date='2023-01-31')
VCB headQ)
Open High Low Close Volume TradingDate
0 410270 413320 40723.0 40799.0 1081640 2019-01-02
1 411030 411790 40114.0 40799.0 1071350 2019-01-03
2 40570.0 41408.0 40038.0 41408.0 1307310 2019-01-04
3 420930 422450 414840 41560.0 1175810 2019-01-07
4 418640 420170 414840 418640 1318810 2019-01-08
Két qua tra vé cho tala 1 Data Frame, bat dau từ ngay 02/01/2015, trong đó các ngày 1,5,6 và 7 là ngảy nghỉ lễ, thứ 7, chủ nhật nên không có dữ liệu đê hiện thị
Quan sát bảng ta thấy các cột có ý nghĩa như sau:
® Open là p1á mở cửa
Trang 6¢ High 1a gia cao nhất trong phiên giao dich
® Low là giá thấp nhất trong phiên
* Close la giá đóng cửa (hay giá kết phiên)
e Volume là khối lượng giao dịch (tổng số cổ phiếu giao dịch trong phiên)
Tiếp tục ta làm tương tự đối với 3 Ngân hàng còn lại: ACB, BIDV và MB
Giờ ta nối 4 Data frame trên lại thành một bảng dữ liệu mới để tiện phân tích, ta đặt tên là bank_ stock
#Gom thanh | list theo hang ngang
list_banks = ['VCB',’MBB',’ACB','BID']
# Tham so axis = | la noi theo cột
bank_ stocks = pd.concat([VCB,MBB,ACB,BID],axis=1, keys = list_banks)
bank_ stocks
Open High Low Close Volume TradingDate Open High Low Close Low Close Volume TradingDate Open High
410270 413320 407230 407990 1081640 2019-01-02 94340 9531.0 93610 9361.0 109340 110570 11031060 2019-01-02
) 107135 2019-01-03
)19-01-04 1
117581 2019-01-07 9192 9313.0 91440 9168 1077
1 1-01-08 91920 92410 90710 912 10760
2 19550.0 192000 1955 NaN NaN NaN NaT 44900.0 45550(
NaN NaN NaN NaT 451000 46300(
NaN NaN NaN NaT 465000 46600.0
00.0 1046115
1
1
0 1554077 2023-01-27 199(
1 0 449000
1
878000 91900.0 1449748 NaN NaN NaN NaT 442500 45100(
Sử dụng phương thức xs() trong pandas dé lập chỉ mục đa cấp để tìm giá trị đóng cửa lớn nhất và nhỏ nhất của từng cô phiếu trên
bank_stocks.xs(key='Close’ axis=1 ,level='Stock Info').max(Q)
Bank Name
VCB 95800.0
MBB 28666.0
ACB 30360.0
BID 49000.0
dtype: float64
bank_stocks.xs(key='Close' axis=1 ,level='Stock Info').minQ)
Bank Name
VCB_ 407990
MBB 7273.0
ACB 8763.0
BID 23024.0
dtype: float64
Tao 1 DataFrame trống mới được gọi là value_banks Data frame này sẽ chứa tỷ suất lợi nhuận cho từng cô phiêu của ngân hàng trên
value_banks = pd.DataFrame()
Tạo một vòng lặp for đề lặp qua với mỗi mã cô phiếu ngân hàng Tiếp theo, ta tạo một cột tên là
“mã cỗ phiếu + value_bank” = giá trị tỷ suất lợi nhuận
Đề tính tý suất lợi nhuận, ta dùng hàm pet_change trong pandas và áp dụng cho giá đóng cửa cửa từng mã cô phiếu theo code bên dưới Phương thức pet_change() dé tinh toán thay đối % theo thời gian Sw thay đôi này được tính (giá trị row hiện tại — piá trị row trước đó)/ (giá trị row trước đó) Vì
Trang 7dòng đầu tiên không có dữ liệu đề tính nên trả về giá trị NaN, ta có thê xóa luôn dòng này với hàm dropna
for name In list _banks:
value_banks[name+' value_bank'] = bank_stocks[name][Close’].pet_change()
value_banks.dropna(inplace= True)
value_banks.head()
VCB value_bank MBB value_bank ACB value_bank BID value_bank
1 0.000000 -0.043906 -0.037623 -0.044751
2 0.014927 0.005475 0.007048 -0.014079
3 0.003671 0.018780 0.014184 0.023758
4 0.007315 -0.005236 -0.006993 -0.009258
3 0.014547 0.026425 0.017513 0.031232
4.1 Biéu đồ pairlot
Dung Seaborn str dung biéu dé pairplot dé tim cổ phiếu nổi bật dựa trên giá trị lợi nhuận bên trên
import seaborn as sns
sns.pairplot(value_banks)
Trang 80075 4
0050 3
0025 3
0000
~0 025
-0.050 3
-0.075 +
Nn uw
*
“ % ee
~0.05 000 005 ~0.05 000 005 -01 00 01 -005 000 005
VCB value_bank MBB value_bank ACB value_bank BID value_bank
Nhận xét:
Từ biểu đồ trên ta thây được:
e Ty suat gitta Ngan hang VCB với MB
Lây giá đóng cửa các cô phiêu trên băng biêu đô matplotlib ta dùng vòng for đề lặp qua Data frame
các cô phiêu trên
import matplotlib.pyplot as plt
for tick in list_banks:
bank_stocks[tick]['Close’] plot(figsize=(12,4),label=tick)
pltlegendQ
Trang 9
100000
— W8
— MBB
80000 | —— ACB
— BID
60000
40000
20000
Nhận xét:
Quan sát ở biêu đồ matplotlib trên ta thay gia cô phiếu của Ngân hàng VCB đang dẫn đầu ngành, tiếp đến là Ngân hàng BIDV, ACB và MB Nhìn chung khi giá cổ phiếu của một ngân hảng tăng thi các ngân hàng còn lại cũng có sự g1a tăng theo
4.3 Biểu đồ nhiệt
Dùng bản đồ nhiệt (Heatmap) để xem độ tương quan giá đóng cửa của các cổ phiếu trên
plt.fgure(figsize=(12,5))
sns.heatmap(bank_stocks.xs(key='Close',axis=1,level=Stock Info').corr(),annot=True)
VCB MBB ACB BID
Bank Name
Sử dụng Seaborn Clustermap để nhóm các cô phiếu có tương quan với nhau
sns.clustermap(bank _ stoeks.xs(key='Close',axIs=],level= Stoek Info').eorr(Q),annot= Irue)
Trang 1007
Bank Name
Nhận xét:
Giá trị cô phiếu của Ngân hàng MB và ACB có sự tương quan với nhau
Giá trị cô phiếu của Ngân hàng ACB và VCB có sự tương quan với nhau
Giá trị cô phiếu của Ngân hàng VCB và BIDV có sự tương quan với nhau
4.4 Biểu đồ nến:
Cỗ phiếu ACB:
import plotly
import plotly.graph_objects as go
candlestick = go.Candlestick(
x=VCB index,
open=ACBỊ'Openr |,
high=ACB['High'],
low=ACB[Low’],
close=ACBI'Close']
fig = go.Figure(data=[candlestick])
fig.showQ
Trang 11eh
a 200 400 600 800 1000
Nhận xét:
Cỗ phiếu VCB:
candlestick = go.Candlestick(
x=VCB index,
open=VCBỊ'Openr |,
high=VCB['High'],
low=VCB[Low’],
close=VCB['Close']
fig3 = go.Figure(data=[candlestick])
fig3 show()
a \ /h
6 00 600 s00 1000
Nhận xét:
Cỗ phiếu MBB:
candlestick = go.Candlestick(
x=MBB index,
open=MBB['Oper |,
high=MBB['High'],
low=MBBI'Low']
close=MBB['Close']
)
fig] = go.Figure(data=[candlestick])
fig1.showQ)