1. Trang chủ
  2. » Luận Văn - Báo Cáo

đồ án môn học phân tích dữ liệu cổ phiếu bằng python

26 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Phân Tích Dữ Liệu Cổ Phiếu Bằng Python
Tác giả Lờ Thị Mai Thảo, Nguyễn Văn Thi, Thới Đỗ Ngọc Trõm, Tran Thi Yến Thanh
Người hướng dẫn Phạm Thanh An
Trường học Trường Đại Học Ngân Hàng TP. Hồ Chí Minh
Chuyên ngành Lập Trình Python Cho Phân Tích Dữ Liệu
Thể loại Đồ Án Môn Học
Năm xuất bản 2023
Thành phố Thủ Đức
Định dạng
Số trang 26
Dung lượng 3,93 MB

Nội dung

Lời mở đầu Trước khi đi vào mục tiêu nghiên cứu của đồ án “phân tích dữ liệu cô phiếu bằng Python”, phải hiểu Ngôn ngữ lập trình Python và ứng dụng của Python trong phân tích dữ liệu.. P

Trang 1

NGAN HANG NHA NUGC VIETNAM BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC NGÂN HÀNG TP HÒ CHÍ MINH

Nguyễn Van Thi - 050609211357 Thới Đỗ Ngọc Trâm - 050609212279

Tran Thi Yén Thanh - 050609211307

Trang 2

LOH 1G GAUL eee eeeeceeeseeeeseesecsesecsesucseesescneencaeeneeseaeenecucsesucsesaeceseeaeensaesaeenceceessessesesseeateceateneensaneaees

1 Muc ti6U MQhi6n CH ooo

2 DOi tog NQHISN COU oo eee cee cceecececesesceseeveveevecscessecusevavsevavsusesassssevevsevavsueetasessevarsevavnereases

ky (0/819) 101 .a1 - ÔỎÔỎ

B CHƯƠNG 2: MÔ TẢ MÔ HÌNH TRỰC QUAN HOÁ DỮ LIỆU . -7-252-55+2-c-e 1

1.1 PANGAS 1.1.1 Dir in iydddiddidftfdddtẩ^ẢẢ 1

1.1.3 Đọc file csv vào dataframe

1.1.4 Thao tác cấu trúc dữ liệu cơ bản

2.1.2 Lưu dữ liệu từ 5 ngân hàng TCB, ACB, VCB, CTG, MBB 6

2.1.3 Tính ti suất lợi nhuận

Trang 3

2.2.1 PAirPlOte oo — A1ẢAẢ1 10 V22) -)y|v)1)(s0( 0v 5): ⁄EE:ii dd 10

Lê Thị Mai Thảo

Thu thập dữ liệu từ các ngân hang Viết báo cáo, tổng hợp work Kết quả thực hiện Làm PowerPoint

Nguyễn Văn Thi

o_ Thu thập dữ liệu từ các ngân hàng Kết quả thực hiện

Mục tiêu nghiên cứu

Cơ sở lý thuyết về python cho dé an Clean data

Kết luận

Trang 4

Lời mở đầu Trước khi đi vào mục tiêu nghiên cứu của đồ án “phân tích dữ liệu cô phiếu bằng Python”, phải hiểu Ngôn ngữ lập trình Python và ứng dụng của Python trong phân tích dữ liệu

Ngôn ngữ lớp trình Python là một ngôn ngữ lập trình thông dịch và đa nên tảng, với cú pháp đơn giản và dễ dọc Nó được thành lập năm 1991 bởi Guido van Rossum Python là ngôn ngữ lập trình ngôn

ngữ có tính linh hoạt cao, nó có thê được sử dụng đề phát triển các loại phần mềm như ứng dụng web, ứng dụng máy tính, trò chơi, phân mém kỹ thuật số.Ngoài ra, Python con dutoc biét đến như là một trong những ngôn ngữ phô biến nhất hiện nay và có nhiều thư viện và công cụ hỗ trợ các lĩnh vực như khoa học

đữ liệu, máy học, trí tuệ nhân tạo,

Đây là một trong những công cụ phô biến và hiệu quả nhất cho việc phân tích cô phiếu dữ liệu Có nhiều thư viện và công cụ hỗ trợ trong Python đề xử lý cô phiếu đữ liệu, bao gồm các thư viện Pandas,

NumPy, Matplotlib, Seaborn, Scikit-learn

Mớót số ứng dựng của Python trong cổ phiếu phân tích dữ liệu

Thu thập dữ liệu: Sử dụng để trích xuất dữ liệu tr các trang web cô phiếu hoặc từ các nguồn dữ liệu

khác, và lưu trữ nó trong các cơ sở đữ liệu nhu MySQL, SQLite hoac MongoDB

Xử lý và phân tích dữ liệu: Sử dụng để xử lý và phân tích dữ liệu, từ việc thực hiện các tính toán đơn

giản đề tính toán giá trị trung bình động cho đến việc phát tín hiệu giao dịch có sẵn can be used to đưa ra các quyết định đầu tư

Đồ họa dữ liệu: Cung cấp các công cụ đồ họa mạnh mẽ có thê được sử dụng dé hiên thị cô phiếu dữ

liệu dưới dạng biểu đồ, bản đồ nhiệt

Máy học và trí tuệ nhân tạo: Python cung cấp cho các thư viện và công cụ để xây dựng mô hình máy học và trí tuệ nhân tạo để phân tích dữ liệu cô phiếu, giúp đưa ra dự đoán và quyết định đầu tư thông

minh

Thông qua đồ án này nhóm chúng em sẽ phân tích, tìm hiểu mối tương quan giữa các cô phiếu để

đưa người đọc thay được tâm qua trọng và lợi Ích của “Phân tích dữ liệu cé phiéu bang Python” Python

hiện đang được sử dụng rộng rãi trong phân tích dữ liệu cô phiếu và là một lựa chọn tốt cho bát kỷ ai

của Ngôn ngữ lập trình Python, nhóm chúng em đã dựa trên cơ sở lí thuyết đó áp dụng thực hiện đồ án:

“Phân tích đữ liệu cô phiếu trực quan hóa dữ liệu cổ phiếu bằng Python” Với mục đích sẽ giúp chúng ta

sé tim hiểu được mối tương quan giữa các cô phiếu Qua đồ án sẽ giúp các bạn có thêm kiến thức về cô

phiếu cũng như có nên đưa ra quyết định đâu tư hay không đề tránh giảm rủi ro Và đó là mục tiêu mà

nhóm em muốn hướng tới

Trang 5

A CHƯƠNG I: GIỚI THIỆU DE TÀI

1 - Mục tiêu nghiên cứu

Vì số liệu của các ngân hàng cô phiếu nhiều, rộng, chi nhìn qua các con số như vậy khiến các nhà đầu tư chí thấy được sự biến động nhất thời thậm chí còn cảm thấy rối cho các nhà đầu tư mới Dùng trực quan hoá dữ liệu giúp nhà dau tư thay rõ được thông tin biến động chuyên sâu và hồ trợ trong việc ra quyết định Từ đó trực quan hóa dữ liệu các cô phiều ngân hàng có thê giúp các nhà dau tu va nha quản lý tài sản hiểu rõ hơn về biến động của các cỗ phiếu ngân hàng, đồng thời đưa ra những phân tích và quyết định đâu tư chính xác hơn Cụ thể, trực quan hóa dữ liệu có thê giúp:

Xem tông quan về khối lượng, giá cả, biến động của các cô phiếu cùng lúc

>>Giúp nhà đầu tư và nhà quản lý tài sản quản lý các cô phiếu một cách dễ dàng hơn

Theo dõi sự biến động của các chỉ số tài chính ngân hàng và so sánh chúng với thị trường chung

>>Giúp nhà đầu tư và nhà quản lý tài sản đánh giá hiệu suất của các ngân hàng so với thị trường

Phát hiện xu hướng mới và nhìn thấy các cơ hội đầu tư mới Việc trực quan hóa dữ liệu giúp xác

định các mô hình và xu hướng trong các số liệu tài chính

>>Giúp nhà dau tu và nhà quan ly tai san tìm kiếm những cơ hội đầu tư mới

Tăng cường tinh minh bach trong quá trình đầu tư và giảm rủi ro trong việc đưa ra quyết định đầu tư Tóm lại, trực quan hóa dữ liệu có thê giúp nhà đầu tư và nhà quản lý tài sản hiểu rõ hơn về biến động của các cô phiếu ngân hàng và đưa ra những phân tích và quyết định đầu tư chính xác hơn

2 _ Đối tượng nghiên cứu

Đối tượng bao gồm các ngân hàng Ngân hàng TMCP Á Châu (ACB), Ngân hàng TMCP Kỹ thương

Việt Nam (TCB), Ngân hàng TMCP Ngoại thương Việt Nam (VCB), Ngân hàng TMCP Công Thương

Việt Nam (CTG), Ngân hàng TMCP Quân đội (MBB)

3 Phạm vi nghiên cứu

Về không gian: Nghiên cứu hoạt động sàn giao dịch cô phiếu của các ngân hàng

Vẻ thời gian: Dự liệu của các ngân hàng từ năm 2020 đến năm 2023

B _ CHƯƠNG 2: MÔ TẢ MÔ HÌNH TRỰC QUAN HOÁ DỮ LIỆU

A _ Cơ sở lý thuyết

1.1 Pandas

1.1.1 Định nghĩa

Pandas (viét tat Panel Data) 1a thư viện mã nguồn mở phục vụ cho việc phân tích và xử lý dữ liệu

trong Python, được phát triển bởi MeKinney năm 2008 Thư viện này được thiết kế đê làm việc dễ dàng

và trực quan với dữ liệu có cầu trúc (dạng bảng, đa chiéu, ) và dữ liệu chuỗi thời gian

Trang 6

1.1.2 Cai dat va import

1.1.3 Doc file csv vao dataframe

Sử dụng hàm read_cvs va được tra vé 1 dataframe Mac dinh, ham này sẽ phân biệt các trường của file cvs theo dấu phây cách đọc hết sức đơn giản như sau:

df = pd.read_ csv(/content/gdrive/MyDrive/bric.csv',index_ col=0)

country population area capital

BR Brazil 299 8515767 Brasilia

SA South Africa 55 1221037 Pretoria

Tuy nhiên, bạn cũng sẽ phải lưu ý một vài tham số của hàm read_evs như:

encoding: chi định encoding của file đọc vào Mặc định là utf-8

sep: thay đôi dấu ngăn cách giữa các cột Mặc định là dấu phây (°,°)

header: chi định file đọc vào có header(tiêu đề của các cột) hay không Mặc định là infer

index_col: chỉ định chí số cột nào là cột chỉ só(só thứ tự) Mặc định là None

nrows: chỉ định số bản ghi sẽ đọc vào Mặc định là None — đọc toàn bộ

a) Series

Series([data, index, dtype, name, copy, ])

Là mảng một chiêu giống như mảng Numpy, hay như một cột của một bảng, nhưng nó bao gồm thêm một bảng đánh label Series có thê được khởi tạo thông qua NumPy, kiéu Dict hoặc các dữ liệu vô hướng bình thường Series có nhiều thuộc tính như index, array, values, dfype, v.v

Trang 7

DataFrame((data, index, columns, dtype, copy])

Dataframe la cau tric dir ligu gan nhãn hai chiêu với các cột và hàng như bảng tinh (spreadsheet)

hoac bang (table) Giống như Series, DataFrame có thê chứa bắt kỳ loại dữ liệu nào Một điều quan trọng cần làm nỗi bật là tất cả các cột trong khung dữ liệu là series Pandas Vì vậy, một DataFrame là sự kết hợp của nhiều Series đóng vai trò như các cột! DataFrame được sử dụng rộng rãi và là một trong những

câu trúc dữ liệu quan trọng nhất

Ví dụ:

import pandas as pd

"one": pd.Series({1,23,45], index = [1,2,3)), 1 1.6 1996

"two": pd.Series((1000,2400,1132,3434], index = [1,2,3,4]} 2 23.0 2409

df = pd.DataF rame(data) 3 45.0 1132

c) Các thao tác chọn, thêm, xóa cột

