Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

XÂY DỰNG CHIẾN THUẬT GIAO DỊCH DỰA TRÊN ĐƯỜNG SMA CHO DỮ LIỆU CỔ PHIẾU NHTM CỔ PHẦN CÔNG, Exams of Artificial Intelligence

ĐỒ ÁN CUỐI KHÓA ĐỀ TÀI: XÂY DỰNG CHIẾN THUẬT GIAO DỊCH DỰA TRÊN ĐƯỜNG SMA CHO DỮ LIỆU CỔ PHIẾU NHTM CỔ PHẦN CÔNG THƯƠNG VIỆT NAM (CTG) Hệ: Chất lượng cao Tên học phần: Trí tuệ nhân tạo trong giao dịch định lượng Chuyên ngành: Công nghệ tài chính

Typology: Exams

2024/2025

Uploaded on 09/11/2024

kieu-thi-kim-ngan
kieu-thi-kim-ngan 🇻🇳

1 document

1 / 53

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Thành ph H Chí Minh, tháng 7 năm 2024
NGÂ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 TP. HỒ CHÍ MINH
-----🙤🕮🙦-----
ĐÁN CUỐI KHÓA
ĐỀ TÀI:
XÂY DỰNG CHIẾN THUẬT GIAO DỊCH DỰA
TRÊN ĐƯỜNG SMA CHO DỮ LIỆU CỔ PHIẾU
NHTM CỔ PHẦN CÔNG THƯƠNG VIỆT NAM
(CTG)
Khoa: Ngân hàng
Tên học phần: Trí tuệ nhân tạo trong giao dịch định lượng
Chuyên ngành: Công nghệ tài chính
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35

Partial preview of the text

Download XÂY DỰNG CHIẾN THUẬT GIAO DỊCH DỰA TRÊN ĐƯỜNG SMA CHO DỮ LIỆU CỔ PHIẾU NHTM CỔ PHẦN CÔNG and more Exams Artificial Intelligence in PDF only on Docsity!

Thành phố Hồ Chí Minh, tháng 7 năm 2024 NGÂ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 TP. HỒ CHÍ MINH

ĐỒ ÁN CUỐI KHÓA

ĐỀ TÀI:

XÂY DỰNG CHIẾN THUẬT GIAO DỊCH DỰA

TRÊN ĐƯỜNG SMA CHO DỮ LIỆU CỔ PHIẾU

NHTM CỔ PHẦN CÔNG THƯƠNG VIỆT NAM

(CTG)

Khoa: Ngân hàng

Tên học phần: Trí tuệ nhân tạo trong giao dịch định lượng

Chuyên ngành: Công nghệ tài chính

  • Thành phố Hồ Chí Minh, tháng 7 năm

ii TÓM TẮT Ngân hàng Thương mại Cổ phần Công Thương Việt Nam (VietinBank, mã chứng khoán: CTG) là một trong những ngân hàng lớn nhất Việt Nam. Được thành lập vào năm 1988, VietinBank cung cấp các dịch vụ tài chính và ngân hàng đa dạng bao gồm ngân hàng bán lẻ, ngân hàng doanh nghiệp, và dịch vụ ngân hàng đầu tư. Ngân hàng có trụ sở chính tại Hà Nội và sở hữu mạng lưới chi nhánh rộng khắp cả nước cùng với sự hiện diện tại một số quốc gia khác. VietinBank niêm yết cổ phiếu trên Sở Giao dịch Chứng khoán TP. Hồ Chí Minh (HOSE) với mã chứng khoán CTG. Đây là một trong những cổ phiếu có giá trị vốn hóa lớn và thanh khoản cao trên thị trường chứng khoán Việt Nam. Đồ án xây dựng chiến lược mua/bán cổ phiếu dựa trên các chỉ báo trung bình động đơn giản (SMA). Mục tiêu của bạn là xác định các tín hiệu mua và bán dựa trên sự giao cắt giữa hai đường SMA (ngắn hạn và dài hạn) và vẽ biểu đồ thể hiện giá cổ phiếu cùng với các tín hiệu mua/bán.

