Professional Documents
Culture Documents
Trí tuệ nhân tạo trong giao dịch định lượng
Trí tuệ nhân tạo trong giao dịch định lượng
SVTH: NHÓM 9
LỚP: D01
2
Mục Lục
Danh Mục Các Từ Viết Tắt ..............................................................................................................4
Danh Mục Các Hình Ảnh Biểu Đồ .................................................................................................. 5
Lời Mở Đầu ......................................................................................................................................6
Nội dung ...........................................................................................................................................7
1. Giới thiệu về chỉ số SMA .............................................................................................................7
1.1. Chỉ báo SMA là gì? ...........................................................................................................7
1.2. Cách tính chỉ báo SMA và phân loại ................................................................................ 7
1.2.1. Cách tính chỉ báo SMA .......................................................................................... 7
1.2.2. Phân loại .................................................................................................................7
1.3. Cách sử dụng đường SMA trong giao dịch .......................................................................7
1.4. Ý nghĩa của chỉ báo SMA ................................................................................................. 8
2. Phân tích và ứng dụng chỉ số SMA ..............................................................................................9
2.1. Đồ thị biểu diễn giá đóng cửa của cổ phiểu VCB, đường SMA(20) và đường
SMA(50) (Câu 1) ............................................................................................................. 9
2.2. Xây dựng chiến thuật giao dịch trên đường SMA(ngắn hạn) và đường SMA(dài
hạn) (Câu 2) ................................................................................................................... 14
2.3. Nhà đầu 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 (Câu 3). ............................................................................... 17
2.4. Lựa chọn cổ phiếu có tỷ suất sinh lợi cao nhất (Câu 4) ..........................................26
3. Đánh giá ưu nhược điểm của chỉ số SMA ................................................................................. 34
3.1. Ưu điểm ...........................................................................................................................34
3.2. Nhược điểm .....................................................................................................................34
Tài liệu tham khảo ..........................................................................................................................35
3
Danh Mục Các Từ Viết Tắt
4
Danh Mục Các Hình Ảnh Biểu Đồ
Hình 1 . Bảng dữ liệu VCB ....................................................................................................10
Hình 2 . Đồ thị giá cổ phiếu VCB cột "Close" .......................................................................11
Hình 4 . Thể hiện SMA20, SMA50 vào bảng dữ liệu ............................................................13
Hình 5 . Đồ thị biểu diễn giá đóng cửa, SMA20, SMA50 .....................................................14
Hình 6 . Xây dựng chiến thuật SMA20 và SMA50 ............................................................... 15
Hình 7 . Bảng kết quả chiến thuật SMA ................................................................................ 15
Hình 8 . Biểu đồ giá đóng cửa (SMA10 - SMA50) ............................................................... 18
Hình 9 . Đồ thị biểu diễn giá đóng cửa, SMA10, SMA50 .....................................................20
Hình 10 . Xây dựng chiến thuật SMA10, SMA50 .................................................................21
Hình 11 . Kết quả của chiến thuật SMA10, SMA50 ..............................................................22
Hình 12 . Bảng Kết quả Basktesting ...................................................................................... 25
Hình 13 . Kết quả Basktesting của VCB ................................................................................27
Hình 14 . Kết quả Basktesting của CTG ................................................................................ 28
Hình 15 . Kết quả Basktesting của STB .................................................................................29
Hình 16 . Kết quả Basktesting của SHB ................................................................................ 30
Hình 17 . Kết quả Basktesting của BID ................................................................................. 31
Hình 18 . Kết quả Basktesting của ACB ................................................................................32
Hình 19 . Kết quả Basktesting của MBB ............................................................................... 33
5
Lời Mở Đầu
Thị trường chứng khoán thu hút sự gia nhập mạnh mẽ của các nhà đầu tư thế hệ mới,
nhạy bén với thị trường kết hợp với công nghệ. Nó là một môi trường phức tạp và đầy
biến động, nơi hàng triệu người đầu tư và giao dịch hàng ngày. Việc dự đoán xu hướng
giá cổ phiếu và khả năng định giá chính xác là một trong những thách thức lớn mà các
nhà giao dịch và nhà đầu tư đối mặt. Các nhà nghiên cứu đã phát triển một loạt các mô
hình và công cụ phân tích kỹ thuật.
Trong số các công cụ phân tích kỹ thuật, SMA (Simple Moving Average) đã trở thành
một trong những công cụ quan trọng và phổ biến. SMA là một chỉ báo đơn giản, dựa trên
việc tính toán giá trị trung bình của tài sản trong một khoảng thời gian nhất định. Dựa trên
nguyên lý này, SMA có khả năng cung cấp thông tin quan trọng về xu hướng giá, tín hiệu
mua vào và bán ra, cũng như hỗ trợ và kháng cự trên biểu đồ giá
Mục tiêu của tiểu luận này là cung cấp một cái nhìn tổng quan về SMA và khả năng ứng
dụng của nó trong phân tích thị trường chứng khoán thông qua các vấn đề mà giảng viên
đã đề ra.
6
Nội dung
1. Giới thiệu về chỉ số SMA
1.1. Chỉ báo SMA là gì?
SMA (Simple Moving Average) là một công cụ phân tích kỹ thuật đơn giản, tính toán giá
trung bình của một tài sản trong một khoảng thời gian xác định, thường sử dụng giá đóng
cửa.
1.2. Cách tính chỉ báo SMA và phân loại
1.2.1. Cách tính chỉ báo SMA
SMA được tính bằng cách lấy tổng các giá trị đóng cửa của tài sản trong một số phiên gần
đây và chia cho số lượng phiên đó. Điều này tạo ra một đường trung bình di chuyển mượt
theo giá của tài sản trong khoảng thời gian xác định.
Công thức tính SMA cụ thể như sau: SMA = (P1 + P2 + P3 + … + Pn)/N
- Trong đó:
o P1-Pn: là mức giá đóng cửa trong mỗi chu phiên.
o n: số ngày/phiên giao dịch
Ví dụ:
SMA (10) = tổng mức giá đóng cửa của cổ phiếu VCB 10 phiên giao dịch gần nhất /10
SMA (50) = tổng mức giá đóng cửa của cổ phiếu VCB 50 phiên giao dịch gần nhất /50
SMA (100) = tổng mức giá đóng cửa của cổ phiếu VCB 100 phiên giao dịch gần nhất
/100
Dựa vào chu kỳ tính toán người ta chia SMA làm 3 loại: ngắn hạn, trung hạn và dài hạn.
7
Biểu đồ giá giảm cắt ngang đường SMA theo hướng từ trên xuống, đường SMA hướng
lên trên và giá đóng cửa trên đường SMA. Đây là thời điểm nên mở lệnh mua.
Biểu đồ giá tăng cắt ngang đường SMA theo hướng từ dưới lên, đường SMA hướng
xuống dưới và giá đóng cửa nằm dưới đường SMA. Đây là thời điểm nên mở lệnh bán.
8
Tìm điểm vào lệnh, chốt lời và cắt lỗ: SMA cung cấp tín hiệu mua vào và bán ra
trong quá trình giao dịch. Khi giá cổ phiếu vượt qua đường SMA từ dưới lên (crossover),
đây có thể là tín hiệu mua vào. Ngược lại, khi giá cổ phiếu vượt qua đường SMA từ trên
xuống (crossover ngược), đây có thể là tín hiệu bán ra. Ngoài ra, SMA cũng có thể sử
dụng để xác định điểm chốt lời hoặc cắt lỗ trong giao dịch. Khi giá cổ phiếu vượt qua
đường SMA từ trên xuống và tiếp tục đi xuống, điều này có thể là tín hiệu để cắt lỗ.
Trong khi đó, khi giá cổ phiếu vượt qua đường SMA từ dưới lên và tiếp tục đi lên, đây có
thể là tín hiệu để chốt lời.
2. Phân tích và ứng dụng chỉ số SMA
2.1. Đồ thị biểu diễn giá đóng cửa của cổ phiểu VCB, đường SMA(20) và đường
SMA(50) (Câu 1)
Bước 1: Cài đặt các thư viện Python backtesting và ta vào môi trường Python bằng
lệnh !pip install backtesting ta.
9
Bước 3: Đọc bảng dữ liệu ‘VCB1.csv’
Bước 4: Định hình các cột trong DataFrame theo thứ tự [‘Date’, ‘Open’, ‘High’,
‘Low’, ‘Close’, ‘Volume’]
10
Bước 5: Vẽ đồ thị dữ liệu giá cổ phiếu từ cột “Close”.
Bước 6: Thay đổi kiểu dữ liệu của cột “Date” và đặt cột "Date" của DataFramedf làm chỉ
mục (index) của DataFrame.
11
df[‘Date’]=pd.to_datetime (df[‘Date’]): thay đổi kiểu dữ liệu của cột “Date” trong
DataFrame df từ kiểu chuỗi sang kiểu date time. Hàm pd.to_datetime() được sử
dụng để chuyển đổi kiểu dữ liệu của cột “Date”. Khi chuyển đổi sang kiểu
datetime, ta có thể thực hiện các tác vụ liên quan đến thời gian như xác định
khoảng cách thời gian giữa các ngày hoặc lọc dữ liệu theo các ngày cụ thể.
df=df.set_index(‘Date’): vẽ đồ thị dữ liệu giá cổ phiếu từ cột “Close” của
DataFrame. Khi một cột được đặt làm chỉ mục, các giá trị trong DataFrame sẽ
được sắp xếp và truy xuất dựa trên giá trị của cột chỉ mục đó.
Bước 7: Thực hiện tính toán và thêm hai cột mới vào bảng dữ liệu đang được xử lý với
tên gọi là “SMA 20” và “SMA 50”.
12
Hình 4. Thể hiện SMA20, SMA50 vào bảng dữ liệu
Đoạn mã trên thực hiện tính toán và thêm hai cột mới vào bảng dữ liệu đang được
xử lý với tên gọi là “SMA 20” và “SMA 50”. Cả hai cột chứa thông tin về giá trị
của đường trung bình động trong 20 ngày và 50 ngày của giá đóng cửa cổ phiếu
tương ứng.
Chức năng sma_indicator được sử dụng để tính toán giá trị của SMA. Đối với
close chứa thông tin về giá cổ phiếu, window chứa độ dài của cửa sổ tính toán (20
và 50).
Với SMA, mỗi giá trị trong chuối được tính bằng cách lấy trung bình cộng của giá
trị trong cửa sổ tính toán. SMA thường được sử dụng để đánh giá xu hướng của giá
cổ phiếu và xác định điểm mua bán hoặc các điểm quan trọng khác trong giao dịch
chứng khoán.
13
Hình 5. Đồ thị biểu diễn giá đóng cửa, SMA20, SMA50
14
Hình 6. Xây dựng chiến thuật SMA20 và SMA50
15
Cụ thể, hàm notnull() được sử dụng để trả về một mảng Boolean cho thấy giá trị
tương ứng trong cột “position” có phải là null hay không. Sau đó, mảng Boolean
này được sử dụng để lọc các hàng trong DataFrame df bằng cách sử dụng
df[df[‘position’].notnull()]. Kết quả là một DataFrame mới chỉ chứa các hàng với
giá trị khác null trong cột “position”.
16
2.3. Nhà đầu 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 (Câu 3).
Bước 1: Thực hiện công tác cài đặt các thư viện hỗ trợ và tải dữ liệu từ vnstock về định
nghĩa biến df.
Bước 2: Đổi tên các cột để phù hợp định dạng của thư viện backtesting.
17
Bước 3: Vẽ biểu đồ cột giá cuối ngày “Close” đảm bảo chuỗi dữ liệu đã được làm
sạch.
Đoạn mã trên thực hiện tính toán và thêm hai cột mới vào bảng dữ liệu đang được xử lý
với tên gọi là “SMA 10” và “SMA 50”. Cả hai cột chứa thông tin về giá trị của đường
trung bình động trong 10 ngày và 50 ngày của giá đóng cửa cổ phiếu tương ứng.
Chức năng sma_indicator được sử dụng để tính toán giá trị của SMA. Đối với close chứa
thông tin về giá cổ phiếu, window chứa độ dài của cửa sổ tính toán (10 và 50).
18
Với SMA, mỗi giá trị trong chuối được tính bằng cách lấy trung bình cộng của giá trị
trong cửa sổ tính toán. SMA thường được sử dụng để đánh giá xu hướng của giá cổ phiếu
và xác định điểm mua bán hoặc các điểm quan trọng khác trong giao dịch chứng khoán.
Sau đó hiển thị df để xác nhận giá trị ngày 51 của data đã xuất hiện giá trị SMA 50.
19
Bước 5: Cập nhật biểu đồ “Close” sau khi thêm 2 giá trị SMA 10 và SMA 50.
20
plt.plot(df['SMA 50'].head(2500),label='SMA 50'): Vẽ đường biểu đồ cho
cột 'SMA 50' trong DataFrame df, head(2500) chỉ lấy 2500 dòng đầu tiên
của cột 'SMA 50', label='SMA 50' đặt nhãn cho đường biểu đồ là 'SMA 50'.
plt.legend(): Hiển thị chú thích cho các đường biểu đồ, sử dụng các nhãn đã được
đặt trước đó.
21
Hình 11. Kết quả của chiến thuật SMA10, SMA50
Kết quả là một DataFrame mới chỉ chứa các hàng với giá trị khác null trong cột “position”.
Kiểm tra ngày Position nhận giá trị 1 lần đầu tiên.
22
Bước 7: Định nghĩa mua bán dựa theo giá trị.
Trong đoạn mã trên, lớp GeneralStrategy được định nghĩa kế thừa từ lớp Strategy của
backtrader. Lớp GeneralStrategy được sử dụng để triển khai một chiến lược giao dịch đơn
giản, dựa trên tín hiệu mua và bán được tạo ra từ các đường trung bình động SMA 10 và
SMA 50 của tài sản. Được triển khai theo 2 phương thức sau:
Trong hàm Init(self), Phương thức này được gọi một lần duy nhất khi khởi tạo chiến
lược.
Trong hàm Next(self), kiểm tra điều kiện để tạo ra các tín hiệu giao dịch. Chiến lược
sẽ kiểm tra giá trị của cột ‘position’ trong DataFrame data (sử dụng self.data.position) để
quyết định mua hoặc bán tài sản. Nếu giá trị của cột ‘position’ là 1, tức SMA 10 vượt qua
SMA 50 thì chiến lược mở vị thế mua bằng cách gọi phương thức self.buy(). Nếu giá trị
của cột ‘position’ là -1, tức SMA 10 thấp hơn SMA 50 thì chiến lược đóng vị thế hiện tại
bằng cách gọi phương thức self.position.close().
Bước 8: Đoạn mã trên được sử dụng để thực hiện bước backtesting cho chiến lược giao
dịch được triển khai trong lớp GeneralStrategy. Các giai đoạn thực hiện của đoạn mã trên
như sau:
23
Giai đoạn 1: Tạo một đối tượng Backtest với các tham số sau:
Commission: Phí giao dịch được tính cho mỗi lần mở hoặc đóng vị thế.
Trade_on_close: Xác định liệu chiến lược có giao dịch trên giá đóng cửa (closing price)
hay không.
Exclusive_orders: Xác định liệu chiến lược có phải chỉ mở một vị thế tại một thời điểm
hay không.
Giai đoạn 2: Chạy backtesting bằng cách gọi phương thức run() của đối tượng Backtest.
Kết quả của backtesting được lưu trữ trong biến stats.
24
Hình 12. Bảng Kết quả Basktesting
Equity Final: Số tiền cuối cùng mà nhà đầu tư nhận được khi thực hiện chiến lược là
khoảng hơn 377 triệu.
Equity Peak: Số tiền cao nhất mà nhà đầu tư từng đạt được trong khoảng thời gian
trên là 458 triệu.
Return: Tỷ lệ lợi nhuận hoặc lỗ của chiến lược giao dịch của chiến lược là 277.37%,
điều này có nghĩa là chiến lược giao dịch đã thu được lợi nhuận với tỷ lệ khoảng 277.37%,
tức là ví dụ nếu bắt đầu với số vốn ban đầu là 100 trđ thì sẽ nhận được 277.37trđ sau khi
kết thúc chiến lược.
25
Tỷ lệ lợi nhuận hoặc lỗ của chiến lược giữ cổ phiếu trong suốt thời gian backtest
(mua và giữ cổ phiếu từ đầu đến cuối). Trong bảng số liệu này, Buy & Hold Return là
537.74%, điều này có nghĩa là chiến thuật SMA 10 - 50 sẽ mang lại lợi nhuận hơn Buy &
Hold 537.74%.
Return (Ann.): Tỷ lệ lợi nhuận hoặc lỗ của chiến lược giao dịch của chiến lược là
14.35%, điều này có nghĩa là nếu chiến lược được giao dịch trong suốt một năm thì tỷ lệ
sinh lời khoảng 14.35%/ năm.
Volatility (Ann.) là mức độ biến động của chiến lược giao dịch là 25.76%, điều này
có nghĩa là mức độ biến động của kết quả giao dịch của chiến lược là 25.76% hàng năm.
Max. Drawdown: Tỷ lệ tổn thất tối đa của chiến lược giao dịch của chiến lược là -
28.92%, điều này cho thấy khối lượng lỗ lớn nhất mà chiến lược đã chịu trong quá trình
giao dịch.
Avg. Drawdown: Tỷ lệ tổn thất trung bình của chiến lược giao dịch của chiến lược
là -5.57%, điều này cho thấy mức độ rủi ro trung bình của chiến lược trong các khoảng
thời gian lỗ.
Max. Drawdown Duration: Thời gian tổn thất tối đa tổn thất của chiến lược giao
dịch là 856 ngày.
Avg. Drawdown Duration: Thời gian tổn thất trung bình của chiến lược giao dịch là
75 ngày.
2.4. Lựa chọn cổ phiếu có tỷ suất sinh lợi cao nhất (Câu 4)
26
Lợi nhuận trung bình hàng năm của VCB cho ra kết quả là: 14.355744%
27
Lợi nhuận trung bình hàng năm của CTG cho ra kết quả: 9.557419 %
28
Lợi nhuận trung bình hàng năm của STB cho ra kết quả: 11.555243%
29
Lợi nhuận trung bình hàng năm của SHB cho ra kết quả: 16.284694%
30
Lợi nhuận trung bình hàng năm của BID cho ra kết quả: 12.169189%
31
Lợi nhuận trung bình hàng năm của ACB cho ra kết quả: 10.534121%
32
Lợi nhuận trung bình hàng năm của MBB cho ra kết quả: 13.011526%
33
Trong giai đoạn từ ngày 01/01/2013 đến ngày 01/01/2023. Ta có những ngân hàng
như VCB, CTG, SHB, STB, BID, ACB, MBB trong rổ các cổ phiếu ngành ngân hàng:
['CTG', 'STB', 'HDB', 'EIB', 'BID', 'VPB', 'ACB', 'TCB', 'MBB', 'VIB', 'SHB', 'VCB', 'LPB',
'TPB']. Với số tiền đầu tư là 100.000.000 đồng, phí giao dịch là 0.2% và lượng cổ phiếu
trong mỗi giao dịch là 100 cổ phiếu/giao dịch. Khi sử dụng chiến thuật giao dịch theo các
đường SMA để lựa chọn cổ phiếu có tỷ suất sinh lợi cao nhất nhà đầu tư nên chọn cổ
phiếu của ngân hàng SHB với lợi nhuận trung bình hàng năm là: 16.284694%.
Tăng khả năng đưa ra quyết định đầu tư chính xác hơn: Đường trung bình động SMA
phản ứng chậm nên sẽ loại bỏ được những biến động nhiễu ngắn hạn. Về dài hạn đường
SMA cho chỉ báo chính xác khi quan sát đồ thị giá giúp nhà đầu tư phát hiện ra các bẫy
phân tích sử dụng các khung thời gian dài như khung biểu đồ ngày hoặc biểu đồ tuần (dài
hạn), giảm thiểu những rủi ro có thể xảy ra .Vì vậy đường SMA có độ tin cậy khá cao.
Xác định xu hướng chung của thị trường: SMA là đường trung bình MA sử dụng phổ biến
nhất trên thị trường nên nó sẽ phản ánh khá sát sao với tâm lý của nhà đầu tư tại những
ngưỡng hỗ trợ hoặc kháng cự khá sát thực tế.
Không phải là phương pháp đầu tư hoàn hảo: Đường trung bình động SMA bộc lộ yếu
điểm khá rõ ràng trong ngắn hạn khi phát ra tín hiệu mua bán chậm với những thay đổi
giá nhanh thường xảy ra tại các điểm đảo chiều (revasal) thị trường, không đặt nặng bất
kỳ các mức giá đột biến nào, coi trọng số của giá tất cả các ngày là như nhau và sử dụng
số liệu của quá khứ và không thể dự đoán đúng 100%, không xét đến những biến động
của giá trong ngày giao dịch. Do đó, độ nhạy của đường trung bình SMA ở mức độ tương
đối thấp và thiếu độ nhạy so với những biến động lớn của giá trong ngắn hạn.
34
Tài liệu tham khảo
• Mitrade (2023, June 5). Đường SMA là gì? Giải thích về đường trung bình động đơn
giản (SMA). https://vn.mitrade.com/khoa-hoc-cao-cap/chi-bao-ma-macd/duong-sma.
35