MỤC LỤC
PHỤ BÌA . ii
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP iii
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN .v
NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN . vi
LỜI CẢM ƠN . vii
TÓM TẮT ĐỒ ÁN viii
MỤC LỤC 1
DANH MỤC BẢNG BIỂU .3
DANH SÁCH HÌNH VẼ .4
DANH SÁCH CÔNG THỨC .5
Chương 1. TỔNG QUAN 7
1.1.Đặt vấn đề. 7
1.2. Ý nghĩa khoa học và thực tiễn. .8
1.3. Mục tiêu của nghiên cứu. 9
1.4.Bố cục 10
Chương 2. TỔNG QUAN VỀ QUẢN TRN DANH MỤC ĐẦU TƯ 11
2.1.Giới thiệu về quản trị danh mục đầu tư. .11
2.2. Nội dung quản trị danh mục đầu tư .11
2.1.1.Những giả định nền tảng 11
2.1.2.Lý thuyết danh mục Markowitz. 12
2.1.3.Các khái niệm liên quan tới lý thuyết danh mục 13
Chương 3. TỔNG QUAN VỀ THUẬT GIẢI DI TRUYỀN 20
3.1.Giới thiệu về quá trình tiến hóa tự nhiên. .20
3.2.Giới thiệu về thuật giải di truyền. 20
3.3.Các quá trình chính trong thuật giải di truyền. .21
3.3.1. Tiến trình Chọn lọc .21
3.3.2. Quá trình Lai ghép 22
3.3.3Quá trình Đột biến 23
.3.3.4. Hàm Thích nghi 23
3.3.5.Điều kiện kết thúc lặp của GAs .23
3.3.6. Thuật giải di truyền 24
Chương 4. PHƯƠNG PHÁP NGHIÊN CỨU .25
4.1.Mô tả bài toán 25
4.1.1. Xử lý dữ liệu 25
4.1.2. Phát biểu bài toán .25
4.1.3. Mã hóa bài toán. .26
4.1.4. Khởi tạo quần thể. 26
4.1.5. Hàm lượng giá. .27
4.1.6. Các tham số 27
4.2. Phân tích và thiết kế hệ thống 28
4.2.1. Use Case Diagrams 28
4.2.2. Tổ chức các gói (Packages Definitions) .30
4.2.3. Sơ đồ lớp (Class Diagrams) .32
4.2.4.Sơ đồ tuần tự (Sequence Diagrams) .38
4.2.5.Lược đồ cơ sở dữ liệu .40
Chương 5. KẾT QUẢ THỰC NGHIỆM .41
5.1. Phương pháp thực nghiệm 41
5.2. Kết quả chương trình 41
5.3. Đối chiếu thực tế 42
Chương 6. KẾT LUẬN CHUNG 45
TÀI LIỆU THAM KHẢO 47
PHỤ LỤC P1
Phụ lục A: Giới thiệu về Sàn Giao dịch Chứng khoán HOSE . P1
Phụ lục B: Khái quát về tình hình thị trường chứng khoán Việt Nam. P2
Phụ lục C: Các chứng khoán niêm yết trên sàn HOSE (đến ngày 19/11/2008) P3
47 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2649 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Ứng dụng thuật giải di truyền và lập danh mục đầu tư, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
............................. 32
Hình 4.4.Sơ đồ Lớp BusinessServices::StockArtifacts ................................................... 33
Hình 4.5.Sơ đồ Lớp BusinessServices::DataTransferObjects ........................................ 34
Hình 4.6.Sơ đồ Lớp BusinessServices::ExternalSystemInterfaces................................. 35
Hình 4.7.Sơ đồ Lớp BusinessServices::StockSystem ..................................................... 36
Hình 4.8.Sơ đồ Lớp Business::AISystem ....................................................................... 37
Hình 4.9.Sơ đồ Tuần tự của use case Choose Candidate Securities ............................... 38
Hình 4.10.Sơ đồ Tuần tự của use case Generate Efficient Porfolio ............................... 39
Hình 4.11. Lược đồ Cơ sở dữ liệu ................................................................................... 40
5
DANH SÁCH CÔNG THỨC
Công thức tính Tỷ suất sinh lợi: = + ∆ +
2.1
Công thức tính Tỷ suất sinh lợi mong đợi:
ER = . 2.2
Công thức tính Tỷ suất sinh lợi mong đợi của một Danh mục:
= . 2.3
Phương sai của Tỷ suất sinh lợi:
= [ − ]. 2.4
Độ lệch chuNn của Tỷ suất sinh lợi:
= √ 2.5.1
Độ lệch chuNn của Tỷ suất sinh lợi thực nghiệm:
= 1%&[ − ]' 2.5.2
Hiệp phương sai của những Tỷ suất sinh lợi:
()*+, = -.á 0ị 1ỳ *ọ345[+ − +][, − ,]6 = +, 2.6.1
6
Hiệp phương sai của những Tỷ suất sinh lợi thực nghiệm:
()*+, = 1%+ − +. , − ,' 2.6.2
Hệ số tương quan:
8+, = ()*+,+, 2.7
Độ lệch chuNn của một danh mục đầu tư:
= & + ()*
:
2.8
7
CHƯƠNG 1. TỔNG QUAN
1.1. Đặt vấn đề
Bên cạnh sự phát triển của thị trường tài chính nói chung, thì với tốc độ phát
triển nhanh chóng của công nghệ thông tin, con người kỳ vọng vào việc làm sao
có thể ứng dụng công nghệ thông tin vào lĩnh vực tài chính một cách hiệu quả
nhất. Đặc biệt là khai thác những giá trị tiềm Nn đằng sau những con số, những
dữ liệu phát sinh,… được thu thập trong suốt quá trình hình thành và phát triển
của nền tài chính.
“…Vào những năm cuối của 1980, phương pháp khai khoáng dữ liệu từ dữ liệu
lịch sử giao dịch nhằm rút trích ra những thông tin hữu ích được đề xướng với sự
trợ giúp của các thiết bị tính toán tiên tiến…”. (Markellos và các cộng sự, 2003)
Thuật giải Di truyền (Genetic Algorithm) là một phương pháp tối ưu để giải
quyết những bài toán tìm kiếm trên không gian lớn, dựa trên việc mô phỏng quá
trình tiến hóa sinh học trong tự nhiên. Các loài đã tồn tại và tiến hóa thông qua
quá trình đấu tranh sinh tồn khắc nghiệt. Ở mỗi thế hệ, các cá thể thực hiện các
quá trình chọn lọc, lai ghép và đột biến một cách bán ngẫu nhiên, để tạo ra
những thế hệ tiếp theo tốt hơn, nhắm tới sự thích nghi với môi trường tự nhiên.
Về mặt tài chính, quản lý danh mục đầu tư là một nghiệp vụ quan trọng trong
kinh doanh chứng khoán, là công cụ hữu hiệu để hạn chế rủi ro và tối đa hóa lợi
nhuận. Vấn đề đặt ra là làm thế nào để có thể quản lý danh mục đầu tư một cách
tối ưu?
Một thuận lợi lớn nhất trong lĩnh vực đầu tư đã và đang được thừa nhận trong
suốt những thập niên vừa qua, đó là, việc thiết lập một danh mục đầu tư tối ưu là
một vấn đề không chỉ đơn giản là sự kết hợp của nhiều chứng khoán riêng lẻ mà
còn có cả những đặc trưng rủi ro – tỷ suất sinh lợi mong đợi.
Chính vì vậy, đặt ra vấn đề, làm cách nào để có thể ứng dụng thuật giải di truyền
vào việc tìm kiếm một (tập hợp các) danh mục đầu tư hiệu quả, với tiêu chí đa
8
dạng hóa danh mục đầu tư, tối thiểu rủi ro và tối đa tỷ suất sinh lợi. Từ đó mở ra
những phương pháp tiếp cận mô hình dự báo trong việc quản trị danh mục năng
động.
Tựu trung lại, bài toán có thể được phát biểu như sau:
Từ một danh sách có < chứng khoán thuộc các lĩnh vực (được niêm yết
trên sàn HOSE), chúng ta cần thiết lập một danh mục đầu tư hiệu quả có = = ≤ < chứng khoán. Chúng ta cũng giả định rằng tỷ trọng giữa các
chứng khoán là như nhau. Sao cho, danh mục kết quả có độ lệch chun
(sẽ được giới thiệu trong chương 2) là nhỏ nhất hoặc thỏa mãn yêu cầu
của nhà đầu tư.
1.2. Ý nghĩa khoa học và thực tiễn
Chúng ta cũng đều biết rằng, mỗi loại tài sản thường mang một độ rủi ro – tỷ
suất sinh lợi khác nhau, và khi được kết hợp lại, danh mục kết quả sẽ mang một
độ rủi ro mới. Dĩ nhiên, nếu một danh mục đầu tư chỉ bao gồm một loại chứng
khoán duy nhất, công việc quản trị danh mục đầu tư sẽ trở nên vô cùng đơn
giản.
Tuy nhiên, “không để chung trứng trong một giỏ” - một nguyên tắc khá nổi
tiếng trong tài chính nói chung, và trong quản lý danh mục đầu tư nói riêng, nó
có nghĩa rằng, phải thực hiện việc đa dạng hóa trong cơ cấu một danh mục đầu
tư. Nói cách khác, một danh mục đầu tư nên kết hợp nhiều loại tài sản (cổ
phiếu, trái phiếu, tài sản cố định…) với những độ rủi ro và tỷ trọng khác nhau.
Do đó, điều mà chúng ta thực sự và cần hướng đến, là một sự kết hợp giữa
nhiều loại tài sản với những rủi ro – tỷ suất sinh lợi khác nhau, sao cho, độ rủi
ro – tỷ suất sinh lợi của danh mục thỏa mãn yêu cầu của nhà đầu tư.
Với một danh sách gồm 3 chứng khoán, chúng ta có tới 2 − 1 sự kết hợp
(không kể trường hợp một kết hợp không có phần tử nào). Do đó, việc tìm kiếm
một sự kết hợp tối ưu (danh mục đầu tư hiệu quả) từ một danh sách có tới hàng
9
trăm các tài sản (chứng khoán) trở nên khó khăn đối với mỗi nhà đầu tư. Chẳng
hạn, với một danh sách có 3 tài sản A, B, C. Chúng ta có 2? − 1 = 7 sự kết
hợp. Đó là: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Dĩ nhiên chúng
ta sẽ không cần tính tới {∅6, một danh mục không có loại tài sản nào. Chính vì
vậy, hãy tưởng tượng một danh sách gồm 100 tài sản, đồng nghĩa với có 2AA − 1 danh mục có thể được tạo ra. Xem ra việc tìm kiếm một danh mục
đầu tư hiệu quả trở nên khó khăn, nếu như không muốn nói là bất khả thi đối
với những nhà đầu tư.
Đó là chúng ta còn chưa kể tới việc ước lượng mức độ rủi ro của mỗi loại tài
sản, vốn là một công việc quan trọng không kém, và được thực hiện trước khi
tìm một sự kết hợp từ các tài sản rủi ro.
Chính vì vậy, việc tìm hiểu và ứng dụng thuật giải di truyền của đề tài đã mở ra
những ý tưởng, những cách thức… nhằm giải quyết bài toán kết hợp nhiều tài
sản rủi ro đã nêu ở trên, một cách hiệu quả với chi phí thời gian dễ chấp nhận.
1.3. Mục tiêu của nghiên cứu.
Bài toán mà chúng ta đặt ra và cần giải quyết đó là tìm kiếm một sự kết hợp từ
nhiều loại tài sản rủi ro khác nhau, nhằm thiết lập một danh mục đầu tư hiệu
quả, tức là có độ rủi ro phù hợp với chiến lược mua bán của mỗi nhà đầu tư.
Đây cũng chính là mục tiêu quan trọng và trước nhất của đề tài.
Bên cạnh đó, việc nghiên cứu cũng phải mở ra những cách thức, những giải
pháp… nhằm giải quyết bài toán trên một cách hiệu quả hơn, và tất nhiên, là có
thể đáp ứng nhu cầu thực tế trong lĩnh vực đầu tư chứng khoán nói riêng, và các
lĩnh vực khác nói chung.
Ngoài ra, cũng phải kể tới việc đề tài phải cung cấp các kiến thức tài chính cần
thiết như các học thuyết kinh tế, các mô hình toán kinh tế; các kiến thức trong
lĩnh vực Trí tuệ Nhân tạo, Khai khoáng Dữ liệu; cũng như khả năng ứng dụng
và triển khai của công nghệ thông tin vào các lĩnh vực đời sống.
10
1.4. Bố cục
Bố cục đồ án chia thành 6 chương. Chương 1 trình bày các vấn đề tổng quan,
tính cấp thiết và lý do hình thành đề tài, ý nghĩa khoa học và thực tiễn, cũng như
phạm vi, cấu trúc của đồ án. Chương 2 trình bày các học thuyết, lý thuyết kinh
tế cần thiết để giải quyết bài toán được đề cập trong đồ án. Chương 3 trình bày
các kỹ thuật đã đang và sẽ ứng dụng, nhằm giải quyết bài toán xây dựng danh
mục đầu tư hiệu quả, cụ thể là thuật giải di truyền. Chương 4 tập trung vào
phương pháp nghiên cứu, các cách thức giải quyết bài toán, các mô tả về mặt
công nghệ, hệ thống… Chương 5 trình bày các kết quả thực nghiệm thu được,
khi giải quyết bài toán thiết lập danh mục đầu tư hiệu quả. Cuối cùng, chương 6
sẽ nêu những kết luận chung, những kết quả đạt được, hướng phát triển của đồ
án.
11
CHƯƠNG 2. TỔNG QUAN VỀ QUẢN TRN DANH MỤC ĐẦU
TƯ
2.1. Giới thiệu về quản trị danh mục đầu tư
Trong suốt những thập niên vừa qua, một thuận lợi lớn nhất trong lĩnh vực đầu
tư đã và đang được thừa nhận rằng, việc thiết lập một danh mục đầu tư tối ưu là
một vấn đề không chỉ đơn giản là sự kết hợp của nhiều chứng khoán riêng lẻ,
mà còn có cả những đặc trưng rủi ro – tỷ suất sinh lợi mong đợi. Đặc biệt, điều
đó chỉ ra rằng, chúng ta cần phải xem xét mối quan hệ giữa những phương thức
đầu tư, nếu chúng ta đang xây dựng một danh mục tối ưu, mà danh mục đó sẽ
đáp ứng những mục tiêu đầu tư của chúng ta. Điều quan trọng là sự thừa nhận
trong việc thiết lập danh mục đã được giải thích trong lý thuyết đa dạng hóa
danh mục đầu tư.
2.2. Nội dung của quản trị danh mục đầu tư
2.2.1. Những giả định nền tảng
Trước khi trình bày lý thuyết danh mục, chúng ta cần làm rõ một vài giả
định chung của lý thuyết. Điều này không chỉ bao gồm một danh mục đầu
tư tối ưu mà còn có nghĩa là rủi ro và thái độ rủi ro.
- Một giả định cơ bản của lý thuyết danh mục đó là, một nhà đầu tư mong
muốn tối đa hóa tỷ suất sinh lợi từ việc đầu tư của mình, với mộ mức độ
rủi ro cho phép. Để giải quyết một cách thích đáng giả định này, chắc
chắn những quy tắc nền tảng phải được trình bày. Đầu tiên, danh mục
của bạn nên bao gồm tất cả những tài sản và các khoản nợ phải trả,
không chỉ đơn thuần là cổ phiếu và trái phiếu, mà còn có các khoản mục
như xe hơi, nhà cửa, và những khoản đầu tư có tính thanh khoản thấp
như: tem, đồ cổ, đồ nội thất…
12
Tuy nhiên trong phạm vi đề tài, chúng ta cũng giả định rằng, danh mục đầu
tư của chúng ta chỉ bao gồm các loại chứng khoán cổ phiếu. Tuy nhiên, cục
diện đầu tư cũng cần phải được xem xét lại vì tỷ suất sinh lợi từ hầu hết các
loại chứng khoán này tác động qua lại lẫn nhau, và mối quan hệ giữa những
tỷ suất sinh lợi đối với các tài sản trong danh mục đầu tư là rất quan trọng.
Vì một danh mục đầu tư tốt, không đơn giản chỉ là một bộ sưu tập các
khoản mục đầu tư tốt cá thể.
- Một giả định nữa của lý thuyết danh mục đầu tư, về cơ bản, những nhà
đầu tư luôn từ chối rủi ro. Bằng chứng là, hầu hết các nhà đầu tư không
thích rủi ro, thì họ luôn theo đuổi những hình thức bảo hiểm khác nhau như
bảo hiểm nhân thọ, y tế… nhằm đề phòng những biến cố không chắc chắn
trong tương lai. Và dĩ nhiên, sự lựa chọn giữa hai cổ phiếu có cùng tỷ suất
sinh lợi, nhà đầu tư sẽ chọn tài sản có mức rủi ro thấp hơn. Tuy nhiên, điều
này không ám chỉ rằng mọi người đều từ chối rủi ro. Sự thật là không ai
mua bảo hiểm cho tất cả mọi thứ xung quanh cả. Thậm chí, có người còn
không mua bất kỳ loại bảo hiểm nào, đó có thể là một sự lựa chọn, hoặc là
họ không có khả năng theo đuổi nó. Thêm nữa, một số cá nhân, bên cạnh
việc mua các loại bảo hiểm như tai nạn ô tô, bênh tật… họ đồng thời cũng
mua vé số, đánh bạc… vốn được biết đến như những khoản sinh lợi tiêu
cực. Điều này đồng nghĩa với việc luôn tồn tại những cá nhân sẵn lòng chấp
nhận rủi ro.
Trong khi có nhiều thái độ ứng xử khác nhau về rủi ro, thì giả định cơ bản
của chúng ta cho rằng, hầu hết các nhà đầu tư đều chuyển một khoản tiền
lớn để phát triển danh mục đầu tư mà vẫn từ chối rủi ro. Vì vậy, chúng ta
mong đợi một mối quan hệ đồng thuận giữa tỷ suất sinh lợi mong đợi và rủi
ro mong đợi. Đặc biệt, đây cũng là điều mà nhìn chung, chúng ta luôn tìm
kiếm trong tương lai.
2.2.2. Lý thuyết danh mục Markowitz
13
Vào đầu những năm 1960, những nhà đầu tư đã nói về rủi ro, nhưng không
có những ước lượng cụ thể cho từng khoản mục. Tuy nhiên, để xây dựng
một mô hình danh mục đầu tư, các nhà đầu tư phải xác định lượng rủi ro có
thể có. Mô hình danh mục đầu tư cơ bản được Harry Markowitz phát triển.
Ông là người đoạt giải Nobel kinh tế sau khi phát minh ra thuyết danh mục
hiện đại năm 1952. Học thuyết này nhấn mạnh tầm quan trọng của danh
mục đầu tư, các rủi ro và sự tương quan giữa các cổ phiếu với việc đa dạng
hóa danh mục đầu tư.
Điều này đã thay đổi cách thức mà các nhà đầu tư đang thực hiện. Cụ thể,
Markowitz đã phát hiện, tỷ suất sinh lợi mong đợi đối với một danh mục
của các tài sản, và một ước lượng rủi ro mong đợi. Markowitz chỉ ra rằng,
phương sai của tỷ suất sinh lợi là một ước lượng có ý nghĩa của rủi ro danh
mục với một tập hợp những giả định, và ông đã tìm ra công thức để tính
toán phương sai của danh mục. Công thức tính toán phương sai danh mục
này, đã chỉ ra sự quan trọng của việc đa dạng hóa đầu tư để giảm thiểu rủi
ro tổng thể và cũng chỉ ra cách đa dạng hóa đầu tư hiệu quả.
2.2.3. Các khái niệm liên quan tới lý thuyết danh mục
2.2.3.1. Tỷ suất lợi nhuận (Rate of Return)
Chúng ta định nghĩa tỷ suất sinh lợi qua một thời kỳ t, với thời gian là ∆, sẽ là tỷ suất sinh lợi được thực hiện từ thời điểm t đến thời điểm + ∆. Nếu giá của chứng khoán ở thời điểm t là P(t) , ở thời
điểm + ∆ là P( + ∆, và thu nhập của chứng khoán trong suốt
thời kỳ là d(t). Vậy tổng tỷ suất sinh lợi của chứng khoán sẽ là:
= + ∆ +
2.1
Do đó tỷ lệ sinh lợi của chứng khoán sẽ là 00 = − 1
Ví dụ: Giá đóng cửa của cổ phiếu A tháng 10/2008 là 40$ và tháng
11/2008 là 50$. Chi phí phải trả cho giao dịch là 4$ khi mua và bán cổ
14
phiếu, cổ tức nhận được là 2$. Vậy tổng tỷ suất sinh lợi của chứng
khoán sẽ là:
= 50$ + 2$ − 4$40$ = 1,2 *à 00 = 0,2 = 20%
2.2.3.2. Tỷ suất lợi nhuận mong đợi (Expected Rate of Return)
Tỷ suất lợi nhuận mong đợi đối với một tài sản được tính như trong
bảng 2.1. Tỷ suất sinh lợi mong đợi đối với một tài sản rủi ro cụ thể
với tập hợp tỷ suất sinh lợi tiềm năng, và một giả định các khả năng
xảy ra các mức tỷ suất sinh lợi dự kiến.
Bảng 2.1. Ví dụ về cách tính tỷ suất mong đợi
Khả năng Tỷ suất sinh lợi (%) Tỷ suất sinh lợi mong đợi
0,20 8,0 1,60
0,30 10,0 3,00
0,20 12,0 2,40
0,30 14,0 4,20
E(R)= 11,20
Tỷ suất sinh lợi mong đợi của tài sản rủi ro:
ER = . 2.2
Trong đó:
- Rj là tỷ suất sinh lợi của tài sản rủi ro trong tình huống j.
15
- Pj là khả năng xảy ra mức tỷ suất sinh lợi Rj
Tỷ suất sinh lợi mong đợi đối với một danh mục của những khoản đầu
tư, đơn giản là giá trị trung bình theo tỷ trọng của tỷ suất sinh lợi mong
đợi đối với những khoản đầu tư cụ thể trong danh mục. Tỷ trọng này là
sự cân đối tổng giá trị đối với các khoản đầu tư.
Tỷ suất sinh lợi mong đợi đối với một danh mục đầu tư được tính theo
công thức sau:
= . 2.3
Trong đó:
- wi : Tỷ trọng đầu tư tài sản i trong danh mục.
- E(Ri): Tỷ suất sinh lợi mong đợi của tài sản i.
2.2.3.3. Phương sai (độ lệch chuNn) của tỷ suất sinh lợi đối với một
khoản đầu tư cụ thể (Variance or Standard Deviation).
Phương sai hay độ lệch chuNn, là một phương pháp ước lượng chênh
lệch của những mức tỷ suất sinh lợi có thể có Ri, so với tỷ suất sinh lợi
mong đợi [E(Ri)] sau đây.
Phương sai: = [ − ]. 2.4
Trong đó:
- pi là khả năng xảy ra tỷ suất sinh lợi.
- Độ lệch chuNn: = √ 2.5
Tuy nhiên, khi tính toán độ lệch chuNn của các giá trị tỷ suất sinh lợi
thực nghiệm, chúng ta có thể lấy tổng bình phương các khoảng chênh
lệch và chia cho N. Với N là số mẫu thực nghiệm.
16
= 1%&[ − ]' 2.6
Việc tính toán phương sai và độ lệch chuNn của tỷ suất sinh lợi mong
đợi đối với tài sản rủi ro trong bảng 2.1 được tính lại trong
bảng 2.2.
Bảng 2.2. Tính toán Phương sai tỷ suất sinh lợi mong đợi đối với một
tài sản cụ thể.
Ri [Ri – E(Ri) {Ri – E(Ri)}2 Pi {Ri – E(Ri)}2pi
8,0 -3,20 10,24 0,20 2,048
10,0 -1,20 1,44 0,30 0,432
12,0 0,80 0,64 0,20 0,128
14,0 2,80 7,84 0,30 2,235
4,960
Khi đó = 4,960 và độ lệch chuNn = 2,227%
2.2.3.4. Hiệp phương sai của những tỷ suất sinh lợi (Covariance)
Trong phần này, chúng ta trình bày về hiệp phương sai của tỷ suất sinh
lợi được dự định để ước lượng, đưa ra công thức để tính toán nó. Phân
tích danh mục, chúng ta thường quan tâm tới hiệp phương sai của tỷ
suất sinh lợi hơn là sự thay đổi giá cả và một vài thứ khác.
Hiệp phương sai là một ước lượng để hai mức độ ưu tiên khác nhau
“tiến lại gần nhau” nhằm tạo ra một giá trị có ý nghĩa.
Một giá trị hiệp phương sai dương, có nghĩa là tỷ suất sinh lợi đối với
hai khoản đầu tư có khuynh hướng dịch chuyển về một hướng, so với
mức trung bình của chúng trong suốt một khoảng thời gian. Ngược lại,
17
một giá trị hiệp phương sai âm, chỉ ra tỷ suất sinh lợi đối với hai khoản
đầu tư có khuynh hướng dịch chuyển về hai hướng khác nhau, liên
quan đến mức trung bình vào từng thời điểm cụ thể trong một khoảng
thời gian. Độ lớn của hiệp phương sai phụ thuộc vào phương sai của
những chuỗi tỷ suất sinh lợi cụ thể, cũng như mối quan hệ giữa những
chuỗi tỷ suất sinh lợi.
Đối với hai tài sản A và B, hiệp phương sai của tỷ suất sinh lợi được
định nghĩa là:
()*+, = -.á 0ị 1ỳ *ọ345[+ − +][, − ,]6 = +, 2.6.1
Trong trường hợp tỷ suất sinh lợi của hai tài sản A và B được tính dự
vào thực nghiệm thì hiệp phương sai của chúng được xác định như sau:
()*+, = 1%+ − +. , − ,' 2.6.2
2.2.3.5. Hệ số tương quan của những tỷ suất sinh lợi (Corelation)
Hiệp phương sai bị ảnh hưởng bởi biến thiên của hai chuỗi tỷ suất sinh
lợi riêng lẻ. Vì vậy, một con số hiệp phương sai chỉ có thể nhấn mạnh
một mối quan hệ mờ nhạt, nếu hai chuỗi tỷ suất sinh lợi riêng lẻ không
ổn định nhưng lại phản ánh mối quan hệ bền vững nếu hai chuỗi này
rất ổn định. Hiển nhiên, chúng ta muốn “chuNn hóa” ước lượng hiệp
phương sai này để đưa vào xem xét tính biến thiên của hai chuỗi tỷ
suất sinh lợi riêng lẻ như công thức sau:
8+, = ()*+,+, 2.7
Trong đó:
- 8+, : Hệ số tương quan của những tỷ suất sinh lợi.
- + : Độ lệch chuNn của RiA
18
-
, : Độ lệch chuNn của RiB
Như vậy hệ số tương quan là sự “chuNn hóa” ước lượng hiệp phương
sai. Bằng cách chuNn hóa hiệp phương sai bởi những độ lệch chuNn
riêng lẻ sẽ mang lại hệ số tương quan 8+,), hệ số tương quan này chỉ
có thể thay đổi trong khoảng từ -1 đến +1. Giá trị +1 có thể nhấn mạnh
mối quan hệ tuyến tính xác định giữa RA và RB, nghĩa là, tỷ suất sinh
lợi đối với hai cổ phiếu cùng thay đổi trong một kiểu tuyến tính xác
định hoàn toàn. Giá trị -1 có thể nhấn mạnh mối quan hệ phủ định hoàn
toàn giữa hai chuỗi tỷ suất sinh lợi, như khi tỷ suất sinh lợi của một cổ
phiếu cao hơn mức trung bình, tỷ suất sinh lợi của những cổ phiếu
khác sẽ thấp hơn mức trung bình bằng một số lượng lớn.
Để tính toán ước lượng chuNn này, cần tính toán được độ lệch chuNn
đối với hai chuỗi tỷ suất riêng lẻ. Chúng ta đã có những giá trị RiA -
E(RA) và RiB – E(RB).
2.2.3.6. Độ lệch chuNn của một danh mục đầu tư
Như đã biết, một tương quan +1,0 có thể nhấn mạnh tương quan xác
định hoàn toàn, và một giá trị -1,0 có nghĩa là tỷ suất sinh lợi đã thay
đổi theo hướng hoàn toàn ngược lại. Một giá trị 0 có nghĩa là tỷ suất
sinh lợi không có mối quan hệ tuyến tính – tương quan độc lập, qua
thống kê chúng không có tương quan với nhau. Nhưng không có nghĩa
là chúng độc lập với nhau. Một giá trị như 8+, = 0,108 là rất thấp.
Liên quan đến hệ số tương quan thấp này không khác thường đối với
những cổ phiếu trong những ngành khác nhau (ngành giải khát và
ngành xây dựng). Sự tương quan giữa những cổ phiếu của những công
ty trong phạm vi một vài ngành gần bằng 0,85.
Bây giờ, chúng ta thảo luận về các khái niệm của hiệp phương sai và
hệ số tương quan, chúng ta có thể xem công thức tính toán độ lệch
chuNn của tỷ suất sinh lợi đối với một danh mục những tài sản, phương
19
pháp ước lượng rủi ro của chúng ta đối với một danh mục. Như đã
được ghi nhận, Harry Markowitz tìm thấy công thức để tính toán độ
lệch chuNn của danh mục đầu tư.
= & + ()*
:
2.8
Trong đó:
- : Độ lệch chuNn của danh mục đầu tư.
- wi : Tỷ trọng đầu tư của tài sản riêng lẻ trong danh mục, tỷ trọng này
được xác định bởi tỷ lệ của giá trị trong danh mục đầu tư.
- σQ : Phương sai của tỷ suất sinh lợi đối với tài sản i.
- ()* : Hiệp phương sai giữa tỷ suất sinh lợi đối với tài sản i và tài
sản j, với Covij = .
Công thức này cho thấy độ lệch chuNn của danh mục đầu tư là một
phần giá trị trung bình của những phương sai riêng lẻ (trong đó tỷ
trọng là bình phương), cộng với tỷ trọng hiệp phương sai giữa những
tài sản trong danh mục. Độ lệch chuNn đối với danh mục của những tài
sản bao gồm, không chỉ phương sai của những tài sản riêng lẻ mà còn
bao gồm hiệp phương sai giữa những cặp tài sản riêng lẻ trong danh
mục.
Công thức (2.8) chính là cơ sở để chúng ta giải quyết bài toán đã đặt ra
bằng thuật giải di truyền, sẽ được trình bày ở chương kế tiếp.
20
CHƯƠNG 3. TỔNG QUAN VỀ THUẬT GIẢI DI TRUYỀN
3.1. Giới thiệu về quá trình tiến hóa tự nhiên
Như chúng ta đều biết rằng, quá trình tiến hóa tự nhiên là quá trình hoàn hảo
nhất, hợp lý nhất và đặc biệt là, tự nó đã mang tính tối ưu. Dù rằng không được
chứng minh, song nó vô cùng phù hợp với hiện thực khách quan. Thực tế cho
thấy, quá trình tiến hóa thể hiện tính tối ưu ở chỗ, thế hệ sau bao giờ cũng tốt
hơn thế hệ trước.
Tiến hóa tự nhiên được duy trì nhờ hai quá trình cơ bản: sinh sản và chọn lọc tự
nhiên. Xuyên suốt quá trình này, các thế hệ mới luôn được sinh ra để bổ sung và
thay thế cho thế hệ cũ. Cá thể nào phát triển hơn, thích ứng hơn đối với môi
trường sẽ tồn tại. Ngược lại, cá thể nào không thích ứng được sẽ bị đào thải.
Các cá thể mới sinh ra trong quá trình tiến hóa nhờ sự lai ghép ở thế hệ cha –
mẹ. Một cá thể mới có thể mang những tính trạng của cha – mẹ (gọi là cơ chế di
truyền), cũng có thể mang những tính trạng hoàn toàn mới (gọi là cơ chế đột
biến). Chính hai cơ chế này giữ vai trò chủ đạo trong tiến trình tiến hóa và có
mức độ quan trọng như nhau. Dù rằng, xác suất xảy ra của hiện tượng đột biến
thấp hơn rất nhiều so với hiện tượng di truyền.
3.2. Giới thiệu về thuật giải di truyền
Thuật giải di truyền (Genetic Algorithms – GAs), do John Holland (1975) và
Goldberg (1989) đề xuất và phát triển. Cũng như những thuật toán tiến hóa khác
nói chung, thuật giải di truyền dựa trên việc mô phỏng quá trình tiến hóa sinh
học. Chính vì vậy, nguyên lý hoạt động của thuật giải sử dụng các nguyên lý di
truyền về sự thích nghi và sự sống của các cá thể thích nghi nhất trong tự nhiên.
Nhìn chung, các thuật toán tiến hóa tuy có có những điểm khác biệt, song về cơ
bản, đều mô phỏng ba quá trình cơ bản: lai ghép, đột biến, và chọn lọc tự nhiên.
Tập hợp tất cả các lời giải trong không gian tìm kiếm gọi là kiểu hình. Các kiểu
hình này khi mã hóa gọi là kiểu gen. Toán tử di truyền sẽ được thực thi trên đối
21
tượng này. Một ánh xạ từ kiểu hình sang kiểu gen gọi là quá trình mã hóa. Mỗi
cá thể trong kiểu gen có nhiều nhiễm sắc thể. Trong mỗi nhiễm sắc thể có chứa
nhiều gen. Mỗi đặc trưng di truyền cụ thể được quy định bởi giá trị và vị trí của
gen trong nhiễm sắc thể. Độ thích nghi là thước đo khả năng sống sót và phát
triển của cá thể trong môi trường.
Toán tử xác định cá thể trong thế hệ hiện tại được giữ lại trong thế hệ tiếp theo,
được gọi là chọn lọc. Toán tử kết hợp ngẫu nhiên hai cá thể được chọn là lai
ghép. Toán tử thay đổi ngẫu nhiên cấu trúc cá thể, tức làm thay đổi giá trị của
gen gọi là đột biến.
3.3. Các quá trình chính trong thuật giải di truyền
3.3.1. Tiến trình Chọn lọc
Đối với tiến trình chọn lọc (chọn quần thể mới thỏa phân bố xác suất dựa
trên các độ thích nghi), ta dùng bánh xe Ru-lét với các rãnh được định kích
thước theo độ thích nghi. Bánh xe Ru-lét được xây dựng như sau:
- Tính độ thích nghi R*ST* của mỗi nhiễm sắc thể *. = 1…)_W.XR
với pop_size là kích thước quần thể.
- Tính tổng giá trị thích nghi toàn quần thể:
Y = R*ST*Z_[\] 3.1
- Tính xác suất chọn pQ cho mỗi nhiễm sắc thể vQi = 1…pop_size:
= R*ST*Y 3.2
- Tính vị trí xác xuất qQ của mỗi nhiễm sắc thể vQi = 1…pop_size
d = 3.3
22
Tiến trình chọn lọc được thực hiện bằng cách quay bánh xe Ru-lét pop_size
lần; mỗi lần chọn một nhiễm sắc thể từ quần thể hiện hành vào quần thể
mới theo cách sau:
- Phát sinh ngẫu nhiên một số r trong đoạn [0..1]
- Nếu r < qQ thì chọn nhiễm sắc thể đầu tiên vQ; ngược lại thì chọn nhiễm
sắc thể thứ i là vQ 2 ≤ i ≤ pop_size sao cho qQ: < 0 ≤ qQ
3.3.2. Quá trình Lai ghép
Phép lai là quá trình hình thành nhiễm sắc thể mới, trên cơ sở các nhiễm sắc
thể cha – mẹ, bằng cách ghép một hay nhiều đoạn gen của hai (hay nhiều)
nhiễm sắc thể cha – mẹ với nhau. Phép lai xảy ra với xác xuất pc, có 3 dạng
lai ghép cơ bản: lai một vị trí (lai đơn), lai nhiều vị trí (lai bội) và lai đều.
Đồ án chỉ trình bày kiểu lai đơn. Quá trình lai đơn có thể mô phỏng như
sau:
Đối với mỗi nhiễm sắc thể trong quần thể:
- Phát sinh một số ngẫu nhiên r trong đoạn [0,1].
- Nếu r < pg thì chọn nhiễm sắc thể đó để lai ghép.
Bây giờ, ta ghép đôi các nhiễm sắc thể đã được chọn một cách ngẫu nhiên:
đối với mỗi cặp nhiễm sắc thể được ghép đôi, ta phát sinh ngẫu nhiên một
số )W trong đoạn [1,h − 1] với h là chiều dài của mỗi nhiễm sắc thể. Số )W cho biết vị trí của điểm lai. Hai nhiễm sắc thể:
ii…iZ[iZ[j…ik*à ll…lZ[lZ[j…lk
sẽ được thay bằng cặp con của nó là
ii…iZ[lZ[j…lk *à ll…lZ[iZ[j…ik.
23
3.3.3. Quá trình Đột biến
Đột biến là hiện tượng cá thể con mang một (số) tính trạng không có trong
mã di truyền của cha – mẹ. Phép đột biến xảy ra với xác suất pm, nhỏ hơn
rất nhiều so với xác suất lai pc. Phép đột biến có thể được mô phỏng như
sau:
Đối với mỗi nhiễm sắc thể trong quần thể hiện hành (nghĩa là sau khi lai) và
đối với mỗi bit trong nhiễm sắc thể:
- Phát sinh một số r trong đoạn [0,1];
- Nếu r < pm, đột biến bit đó (từ 1 thành 0 hoặc từ 0 thành 1)
3.3.4. Hàm Thích nghi
Sau quá trình chọn lọc, lai ghép và đột biến, quần thể mới cần phải được
lượng giá. Việc lượng giá này được dùng để xây dựng phân bố xác suất
(cho quá trình chọn lọc kế tiếp).
Vì hàm thích nghi phải nhận giá trị không âm, do đó phải xây dựng ánh xạ
hàm mục tiêu đang xét sang hàm thích nghi, thông qua một hay nhiều ánh
xạ. Nếu bài toán tối ưu là cực tiểu một hàm mục tiêu 4n thì việc chuyển 4n này sang hàm thích nghi on trong GAs như sau:
on = (kpq − 4n 1ℎ. 4n < (kpq; %4ượl Tạ. on = 0;
Trong đó, (kpq là tham số đầu vào. Có thể lấy (kpq là giá trị 4n lớn
nhất trong quần thể hiện tại, hoặc lớn nhất sau 1 vòng lặp.
3.3.5. Điều kiện kết thúc lặp của GAs
Để kết thúc vòng lặp GAs, thường có thể chỉ định trước số thế hệ cần tạo ra,
sau đó kiểm tra độ thích nghi những phần tử tốt nhất bằng cách so sánh với
bài toán ban đầu.
24
3.3.6. Thuật giải di truyền
Tóm lại, một thuật giải di truyền, giải một bài toán được cho phải có năm
thành phần sau:
- Một cấu trúc dữ liệu z biểu diễn không gian lời giải của bài toán.
- Phương pháp khởi tạo quần thể ban đầu 0.
- Hàm định nghĩa độ thích nghi R*ST , đóng vai trò môi trường.
- Các phép toán di truyền như đã mô phỏng ở trên.
- Các tham số thuật giải di truyền sử dụng (kích thước quần thể, xác suất lai,
đột biến…)
Thuật toán GAs có thể được biểu diễn dưới dạng lưu đồ thuật giải (xem
Hình 3.1) như sau:
Hình 3.1: Lưu đồ thuật giải di truyền
25
CHƯƠNG 4. PHƯƠNG PHÁP NGHIÊN CỨU
Trở lại với nhiệm vụ của đồ án, chúng ta sẽ sử dụng thuật giải di truyền để thiết lập
một danh mục đầu tư bao gồm các cổ phiếu hiện đang giao dịch trên sàn HOSE.
4.1. Mô tả bài toán
4.1.1. Xử lý dữ liệu
Dữ liệu được sử dụng là lịch sử giao dịch của các mã chứng khoán được
niêm yết trên sàn HOSE, gồm có 168 mã cổ phiếu các loại (xem phụ lục A).
Dữ liệu giao dịch này có khoảng 100,000 dòng dữ liệu, bắt đầu từ khi mã
chứng khoán đó được giao dịch cho tới ngày 19 tháng 11 năm 2008.
Các thông tin cần có trong file dữ liệu là Mã Chứng khoán, Ngày Giao dịch,
Giá Đóng cửa. Thông thường các file dữ liệu này được cung cấp miễn phí
trên các website
Hoặc trên các diễn đàn như
4.1.2. Phát biểu bài toán
Từ một danh sách có 3 chứng khoán thuộc các lĩnh vực, được niêm yết trên
sàn HOSE, chúng ta cần thiết lập một danh mục đầu tư hiệu quả có h h < 3 chứng khoán. Chúng ta cũng giả định tỷ trọng giữa các chứng
khoán là như nhau. Sao cho, danh mục kết quả có độ lệch chuNn (đã được
giới thiệu trong chương 2) là nhỏ nhất hoặc thỏa mãn yêu cầu của nhà đầu
tư.
Dĩ nhiên, người đầu tư mong muốn tìm được một danh mục ưng ý nhất, tuy
nhiên việc đưa ra một lời giải duy nhất trong trường hợp này sẽ không phù
hợp và thiếu sự linh động. Do đó, kết quả bài toán sẽ là một tập các danh
mục hiệu quả thỏa mãn yêu cầu về mức rủi ro mà nhà đầu tư có thể chấp
nhận.
26
4.1.3. Mã hóa bài toán
Mặc dù chúng ta chỉ cần 8 bit ( 28 = 256), là hoàn toàn có thể biểu diễn cho
tất cả các chứng khoán đang được niêm yết trên sàn HOSE, tuy nhiên, điều
này sẽ gây ra bất tiện, đó là khi có những chuỗi nhị phân không biểu diễn
cho một loại chứng khoán nào. Do vậy, chúng ta sẽ sử dụng một chuỗi nhị
phân (gồm các bit 1 và 0) có chiều dài n-bit (với n là số lượng chứng khoán
được niêm yết trên sàn HOSE) làm nhiễm sắc thể để biểu diễn một danh
mục gồm 3 mã chứng khoán đang được giao dịch trên sàn HOSE. Mỗi bit
sẽ biểu diễn cho sự xuất hiện hoặc không xuất hiện của một mã chứng
khoán. Thứ tự các các bit này (tương ứng với mỗi mã chứng khoán) được
quy định theo thứ tự bảng chữ cái.
4.1.4. Khởi tạo quần thể
Tiến trình khởi tạo quần thể khá đơn giản. Chúng ta cần tạo ra một quần thể
các nhiễm sắc thể. Trong đó mỗi nhiễm sắc thể là một vector nhị phân dài
n-bit, tất cả n-bit này đều được khởi tạo ngẫu nhiên.
Để thực hiện việc khởi tạo ngẫu nhiên này, chúng ta cần có thêm một tham
số, đó là ước lượng về số lượng chứng khoán sẽ xuất hiện trong các danh
mục kết quả. Bởi chúng ta không không mong muốn một danh mục có số
lượng cổ phiếu quá lớn, thậm chí là có tất cả các cổ phiếu hiện đang giao
dịch trên thị trường. Khi đó, sự xuất hiện của mỗi loại chứng khoán trong
danh mục sẽ phụ thuộc vào xác suất xuất hiện Z:
{ál W|ấ n|ấ ℎ.ệ3 Z = h3
Trong đó:
- h : ước lượng số lượng chứng khoán có trong danh mục kết quả.
- 3: Số lượng chứng khoán được chọn.
Khi đó, quá trình khởi tạo được mô tả như sau:
27
- Tại mỗi bit của chuỗi nhị phân của mỗi nhiễm sắc thể trong quần thể,
chúng ta phát sinh một số thực r ngẫu nhiên trong đoạn [0, 1].
- Nếu r < p} thì loại chứng khoán đó sẽ xuất hiện trong danh mục, tức là
giá trị của bit bằng 1. Ngược lại bit bằng 0, loại chứng khoán đó sẽ
không xuất hiện trong danh mục.
4.1.5. Hàm lượng giá
Chúng ta sẽ sử dụng công thức tính độ lệch chuNn của danh mục (được trình
bày trong chương 2) như một hàm mục tiêu của bài toán, tuy nhiên, mục
tiêu chúng ta là cần tối thiểu hàm này, do đó hàm thích nghi R*ST của các
vector nhị phân cần được điều chỉnh thành:
R*ST* = on = (m~ −
trong đó
= & + ()*
:
(kpq = 100
Lý do chúng ta chọn Cm~ = 100 chính là chúng ta không mong muốn một
danh mục có độ lệch chuNn quá lớn.
4.1.6. Các tham số
Một vấn đề cũng khá quan trọng trong việc giải bài toán sử dụng thuật toán
di truyền đó là việc chọn các tham số cho bài toán. Một số tham số cần lưu
ý đó là kích thước quần thể _size, xác suất lai tạo _pc, xác xuất đột biến
_pm, số thế hệ _tours. Trong bài toán, chúng ta sẽ sử dụng các giá trị mặc
định sau _size = số lượng cổ phiếu được chọn, _pc = 0.8, _pm = 0.01,
_tours = 30.
28
Một tham số cũng khá quan trọng đó là _po chỉ ra xác xuất xuất hiện của bit
1, tức là liên quan tới số lượng cổ phiếu trong danh mục kết quả.
Dĩ nhiên, để cho linh động và phù hợp với tài nguyên của máy, các tham số
này hoàn toàn có thể được thay đổi trong chương trình.
4.2. Phân tích và thiết kế hệ thống
4.2.1. Use Case Diagrams
Hình 4.1.Lược đồ Use Case cho hệ thống
4.2.1.1. Đặc tả UC001: Choose Candidate Securities
- Mô tả chức năng:
o Cho phép người dùng chọn danh sách chứng khoán ứng viên
có thể xuất hiện trong danh mục kết quả.
- Dòng sự kiện:
o Dòng dự kiện chính:
Hệ thống hiển thị danh sách tất cả các Chứng khoán
vào Hộp danh sách (listbox) chứng khoán.
29
Người dùng chọn một (số) chứng khoán từ Hộp danh
sách chứng khoán và đưa vào Hộp danh sách chứng
khoán được chọn.
Nhấn nút “Tiếp tục”
- Yêu cầu đặc biệt: Không
- Tình trạng trước: Không
- Tình trạng sau: Một danh sách các chứng khoán được chọn.
4.2.1.2. Đặc tả UC002: Generate Efficient Porfolio
- Mô tả chức năng:
o Cho phép người dùng thiết lập các tham số và xuất ra kết
quả là tập hợp các danh mục đầu tư hiệu quả.
- Dòng sự kiện:
o Dòng sự kiện chính:
Người dùng thiết lập (hoặc để mặc định) các tham số.
Người dùng nhấn nút “Thiết lập Danh mục”.
Hệ thống hiển thị tập hợp các danh mục hiệu quả.
Người dùng nhấn vào mỗi danh mục trong Hộp danh
sách Danh mục để xem chi tiết các chứng khoán có
trong danh mục đó.
o Dòng sự kiện phụ:
Người dùng nhấn nút “Quay lại” để trở lại phần chọn
danh sách chứng khoán.
- Điều kiện đặc biệt: Không
30
- Tình trạng trước: Một danh sách các chứng khoán đã được chọn.
- Tình trạng sau: Tập hợp các danh mục hiệu quả.
4.2.2. Tổ chức các gói (Packages Definitions)
Hình 4.2. Tổ chức các gói và sự phụ thuộc
- Applications: Tầng Applications chứa gói InvestorActivities, gói
này chứa các thành phần cần thiết để hiện thị và xử lý ở phía người
dùng.
31
- BusinessServices: Tầng Business Services gồm các gói con có thể
được sử dụng ở nhiều ứng dụng khác, các gói này chứa các thành
phần cần thiết để xử lý các thông điệp gửi đến từ phía người dùng.
o Gói StockArtifacts: Đóng gói các Lớp liên quan đến nghiệp
vụ đầu tư chứng khoán.
o Gói DataTransferObjects: Đóng gói các lớp hỗ trợ cho việc
giao tiếp (truyền tham số) giữa các tầng ứng dụng với nhau
(theo mẫu DTO Patterns)
o Gói ExternalSystemInterfaces: Đóng gói các lớp giao diện
giúp cho tầng Applications có thể triệu gọi các phương thức
từ các hệ thống con (hoặc bên ngoài) như AISystem,
StockSystem.
o Gói StockSystem: Đóng gói các lớp hiện thực các phương
thức cung cấp dữ liệu, xử lý thông điệp… chứng khoán để
cung cấp thông tin, xử lý các thông điệp liên quan tới nghiệp
vụ chứng khoán cho các ứng dụng khác.
o Gói AISystem: Đóng gói các lớp hiện thực cho những
phương thức xử lý của một hệ thống Trí tuệ nhận tạo, chẳng
hạn như đưa ra kết quả các danh mục đầu tư hiệu quả.
32
4.2.3. Sơ đồ lớp (Class Diagrams)
4.2.3.1. Sơ đồ Lớp của Applications::InvestorActivies
Hình 4.3. Sơ đồ lớp gói Applications::InvestorActivities
- Lớp ChooseCandidateSecuritiesForm: Hiển thị các thành phần
giao diện phía người dùng liên quan tới việc lựa chọn các chứng
khoán.
- Lớp GenerateEfficientPorfolioForm: Hiển thị các thành phần giao
diện phía người dùng liên quan tới việc thiết lập các tham số để tìm
kiếm các danh mục đầu tư hiệu quả.
- Lớp SecuritiesChoosingController: Thành phần xử lý các thông
điệp khi người dùng tương tác với thành phần giao diện cũng như
có khả năng tương tác với các thành phần xử lý khác hoặc hệ thống
ngoài thông qua các interfaces của hệ thống đó.
- Lớp PorfolioAdvisorController: Thành phần xử lý các thông điệp
khi người dùng tương tác với các thành phần giao diện của lớp
GenerateEfficientPorfolioForm, cũng như có khả năng tương tác
với các thành phần xử lý khác, hoặc hệ thống ngoài thông qua các
interfaces của hệ thống đó.
33
4.2.3.2. Sơ đồ Lớp của BusinessServices::StockArtifacs
Hình 4.4.Sơ đồ lớp BusinessServices::StockArtifacts
- Lớp Industry: biểu diễn thông tin của một nhóm ngành công
nghiệp theo chuNn ICB (Xem phụ lục 2)
- Lớp Company: biểu diễn thông tin của một công ty.
- Lớp Securities: biểu diễn thông tin của một loại chứng khoán cũng
như các phương thức hỗ trợ cho nghiệp vụ đầu tư chứng khoán.
- Lớp Transaction: biểu diễn thông tin của một giao dịch ứng với
một loại chứng khoán.
- Lớp Porfolio: biểu diễn thông tin của một danh mục đầu tư cũng
như định nghĩa các phương thức cần thiết.
34
4.2.3.3. Sơ đồ Lớp của BusinessServices::DataTransferObjects
Hình 4.5.Sơ đồ lớp BusinessServices::DataTransferObjects
- Lớp DTOAIParameter: Lớp chứa các thông tin các tham số hỗ trợ
việc truyền dữ liệu giữa các tầng dịch vụ (theo mẫu DTOPatterns),
các thông tin của lớp này nhằm phục vụ cho hệ thống AISystem để
giải quyết bài toán tìm kiếm danh mục đầu tư hiệu quả.
- Lớp DTOEPsParameter: Lớp chứa các thông tin về các tham số để
gửi tới hệ thống StockSystem nhằm phục vụ cho giải pháp tìm kiếm
danh mục đầu tư hiệu quả.
- Lớp DTOGAsParameter: Lớp chứa các thông tin về các tham số để
gửi tới hệ thống
35
4.2.3.4. Sơ đồ Lớp của BusinessServices::ExternalSystemInterfaces
Hình 4.6.Sơ đồ lớp BusinessServices::ExternalSystemInterfaces
- Lớp giao diện (interfaces) IAISystem: Cung cấp giao diện để các
ứng dụng có thể tương tác với hệ thống AISystem.
- Lớp giao diện IstockSystem: Cung cấp giao diện để các ứng dụng
có thể tương tác với hệ thống StockSystem.
36
4.2.3.5. Sơ đồ Lớp của BusinessServices::StockSystem
Hình 4.7.Sơ đồ lớp BusinessServices::StockSystem
- Gói StockSubSystem cung cấp các lớp hỗ trợ cho việc tương tác
(thêm, xóa, sửa, truy vấn dữ liệu) tới cơ sở dữ liệu (Database).
o Lớp DBConnector: Cung cấp các phương thức thao tác với
cơ sở dữ liệu (kết nối, thêm, xóa, sửa, truy vấn dữ liệu).
o Lớp DBSecurities: Cung cấp các phương thức thao tác với
cơ sở dữ liệu liên quan tới thông tin của các loại chứng
khoán.
o Lớp DBIndustry: Cung cấp các phương thức thao tác với cơ
sở dữ liệu liên quan tới thông tin của một lĩnh vực công
nghiệp theo chuNn ICB.
37
- Gói Proxy cung cấp các lớp hiện thực hóa các phương thức của lớp
giao diện (đã đề cập tới trong sơ đồ Lớp ExternalSystemInterfaces)
mà hệ thống cung cấp.
4.2.3.6. Sơ đồ Lớp của BusinessServices::AISystem
Hình 4.8.Sơ đồ lớp Business:AISystem
- Gói GeneticAlgorithmSubSystem: Cung cấp các lớp hỗ trợ thuật
giải di truyền.
o Lớp GeneticAlgorithm: Lớp biểu diễn cho thuật giải di
truyền.
o Lớp Generation: Lớp biểu diễn thông tin của một quần thể.
38
o Lớp Individual: Lớp biểu diễn thông tin của một cá thể
trong quần thể.
- Gói Proxy: cung cấp các lớp hiện thực các giao diện (interfaces)
mà hệ thống AISystem cung cấp.
o Lớp AISystem: hiện thực các phương thức của giao diện của
hệ thống AISystem.
4.2.4. Sơ đồ tuần tự (Sequence Diagrams)
4.2.4.1. Sơ đồ tuần tự của Applications::InvestorActivies
Hình 4.9.Sơ đồ tuần tự của use case Choose Candidate Securities
Mô tả xử lý:
- Người dùng mở form ChooseCandidateSecuritiesForm để chọn các
mã chứng khoán.
- Thành phần xử lý của giao diện SecuritiesChoosingControleler này
sẽ gọi tới hệ thống StockSystem thông qua giao diện IstockSystem
mà nó cung cấp để lấy mã của tất cả các chứng khoán.
39
o Trong quá trình này, nó cũng tạo ra các thực thể Securities
để chứa thông tin mà hệ thống StockSystem trả về.
- Người dùng chọn các lĩnh vực công nghiệp để lấy danh sách các
chứng khoán trong lĩnh vực đó.
- Thành phần xử lý của giao diện này cũng triệu gọi tới hệ thống
StockSystem thông qua giao diện IstockSystem để lấy mã của các
chứng khoán trong lĩnh vực công nghiệp đó.
Hình 4.10.Sơ đồ tuần tự của use case Generate Efficient Porfolio
Mô tả xử lý:
- Người dùng mở form GenerateEfficientPorfolioForm để thiết lập
các các thông số cho việc tìm kiếm danh mục đầu tư hiệu quả.
- Thành phần xử lý của giao diện PorfolioAdvisorController sẽ gọi
tới hệ thống AISystem thông qua giao diện IAISystem mà hệ thống
này cung cấp.
40
- Tại hệ thống AISystem, hệ thống này có phương thức gọi tới hệ
thống StockSystem thông qua giao diện IstockSystem để lấy thông
tin về các chứng khoán mà người dùng đã chọn (để xây dựng bản
đồ Gene phục vụ cho việc mã hóa và giải mã các chuỗi nhiễm sắc
thể trong thuật giải di truyền).
- Sau khi nhận được danh sách thông tin các chứng khoán từ hệ
thống StockSystem, hệ thống AISystem tiếp tục xử lý để trả về tập
các danh mục đầu tư hiệu quả.
4.2.5. Lược đồ cơ sở dữ liệu
Hình 4.11. Lược đồ cơ sở dữ liệu
Company
StockSymbol
CompanyName
CompanyWebsite
CompanySumary
SectorCode
IndustryCode
Industry
IndustryCode
IndustryName
Transaction
Ticker
Date
[Open]
High
Low
[Close]
Volume
RateOfReturn
41
CHƯƠNG 5. KẾT QUẢ THỰC NGHIỆM
Trong chương này, đề tài sẽ trình bày nội dung và kết quả thực nghiệm, cũng như đưa
ra những kết luận sau khi tiến hành chạy thử chương trình ứng dụng thuật toán di truyền
đã xây dựng.
5.1. Phương pháp thực nghiệm
Việc thực nghiệm sẽ được tiến hành đối với danh sách cổ phiếu thuộc một nhóm
ngành (trong trường hợp này là nhóm ngành Tài chính).
Do các ràng buộc về mặt kỹ thuật và các yếu tố ngoại cảnh tác động nên thực
nghiệm sẽ sử dụng các tham số có giá trị phù hợp. Các tham số mặc định mà
chương trình sẽ sử dụng đó là:
- Số lượng cổ phiếu : 5
- Sử dụng mô hình dự báo rủi ro quá khứ, từ ngày 1/1/2000 đến ngày 1/1/2008
- Độ lệch chuNn danh mục kỳ vọng: 5-10%
- Kích thước quần thể: 10
- Xác suất lai: 0.8
- Xác suất đột biến: 0.01
- Số lần lặp (số thế hệ sinh ra): 10
Dĩ nhiên, tùy vào năng lực của thiết bị hay cấu hình máy tính, cũng như nhu cầu
của người sử dụng… mà có thể chọn các tham số phù hợp.
5.2. Kết quả chương trình
Đầu tiên chọn một danh sách các chứng khoán thuộc lĩnh vực tài chính (11 loại
cổ phiếu) gồm: BMI, DIC, HDC, ITA, NTL, PVF, SSI, STB, TDH, VGP và
VIC .
42
Với các tham số mặc định, kết quả chương trình sinh ra một tập hợp các danh
mục A1, A2, A3, A4, A5 với các giá trị Độ lệch chuNn tương ứng như trong
bảng 5.1 sau đây:
Bảng 5.1. Kết quả chạy thử chương trình.
Danh Mục Cổ phiếu Độ lệch chun (%)
A1 HDC, TDH 7.14
A2 BMI, NTL, TDH 6.22
A3 BMI, TDH 6.09
A4 NTL, STB, TDH 6.2
A5 DIC, TDH, VGP 9.06
A6 BMI, HDC, NTL, TDH, VGP 9.81
5.3. Đối chiếu thực tế
Để thử kiểm tra kết quả của chương trình, ta thực hiện một cuộc giả định đầu tư
trong khoảng thời gian một tháng với số tiền là 100 triệu VNĐ (từ 02/01/2008
đến 01/02/2008) trên danh mục A6. Chúng ta giả định tỷ trọng là bình quân đối
với mỗi loại cổ phiếu. Sở dĩ ta chọn A6, đơn giản vì số lượng cổ phiếu của nó là
5, điều này cũng khá hợp lý với tiêu chí đa dạng hóa danh mục đầu tư cũng như
tham số mà chúng ta đã đặt ra từ đầu.
Bảng 5.2 (ở trang sau) là giá đóng cửa của 5 loại cổ phiếu trong danh mục A6
vào cuối phiên giao dịch ngày 02/01/2008.
43
Bảng 5.2. Bảng giá đóng cửa của các cổ phiếu trong thực nghiệm phiên giao
dịch 02/01/2008.
Mã Cổ phiếu Giá đóng cửa
BMI 77
HDC 103
NTL 144
TDH 140
VGP 46
Giả sử, chúng ta thực hiện việc đầu tư 100 triệu trên 5 loại cổ phiếu trên, tài sản
chúng ta hiện có gồm (lưu ý, số lượng mua phải theo lô 10):
Bàng 5.3. Thống kê tài sản sau khi thực hiện phiên giao dịch 02/01/2008.
Mã Cổ phiếu Số lượng Giá mua Giá trị (ngàn đồng)
BMI 260 77 20,020
HDC 190 103 19,570
NTL 140 144 20,160
TDH 140 140 19,600
VGP 430 46 19,780
Tổng giá trị CP 99, 130
Số dư tiền mặt 870
TỔNG 100,000
44
Sau một tháng, chúng ta sẽ tiến hành đánh giá cục diện đầu tư vào cuối phiên
giao dịch ngày 01/02/2008 (như trong bảng 5.4 sau đây):
Bàng 5.4. Thống kê giá trị tài sản phiên 01/02/2008
Mã Cổ phiếu Số lượng mua Giá đóng cửa Giá trị (ngàn VNĐ)
BMI 260 75 19,500
HDC 190 92 17,480
NTL 140 150 21,000
TDH 140 140 19,600
VGP 430 42 18,060
Tổng giá trị CP 95,640
Tiền mặt 870
TỔNG 96,510
Chúng ta nhận thấy rằng tài sản của chúng ta hiện tại là 96,510,000 VNĐ, tức là
giảm -3,49% so với số tiền đầu tư ban đầu. Kết quả -3.49% rõ ràng không làm
chúng ta hài lòng, song xét trên khía cạnh đầu tư thì con số -3.49% là một con
số rủi ro trong phạm vi cho phép mà nhà đầu tư có thể chấp nhận được.
Chúng ta cũng để ý rằng, giai đoạn từ đầu năm 2008, thị trường Việt Nam sau
những cơn “sốt” đang trên đà đi xuống. Vì vậy, nếu đem con số -3.49% so sánh
với sự mất giá chung của toàn thị trường (được đánh giá bằng chỉ số VNIndex)
giảm từ 921.07 xuống 859.62 điểm, tức là thay đổi -6.67%. Rõ ràng con số -
3.49% là dễ chấp nhận hơn trong bối cảnh đó. Ngoài ra, cũng phải kể đến, trong
thực tế, khi có những biến động về giá, đặc biệt là khi có dấu hiệu thua lỗ, nhà
đầu tư hoàn toàn có thể thực hiện các phương án cắt lỗ như thay đổi cơ cấu danh
mục, thay đổi tỷ trọng đầu tư… nhằm đảm bảo sự ổn định chung của toàn danh
mục.
45
CHƯƠNG 6. KẾT LUẬN CHUNG
Từ những kết quả đạt được từ chương trình, cho thấy, việc ứng dụng thuật toán di
truyền vào thiết lập danh mục đầu tư hiệu quả cho ra những kết quả khá khả quan.
Danh mục mà chúng ta thu được (trong nhiều trường hợp) thường có xu hướng bao
gồm những loại cổ phiếu blue-chips, tức là những loại cổ phiếu có mức vốn hóa lớn
trên thị trường. Điều này hoàn toàn có thể lý giải được. Cụ thể, các loại cố phiếu này
thường ít bị mất giá khi thị trường đi xuống, do đó, độ lệch chuNn của chúng thường
thấp hơn các loại cổ phiếu thường (penny stocks).
Tuy nhiên, trong trường hợp chúng ta muốn tìm kiếm những “cơ hội” từ sự kết hợp
những loại cổ phiếu thường (bởi những cổ phiếu blue-chips thường khó mua do số
dư bán thường rất thấp khi thị trường đi lên), chương trình cũng thực sự hữu ích khi
giúp chọn ra những sự kết hợp tốt nhất có thể.
Bằng lý thuyết và thực tiễn, chúng ta cũng công nhận rằng, danh mục đầu tư hiệu
quả mà chúng ta xây dựng phụ thuộc rất nhiều vào mô hình phân phối rủi ro của
mỗi tài sản trong danh mục. Chính vì vậy, việc đưa ra một sự ước lượng rủi ro cho
từng loại tài sản trong danh mục là rất quan trọng. Trong nghiên cứu này, chúng ta
đã đưa ra, và sử dụng mô hình rủi ro bằng phương pháp thống kê đơn giản. Tức là
dựa trên giá đóng cửa trong quá khứ của các loại cổ phiếu. Điều này cũng được xem
là hợp lý khi nó dựa trên một trong những giả định cơ bản của phân tích kỹ thuật,
“con người có xu hướng tái mắc sai lầm cũ” hay “quá khứ sẽ tự lặp lại”.
Chúng ta cũng thừa nhận rằng, thị trường chứng khoán Việt Nam cũng như thị
trường thế giới, luôn phụ thuộc vào rất nhiều yếu tố kinh tế, văn hóa, chính trị…
thậm chí là vào tâm lý của các nhà đầu tư. Do đó, để đưa ra một dự đoán chính xác
về mức độ rủi ro là hoàn toàn khó khăn. Đó cũng thực sự là một khó khăn không
nhỏ và đầy thử thách đối với việc ứng dụng các kỹ thuật, các mô hình dự đoán khi
triển khai vào thị trường chứng khoán.
Dĩ nhiên chúng ta hoàn toàn có thể “phó mặc” để những nhà đầu tư tự đánh giá mức
độ rủi ro cho mỗi loại tài sản tùy vào khả năng đánh giá của họ. Sau đó, sử dụng
46
chương trình để thiết lập những danh mục hiệu quả phù hợp với thái độ chấp nhận
rủi ro của mỗi cá nhân nhà đầu tư. Tuy nhiên, chúng ta kỳ vọng vào một sự mở rộng
của đề tài này, cụ thể là việc xây dựng những mô hình dự đoán rủi ro mới. Bằng
cách dựa vào chuỗi thời gian (time-series) kết hợp với các kỹ thuật Khai khoáng dữ
liệu, từ đó có thể tìm kiếm những yếu tố thông tin phản ánh vào giá của các loại cổ
phiếu tại thời điểm đó. Sau đó, sử dụng các mô hình rút trích luật như Bayes để đưa
ra những dự đoán rủi ro.
Một điểm khác biệt mà đề tài này đưa ra, đó là trong quá trình hiện thực mã chương
trình nhằm ứng dụng thuật giải di truyền, phần phân tích và thiết kế đã cố gắng đưa
ra một cấu trúc dữ liệu nói riêng, và kiến trúc hệ thống nói chung một cách khá phức
tạp hơn việc ứng dụng đơn thuần. Điều này khiến cho việc thực thi giải thuật chậm
hơn. Bù lại, việc triển khai, tái sử dụng và đăc biệt là mở rộng những thành phần đã
có đối với những trường hơp khác, thậm chí là những ứng dụng trong lĩnh vực khác
sẽ dễ dàng hơn, linh động hơn.
Ứng dụng được phát triển trên sự tìm hiểu về bài toán thiết lập danh mục đầu tư
chưa hoàn chỉnh. Mà thực sự là khó có thể hoàn chỉnh trong một thời gian ngắn, khi
mà phải mò mẫm trong khối lượng kiến thức tài chính hoàn toàn mới, nhằm tìm
kiếm những mô hình toán kinh tế, giúp giải quyết mục tiêu là ứng dụng công nghệ
thông tin vào lĩnh vực tài chính. Thực tế là, trong suốt quá trình đó, cá nhân người
thực hiện đề tài, luôn phải đối mặt với những luồng tư tưởng trái chiều từ nhiều học
thuyết kinh tế, nhiều trường phái đối lập. Và thật sự khó khăn để tìm kiếm cho mình
một mô hình đúng đắn. Đó là chưa kể vào việc đi vào vết xe đổ của nhiều tìm hiểu
và nghiên cứu trước đó.
Tuy nhiên, việc tìm hiểu về bài toán này mang lại nhiều kiến thức để tiếp cận và mở
rộng những công cụ hỗ trợ việc đầu tư hiệu quả và hoàn thiện hơn. Đặc biệt là,
hướng tới một mô hình dự đoán rủi ro đã đề cập ngay phía trên, cũng như đưa
những yếu tố thông tin vào quản lý danh mục, nhằm hướng tới một công cụ hỗ trợ
việc quản lý danh mục đầu tư năng động (Active Porfolio Management).
47
TÀI LIỆU THAM KHẢO
Tiếng Việt
[1] Lại Hải Đăng, Lưu Trường Văn, Nguyễn Tấn Bình. Thuật giải di truyền (GAs) và
ứng dụng trong quản lý xây dựng. Luận văn Tiến sĩ. Đại học Quốc gia TP.HCM.
[2] TS. Phan Thị Bích Nguyệt (2006). Đầu tư Tài chính. Nhà xuất bản Thống kê.
[3] TS. Nguyễn Văn Thuận (2003). Quản trị Tài chính. Nhà xuất bản Thống kê.
[4] TS. Nguyễn Đình Thúc (2001). Lập trình Tiến hóa. Nhà xuất bản Giáo dục.
[5]
Tiếng Anh
[6] Pegah Falinouss (2007). Stock Trend Prediction Using News Articles.Master
Thesis. Lulea University of Technology.
[7]
Các file đính kèm theo tài liệu này:
- Ứng dụng thuật giải di truyền và lập danh mục đầu tư.pdf