iii DANH MỤC TỪ VIẾT TẮT STT Tên viết tắt Tên đầy đủ Giải thích 1 NHTM Ngân hàng Thương mại 2 CTG Công Thương Group 3 HOSE Ho Chi Minh Stock Exchange 4 HNX Hanoi Stock Exchange 5 SMA Simple Moving Average – đường trung bình động giản đơn 6 VNSTOCK Gói thư viện Python cho phép tải dữ liệu chứng khoán 7 MACD Moving Average Convergence Divergence

  • Trung bình biến đổi phân kỳ hội tụ

NỘI DUNG

CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI NGHIÊN CỨU

1.1 Bối cảnh 1.1.1 Giới thiệu về cổ phiếu NHTM cổ phần Công Thương Việt Nam Ngân hàng Thương mại Cổ phần Công Thương Việt Nam (VietinBank) là một trong những ngân hàng lớn nhất và có ảnh hưởng nhất trong hệ thống ngân hàng Việt Nam. Được thành lập vào năm 1988, VietinBank đã phát triển mạnh mẽ với mạng lưới chi nhánh rộng khắp cả nước và một danh mục dịch vụ tài chính đa dạng. Cổ phiếu của VietinBank, với mã giao dịch là CTG, là một trong những cổ phiếu được giao dịch nhiều nhất trên sàn giao dịch chứng khoán Thành phố Hồ Chí Minh (HOSE). Sự ổn định và tiềm năng phát triển của VietinBank khiến cổ phiếu CTG trở thành lựa chọn hấp dẫn cho các nhà đầu tư trong và ngoài nước. 1.1.2 Thị trường chứng khoán Việt Nam và vị trí của CTG Thị trường chứng khoán Việt Nam đã trải qua nhiều giai đoạn phát triển kể từ khi thành lập vào năm 2000. Với sự ra đời của Sở Giao dịch Chứng khoán TP.HCM (HOSE) và Sở Giao dịch Chứng khoán Hà Nội (HNX), thị trường chứng khoán Việt Nam đã từng bước khẳng định vai trò quan trọng trong nền kinh tế quốc dân, cung cấp nguồn vốn dài hạn cho các doanh nghiệp và tạo ra kênh đầu tư hiệu quả cho các nhà đầu tư. Trong bối cảnh đó, cổ phiếu CTG của VietinBank giữ một vị trí quan trọng trên thị trường chứng khoán Việt Nam. Với vai trò là một trong những ngân hàng hàng đầu, VietinBank không chỉ đóng góp đáng kể vào sự phát triển của hệ thống ngân hàng mà còn tạo ra ảnh hưởng tích cực đến sự phát triển của thị trường chứng khoán. Cổ phiếu CTG thường xuyên nằm trong nhóm các cổ phiếu blue-chip, thu hút sự quan tâm đặc biệt từ các nhà đầu tư lớn và nhỏ. Sự ổn định về tài chính và hiệu quả hoạt động của VietinBank giúp cổ phiếu CTG duy trì được sức hấp dẫn và là một trong những lựa chọn đầu tư hàng đầu trên thị trường chứng khoán Việt Nam.

