LỜI CÁM ƠN Trong quá trình học tập, nghiên cứu tại Trường Đại học Ngân Hàng TP.HCM, được sự giúp đỡ tận tình của các thầy, cũng như sự đóng góp của các thành viên trong nhóm, nhóm chúng
Trang 1
TRUONG DAI HOC NGAN HANG TP HO CHi MINH
—C48&2_—
ON
1976
DO AN THI KET THUC HOC PHAN
Tên học phần: Lập trình Python cho phân tích dữ liệu
ĐÈ TÀI:
PHAN TICH VA TRUC QUAN HOA DU LIEU, BAO CÁO TÀI CHÍNH CỦA
CAC NGAN HANG
Lop hoc phan: DAT708_222 9 L14 Giảng viên hướng dẫn: Pham Thanh An Thang 3/ 2022, Thanh pho Ho Chi Minh
Trang 2
LỜI CÁM ƠN
Trong quá trình học tập, nghiên cứu tại Trường Đại học Ngân Hàng TP.HCM, được sự giúp đỡ tận tình của các thầy, cũng như sự đóng góp của các thành viên trong nhóm, nhóm chúng tôi đã hoàn thành đồ án cuối kỳ của môn lập trình Python cho phân tích đữ liệu với đề tài: “Phân tích và trực quan hóa đữ liệu , báo cáo tài chính của các ngân Hàng”
Đề có được thành quả này, tôi xin trân trọng gửi lời cảm ơn sâu sắc đến thầy Phạm Thanh An đã nhiệt tình hướng dẫn, giúp đỡ nhóm chúng tôi trong quá trình
thực hiện đề tải
Kết quả nghiên cứu là sự nỗ lực hết mình từ nhóm của chúng tôi trong quá trình học tập và nghiên cứu Tuy nhiên, chúng tôi vẫn mong nhận được những gop y tu thay dé tiếp tục bố sung và hoàn thiện đề tài hơn nữa
Xin chân thành cảm ơn!
Trang 3MỤC LỤC DANH MỤC HÌNH ẢNH, BIẾU ĐỎ
Hình ảnh
Hình 4.1 Import các thư viện
Hình 4.2 Liệt kê các công ty chứng khoán
Hình 4.3 Dữ liệu tài chính của VCB
Hình 4.4 Dữ liệu tài chính của AGR
Hình 4.5 Dữ liệu tài chính của NAB
Hình 4.6 Dữ liệu tài chính của TC
Hình 4.7 Dữ liệu tài chính của VPB
Hình 4.8 List dữ liệu tài chính của cả 5 ngân hàng
Hình 4.9 Giá đóng cửa của 5 Ngân hàng
Hình 4.10 Tỷ suất lợi nhuận của cho từng cô phiếu
Biéu dé
Biểu đồ 4.1 Biêu đồ Pairlot
Biểu đồ 4.2 Biêu đồ Matplotlib
Biểu đồ 4.3 Biêu đồ nhiệt (Heatmap)
DANH SÁCH TỪ VIET TAT
Trang 47 TTCK Thị trường chứng khoán
CHUONG 1: GIOI THIEU TONG QUAN
1.1 Tính cấp thiết của đề tài
Thị trường chứng khoán là nơi dẫn vốn, luân chuyền nguồn vốn quan trọng của
nên kinh tế Nhưng mặt trái của TTCK là một thị trường luôn tiềm ân rủi ro, cô phiêu
trên thị trường luân phiên nhau thay đổi không ngừng có thẻ tăng thì cũng có thể
giảm, biến động thị trường đôi khi rất lớn với biên độ thay đôi được tính cá bằng
giây Vì thế sau khi đầu tư vào thị trường mọi nhà đầu tư cần lưu ý cả rủi ro ngắn hạn
va dai han
Mới vài năm trở lại đây, Việt Nam đã trải đợt Covid-L9 và đây được xem là
một cuộc khủng hoảng kinh tế đánh sập vào TTCK nước ta ở hầu hết tất cả ở các ngành Không ngoại lệ, cô phiếu ngân hàng một loại cỗ phiếu được xem là “cô phiêu
vua” trên TTCK vẫn phải chịu tác động mạnh mẽ sau hậu Covid- 19
Những năm gần đây, cụ thể là năm 2022 thế giới đã và đang đối mặt với nền kinh tế toàn cầu bước vào giai đoạn rủi ro suy thoái khi tình trạng giá cả tăng và lạm phát cao, Ngân hàng Thế giới (WB) cảnh báo các Ngân hàng Trung ương trên khắp thể giới đồng loạt tăng lãi suất sẽ gây nhiều rủi ro cho nền kinh tế toàn cầu Theo thống kê của hãng tin Bloomberg “Khoảng 90 Ngân hàng Trung ương trên thế giới đã nâng lãi suất trong năm nay và một nửa trong số đó tăng lãi suất ít nhất là 75 điểm cơ bản mỗi lần” Như vậy, các cô phiếu của ngành NH sẽ biến động như thế nào trong
Trang 5ngành cô phiếu có thực sự nắm vững ngai vàng của mình trên thị trường hay không?
Nhóm chúng em đã đưa ra đề tài: “ Phân tích và trực quan hóa dữ liệu, báo cáo
tài chính của các Ngân hàng” mà công cụ được sử dụng đề phân tích và trả lời câu hỏi trên chính là ngôn ngữ Python Trong TTCK, thị trường được xem là đầy rẫy các rủi ro và nguồn thông tin được xem là nhiều vô hạn Nếu không có một “công cụ” phân tích thì người đầu tư sẽ mắt thời gian và phức tạp và dễ sai sót Nếu phân tích bằng Python ta có thể giảm thiểu được rủi ro, phân tích môi trường kinh doanh và
tình hình tài chính hiện tại để xác định chính xác tý suất sinh lợi của cô phiếu Bên cạnh đó ta có thê xác định xu hướng trên TTCK
12 Mục tiêu báo cáo
Viết chương trình thử nghiệm (thông qua các biểu đồ) dự báo sự biến động của giá chứng khoán bằng ngôn ngữ Python
Trang 6Dựa vào kết quả chạy chương trình dự báo để hiểu được cổ phiếu nào rủi ro và cỗ phiếu nào tiềm năng
Tìm hiểu thông tin từ các ngân hàng nghiên cứu: giá của các loại chứng khoán trong quá khứ và tương lai
13 Phương pháp báo cáo
1.3.1 Phương pháp nghiên cứu tài liệu
Nghiên cứu giáo trình, tham khảo các bài báo khoa học để làm cơ sở cho nghiên
cứu Từ đó đưa ra các mô hình, các biểu đồ dự báo TTCK của các NH
1.3.2 Phương pháp thu thập số liệu
Số liệu được thu thập từ trang web của Vietstock
1.3.3 Phương pháp phân tích định lượng
Phương pháp tổng hợp: Số liệu của chỉ số VN Index sẽ được tiễn hành tông hợp các kết quả phân tích đề đưa ra kết luận
Phương pháp phân tích thống kê: Sử dụng các biêu đô, hình vẽ đề giúp người đầu tư năm rõ hơn diễn biến của TTCK cũng như những rủi ro trên thị trường của các NH trong năm 2022
Phương pháp so sánh: So sánh sự biến động tăng giảm của các số liệu thu thập được thông qua các tháng trong năm 2022
1.3.4 Pham vi va đối tượng báo cáo
Nhằm giới hạn phạm vi nghiên cứu theo như mục tiêu đã đề ra, đề tài tập trung xem xét, phân tích, đánh giá các yêu tô nằm trong phạm vi sau:
Trang 7Dữ liệu được tải và import thư viện VNStock đề dùng các hàm lấy dữ liệu từ
Website Tir do, dé lay các đữ liệu lịch sử tài chính của các NH: NH Quân Đội (MB),
NH TMCP Ngoại Thương Việt Nam (VCB) , Ngân Hàng Nông Nghiệp & Phát Triển Nông Thôn Việt Nam (Agribank), NH TMCP Việt Nam Thịnh Vượng ( VPBank), Ngân Hàng Thương Mại Nam Á Bank từ 1/1/2022 đến năm 31/12/2022
CHƯƠNG 2: CƠ SỞ LÝ THUYÉT
2.1 Tông quan về Python
Python là một ngôn ngữ lập trình được sử dụng rộng rãi trong các ứng dụng web,
phát triển phan mềm, khoa học đữ liệu và máy học do Guido Van Rossum - một lập trỉnh viên máy tính ở Hà Lan tạo ra
Python được ứng nhiều bởi nó có cú pháp cơ bản giống tiếng Anh So với những ngôn ngữ khác thì Python có thể sử dụng ít dòng mã hơn nhưng vẫn có thê viết ra một chương trình
Những lợi ích của Python bao gồm:
Các nhà phát triển có thể đễ dàng đọc và hiểu một chương trình Python vì ngôn ngữ này có cú pháp cơ bản giống tiếng Anh
Python giúp cải thiện năng suất làm việc của các nhà phát triển vì so với những ngôn ngữ khác, họ có thể sử dụng ít dòng mã hơn đề viết một chương trình Python
Python có một thư viện tiêu chuẩn lớn, chứa nhiều dòng mã có thé tái sử dụng cho hâu hết mọi tác vụ Nhờ đó, các nhà phát triển sẽ không cần phải viết mã từ đầu Các nhà phát triển có thể dễ đàng sử dụng Python với các ngôn ngữ lập trình phố
biến khac nhu Java, C va C++
Cộng đồng Python tích cực hoạt động bao gồm hàng triệu nhà phát triển nhiệt tinh
hỗ trợ trên toàn thê giới Nếu gặp phải vấn đề, bạn sẽ có thê nhận được sự hỗ trợ nhanh chóng từ cộng đồng
Trang 8bạn có thê dễ dàng tìm thấy video, chỉ dẫn, tài liệu và hướng dẫn dành cho nhà
đồ họa thống kê thông qua các chức năng:
Một API dựa trên tập đữ liệu cho phép so sánh giữa nhiều biến
@® Hỗ trợ lưới nhiều ô đề đễ dàng xây dựng các hình ảnh trực quan phức tạp
® Hình ảnh hóa đơn biến và lưỡng biến có săn đề so sánh giữa các tập hợp con dữ liệu
® Có sẵn các bảng màu khác nhau để hiển thị các loại mẫu khác nhau
® Dự toán và âm mưu tuyến tính hồi quy tự động
Dựa vào các ứng dụng đó ta có thể trực quan hóa dữ liệu, đồ họa thống kê trong Python, thư viện lý tưởng đề kiểm tra mối quan hệ giữa nhiều biến
chỉ ra hàm, hình ảnh
2 Matplotlib
Trang 9Python Matplotlib làm cho những điều dễ dàng trở nên để dàng và những điều khó khăn
có thé
e Tạo lô chất lượng xuất bản
e Tao cac số liệu tương tác có thê phóng to, xoay, cập nhật
e_ Tùy chỉnh phong cách trực quan và bồ cục
e_ Xuất sang nhiều định dạng tập tin
e_ Nhúng vào JupyterLab và Giao điện người dùng đồ họa
e©_ Sử dụng một loạt các gói của bên thứ ba phong phú được xây dựng trên Matplotlib
3 Pandas
“Pandas” la thư viện mở rộng từ numpy, chuyên để xử lý đữ liệu cấu trúc dạng bang Tén “Pandas” la dang s6 nhiéu cua “Panel data”
Đọc vào một file csv bằng cách sử dụng hàm read_csv và được trả về
1 dataframe Mặc định, hàm này sẽ phân biệt các trường của file csv
theo dấu phẩy Cách đọc hết sức đơn giản như sau:
peoples_ df = pd.read_ csv(./people.csv')
Trang 10ĐỌC FILE CSV VÀ DATAFRAME
4 Numerical Python (NumPy)
Numerical Python (NumPy) là một phân tích dữ liệu và số thư viện tính toán bao
gồm các đối tượng đa chiều của mảng và một tập hợp các thường trình hoặc thủ tục được
sử dụng đề xử lý các loại mảng tương tự Sử dụng thư viện NumPy, lập trình viên có thê thực hiện các tính toán toán học, số và các thao tác logic trên các mảng này đề xây dựng
một hệ sinh thái bền vững và mô hình tính toán hiệu quả cho khoa học và quan điểm số
CÁCH CÀI ĐẶT, HÌNH ẢNH
5 Biểu đồ hình nến (Candlestick Chart)
Biểu đồ hình nến hay còn gọi là biểu đồ kiểu Nhật Bản được sử dụng để hình dung các
mẫu giá cô phiếu Sử dụng biểu đồ nền này, các mẫu giá cô phiếu hữu ích có thê đưa ra biến động giá cô phiếu đã được xác định và các quy tắc bán hàng được tạo ra dựa trên các mẫu này Dựa vào các khuôn mẫu và quy luật mua bán đề hỗ trợ nhà đầu tư chứng khoán đưa ra quyết định đúng đắn trong việc xác định thời điểm TTCK
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)
Trang 11Mộ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 phan
là thân nên và bóng nên:
e Than nén là phân lớn nhât được tô màu cho biệt mức giá đóng cửa và g1á mở cửa
e Bong 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
CHƯƠNG 3: MÔ HÌNH NGHIỆP VỤ BAI TOAN THUC TE, MIEN UNG DUNG CHUONG 4: QUA TRINH THU THAP VA LAM SACH DU LIEU
4.1 Truy cập, kết nối và xử lý dữ liệu
Một trong những bước rất quan trọng không thê thiêu dé giúp bài báo cáo được hoàn
chính thi trước tiên phải tìm kiếm và xử lý dữ liệu Từ những đữ liệu từ thư viện
VNStock thì bước quan trọng tiếp theo là import những thư viện cần thiết
from datetime import date
Hinh 4.1 Import cac thu vién
Tiếp theo, để load dữ liệu chứng khoán trực tuyên của các công ty, ta sử dụng thư viện Investpy, thư viện này ta phải cài đặt vào Colab, chúng ta sẽ m ra một Ïist các công ty có
dữ liệu trong trang web Chúng ta sẽ nhận được một bảng dữ liệu bao gồm 1625 dòng, tức là có 1625 công ty và 4 cột là ticker, øroup_code, company_ name,
company_ short name
VNSTOCK
Trang 12import vnstock as vs
vs.listing_companies() #liet ke cac cong ty co du lieu trong trang web
Requirement already satisfied: vnstock in /usr/local/lib/python3.9/dist-packages (@.1.4)
Công ty Cỗ phần Thủy điện Xuân Minh Công ty Cỗ phần Xi măng và Khoáng sản Yên Bái Công ty Cỗ phần Khoáng sản Công nghiệp Yên Bái
Công ty Cỗ phần Tập đoàn Yeah1 Công ty Cỗ phần Xuất nhập khẫu Y tế Thành phó
Đầu tư Phát triển Máy Việt Nam Xây dựng Công trình Tân Cảng Gang Thép Hà Nội Than Cao Sơn - TKV
BV Land
Thủy điện Xuân Minh
Xi măng và Khoáng sản Yên Bái Khoáng sản CN Yên Bái Tap doan Yeah1 XNK Y tế TP.HCM
Hình 4.2 Liệt kê các công ty chứng khoán
Tiếp đó, chúng ta sẽ lần lượt load đữ liệu chứng khoán từ 5 NH là VCB, AGR, NAB,TCB,VPB,
Close 79000.0 78000.0 79100.0 79800.0
Trang 13Hình 4.3 Dữ liệu tài chính của VCB
Kết quả trả về cho ta là 1 Data Frame, bắt đầu từ ngày 1/1/2022 Trong đó, không có trong phần Ngày Đó là bởi vì Thị trường chứng khoán đóng cửa vào các ngày thứ Bảy
và Chủ nhật Mỗi cột có các ý nghĩa được chú thích như sau:
Open: giá mở cửa
High : gia cao nhất trong phiên giao địch
Low: giá thấp nhất trong phiên
Close: giá đóng cửa (giá kết phiên)
Volume: khối lượng giao dịch ( tông số cỗ phiếu giao địch trong phiên)
Currency: cột đơn vị tiền tệ
Sau đó, ta thực hiện tiếp tục load dữ liệu của 4 Ngân Hàng còn lại:
Load data AGR
AGR = vs.stock_historical_ data(symbol='AGR',
Hình 4.4 Dữ liệu tài chính của AGR
Load data NAB
NAB =_ vs.stock historical dđata(symbol='NABR',
NAB.head ()
Trang 15Hình 4.7 Dữ liệu tài chính cia VPB
Tiếp theo, ta dùng tham số “Axis” và lénh “List” dé néi 5 data trên thành một list các đữ liệu của các NH và lây tên là bank_ stock
Chúng ta thực hiện câu lệnh tạo một list như sau:
Hình 4.8 List dữ liệu tài chính của cá 5Š ngân hàng
Ở bước tiếp theo, sử dụng lênh : DataErame.xs (key, axis=0, 1evel=None,
giá đóng cửa theo thứ tự từ lớn đên nhỏ của 5 NH trên
Trang 16Hình 4.9 Giá đóng cửa của 5 Ngân hàng
Tạo một DataFrame với tên gọi là value_banks chưa tỷ suất lợi nhuận của từng cô phiếu của các NH
Sau đó, sử dụng vòng lặp for đề lặp lại tương tự với mỗi mã cô phiếu ngân hàng value_banks = pd.DataFrame()
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
⁄ ( #ty suất lợi nhuận cho từng cổ phiếu
value_banks = pd.DataFrame()
for name in list_banks:
value_banks[name+*" value bank'] = bank_stocks[name][ 'Close" ].pct_change()
Hình 4.10 Tỷ suất lợi nhuận của cho từng cỗ phiếu
4.2 Trực quan hóa dữ liệu
4.2.1 Biéu đồ nên:
VCB