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àngluô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 n
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
-ĐỒ ÁN MÔN: LẬP TRÌNH PYTHON CHO PHÂN TÍCH DỮ LIỆU
NGUYỄN THỊ BẢO VY 050609211752 NGUYỄN NHẬT NAM 050609210797 BÙI HỮU NHÂN 050609212086 NGUYỄN THỊ THANH NGÂN 050609210847 ĐÀO PHÚC NGÂN 050609210858
Lớp học phần: DAT708_222_9_L15 Khóa học: Khóa 9
GVHD: PHẠM 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, do 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 4
1.1 Mục tiêu nghiên cứu: 4
1.2 Nhiệm vụ nghiên cứu 4
2 Đối tượng và phạm vi nghiên cứu 4
2.1 Đối tượng nghiên cứu: 4
2.2 Phạm vi nghiên cứu: 4
3 Mô hình nghiệp vụ bài toán thực tế, miền ứng dụng 4
3.1 Mô hình nghiệp vụ bài toán thực tế 4
4 Quá trình thu thập và làm sạch dữ liệu 5
4.1 Biểu đồ pairlot 7
4.2 Biểu đồ matplotlib 8
4.3 Biểu đồ nhiệt 9
4.4 Biểu đồ nến: 10
5 Cơ sở lý thuyết về Python cho bài toán 12
5.1 Seaborn 12
5.2 Pandas 12
5.3 Numpy 13
5.4 Matplotlib: 13
5.5 Biểu đồ nhiệt 13
5.6 Biểu đồ hình nến 13
6 Kết quả thực hiện 13
Kết luận 15
TÀI LIỆU THAM KHẢO 16
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 dữ 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 Á Châu (ACB) từ 2022 đế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 hàng TMCP Á Châu (ACB) trong thị trường chứng khoán Việt Nam
Ngân hàng TMCP Ngoại Thương VCB
Ngân hàng TMCP Á Châu ACB
Ngân hàng TMCP Đầu tư và Phát triển BID
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 nhà đầu tư,
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 để 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 dữ liệu được lấy từ sàn giao 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 các thư viện quen thuộc như sau:
import datetime
import numpy np as
import pandas pd as
Tiếp theo, để load dữ 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 vs as
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 Á Châu (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.head()
Kết quả trả về cho ta là 1 Data Frame, bắt đầu từ ngày 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à giá mở cửa
Trang 6High là giá cao nhất trong phiên giao dịch.
Low là giá thấp nhất trong phiên
Close là giá đóng cửa (hay giá kết phiên)
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 thành 1 list theo hàng ngang
list_banks = [ 'VCB' 'MBB' , ,'ACB','BID' ]
# Tham số axis = 1 là nối theo cột
bank_stocks = pd.concat([VCB,MBB,ACB,BID],axis= , keys = list_banks) 1
bank_stocks
Sử dụng phương thức xs() trong pandas để 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= ,level= 1 'Stock Info' ) max ()
Bank Name
VCB 95800.0
MBB 28666.0
ACB 30360.0
BID 49000.0
dtype: float64
bank_stocks.xs(key= 'Close' ,axis= ,level= 1 'Stock Info' ) min ()
Bank Name
VCB 40799.0
MBB 7273.0
ACB 8763.0
BID 23024.0
dtype: float64
Tạo 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 pct_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 .pct_change() để tính toán thay đổi % theo thời gian Sự thay đổi này được tính (giá trị row hiện tại – giá trị row trước đó)/ (giá trị row trước đó) Vì
Trang 7Discover more
from:
Law12
Document continues below
Luật doanh
nghiệp
Trường Đại học…
90 documents
Go to course
Trắc-nghiệm-LKD Trường đại học Ngâ…
98% (44)
140
Đề thi trắc nghiệm luật kinh tế
100% (19)
3
Question and review, problems chapter 3
Kinh tế
quốc tế 100% (1)
42
Kinh tế quốc tế - tài liệu
Kinh tế
quốc tế 100% (1)
11
The Path of the Law
- nhập môn ngành…
20
Trang 8dò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'].pct_change()
value_banks.dropna(inplace= True )
value_banks.head()
4.1 Biểu đồ pairlot
Dùng Seaborn sử dụng biểu đồ pairplot để tìm cổ phiếu nổi bật dựa trên giá trị lợi nhuận bên trên import seaborn sns as
sns.pairplot(value_banks)
Luật doanh nghiệp 100% (1)
BTVN BUỔI 1 - bai tap
Luật doanh nghiệp 100% (1)
2
Trang 9Nhận xét:
Từ biểu đồ trên ta thấy được:
Tỷ suất giữa Ngân hàng VCB với MB
4.2 Biểu đồ matplotlib
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 plt as
for tick in list_banks:
bank_stocks[tick]['Close'].plot(figsize=( , ),label=tick) 12 4
plt.legend()
Trang 10Nhận xét:
Quan sát ở biểu đồ matplotlib trên ta thấy giá 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 thì các ngân hàng còn lại cũng có sự gia 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.figure(figsize=( , )) 12 5
sns.heatmap(bank_stocks.xs(key= 'Close' ,axis= ,level= 1 'Stock Info' ).corr(),annot= True )
Sử dụng Seaborn Clustermap để nhóm các cổ phiếu có tương quan với nhau
sns.clustermap(bank_stocks.xs(key= 'Close' ,axis= ,level= 1 'Stock Info' ).corr(),annot= True )
Trang 11Nhậ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 go as
candlestick = go.Candlestick(
x=VCB.index,
open=ACB[ 'Open' ],
high=ACB[ 'High' ],
low=ACB[ 'Low' ],
close=ACB[ 'Close' ]
)
fig = go.Figure(data=[candlestick])
fig.show()
Trang 12Nhận xét:
Cổ phiếu VCB:
candlestick = go.Candlestick( x=VCB.index, open=VCB[ 'Open' ], high=VCB[ 'High' ], low=VCB[ 'Low' ], close=VCB[ 'Close' ] )
fig3 = go.Figure(data=[candlestick]) fig3.show()
Nhận xét:
Cổ phiếu MBB:
candlestick = go.Candlestick( x=MBB.index, open=MBB[ 'Open' ], high=MBB[ 'High' ], low=MBB[ 'Low' ], close=MBB[ 'Close' ] )
fig1 = go.Figure(data=[candlestick]) fig1.show()
Trang 13Nhận xét:
Cổ phiếu BID:
candlestick = go.Candlestick(
x=BID.index,
open=BID[ 'Open' ],
high=BID[ 'High' ],
low=BID[ 'Low' ],
close=BID[ 'Close' ]
)
fig2 = go.Figure(data=[candlestick])
fig2.show()
Nhận xét:
5 Cơ sở lý thuyết về Python cho bài toán.
5.1 Seaborn
Seaborn được dùng để vẽ các dạng dữ liệu phân loại Ví dụ, phân loại giới tính, phân loại ngày tháng, phân loại sản phẩm… để trực quan số liệu các dạng Dataset này Trong trường hợp này chúng
em dùng biểu đồ seaborn để phân tích sự biến động trên sàn chứng khoán của 4 ngân hàng BIDV, ACB, MBBank, VCB
5.2 Pandas
Pandas là thư viện thực hiện mọi thứ mà NumPy và SciPy không thể làm Nó làm với các đối tượng
cấu trúc dữ liệu, DataFrames và Chuỗi (Series) Pandas cho phép bạn có thể xử lý các bảng dữ liệu
Trang 14phức tạp và chuỗi thời gian Bạn sẽ dễ dàng tải dữ liệu từ nguồn khác nhau, sau dó slide, dice, xử lý các thành phần còn thiếu, thêm, đổi tên, tổng hợp, reshape và cuối cùng là trực quan dữ liệu theo ý của bạn
5.3 Numpy
Numpy (Numeric Python): là một thư viện toán học rât phổ biến và mạnh mẽ của Python NumPy được trang bị các hàm số đã được tối ưu, cho phép làm việc hiệu quả với ma trận và mảng, đặc biệt
là dữ liệu ma trận và mảng lớn với tốc độ xử lý nhanh hơn nhiều lần khi chỉ sử dụng Python đơn thuần Sử dụng NumPy có thể thực hiện các thao tác sau:
Các phép toán toán học và logic trên mảng
Các biến đổi Fourier và các quy trình để thao tác shape
Các phép toán liên quan đến đại số tuyến tính NumPy tích hợp sẵn các hàm cho đại số tuyến tính và tạo số ngẫu nhiên
NumPy thường được sử dụng cùng với các gói như SciPy (Python Scientific) và Matplotlib (thư viện vẽ đồ thị) Sự kết hợp này được sử dụng rộng rãi để thay thế cho MatLab, một nền tảng phổ biến cho tính toán kỹ thuật Tuy nhiên, Python thay thế cho MatLab hiện được xem như một ngôn ngữ lập trình hoàn thiện và hiện đại hơn.Điều quan trọng hơn cả là Numpy là một thư viện mã nguồn mở, miễn phí so với MatLab là một thư viện mã nguồn đóng và phải trả phí
5.4 Matplotlib:
Để thực hiện các suy luận thống kê cần thiết, cần phải trực quan hóa dữ liệu của bạn và Matplotlib
là một trong những giải pháp như vậy cho người dùng Python Nó là một thư viện vẽ đồ thị rất mạnh mẽ hữu ích cho những người làm việc với Python và NumPy Module được sử dụng nhiều nhất của Matplotlib là Pyplot cung cấp giao diện như MATLAB nhưng thay vào đó, nó sử dụng Python và nó là nguồn mở
5.5 Biểu đồ nhiệt
Heatmap là biểu đồ sử dụng cường độ màu sắc để thể hiện độ lớn của giá trị Khi đó các giá trị lớn
sẽ được làm nổi bật bằng các vùng màu có cường độ ánh sáng mạnh và các giá trị nhỏ hơn sẽ được thể hiện bằng các mảng màu nhạt hơn Các trường hợp thường sử dụng heatmap:
Biểu đồ hệ số tương quan
Biểu đồ địa lý về cảnh báo thiên tai
Biểu đồ mật độ dân số
Biểu đồ crazy egg trong đo lường các component được sử dụng nhiều trong 1 website hoặc app …
5.6 Biểu đồ hình nến
Biểu đồ hình nến (Candlestick Chart), hay còn thường được gọi là biểu đồ nến Nhật, mô hình nến,
là một loại biểu đồ tài chính dùng để mô tả chuyển động giá của chứng khoán dựa trên mô hình giá trong quá khứ.Biểu đồ hình nến hiển thị giá mở cửa, giá cao nhất, giá thấp nhất và giá đóng cửa của chứng khoán trong một khoảng thời gian nhất định (thường là một ngày)
Một biểu đồ sẽ được cấu tạo bởi hàng nghìn cây nến khác nhau Mỗi cây nến sẽ có 2 phần là thân nến và bóng nến:
Thân nến là phần lớn nhất được tô màu cho biết mức giá đóng cửa và giá mở cửa
Bóng nến là 2 que nhỏ nằm ở trên và dưới thân nến, cho biết mức giá cao nhất và giá thấp nhất trong một khoảng thời gian nhất định
6 Kết quả thực hiện