1.2 Mục tiêu nghiên cứu 1.2.1 Xây dựng và kiểm tra chiến lược giao dịch dựa trên SMA Trong nghiên cứu này, tập trung vào xây dựng và đánh giá hiệu quả của chiến lược giao dịch sử dụng Đường Trung bình Đơn giản (SMA). Chiến lược này dựa trên các tín hiệu mua và bán được phát sinh khi đường SMA ngắn hạn cắt lên hoặc xuống đường SMA dài hạn trên chuỗi dữ liệu giao dịch của cổ phiếu CTG từ ngày 01/01/ đến ngày 01/01/2024. Bằng cách này, xây dựng các quy tắc giao dịch và đánh giá hiệu quả của chiến lược dựa trên kết quả giao dịch thực tế.

  • Xây dựng chiến thuật giao dịch dựa trên đường SMA ngắn hạn và SMA dài hạn.
  • Vẽ đồ thị và xác định các điểm giao nhau giữa hai đường SMA.
  • Tối ưu hóa chiến lược giao dịch để đạt lợi nhuận tối đa.
  • Xác định thời gian rút vốn tối đa (max drawdown duration).
  • So sánh kết quả chiến lược SMA với chiến lược MACD. 1.2.2 So sánh chiến lược SMA với chiến lược MACD Dữ liệu tài chính thường được sử dụng để xây dựng và kiểm tra các chiến lược giao dịch nhằm tối ưu hóa lợi nhuận. Các chiến lược phổ biến bao gồm sử dụng đường trung bình động giản đơn (SMA) và đường Trung bình động hội tụ/phân kỳ (MACD). Nghiên cứu cũng xem xét so sánh hiệu quả của chiến lược SMA với chiến lược MACD. Chiến lược MACD là một chiến lược phổ biến trong phân tích kỹ thuật, dựa trên sự chuyển đổi giữa đường trung bình di động gần hơn (EMA) và EMA chậm hơn. Nghiên cứu áp dụng chiến lược này trên dữ liệu giao dịch của CTG và so sánh kết quả với chiến lược SMA đã xây dựng để xác định loại chiến lược nào mang lại lợi ích tối đa cho nhà đầu tư. 1.3 Đối tượng và phạm vi nghiên cứu Đối tượng Dữ liệu giao dịch của cổ phiếu NHTM cổ phần Công Thương Việt Nam (CTG) trong giai đoạn từ ngày 01/01/2018 đến ngày 01/01/2024 tải từ VNSTOCK. Dữ liệu bao gồm các biến: Phạm vi nghiên cứu

CHƯƠNG 2: DỮ LIỆU VÀ PHƯƠNG PHÁP

2.1 Dữ liệu Trước khi vô phần nội dung chính của đồ án Import các thư viện cần thiết. Đầu tiên, tôi sử dụng các thư viện như pandas, numpy để xử lý dữ liệu; datetime để làm việc với ngày tháng; vnstock3 để tải dữ liệu chứng khoán từ VNSTOCK; hyperopt để tối ưu hóa các chiến lược giao dịch; matplotlib và seaborn để vẽ đồ thị và trực quan hóa dữ liệu. Thiết lập cảnh báo: Tất cả các cảnh báo đều bị tắt để đảm bảo rằng quá trình chạy code không bị gián đoạn bởi các thông báo không cần thiết. import warnings warnings.filterwarnings('ignore') warnings.simplefilter ('ignore') import pandas as pd import numpy as np import time import json import traceback from vnstock3 import Vnstock from datetime import datetime, timedelta !pip install - q vnstock import os from hyperopt import hp, tpe, fmin, pyll, Trials, STATUS_OK from hyperopt.fmin import generate_trials_to_calculate from functools import partial import matplotlib.pyplot as plt import matplotlib.dates as md

%matplotlib inline import seaborn as sns sns.set() #CÀI ĐẶT THƯ VIỆN CẦN THIẾT !pip install backtesting ta import backtesting as bt from backtesting import Strategy, Backtest from backtesting.lib import crossover !pip install ta import ta from backtesting import Strategy, Backtest 2.1.1 Nguồn dữ liệu Dữ liệu giao dịch của cổ phiếu NHTM cổ phần Công Thương Việt Nam (CTG) được lấy từ VNSTOCK, một trong những nguồn dữ liệu chứng khoán phổ biến tại Việt Nam.

Create the data directory if it does not exist

os.makedirs('./data', exist_ok=True)

Define the ticker for CTG

ticker = 'CTG'

Initialize Vnstock instance

stock = Vnstock().stock(symbol=ticker, source='VCI')

Download historical stock data for CTG

df_temp = stock.quote.history(start='2018- 01 - 01', end='2024- 01 - 01')

