ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
PHẠM QUỐC HÙNG
NGHIÊN CỨU ỨNG DỤNG KỸ THUẬT HỌC MÁY
ĐỂ DỰ ĐOÁN CHỨNG KHOÁN BẰNG NGÔN NGỮ R LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội, 2013
LỜI CAM ĐOAN 3
M Ụ C LỤC 4
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT 5
DANH MỤC CÁC BẢNG 6
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ 7
M Ở ĐẦU 8
Chương 1. BÀI TOÁN PHÂN TÍCH CHỨNG KHOÁN 10
1.1. Tổng quan về dự báo 10
1.2. Bài toán phân tích chứng khoán 11
Chương 2. KHAI PHÁ DỮ LIỆU VÀ PHÁT HIỆN TRI THỨC 16
2.1. Khai phá dữ liệu 16
2.2. Mô hình mạng nơron nhân tạo 22
2.3. Mô hình máy véctơ hỗ trợ 25
Chương 3. NGÔN NGỮ R VÀ ỨNG DỤNG 27
3.1. Tổng quan về ngôn ngữ R 27
3.2. Ứng dụng ngôn ngữ R 28
Chương 4. XÂY DỰNG CHƯƠNG TRÌNH VÀ ĐÁNH GIÁ 33
4.1. Chuẩn bị dữ liệu 33
4.2. Xây dựng hàm và thực hiện tính toán 34
4.3. Vẽ biểu đồ 35
4.4. Xây dựng mô hình và kết quả thử nghiệm 38
KẾT LUẬN 42
DANH MỤC CÔNG TRÌNH KHOA HỌC CỦA TÁC GIẢ LIÊN QUAN ĐẾN
LUẬN VĂN 43
TÀI LIỆU THAM KHẢO 44 5
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
- MFI
Money Flow Index – Chỉ số lưu lượng tiền
- NVI
Negative Volume Index
- Open
Giá mở cửa
- PCR
Put/Call Ratio
- PSAR
Parabolic SAR – Chỉ số báo hiệu giá đảo chiều
- ROC
Rate of Change – Chỉ số tỷ lệ thay đổi giá
- RSI
Relative Strengh Index – Chỉ số sức mạnh tương đối
- s
Sell - Tín hiệu bán ra
- SMA
Simple Moving Average – Đường trung bình đơn giản
- SVM
Support Vector Machine – Máy vectơ hỗ trợ
- TSI
True Strength Index
- Volume
Khối lượng giao dịch
- VPT
Volume–Price Trend
6
Hình 4-2: Đường chỉ số giá trung bình (SMA) 37
Hình 4-3: Đồ thị của hàm Technicals() 38
8
MỞ ĐẦU
Dự báo là một công tác rất quan trọng trong nhiều ngành, trong đó nó đặc biệt
quan trọng với việc quản lý vĩ mô và kinh doanh. Bài toán dự báo chứng khoán ngày
càng được nhiều người quan tâm trong bối cảnh phát triển kinh tế xã hội. Đầu tư vào
thị trường chứng khoán đòi hỏi các nhà đầu tư cần có nhiều kinh nghiệm và hiểu biết
về thị trường chứng khoán. Những người am hiểu về thị trường và xu thế của thị
trường sẽ thu được những lợi nhuận khổng lồ từ sàn giao dịch chứng khoán. Tuy
nhiên, những người không nắm bắt được xu thế này có thể sẽ phải đối mặt với sự
khủng hoảng thậm chí phá sản. Bên cạnh đó, có những nhà đầu tư có lợi nhuận
nhưng họ không nhận ra rằng họ có thể thu lợi nhiều hơn nữa nếu họ dự đoán được
giá của thị trường sẽ thay đổi thế nào. Ngày nay, ngoài kinh nghiệm của nhà đầu tư,
các kĩ thuật khai phá dữ liệu được áp dụng khá nhiều nhằm dự báo sự lên xuống của
thị trường. Đó là một gợi ý quan trọng, giúp các nhà đầu tư có thể ra quyết định giao
dịch.
Theo lý thuyết phân tích chứng khoán (Chartist theory) thì ta có thể dự đoán
được xu thế của thị trường chứng khoán dựa vào quá khứ. Hay nói cách khác, từ tập
dữ liệu lịch sử giao dịch của chứng khoán, bằng các phương pháp khai tri thức liệu
chúng ta có thể dự báo được xu thế giá sắp tới trong tương lai sẽ tăng/giảm hay ổn
định. Khai phá tri thức là vấn đề nghiên cứu thời sự trong thời gian gần đây, đã
thu hút nhiều nhà khoa học trên thế giới tiến hành nghiên cứu, đề xuất các mô hình,
phương pháp mới nhằm tạo ra các công cụ hiệu quả hỗ trợ người dùng trong việc
tổng hợp, phân tích thông tin và tìm kiếm các tri thức tiền ẩn từ tập dữ liệu thông tin
trình xây dựng chương trình bằng ngôn ngữ R cho bài toán phân tích chứng khoán
và kết quả thử nghiệm trên chứng khoán S&P500.
Phần Kết luận trình bày tổng hợp các kết quả nghiên cứu của luận văn và
định hướng nghiên cứu tiếp theo.
Luận văn đã đạt được một số kết quả khả quan trong việc nghiên cứu kỹ thuật
học máy và ứng dụng ngôn ngữ R để xây dựng chương trình thử nghiệm cho bài
toán dự đoán chứng khoán. Tuy nhiên, luận văn không tránh khỏi những thiếu sót,
rất mong nhận được sự đóng góp ý kiến, nhận xét để chúng tôi tiếp tục hoàn thiện
và nâng cao kết quả nghiên cứu.
10
Chương 1. BÀI TOÁN PHÂN TÍCH CHỨNG KHOÁN
1.1. Tổng quan về dự báo
Thuật ngữ dự báo có nguồn gốc từ tiếng Hy Lạp “Pro” (có nghĩa là trước) và
“grosis” (có nghĩa là biết), “progrosis” nghĩa là biết trước. Từ nhiều thế kỷ trước
người ta đã tiến hành tiên đoán về tương lai. Có thể phân biệt 3 loại tiên đoán:
Tiên đoán không khoa học: đó là các tiên đoán không có cơ sở khoa học,
thường dựa trên tính tưởng tượng, phi hiện thực.
Tiên đoán kinh nghiêm: các tiên đoán dựa trên kinh nghiệm thực tế. Loại tiên
đoán này ít nhiều có cơ sở nhưng lại không giải thích được sự vận động của đối
tượng và đa số mới chỉ dừng lại ở mức độ định tính, không định lượng được.
Tiên đoán khoa học: đây là tiên đoán dựa trên cơ sở khoa học được chứng
minh tính đúng đắn. Nó dựa trên việc phân tích tính quy luật phát triển của đối tượng
dự báo và các điều kiện ban đầu với tư cách như là các giả thiết. Tiên đoán khoa học
là kết quả của sự kết hợp giữa những phân tích định tính và những phân tích định
lượng các quá trình cần dự báo. Chỉ có dự báo khoa học mới đảm bảo độ tin cậy cao
và là cơ sở vững chắc cho việc thông qua các quyết định quản lý khoa học.
Như vậy có thể hiểu dự báo là sự tiên đoán có khoa học có xác suất nhất định.
Nghĩa rằng không phải bao giờ dự báo cũng đúng đắn hoàn toàn mà nó mang tính
xác suất. Mỗi đối tượng dự báo đều vận động theo một quy luật, quỹ đạo nào đó,
điểm xác định, thông thường là nhận định xu hướng thị trường. Phân tích kỹ thuật
không để ý đến các chỉ số tài chính, tình hình phát triển của doanh nghiệp hay các
thông tin về thị trường mà chỉ chú trọng vào việc tập hợp các dữ liệu về giá cả, khối
lượng giao dịch và các tiêu chí khác của chứng khoán thu thập được từ các phiên
giao dịch trong quá khứ.
Các kỹ thuật phân tích cho thấy rằng giá trong lịch sử và các chỉ số khác có
thể tiết lộ mối tương quan và các mô hình biến động giá chứng khoán, do đó có thể
dự đoán giá chứng khoán trong tương lai. Trong những năm gần đây, nhiều kỹ thuật
tiên tiến như giải thuật di truyền (GA), máy véctơ hỗ trợ (SVM), mạng nơron nhân
tạo (ANN) đã hỗ trợ tốt việc phân tích và học mẫu hơn. Theo Mackinlay, giá chứng
khoán có mối tương quan nhạy cảm với tin tức và các sự kiện mang lại thông tin
cho thị trường chứng khoán (kể cả các tin tức thời sự, kinh tế, chính trị, thời tiết…đều
ảnh hưởng tới thị trường chứng khoán). Với hướng tiếp cận này, sử dụng các kỹ
thuật học máy và khai phá dữ liệu để tìm ra mối tương quan giữa giá trong quá khứ
và xu hướng giá trong tương lai.
12
Thông tin của các giao dịch chứng khoán được lưu trữ lại dưới dạng dữ liệu
chuỗi thời gian (time series). Dữ liệu thời gian hay chuỗi thời gian là một chuỗi các
giá trị của một đại lượng nào đó được ghi nhận theo thời gian [2], [3]. Đây là kho dữ
liệu khổng lồ để chúng ta có thể khai phá và dự báo xu thế của thị trường chứng
khoán. Các dữ liệu lịch sử giao dịch này thường được lưu trữ bao gồm các thông tin
về thời gian (Date), giá mở cửa (Open), giá đóng cửa (Close), giá cao nhất trong
ngày (High), giá thấp nhất trong ngày (Low) và khối lượng giao dịch (Volume).
Bảng 1.1 dưới đây là một ví dụ về kiểu dữ liệu dạng này:
Bảng 1.1: Kiểu dữ liệu chuỗi thời gian
Date Open High Low Close Volume
2013-03-26
1,551.69
3,304,440,000
2013-04-01
1,569.18
1,570.57
1,558.47
1,562.17
2,753,110,000
2013-04-02
1,562.17
1,573.66
1,562.17
1,570.25
3,312,160,000Để thực hiện phân tích kỹ thuật, nhà đầu tư thường dựa vào thông tin các chỉ
số được thể hiện dưới dạng đồ thị khác nhau như dạng đường thẳng (Line Chart),
dạng vạch (Bar Chart), hoặc hình nến (Candlestick Chart). Với dữ liệu cho ở Bảng
cho tổng của hai chỉ số này. Chỉ số +DI phản ánh lực đẩy thị trường đi lên, còn –DI
phản ánh lực kéo thị trường đi xuống. Đường ADX không chỉ ra xu hướng thị trường
đang lên hay xuống mà cho biết thị trường đang mạnh hay yếu. Vì đường ADX
không có tác dụng định hướng, nó sẽ không cho bạn biết liệu thị trường đang trong
xu hướng xuống hay lên (bạn cần xem đường +DI và -DI để biết xu hướng), nhưng
đường DX sẽ cho bạn biết xu hướng đang mạnh hay yếu thế nào. Khi đường ADX
từ 40 trở lên, xu hướng đang diễn ra mạnh, khi đường ADX từ 20 trở xuống, thị
trường đang không có xu hướng rõ ràng.
2) Đường trung bình đơn giản – Simple Moving Average (SMA)
SMA được sử dụng phần lớn vào việc nhận biết hướng đi của xu hướng đường
giá. Nhưng đôi khi cũng được sử dụng để phát hiện những tín hiệu mua và bán. SMA
là giá trị trung bình mang tính chất thống kê. Nó thường được tính theo giá đóng cửa
[5].
3) Đường trung bình theo số mũ – Exponential Moving Average (EMA)
EMA có tác dụng để đo sức “nặng” giá hiện hành xem có “nặng” hơn giá
trong quá khứ hay không? EMA có thể đánh giá nhanh sự dao động giá hơn là đường
SMA.
15
4) Chỉ số biên độ biến động giá - Bollinger Bands
Đường bao Bollinger Bands [6] được xem là một chỉ số cho phép người dùng
so sánh độ biến động (volatility) và mức giá tương đối theo thời gian. Bollinger
Bands là sự kết hợp giữa đường trung bình động Moving Average và độ lệch chuẩn.
Đây là công cụ phân tích kỹ thuật có nhiều tác dụng và rất có giá trị cho nhà đầu tư.
5) Chỉ số báo hiệu giá đảo chiều – Parabolic SAR (PSAR)
Parabolic SAR được phát triển bởi J. Welles Wilder [4], là chỉ báo kết hợp
giữa giá và thời gian để hình thành những tín hiệu mua – bán trên thị trường.
Parabolic SAR cũng là công cụ hiệu quả để xác định vùng đặt điểm “dừng lỗ” (stop
loss). Tín hiệu mua khi giá đóng cửa nằm trên đường Parabolic SAR và đồng thời
đường Parabolic SAR phải cao hơn đường giá. Tín hiệu bán khi giá đóng cửa nằm
thống kê cho thấy, hiện nay mới chỉ khoảng hơn 5% lượng thông tin này được khai
thác hiệu quả, còn hầu hết các thông tin khác chưa được khai thác. Tuy nhiên, họ
vẫn lưu trữ các thông tin đó vì họ cho rằng nó có ẩn chứa nhiều thông tin quan trọng
mà hiện tại có thể họ chưa biết, chưa khai thác được cho dù việc thu thập và lưu trữ
này rất tốn kém.
Như John Naisbett đã nói “Chúng ta đang chìm ngập trong dữ liệu mà vẫn đói
tri thức”. Yếu tố để thành công trong hoạt động kinh doanh là phải biết sử dụng
thông tin một cách có hiệu quả. Nó có nghĩa là từ các dữ liệu sẵn có, phải tìm ra các
thông tin tiềm ẩn có giá trị mà trước đó chưa được phát hiện, tìm ra xu hướng phát
triển và các yếu tố tác động lên chúng. Việc khai thác được các thông tin ẩn chưa
biết này là điều vô cùng quan trọng và ngày càng được quan tâm hơn. Điều đó đòi
hỏi chúng ta cần phải tìm ra các kỹ thuật mới, công cụ tự động mới trợ giúp con
người khai thác nguồn dữ liệu khổng lồ này một cách có hiệu quả. Vì vậy mà kỹ
thuật phát hiện tri chức (KDD - Knowledge Discovery in Databases) và khai phá dữ
liệu (DM - Data Mining) được ra đời và ngày một phát triển mạnh mẽ để khai thác
kho dữ liệu này. Kỹ thuật này đã và đang được nghiên cứu, ứng dụng vào nhiều
ngành nghề, lĩnh vực khác nhau trên thế giới. Ở Việt Nam, kỹ thuật này còn khá mới
mẻ và vẫn đang được tiếp tục nghiên cứu và đưa vào ứng dụng.
Theo giáo sư Tom Mitchell [9] thì “Khai phá dữ liệu là việc sử dụng dữ liệu
lịch sử để khám phá những qui tắc và cải thiện những quyết định trong tương lai”.
Còn theo Fayyad [10] thì “Khai phá dữ liệu, thường được xem là việc khám phá tri
17
thức trong các cơ sở dữ liệu, là một quá trình trích xuất những thông tin ẩn, trước
đây chưa biết và có khả năng hữu ích, dưới dạng các qui luật, ràng buộc, qui tắc
trong cơ sở dữ liệu”. Như vậy, khai phá tri thức là trích chọn các mẫu hoặc tri thức
hấp dẫn (không tầm thường, ẩn, chưa biết và hữu dụng tiềm năng) từ một tập hợp
lớn dữ liệu. Nhiều người đồng nhất khái niệm khai phá dữ liệu với khai phá tri thức.
Thực tế, khai phá dữ liệu (DM) chỉ là một bước trong khai phá tri thức (KDD).
Như chỉ ra trong Hình 2-1 [10] thì quá trình khai phá tri thức gồm các bước
chính như sau:
phẳng, vì vậy dữ liệu phải được dưới dạng cơ sở dữ liệu quan hệ đơn giản với một
bảng dữ liệu. Các công việc của giai đoạn này bao gồm:
1) Xử lý dữ liệu bị mất/thiếu: dữ liệu bị mất/thiếu sẽ được thay thế bởi các giá trị
phù hợp.
2) Loại bỏ trùng lặp: loại bỏ các đối tượng dữ liệu trùng lặp.
Data mining
Patterns
Evaluation and
Presentation
Knowledge
Selection and
Transformation
Cleaning and
Integration
D
ata
warehouse
Database
Flat files
19
3) Giảm nhiễu: loại bỏ nhiễu và các giá trị tách rời của phân bố chung.
4) Chuẩn hóa dữ liệu: chuẩn hóa miền giá trị của dữ liệu.
5) Rời rạc hóa: dữ liệu dạng số được biến đổi thành dạng rời rạc.
Deploye
results or
re-iterate
20
Ø Cơ sở dữ liệu, kho dữ liệu, World Wide Web, các kiểu kho chứa thông tin
khác: là một hoặc một tập các cơ sở dữ liệu, kho dữ liệu, bảng tính, hoặc các
loại kho lưu trữ thông tin.
Ø Phục vụ cơ sở dữ liệu/Kho dữ liệu: chịu trách nhiệm lấy các dữ liệu liên quan
theo yêu cầu khai phá dữ liệu của người dùng.
Ø Cơ sở tri thức: là miền tri thức được sử dụng để giúp tìm kiếm hoặc đánh giá
mẫu kết quả. Hình 2-3: Kiến trúc điển hình hệ thống khai phá dữ liệu
Ø Thành phần khai phá dữ liệu: đây là thành phần rất quan trọng trong hệ thống
khai phá dữ liệu, bao gồm các mô-đun chức năng như phân tích các đặc trưng,
sự kết hợp, mối tương quan, phân lớp, dự báo, phân cụm, phân tích tiến hóa.
Ø Đánh giá mẫu khai phá được: không phải bất cứ mẫu khai phá nào cũng hữu
ích. Do đó cần phải đánh giá các mẫu khai phá được để đa ra tri thức cần thiết.
Giao di
ệ
n ngư
ờ
i dùng
Đánh giá m
ẫ
u khai phá đư
ợ
c
Cơ s
ởtri thức
Cơ s
ởdữ liệu
Kho
dữ liệu
World Wide
Web
Các ki
ể
u kho ch
ứ
a
thông tin khác
Làm s
ạ
ch
, tích h
ợ
p và ch
ọ
n l
ự
liệu vào lĩnh vực đầu tư tài chính với bài toán cụ thể là dự báo chứng khoán từ tập
dữ liệu giao dịch trong lịch sử.
Để khai phá dữ liệu từ tập dữ liệu chuỗi thời gian chúng ta cần có các kỹ thuật
học máy tiên tiến. Học máy (Machine Learning) là một lĩnh vực của trí tuệ nhân tạo
liên quan đến việc phát triển các kĩ thuật cho phép các máy tính có thể "học". Hay
nói cách khác, học máy là một phương pháp phân tích các tập dữ liệu. Học máy có
tính ứng dụng rất cao bao gồm máy truy tìm dữ liệu, chẩn đoán y khoa, phát hiện thẻ
tín dụng giả, phân loại các chuỗi DNA, nhận dạng tiếng nói và chữ viết, dịch tự
động, chơi trò chơi và cử động rô-bốt (robot locomotion)… Phân tích thị trường
chứng khoán cũng là một lĩnh vực nghiên cứu khá hấp dẫn được nhiều nhà khoa học
tập trung nghiên cứu. Hiện nay, có nhiều giải thuật được áp dụng trong học máy như:
22
cây quyết định, giải thuật di truyền, mạng nơron nhân tạo, máy véctơ hỗ trợ, mạng
Bayesian, mạng Markov….Trong luận văn này chúng ta sẽ ứng dụng hai phương
pháp học máy tiên tiến là mạng nơron nhân tạo và máy véctơ hỗ trợ.
2.2. Mô hình mạng nơron nhân tạo
Nghiên cứu và mô phỏng trí não, cụ thể là tế bào thần kinh (nơron) là ước
muốn từ lâu của nhân loại. Từ mơ ước đó, các nhà khoa học đã không ngừng nghiên
cứu và tìm hiểu về mạng nơron. Với khoảng 15 tỷ nơron của não người, mỗi nơron
có thể nhận hàng vạn tín hiệu từ các khớp thần kinh và được coi là một cơ chế sinh
vật phức tạp nhất. Não người có khả năng giải quyết những vấn đề như: nghe, nhìn,
nói, hồi ức thông tin, phân biệt các mẫu mặc dù sự kiện có bị méo mó, thiếu hụt…
Não thực hiện những nhiệm vụ như vậy nhờ các phần tử tính toán là nơron. Não
phân bố việc xử lý cho hàng tỷ nơron có liên quan, điều khiển các mối liên hệ giữa
các nơron đó. Nơron không ngừng nhận và truyền thông tin lẫn nhau. Các nơron tự
liên kết với nhau thành mạng trong xử lý. Mỗi mạng gồm hàng vạn các phần tử
nơron khác nhau. Mỗi phần tử nơron có khả năng liên kết với hàng nghìn các nơron
khác. Lý thuyết về mạng nơron đã hình thành từ những năm 40 của thế kỷ trước và
đang phát triển, đặc biệt là nghiên cứu ứng dụng chúng.
Mô hình mạng nơron nhân tạo (ANN - Artificial Neural Network) bắt chước
HiddenDữ liệu Mô hình mạng nơron Mẫu chiết xuất được
24
Hình 2-6: Mẫu kết quả với kỹ thuật mạng nơron
Đặc điểm của mạng nơron là không cần gia công dữ liệu nhiều trước khi bắt
đầu quá trình học như các phương pháp khác. Tuy nhiên, để có thể sử dụng mạng
nơron có hiệu quả cũng cần phải xác định các yếu tố khi thiết kế mạng như:
- Mô hình mạng là gì?
- Mạng cần có bao nhiêu nút?
- Khi nào việc học dừng để tránh “học quá”?
-
Ngoài ra, còn nhiều bước quan trọng cần phải làm để tiền xử lý dữ liệu trước
khi đưa vào mạng nơron để mạng có thể hiểu được (ví dụ như việc chuẩn hóa dữ
liệu, đưa tất cả tiêu chuẩn dự đoán về dạng số…).
Mạng nơron được đóng gói với những thông tin trợ giúp của các chuyên gia
đáng tin cậy và được các chuyên gia đảm bảo các mô hình này làm việc tốt. Sau khi
học, mạng có thể được coi là một chuyên gia trong lĩnh vực thông tin mà nó vừa
được học.
Các bài toán thường được áp dụng với mạng nơron là:
- Bài toán phân loại (classification): quyết định một giá trị đưa vào thuộc
loại hay nhóm nào.
- Bài toán nhận dạng mẫu (pattern recognition): nhận dạng cấu trúc trong
các dữ liệu có thể là bị nhiễu.
- Bài toán dự đoán (prediction): dự đoán giá trị dựa vào các giá trị cho trước.
- Bài toán tối ưu (optimization): tìm một tổ chức ràng buộc tốt nhất.
- Bài toán lọc nhiễu (Noise filtering): phân biệt các tín hiệu với nền, tìm ra
các thành phần không quan trọng trong một tín hiệu.
Hình 2-7: Ví dụ về phân lớp trong không gian 2 chiều với SVM
Trong ví dụ ở Hình 2-8 dưới đây: đường H1 không chia tách được 2 lớp dữ
liệu, đường H2 chia tách được 2 lớp dữ liệu với lề nhỏ, đường H3 phân tách được 2
lớp dữ liệu với lề cực đại.
x
Optimal margin
x
x
Optimal hyperplane
x
x
x
x
x
x
x
x
,
'
)
=
(
(
.
)
+
1
)
*
Radial basis function (Gaussian)
kernel
+
(
,
,
-
)
=
.
/
|
0
1
2
|
3
1
H
2
H
3
X
2
X
1