import pandas as pd

s = {'mot': pd.Series((1., 2., 3., 5.], index=['a’, 'b’, 'c’, ‘e']),

‘hai': pd.Series([1., 2., 3., 4.], index=[a', b', 'c, 'd]), :

‘ba’: pd.Series([9., -1.3, 3.5, 41.1], index=['a’, 'b', 'c’, ‘d'])} c 39

Thư viện Numpy chứa các cấu trúc dữ liệu ma trận và máng đa chiêu Numpy có thê được sử dụng

đệ thực hiện nhiều phép toán khác nhau trên mảng Nó bỏ sung các cấu trúc dữ liệu mạnh mẽ vào Python

dé dam bao tính hiệu quả với các máng và ma trận

Trang 8

121 Cài đặt

Cách 1: Cài đặt khi tạo môi trường ảo théng qua cau lénh conda create -n hanh python=3.7 numpy Cách 2: Cài đặt sau khi tạo xong môi trường ảo thông qua †1 trong 2 câu lệnh sau:

lconda install numpy

lpip install numpy

1.2.2 Import

import numpy as np

1.2.3 Khởi tạo mảng

a) Khởi tạo mảng 1 chiều

#kKhởi tạo máng một chiều với kiểu dữ liệu các phân tử là Integer

arr = np.array([1,3,4,5,6], dtype = int)

#Khởi tạo máng một chiều với kiểu dữ liệu mặc định

arr = np.array([1,3,4,5,6])

print(arr)

Output: [1 3 4 5 6]

b) Khéi tao mang 2 chiéu

arr1 = np.array([(4,5,6), (1,2,3)], dtype = int) Output: [[4 5 6]

d) Khởi tao với các hàm có san

* np.arange(1,7,2): Tạo máng với các phân tử từ 1 - 6 với bước nhảy là 2

e np.eye(4, dtype=int): Tao ma tran don vi véi kich thudc la 4x4

° np.random.random((2,3)): Tạo ma trận các phân tử ngẫu nhiên với kích thước 2x3

Trang 9

1.2.3.1 Các thao tac có trong mảng

» _dfype: Kiêu dữ liệu của phân tử trong mảng

¢ shape: Kich thước của mang

* size: Sé phan ti trong mang

* ndim: Sé chiéu cia mang

Ví dụ:

print("Kiêu dữ liệu của phân tử trong máng:", arr2.dtype)

print("Kich thước của màng:”, arr2.shape)

print("Số phân tử trong mảng:", arr2.size)

print("Số chiều của mang:", arr2.ndim)

1.2.3.2.Truy cập phần tứ có trong mang

Các phân tử trong mang được đánh số từ 0 trở đi

arr[i]: Truy cập tới phân tử thứ ¡ của mảng 1 chiêu

arr1[i,j]: Truy cập tới phân tử hàng ¡, cột j của máng 2 chiều

arr2[n,i,j]' Truy cập tới phân tử chiêu n, hàng ¡, cột j của máng 3 chiêu

arr[a:b]: Truy cập tới các phân tử từ a đến b-1 trong máng 1 chiều

arr1[:,:i Truy cập tới phân tử từ cột 0 đến cột i-1, của tất cả các hàng trong mảng 2 chiêu

nén minh dé kiéu int cho dé nhin, cac phan ti phan tach nhau boi dau ","

print("File dữ liệu điểm lớp 2A:\n", diem_2a)

Trang 10

1.2.3.4 Các hàm thống kê

» _ arr.max() hoặc np.max(arr): Lấy giá trị lớn nhất của mảng arr

* arr.min() hoặc np.min(arr): Lấy giá trị nhỏ nhất của mang arr

* arr.sum() hoac np.sum(arr): Tổng tắt cá các phân tử trong mảng arr

* arr.mean() hoac np.mean(arr): Trung bình cộng của tất cá các phân tử trong mảng arr

* np.median(arr): Trả về giá trị trung vị của mảng arr

1.3 Seaborn

Seaborn là thư viện mở rộng được viết trên nên Matphotlib, từ đó kế thừa các chức năng biểu diễn

dữ liệu từ Matplotlib Vì vậy, những gì Seaborn làm được thì Matplotlib cũng làm được tuy nhiên không

có chiêu ngược lại (Seaborn hiệu đơn giản là I đứa cón được Mafplotlib tạo ra)

1.3.1 Cài đặt

a) Cài đặt khi tạo môi trường ảo:

conda create -n hanh python = 3.7 matplotlib seaborn

b) Cài đặt sau khi tạo xong môi trường ao:

conda install matplotlib hoặc pip install matplotlib

conda install seaborn hoac pip install seaborn

Trang 11

Bins duoc tinh bang cach lay max va min rồi của dữ liệu rồi chia đều thành số bins mình muốn Số

bins càng lớn, chia khoảng càng nhỏ thì chính xác

các chiêu dữ liệu theo từng cặp với nhau

sns.pairplot(iris, hue='species', height=1.5)

Trang 12

1 !pip install vnstock

2 from vnstock import

Các thư viện khác khi nào sử dung chung ta sé import thém

2.1.1 Load dit liéu tir VNStock

Liệt kê danh sách các mã cô phiếu trên thị trường:

1 listing_companies()

ticker company_name company_short_name

1 XDC Upcomlndex Công ty TNHH MTV Xây dựng Công trình Tân Cảng Xây dựng Công trình Tân Cảng

2 HSV Upcomindex Công ty Cổ phản Tập doan HSV Vigt Nam Gang Thép Hà Nội

3 CST Upcomindex Công ty Cổ phần Than Cao Sơn - TKV Than Cao Sơn - TKV

4 BVL Upcomlndex Công ty Cổ phần BV Land BV Land

1620 XMP Upeomlndex Công ty Gỗ phản Thủy điện Xuân Minh Thủy điện Xuân Minh

1621 YBC Upcomlndex Công ty Cổ phần Xi măng vả Khoảng sản Yên Bá

1622 YBM VNINDEX Công ty Cổ

Trang 13

| 1 df_teb.tail() #l4y thông tin 5 dòng cuối của TCB

Open High Low Close Volume TradingDate

ñ_ Open: là giá mở cửa

ñ_ High: là giá cao nhất trong phiên giao dịch

ñ_ Low: giá thấp nhất trong phiên

O Close: giá đóng cửa (hay giá kết phiên)

ñ_ Volume: khối lượng giao dịch (tông số cô phiếu giao dịch trong phiên)

¡ TradingDate: ngày giao dịch

2.1.2 Lưu dữ liệu từ 5 ngân hàng TCB, ACB, VCB, CTG, MBB

Thực hiện load dữ liệu cổ phiếu từ 5 ngân hàng, thời gian lấy dữ liệu từ 01/01/2020 đến ngày

19/03/2023 Ta thực hiện như sau:

1 #Chọn thời gian lấy đữ liệu

2 start_date_selected="2020-01-01"

3 end_date_selected='2023-03-19'

4 #Lây dữ liệu từ 5 ngân hàng và lưu vào dataframe

5 TCB = stock_historical_data(symbol='TCB', start_date=start_date_selected, end_date=e nd_date_selected)

6 ACB = stock_historical_data(symbol='ACB’, start_date=start_date_selected, end_date=e nd_date_selected)

7 VCB = stock_historical_data(symbol='VCB', start_date=start_date_selected, end_date=e nd_date_selected)

8 CTG= stock_historical_data(symbol='CTG’, start_date=start_date_selected, end_date=e nd_date_selected)

9 MBB = stock_historical_data(symbol='MBB’, start_date=start_date_selected, end_date= end_date_selected)

Ngày đăng: 16/08/2024, 17:34

w