các giá trị NaN, chuyển đổi định dạng thời gian và đổi tên các cột để phù hợp với yêu cầu phân tích.

  • Chuyển đổi dữ liệu: Chuyển đổi DataFrame sang dictionary và sau đó chuyển ngược lại về DataFrame để kiểm tra dữ liệu. Kết quả là dữ liệu lịch sử giá cổ phiếu CTG đã được tải thành công với 1500 điểm dữ liệu. Các thông tin bao gồm ngày giao dịch, giá mở cửa, giá cao nhất, giá thấp nhất, giá đóng cửa, khối lượng giao dịch và mã cổ phiếu. 2024 - 07 - 12 14:14:50,462 - vnstock3.common.data.data_explorer - WARNING - Thông tin niêm yết & giao dịch sẽ được truy xuất từ TCBS WARNING:vnstock3.common.data.data_explorer:Thông tin niêm yết & giao dịch sẽ được truy xuất từ TCBS CTG 1500 date Open High Low Close Volume Ticker 0 01 - 02 - 2018 16.15 16.68 15.91 16.65 3966440 CTG 1 01 - 03 - 2018 16.75 16.85 16.31 16.55 3941230 CTG 2 01 - 04 - 2018 16.55 17.15 16.45 17.15 4995490 CTG 3 01 - 05 - 2018 17.01 17.08 16.68 16.75 3071940 CTG 4 01 - 08 - 2018 16.75 17.28 16.65 17.15 5017740 CTG ... ... ... ... ... ... ... ... 1495 12- 25 - 2023 26.55 26.90 26.50 26.90 4083500 CTG 1496 12- 26 - 2023 26.85 26.95 26.80 26.80 3247900 CTG 1497 12- 27 - 2023 26.80 26.90 26.75 26.85 3008900 CTG 1498 12- 28 - 2023 26.85 27.10 26.75 27.10 2983700 CTG 1499 12- 29 - 2023 27.20 27.35 27.10 27.10 4655000 CTG [1500 rows x 7 columns] 2.1.2 Mô tả dữ liệu Dữ liệu bao gồm các biến sau:
  • "Time": Ngày giao dịch
  • "Open": Giá mở cửa
  • "High": Giá cao nhất trong ngày
  • "Low": Giá thấp nhất trong ngày
  • "Close": Giá đóng cửa
  • "Volume": Khối lượng giao dịch
  • "Ticker": Ký hiệu mã cổ phiếu (CTG) 2.2 Phương pháp 2.2.1 Chiến lược giao dịch dựa trên SMA Chiến lược giao dịch dựa trên Đường SMA (Simple Moving Average) là một phương pháp phổ biến trong phân tích kỹ thuật. Đường SMA được tính toán bằng cách lấy trung bình cộng đơn giản của giá đóng cửa của một số lượng quan sát nhất định trong quá khứ. Công thức tính SMA cho một ngày cụ thể ttt: Trong đó:
  • SMA (t, n): là giá trị của SMA vào ngày ttt dựa trên nnn ngày quan sát trước đó.
  • Close(t − i) là giá đóng cửa vào ngày t−i. Tín hiệu giao dịch:
  • Khi SMA ngắn hạn (ví dụ: SMA(20)) cắt từ dưới lên SMA dài hạn (ví dụ: SMA(40)), đây là tín hiệu mua (golden cross).
  • Khi SMA ngắn hạn cắt từ trên xuống SMA dài hạn, đây là tín hiệu bán (death cross).

CHƯƠNG 3: XÂY DỰNG VÀ KIỂM TRA CHIẾN LƯỢC

3.1 Chiến lược SMA 3.1.1 Xây dựng chiến thuật giao dịch Chiến thuật giao dịch được xây dựng dựa trên việc sử dụng hai đường trung bình động đơn giản (SMA) với các khoảng thời gian khác nhau để tạo tín hiệu mua và bán. Cụ thể:

Hàm tính đường SMA

def calculate_sma(data, window): sma = data.rolling(window=window).mean() return sma

Dữ liệu mẫu (giả sử đã có sẵn)

data = pd.DataFrame(ctg_data)

Ensure the 'Date' column is in datetime format

data['date'] = pd.to_datetime(data['date'], format='%m-%d- %Y') # Adjusted format to '%m-%d-%Y'

Set 'Date' column as the index

data.set_index('date', inplace=True)

Thêm cột SMA ngắn hạn và SMA dài hạn vào dữ liệu

data['SMA_short'] = calculate_sma(data['Close'], window= 50 ) data['SMA_long'] = calculate_sma(data['Close'], window= 200 )

Tạo cột decision để lưu kết quả quyết định mua bán

data['Decision'] = np.where(data['SMA_short'] > data['SMA_long'], 'Mua', 'Bán')

Vẽ biểu đồ

plt.figure(figsize=( 18 , 10 )) plt.plot(data.index, data['Close'], label='Giá đóng cửa', color='grey') plt.plot(data.index, data['SMA_short'], label='SMA 50', linestyle='-', color='blue') plt.plot(data.index, data['SMA_long'], label='SMA 200', linestyle='-', color='orange')

Đánh dấu tín hiệu mua và bán tại điểm giao của hai đường

SMA previous_decision = None for index, row in data.iterrows(): if previous_decision is not None and row['Decision'] != previous_decision: if row['Decision'] == 'Mua': plt.scatter(index, row['Close'], color='green',marker='^', s= 100 , label='Mua' if 'Mua' not in plt.gca().get_legend_handles_labels()[ 1 ] else '') elif row['Decision'] == 'Bán': plt.scatter(index, row['Close'], color='red',marker='v', s= 100 , label='Bán' if 'Bán' not in plt.gca().get_legend_handles_labels()[ 1 ] else '') previous_decision = row['Decision'] plt.title('Biểu đồ giá đóng cửa và tín hiệu giao dịch dựa trên SMA') plt.gca().xaxis.set_major_formatter(md.DateFormatter('%d- %m-%y')) plt.xlabel('Ngày') plt.ylabel('Giá')

3.1.1.3 Khi đường SMA(ngắn hạn) cắt từ trên xuống SMA(dài hạn) là tín hiệu "Bán" Tín hiệu "Bán" xảy ra khi đường SMA(ngắn hạn) cắt từ trên xuống đường SMA(dài hạn). Điều này thường được coi là một tín hiệu báo hiệu về sự suy giảm trong xu hướng giá, cho thấy một sự chuyển đổi từ xu hướng tăng sang xu hướng giảm. Khi đường SMA ngắn hạn (SMA 50) cắt từ trên xuống đường SMA dài hạn (SMA 200), đây là tín hiệu cho thấy xu hướng giá đang có xu hướng giảm. Do đó, đây là thời điểm thích hợp để bán ra cổ phiếu.

  • data['Decision']: Xác định quyết định mua hoặc bán dựa trên sự cắt nhau của hai đường SMA.
  • plt.figure: Vẽ biểu đồ giá đóng cửa và hai đường SMA.
  • plt.scatter: Đánh dấu các điểm mua và bán trên biểu đồ. Đồ thị
  • Đồ thị hiển thị giá đóng cửa của cổ phiếu CTG và hai đường SMA 50 (màu xanh) và SMA 200 (màu cam).
  • Các mũi tên xanh (^) chỉ tín hiệu mua và mũi tên đỏ (v) chỉ tín hiệu bán trên biểu đồ.

Hình 1 : Biểu đồ giá đóng cửa và tín hiệu giao dịch dựa trên SMA Đường SMA 50 và SMA 200: Đường SMA 50 (ngắn hạn) phản ánh xu hướng giá trung hạn trong khi đường SMA 200 (dài hạn) phản ánh xu hướng giá dài hạn. Khi đường SMA 50 cắt lên trên đường SMA 200, đó là tín hiệu mua (biểu diễn bằng mũi tên màu xanh). Khi đường SMA 50 cắt xuống dưới đường SMA 200, đó là tín hiệu bán (biểu diễn bằng mũi tên màu đỏ). Các tín hiệu giao dịch: Có nhiều điểm giao nhau giữa SMA 50 và SMA 200 trong giai đoạn từ 01/01/ đến 01/01/2024. Các điểm giao nhau này thường là tín hiệu quan trọng cho các quyết định mua và bán. Tín hiệu mua (mũi tên xanh): Xuất hiện khi SMA 50 cắt từ dưới lên trên SMA 200. Điều này cho thấy xu hướng tăng giá có thể xảy ra. Tín hiệu bán (mũi tên đỏ): Xuất hiện khi SMA 50 cắt từ trên xuống dưới SMA 200. Điều này cho thấy xu hướng giảm giá có thể xảy ra. Xu hướng giá: