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

Tiểu luận cá nhân môn trí tuệ nhân tạo trong giao dịch Định lượng

16 11 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 đề Tiểu Luận Cá Nhân Môn Trí Tuệ Nhân Tạo Trong Giao Dịch Định Lượng
Tác giả Nguyen Thi Ut Trinh
Người hướng dẫn GV Hưng Đan: Tran Anh Tuan
Trường học Trường Đại Học Ngân Hàng Tp. Hồ Chí Minh
Chuyên ngành Trí Tuệ Nhân Tạo Trong Giao Dịch Định Lượng
Thể loại tiểu luận
Năm xuất bản 2024
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 16
Dung lượng 1,93 MB

Nội dung

MỤC LỤC Câu 1: Vẽ đồ thị biểu điễn giá đóng cửa của cô phiếu VCB, đường SMA20 và đường SMAS50 trong giat Goan tren.... 9 Câu 2: Xây dựng chiến thuật giao dịch dựa trên đường SMAngăắn hạ

Trang 1

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

TIỂU LUẬN CÁ NHÂN MÔN: TRÍ TUỆ NHÂN TẠO TRONG GIAO DỊCH

ĐỊNH LƯỢNG

SVTH: NGUYEN THI UT TRINH LOP HOC PHAN: BAF709 232 1 DO1

GV HUGNG DAN: TRAN ANH TUAN

Trang 2

TP Hồ Chí Minh, tháng 04, năm 2024

Trang 3

MỤC LỤC Câu 1: Vẽ đồ thị biểu điễn giá đóng cửa của cô phiếu VCB, đường SMA(20) và đường SMA(S50) trong giat Goan tren a 4

1.1 Thue hién cài đặt và khai bảo các thur viéne occ ccccceeecceeeceesceeteeeteeveeveveess 4

1.2.Lấy đữ liệu giao dịch cỗ phiếu VCB: 2 2 1S E11 11 1x pH He 4

1.3.Đồ thị đường "CÏOS€””: Q2 Q1 0121112112 nh n HH TH 1115151111 e ngành key 7

1.5.Vẽ đỗ thị giá đóng cửa (Close), đường SMA 20 và đường SMA §0: 9 Câu 2: Xây dựng chiến thuật giao dịch dựa trên đường SMA(ngăắn hạn) và đường

SMA(dai han) Cu thé, khi đường SMA(ngắn hạn) cắt từ dưới lên đường SMA((đài han) là

tín hiệu "Mua" Trong khi, đường SMA(ngắn hạn) cắt từ trên xuống đường SMA(dài hạn)

là tín hiệu "Bán”: 2 22s221222112711127112211122121112211021112202 2e 10 2.1.Xây dựng chiến lược SMA: 2-1 1 2 1E E 121211 112182121 1x EH rung re 10

P0; na ll

2.3.Đồ thị giá trị EqUify: 5c St n1 E111 11222211 12H11 nh n re 13 Câu 3: Với số tiền đầu tư là 100.000.000 đồng, mỗi lần thực hiện giao địch sẽ mua 100

cô phiếu/giao dịch Giả sử phí giao địch là 0%, xác định đường SMA(ngắn hạn) và đường SMA(dai han) dé nha dau tư có thể kiếm được số tiền nhiều nhất sau khi thực hiện chiến thuật giao dịch dựa trên đường SMA Lưu ý, ngắn hạn chỉ được xác định từ 10 đến 20 ngày, đài hạn chỉ được xác định từ 30 đến 50 ngày 0c SH He re 14

3.1.Xây dựng SMA ngắn hạn và SMA đài hạn tôi ưu: - c c nhe 14

3.1.1.Xây dựng CHIEN NWO Croc cccccccccccccscsesesessvsvecsvstevsssvevevsescevsvstsesvsessiesesssessseseseees 14

3.1.2.Chiến lược giao dịch (SMAStrategy): ch ngay 15

3.1.3.Backtest kết quả tìm đượỢC: 2 2.12112222211121 152212 11 tk ky 16

3.1.4.Mô tả kết quả kiém dinbe cece cccccceccccescsesecsvseesscevssessesvesvssesvsesecenseseeevsees 18

Trang 4

PHAN MỞ RỘNG 0-2212 2122112211221122112211221121212122111212222 re 27 3.3.Sử dụng chỉ số ATR: c1 211121 1121211 ng ng He 27 3.3.1 Cơ sở lý thuyẾt: ch HH H1 HH 121 1 ngu 27

3.3.3 Mô tả kết quả kiểm định: - ST 1E 1121111211218 E1 tre 31

3.3.4 Kết hợp với chiến thuật SMA ngăn hạn, đài hạn: 22522222 32 Câu 4: Sử dụng chiến thuật giao dịch theo các đường SMA đã xác định ở câu 3 đề lựa

chọn cổ phiếu có tỷ suất sinh lợi cao nhất trong rô các cô phiếu ngành ngân hàng sau ['CTG', 'STB', 'HDB', 'EIB', 'BID', 'VPB', 'ACB', 'TCB', 'MBB', 'VIB', 'SHB', 'VCB',

'LPB', 'TPB] giai đoạn từ ngày 03/01/2016 đến ngày 03/01/2023 Biết số tiền đầu tư là

100.000.000 đồng, phí giao dịch là 0% và lượng cô phiêu trong mỗi giao dịch là 100 cỗ

phiều/giao địch s11 H11 1 1 1 1 1n n1 n1 ghe 36

4.1 Xác định cô phiếu có tỷ suất sinh lời cao nhất bằng chiến lược đường SMA: 36 4.1.1 Lấy đữ liệu từ các mã chứng khoán ngân hang: - 5s sex 36

4.1.2 Chọn ra cô phiêu có lợi nhuận tốt nhất: 22 ST 11511511 Ea se 37

4.2 Xác định cô phiếu có tỷ suất sinh lời cao nhất bằng chiến lược đường SMA kết

hợp với chỉ số RSÌ: 22 + s2 2 E2221211211211211211211211 2121122212211 n re 40

“An nh a 40

4.2.2 Tính toán chỉ số RSl : -5:c: 22t EE tre 40 4.2.3 Tính toán chỉ số RSlL -25::c 222 tt 4]

4.2.4 Đánh dấu các tín hiệu mua bán: 55c 22 tri 42 4.2.5 Tính toán số lượng cô phiẾu: - 2s 121211 E1 HH Hee 42

Trang 5

"cà vu ` 45 4.3.2 Tính toán chỉ số ATR: 225cc tt ren 46

4.3.3 Tính toán số lượng mua bán của mỗi giao dịch: các c c2 46

4.3.5.Tính tỷ suất sinh lợi với các cầu hình SMA và ATR khác nhau: 47 4.3.6 Tính tỷ suất sinh lợi với các cầu hình SMA và ATR khác nhau: 48

Trang 6

Câu 1: Vẽ đồ thị biểu diễn giá đóng cửa của cỗ phiếu VCB, đường SMA(20) và

đường SMA(50) trong giai đoạn trên

1.1.Thực hiện cài đặt và khai báo các thư viện:

š © 1! pip install backtesting ta

~ © 1 import matplotlib.pyplot as plt

import pandas as pd

4 from backtesting import Backtest, Strategy

from ta.trend import sma_indicator

1.2.Lấy dữ liệu giao dịch cỗ phiếu VCB:

Cài đặt gói vnstock và nhập tất cả các module từ gói vnstock —> Lấy đữ liệu cô phiếu

từ ngày 03/01/2013 đến ngày 03/01/2023 —› Lưu đữ liệu trong biến df:

Kết quả bảng đữ liệu df:

¥ © 1 !pip install vnstock #Cai dat goi vnstock

2 from vnstock inport* #Nhập tất cả các module ti gói vnstock

Y Lticker = ‘HHV’

3 df = stock_historical_data(symbol='VCB', start_date="2623-04-@3", end_date="2024-04-93")

4 #Dữ liệu được lưu trữ trong biến df để sử dụng cho các mục đích tiếp theo trong quá trình phân tích hoặc xử lý dữ 1i

5 df

Trang 7

0 2023-04-03 77650 78660 77220 78580 699600 VCB m=

= 2023-04-04 78580 78660 77560 77820 226500 VCB ⁄

2023-04-05 78150 78150 77140 77900 286700 VCB

2023-04-06 77480 77980 77220 77390 350000 VCB

2023-04-07 77050 77140 75780 76210 645000 VCB

247 2024-0328 96200 96400 95600 95700 1232800 VCB

248 2024-03-29 95900 95900 94900 94900 801200 VCB

249 2024-04-01 94900 96000 94700 95200 1221000 VCB

250 2024-04-02 95100 95200 93900 94500 969000 VCB

251 2024-04-03 94400 94800 93800 93800 1321100 VCB

252 rows x 7 columns

Xoá cột Ticker và thiết lập lại tên cột cho df thanh "TradingDatfe', 'Open', 'High',

‘Low’, 'Close', 'Volume':

X 1# cột ticken

sty 2 del df['ticker' ]

3 #Gán lại tên cột cho df

4 df.colunns = ['TradingDate','0pen', 'High', 'Low', 'Close', 'Volume' ]

sdf

Kết quả bang dit liéu df.

Trang 8

0 2023-04-03 77650 78660 77220 78580 699600 oO

252 rows x 6 columns

Chuyên đổi cột 'TradingDate' sang định dang datetime va thiết lập cột

"TIradingDate' thành chỉ mục:

3 #Đặt cột 'TradingDate' làm chỉ nục

4 df = df.set_index( 'TradingDate' )

5 df

Kết quả bảng đữ liệu sau chuyên đổi:

Trang 9

TradingDate a

2023-04-03 77650 78660 77220 78580 699600 ⁄

2023-04-06 77480 77980 77220 77390 350000

2023-04-07 77050 77140 75780 76210 645000

2024-03-28 96200 96400 95600 95700 1232800

2024-03-29 95900 95900 94900 94900 801200

2024-04-03 94400 94800 93800 93800 1321100

252 rows x 5 columns

1.3.Đồ thị đường "Close":

Ý © 11#2 đ thị đường "Close"

Ta thu được đồ thị sau với trục x thê hiện thời gian và trục y thê hiện giá đóng cửa (Close) của mã chứng khoán "VCR':

Trang 10

95000 +

90000 +

85000 +

80000 +

2023-05 2023-07 2023-09 2023-11 2024-01 2024-03

1.4.Dwong SMA 20, SMA 50:

Tinh toan duong SMA 20 va SMA 50 và thêm cột SMA 20 và SMA 50 vào bản copy dfl cua df:

% © 1 #lay di lieu ti df

gy 2 df1 = df.copy()

4 © 1 & Tinh toán và thêm cột mới sHA 20 vào df1

2 df1 ['SMA 26']= sma indicaton(close=df1['Close"], window= 28)

3 # Tính toán và thêm cột mới SMA 58 vào df1

4 df1 ['5MA 56']= sma_indicator(close=df1['Close'], window= 58)

51 dong dau cua dfl:

~ © 1 afi.head(s1)

2023-04-03 77650 79660 77220 78580 699600 NaN NaN

2023-04-04 78580 78660 77560 77620 226500 NaN NaN

2023-04-10 76210 76210 75360 75440 583500 NaN NaN

2023-04-13 74770 74940 74340 74600 451400 NaN NaN

Trang 11

Vẽ đồ thị đường SMA 20 và SMA 50:

1 #Vẽ biểu đồ đường SMA 20

2 plt.plot(df1['5MA 2@"], label='ĐƯỜNG 5MA 29")

3 #Vê biểu đồ đường SMA 58

4 pIt.p1ot(df1['SMA 5@"], label='ĐƯỜNG SMA se")

5 plt.legend()

Ta được biều đồ sau:

<matplotlib.legend.Legend at Øx7a79a7de64d@>

95000 —— DUONG SMA 20

— DUONG SMA 50

92500 3

90000 3

87500 3

85000 3

82500 3

80000 +

77500 +

75000 +

2023-05 2023-07 2023-09 2023-11 2024-01 2024-03

1.5.Vẽ đồ thị giá đóng cửa (Close), đường SMA 20 và đường SMA 50:

1 #Vẽ đương biểu diễn giả đóng cửa (Close price)

2 plt.plot(df1['Closa'], labelz'Đường Close’)

3 #Vẽ đường biểu diễn SMA 2@

5 #Vẽ đường biểu diễn SMA 59

6 plt.plot(df1[ SMA 5@°], label="fuong SMA 5@")

7 plt.legend()

Ta được đồ thị sau:

Trang 12

[5 <matplotlib legend.Legend at @x7a79a5c961d@>

roe | md Đường SMA 20

—— Đường SMA 50

90000 +

85000 +

80000 +

2023-05 2023-07 2023-09 2023-11 2024-01 2024-03

Câu 2: Xây dựng chiến thuật giao dịch dựa trên đường SMA(ngắn bạn) và đường

SMA(dài hạn) Cụ thể, khi đường SMA(ngắn hạn) cắt từ dưới lên đường SMA(dài

hạn) là tín hiệu "Mua", Trong khi, đường SMA(ngắn hạn) cắt từ trên xuống đường SMA (dai hạn) là tín hiệu "Bán":

2.1.Xây dựng chiến lược SMA:

Đoạn code dưới đây được sử dụng đề xác định vị thế "mua" hoặc "bán" đựa trên sự

cắt nhau của đường SMA (ngắn hạn) và đường SMA (dài hạn)

v Xây dựng chiến lược SMA

x © Lưri.loc[

& (df4['SMA 20'].shift(1)<- df1['SMA 50"].shift(1)), ‘position’ ]=1

4 df1.loc[

5 (df4[ ‘SMA 20']< df1[ "SMA 50'])

& (dfi['SMA 2@'].shift(1)>= df1["SMA 50°].shift(1)), ‘position’ ]=-1

® Khi đường SMA (ngắn hạn) cắt từ dưới lên đường SMA (dai han), giá trị của cột

‘position’ sé được gan la |, thé hién vi thé "mua"

® Ngược lại, khi đường SMA (ngăn hạn) cắt từ trên xuống đường SMA (dàihạn), giá

Trang 13

Xuất bảng kết quả khi loại bỏ những cột giá trị rỗng: Đoạn code dưới đây kiêm tra các giá trị position bị rỗng và sau đó xuất bảng đã được xây dựng chiến lược:

Ý 16f1(df1['position' ].notnu11()]

[5 Open High Low Close Volume SMA 20 SMA 56 position RỂ

2023-09-07 90000 90800 89500 89500 1765300 888100 888706 -1.0

2023-11-20 85600 87000 85000 86100 1098400 869900 86980.0 1.0

2023-12-05 06000 66100 64600 85400 992800 662450 663240 -1.0

2024-01-18 90900 91200 90000 91100 1422900 858200 85408.0 1.0

2.2.Backtest:

Định nghĩa một lớp GeneralStrategy kế thừa từ lớp Strategy: Lớp này có hai phương

thức là init va next dung đề xác định hành động mua hoặc bán dựa trên giá trị của cột

'posiflon' trong đữ liệu

~ Backtest

pass

self.buy()

elif self.data.position -1: #tín hiệu bán/ đóng vị thế

self.position.close()

® Nếu giá trị của cột 'position' là 1, tức là tín hiệu mua, thì phương thức sẽ gọi thực hiện mua cô phiều

® Ngược lại, nều giá trị của cột 'posttlon' là -l, tức là tín hiệu bán, thi ban cô phiêu hiện có Trong trường hợp chưa có cô phiếu để bán thì chỉ đặt lệnh đóng vị thế,

không ra tín hiệu bán

Thực hiện Backtest với số tiền khởi đầu để giao dịch là 100 triệu đồng, phí giao

dich giả sử là 0.3%, giao dịch được thực hiện vào giá đóng cửa và các lệnh giao dịch được

thực hiện độc quyền ta thu được bảng số liệu sau:

GeneralStrategy,

se= True, #Giao dịch được thực hiện vào giá đóng cửa

ve_orders=True) #Giao dịch có được thực hiện độc quyền

stats=bt nun()

Hiển thị kết quả backtest đưới dạng fñrame:

Trang 14

Ta thu được bảng kết quả backtest như sau:

0

Duration 366 days 00:00:00 Exposure Time [“%] 24.206349 Equity Final [$] 1020725.7 Equity Peak [$] 1049725.7

Buy & Hold Return [%] 19368796

Return (Ann.) [“%] 2.07257

Volatility (Ann.) [%] 9.39793 1

Sortino Ratio 0.433387

Max Drawdown [“%] -4.667886

Avg Drawdown [“%] -4.477536

Max Drawdown 98 days 00:00:00 Duration

Avg Drawdown Duration 67 days 00:00:00

Trang 15

# Trades

Win Rate [3%]

Best Trade [%%]

Worst Trade [“%]

Avg Trade [“|

Max Trade Duration

Avg Trade Duration

Profit Factor

Expectancy [“%]

SQN

_Strategy

_equity_curve

_ trades

50.0 3.421897 -1.109679 1.13073

75 days 00:00:00

45 days 00:00:00 3.083681 1.156109 0.495732 GeneralStrategy Equity DrawdownPct DrawdownDu Size EntryBar ExitBar EntryPrice ExitPr

2.3.Đồ thi gia tri Equity:

v Đồ thị giá tri Equity

Trang 16

[3 [«<matplotlib.1ines.Line2D at @x7a79a5bb3d96>]

1e6

1.04 4

1.02 4

1.00 5

Ngày đăng: 06/12/2024, 16:24

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN