Ta có cơ sở dữ liệu (D) chứa thông tin giao dịch chứng khoán như sau: Bảng 3.1. ví dụ về dữ liệu giao dịch chứng khoán theo ngày
Ngày VN Index +/- Giá trị giao dịch (000 vnd) Trái phiếu (000 vnd) ĐTNN Mua ĐTNN Bán Tâm lý thị trường 28/12/2007 927 5 538,797,171 71,180 90,136,026 -90,981,955 27/12/2007 921 -3 576,412,315 122,200,000 196,019,380 -42,665,218 26/12/2007 924 6 539,411,147 276,822,690 90,288,738 -38,509,255 25/12/2007 918 - 12 588,682,931 45,143,520 124,976,913 -77,242,865 24/12/2007 930 -4 552,461,696 109,532,148 98,325,303 -54,034,088 21/12/2007 935 5 773,072,217 135,536,865 170,307,149 -56,576,693 20/12/2007 930 - 16 742,075,292 170,889,950 155,557,594 -26,881,918 19/12/2007 946 27 871,405,095 130,420,080 116,900,862 -231,017,369 18/12/2007 919 8 770,366,041 5,572,840 181,540,126 -54,776,892 17/12/2007 911 - 11 725,738,763 155,810 123,828,549 -55,557,871 14/12/2007 922 -8 564,981,562 250,115,500 114,465,363 -170,015,309 13/12/2007 930 - 16 648,306,032 50,296,540 122,445,026 -30,650,594
Bảng 3.2. ví dụ về dữ liệu giao dịch của từng cổ phiếu theo ngày
Ngày Mã CK Số lượng CP Giá đóng cửa SL giao dịch Tổng Giá trị Giao dịch Giá trị ĐTNN Mua Giá trịĐTNN Bán 28/12/2007 ABT 6,299,999 90 2,650 238,500 0 70,200 28/12/2007 AGF 12,859,288 83 48,910 4,030,620 2,644,000 2,255,900 28/12/2007 ALT 3,995,125 82 7,570 614,780 0 0 28/12/2007 BBC 10,770,782 100 6,890 683,195 0 1,000 28/12/2007 BBT 6,840,000 22.3 20,520 456,296 0 0 28/12/2007 BHS 16,847,727 49.5 20,850 1,040,665 0 54,540
56 28/12/2007 BMC 3,934,200 332 3,730 1,240,590 0 0 28/12/2007 BMP 14,040,580 165 7,080 1,168,100 8,250 0 28/12/2007 BPC 3,800,000 37 5,120 189,450 0 0 28/12/2007 BT6 10,997,850 59.5 21,880 1,311,340 6,050 60,500 28/12/2007 BTC 1,351,286 72 4,530 322,515 0 23,265 28/12/2007 CAN 5,000,000 26.8 4,020 108,036 0 0 28/12/2007 CII 40,000,000 64 113,640 7,199,455 2,647,890 0 28/12/2007 CLC 10,079,949 50 5,750 287,590 0 0
Để khai thác luật kết hợp mờ ta phải thực hiện nhiệm vụ chuyển đổi cơ sở
dữ liệu gốc D ban đầu sang cơ sở dữ liệu mờ Df. Sử dụng chương trình con MoHoa(D,I,T). Chương trình con này được xây dựng dựa trên Lvk là một từ mô tả
thuộc tính Iv của cơ sở dữ liệu D. Khi đó Lvk được biểu diễn bằng một hàm thuộc
µvk: dom(Iv) → [0,1] biểu diễn mức độđúng của việc sử dụng Lvkđể mô tả giá trị Iv
thuộc dom(Iv)
3.1.4. Trích rút thông tin từ bảng và mờ hóa
Ta quy định khoảng cách của các LI như sau:
VNIndex: VNIndex tăng < 5 điểm → tăng nhẹ 5<VNIndex tăng <15 điểm → tăng trung bình VNIndex tăng > 15 điểm → tăng mạnh VNIndex giảm < 5 điểm → giảm nhẹ 5<VNIndex giảm <15 điểm → giảm trung bình VNIndex giảm > 15 điểm → giảm mạnh
Từ bảng 3.1 có thuộc tính VNIndex với tập xác định trong khoảng [0,50], ta gắn cho nó với sáu tập mờ tương ứng là: VnIndex tăng nhẹ , VnIndex tăng trung bình, VnIndex tăng mạnh, VnIndex giảm nhẹ, VnIndex giảm trung bình, VnIndex giảm mạnh. Các tập mờ này sử dụng công thức hàm thuộc hình thang (2.3 ) với các hàm thuộc tương ứng là:
57
¾ VnIndex tăng nhẹ (0,1,5,6) ,
¾ VnIndex tăng trung bình (4,6,15,16)
¾ VnIndex tăng mạnh (14,15,49,50 )
Một cách tương tự như vậy với trường hợp giảm nhưng khi giảm giá tri của nó trong bảng 3.1 mang giá trị âm.
Trái phiếu
Giá trị giao dịch < 100 tỉ → mua TP ít
100 tỉ< Giá trị giao dịch < 400 tỉ→ mua TP trung bình Giá trị giao dịch > 400 tỉ → mua TP nhiều
Tương tự như chỉ số VnIndex được sử dụng ở trên với dữ liệu lấy từ bảng 3.1, với tập xác định của thuộc tính giá trị giao dịch ( đơn vị nghìn đồng ) xác định trong khoảng [0,+∞) , ta gắn cho nó ba tập mờ tương tứng là : mua trái phiếu ít, mua trái phiếu trung bình, mua trái phiếu nhiều . Với các hàm thuộc tương ứng là (đơn vị
nghìn đồng ):
¾ (0,10000000,100000000,110000000),
¾ (90000000,100000000,400000000,410000000)
¾ (390000000,400000000,900000000,1000000000)
Giá trị giao dịch:
Giá trị giao dịch < 500 tỉ → giao dịch thấp
500 tỉ< Giá trị giao dịch < 1000 tỉ→ giao dịch trung bình Giá trị giao dịch > 1000 tỉ → giao dịch lớn
Phân tích tương tự như VnIndex và Trái phiếu, ta cũng có các tập mờ giá trị giao dịch là : Giá trị giao dịch thấp, giá trị giao dịch trung bình, giá trị giao dịch lớn
Với các hàm thuộc tương ứng là (đơn vị nghìn đồng ):
58
¾ (490000000,500000000,990000000,1000000000)
¾ (990000000,1000000000,2000000000,2100000000 );
Giá trị giao dịch của nhà đầu tư nước ngoài:
Nhà đầu tư nước ngoài mua< 300 tỉ→ NN mua ít
300 tỉ < Nhà đầu tư nước ngoài mua< 800 tỉ→ NN mua trung bình Nhà đầu tư nước ngoài mua> 800 tỉ→ NN mua nhiều
Nhà đầu tư nước ngoài bán < 150 tỉ→ NN bán ít
150 tỉ < Nhà đầu tư nước ngoài bán < 300 tỉ→ NN bán trung bình Nhà đầu tư nước ngoài bán> 300 tỉ→ NN bán nhiều
Với giao dịch của nhà đầu tư nước ngoài có hai trạng thái là mua và bán. Ta chia nó thành các tập mờ : nhà đầu tư nước ngoài mua ít, nhà đầu tư nước ngoài mua trung bình, nhà đầu tư nước ngoài mua nhiều. Với các hàm thuộc tương ứng là:
¾ (0,10000000,300000000,310000000);
¾ (290000000,310000000,800000000,810000000);
¾ (790000000,800000000,2000000000,2100000000 );
Tương tự như vậy ta có các tập mờ tương tứng với trạng thái bán: nhà đầu tư nước ngoài bán ít , nhà đầu tư nước ngoài bán trung bình, nhà đầu tư nước ngoài bán nhiều. Với các hàm thuộc tương ứng là :
¾ (0,10000000,150000000,160000000);
¾ (140000000,150000000,290000000,300000000);
¾ (290000000,300000000,1000000000,1100000000)
Yếu tố tâm lý:
1: yếu tố tâm lý thị trường tốt
0: Yếu tố tâm lý thị trường không tốt
- Dùng chương trình con TaoF1 tạo tập tất cả các tập phổ biến có 1 phần tử, các tập thuộc tính phổ biến này có độ hỗ trợ lớn hơn hoặc bằng σ
59
- Dùng chương trình con Tao_F_k thực hiện kết nối cặp các thuộc tính mờ từ
tập các thuộc tính phổ biến Fk-1 để sinh ra tập các thuộc tính mờ ứng cử
viên
- Dùng chương trình con TimLuat sinh ra luật kết hợp mờ tin cậy từ các tập phổ biến
3.1.5. Xây dựng công thức tính toán chỉ số
Lí do xây dựng công thức, vì thực tế nhà đầu tư có thể không quan tâm hết tất cả các loại cổ phiếu có trên sàn giao dịch. Vì vậy họ chỉ quan tâm tới những loại cổ phiếu họ chọn. Bài toán đặt ra là tính toán chỉ số cổ phiếu đó, đánh giá với chuỗi dữ liệu đầu vào, độ hỗ trợ và độ tin cậy thì trả về cho người dùng các đánh giá từ cơ sở dữ liệu luật.
Chỉ số chứng khoán do nhà đầu tư tự xây dựng được tính toán theo công thức sau:
(3.1) Trong đó:
Qhi: số lượng cổ phiếu loại i được chọn Phi: giá cổ phiếu loại i được chọn
Qgi: số lượng cổ phiếu loại I tại thời điểm gốc Pgi: giá cổ phiếu loại I tại thời điểm gốc
- Sau khi đã tính được chỉ số CustomIndex, sử dụng phương pháp trích rút theo luật như trong mục 3.1.4 đểđưa ra các luật đối với chỉ số CustomIndex
3. 2 Cài đặt và thử nghiệm
Với bài toán chứng khoán, chúng ta áp dụng thuật toán khai phát luật kết hợp mờ như đã trình bầy ở nội dung chương 2.
3.2.1 Các bước xây dựng chương trình Qhi x Phi Qhi x Phi
Custom-Index= --- x 100 Qgi x Pgi
60
Hình 3.2 : Các bước tiến hành khai phá dữ liệu chứng khoán
Để thực hiện khai phá dữ liệu như hình 3.2 gồm các bước chính
Đầu tiên là chọn nguồn dữ liệu cần khai phá là dữ liệu chi tiết của giao dịch chứng khoán theo ngày và giao dịch cổ phiếu theo ngày như dữ liệu demo ở bảng 3.1 và 3.2.
9 Xây dựng hệ mờ bao gồm tập các tập mờ và hàm thuộc hình thang để ánh xạ
dữ liệu ban đầu sang dữ liệu mờ , chọn lọc các thuộc tính cần thiết , mỗi thuộc tính gắn với các hàm thuộc tương ứng.
9 Tiến hành mờ hóa số liệu để chuyển số liệu gốc sang số liệu mờ
9 Tiến hành khai phá số liệu mờ : Ta chọn độ hỗ trợ ( support ) và độ tin cậy (confidence ) để tìm luật kết hợp thỏa mãn điều kiện. Kết quả có thể khác nhau tùy theo các tham số được chọn.
Giao dịch chứng khoán theo ngày
G.dịch từng cổ
phiếu theo ngày
CƠ SỞ DỮ LIỆU BAN ĐẦU D ( CƠ SỞ DỮ LIỆU GÔC) Tập các tập mờ và hàm thuộc Tiến hành mờ hóa dữ liệu CƠ SỞ DỮ LIỆU MỜ ( DF ) TẬP TRI THỨC ĐÃ BIẾT KHAI THÁC DỮ LIỆU ( DF) CÁC LUẬT KẾT HỢP MỜ
61
9 Chương trình được thực hiện với bộ dữ liệu là file excel là thông tin giao dịch chứng khoán và cổ phiếu theo từng ngày lên tới hàng trăm bản ghi với nhiều thuộc tính đặc trưng của bài toán chứng khoán.
Hình 3.3 : Trang thông tin chứng khoán
3.2.2. Các chức năng của chương trình 3.2.2.1 Chức năng Fuzzy Database: 3.2.2.1 Chức năng Fuzzy Database:
62
Hình 3.4 : Giao diện chính chương trình
Khi chức năng này được kích hoạt chương trình sẽ đọc dữ liệu đầu vào là file dulieuchitiet.xls , thực hiện mờ hóa cơ sở dữ liệu bằng hàm thuộc hình thang
Hình 3.5 Mờ hóa database phần VnIndex
3.2.2.2 Chức năng Find Association Rules
Thực hiện tìm luật kết hợp mờ trên cơ sở dữ liệu đã được mờ hoá . Tại đây người dùng sẽ nhập vào hai thông số đặc trưng là độ hỗ trợ ( support) và độ tin cậy ( confidence ), sau đó chương trình sẽ tiến hành tìm kiếm các luật thỏa mãn trong cơ sơ dữ liệu đã được mờ hóa và hiện thi ra màn hình những luật thỏa mãn đó: Ví dụ : nhập Confidence= 0.2 (20%) và Support = 0.1 (10%) ta thu được:
63
Hình 3.6 a: Kết quả tìm luật Với độ hỗ trợ và tin cậy của từng luật tìm thấy được:
64
3.2.2.3 Chức năng calculate Index
Thực hiện tính chỉ số theo các loại chứng khoán mà người dùng đã chọn. Chức năng này dành cho người sử dụng chỉ quan tâm đến một số loại cố phiếu nhất
định. Để thực hiện chức năng này người sử dụng bấm vào nút lệnh Custom Index sẽ xuất hiện giao diện như sau:
Hình 3.7 Giao diện chức năng tính customer index
Tiếp theo người sử dụng chọn Custom và chọn các loại cổ phiếu quan tâm như:
65
Hình 3.8 Người dùng lựa chọn loại chứng khoán quan tâm
Sau đó click vào nút calculate Index để tính chỉ số Custom-Index theo công thức (3.1). Sau đó mờ hóa cơ sở dữ liệu bằng cách click vào Fuzzy Database sẽ được:
66
Hình 3.9 : Mờ hóa database theo Customer index
Cuối cùng, người sử dụng nhập vào độ tin cậy ( confidence ) và độ hỗ trợ ( support ) rồi click chức năng Find Association Rules, chương trình sẽ liệt kê những luận thỏa mãn cho người dùng như hình sau :
67
Hình 3.10 : Kết quả tìm luật của Custom Index
3.3 Cài đặt
Chương trình được cài đặt bằng ngôn ngữ lập trình Java verson 1.5. Sau khi mã chương trình được dich ra các class (byte code) thì có thể chạy trên tất cả các máy chỉ cần có cài đặt bộ JDK1.5. Để chạy chương trình tạo một tệp tin bó ( *.bat ) và chỉ cần chạy tệp tin bó này thì chương trình sẽđược chạy.
Chương trình đã cài đặt chạy với 246 bản ghi. Sau khi mờ hóa người dùng muốn tìm kiếm luật cho phần chỉ số chứng khoán chung ( VnIndex) thì bắt buộc phải nhập vào độ hỗ trợ ( support ) và độ tin cậy ( confidence ). Giả sử với support=0.1 và confidence=0.1 thì chương trình sẽ tìm kiếm được các luật:
68
Luật độ hỗ trợ độ tin cậy
Tam li thi truong tot => VnIndex giam trung binh 15% 16% Nuoc ngoai mua it => VnIndex giam trung binh 14% 18% Mua trai phieu nhieu => VnIndex giam nhe 11% 17% Gia tri giao dich thap => VnIndex giam nhe 12% 15% Nuoc ngoai mua it => VnIndex giam nhe 15% 20% Nuoc ngoai ban it => VnIndex giam nhe 14% 21% Tam li thi truong tot => VnIndex giam nhe 17% 19% Nuoc ngoai ban it va Tam li thi truong tot => VnIndex tang manh 10% 17%
Nuoc ngoai mua it va Tam li thi truong tot => VnIndex giam trung binh
12% 18%
Với độ hỗ trợ (support )=0.4 và độ tin cậy ( confidence )= 0.1 ta tìm được các luật :
Luật độ hỗ trợ độ tin cậy
Nuoc ngoai mua trung binh => VnIndex tang manh 10% 40% Nuoc ngoai mua trung binh va Tam li thi truong tot => VnIndex tang manh
10% 45%
Khi người dùng quan tâm đến nhóm cổ phiếu về : Công nghiệp ( Industry ) hoặc Tài chính ( Finance ) hoặc về sản xuất tiêu dùng ( Consumer goods) hoặc do người dùng tùy chọn. Khi ấy người dùng sẽ sử dụng chức năng 3.2.2.3 và tính toán chỉ số chứng khoán theo công thức 3.1, sau khi mờ hóa lại cơ sở dữ liệu với 2097 bản ghi, người dùng sẽ nhập vào độ hỗ trợ ( suppport ) và độ tin cậy ( confidence)
để tìm kiếm luật. Giả sử người dùng quan tâm đến cổ phiếu BBC của công ty cổ
69
Ngày Mã CK Số lCP ượng Giá cửđóng a SL giao dịch TGiao dổng Giá trịch ị Giá trMua ịĐTNN ĐTNN BánGiá trị
28/12/2007 BBC 10770782 100 6890 683195 0 1000 27/12/2007 BBC 10770782 100 4450 445000 0 0 26/12/2007 BBC 10770782 100 2160 213450 0 109000 25/12/2007 BBC 10770782 100 1810 180675 0 26000 24/12/2007 BBC 10770782 100 1220 122000 0 55000 21/12/2007 BBC 10770782 100 5520 547680 0 40000 20/12/2007 BBC 10770782 100 5050 510100 0 0 19/12/2007 BBC 10770782 100 16500 1649890 0 840000 18/12/2007 BBC 10770782 100 2900 289500 0 130000 17/12/2007 BBC 10770782 100 6320 635720 214120 235000 14/12/2007 BBC 10770782 100 8050 805000 0 485000 13/12/2007 BBC 10770782 101 4770 483970 0 0 12/12/2007 BBC 10770782 102 13700 1376005 0 131600 11/12/2007 BBC 10770782 103 10740 1093260 0 0 10/12/2007 BBC 10770782 101 8720 888460 8160 204000 07/12/2007 BBC 10770782 103 9520 975240 0 102000 06/12/2007 BBC 10770782 105 10650 1094460 0 0 05/12/2007 BBC 10770782 104 11220 1171680 0 0 04/12/2007 BBC 10770782 107 8140 870980 321000 0 03/12/2007 BBC 10770782 107 13940 1464170 0 32100
Bảng 3.3 : Giao dịch của cổ phiếu BBC trong tháng 12 với độ hỗ trợ =0.1 và độ tin cậy =0.1 ta sẽ tìm thấy các luật :
Luật độ hỗ trợ độ tin cậy
Tam li thi truong tot => CustomIndex giam nhe 32% 33% Nuoc ngoai ban it => CustomIndex giam nhe 11% 31% Nuoc ngoai ban it va Tam li thi truong tot => CustomIndex giam nhe 11% 31%
Tam li thi truong tot => CustomIndex giam nhe 32% 33% Nuoc ngoai ban trung binh => CustomIndex giam nhe 11% 67%
70
Nuoc ngoai ban trung binh va Tam li thi truong tot => CustomIndex giam
nhe 11% 67%
Tam li thi truong tot => CustomIndex tang nhe 11% 11% Cùng với đồ thị thể hiện sử thay đổi chỉ số chứng khoán của BBC:
Hình 3.11 : Đồ thị của cổ phiếu BBC trong tháng 12
71
KẾT LUẬN VÀ KIẾN NGHỊ Những vấn đềđã được giải quyết trong luận văn
Trong luận văn này đã giới thiệu phương pháp tiếp cận với luật kết hợp mờ
trong khai phá dữ liệu. Bài toán tìm luật kết hợp mờ được ứng dụng trong nhiều lĩnh vực khác nhau. Ở chương 2 và 3 của luận văn đã thực hiện cài đặt thuật toán tìm luật kết hợp mờ và áp dụng vào bài toán chứng khoán. Chương trình đã đưa ra
được các luật cùng với độ hỗ trợ và độ tin cậy tương ứng.
Hướng phát triển của luận văn:
Một trong những công việc quan trọng của khai phá luật kết hợp là tìm tất cả
các tập phổ biến trong cơ sở dữ liệu, nên trong thời gian tới luận văn sẽ mở rộng nghiên cứu theo hướng: áp dụng thuật toán song song cho bài toán khai phá luật kết hợp mờ.
Thuật toán song song chia đều cơ sở dữ liệu và tập ứng viên cho các bộ vi xử lý, và tập các ứng viên sau khi chia cho từng bộ xử lý là hoàn toàn độc lập với nhau, mục đích là cải thiện thời gian mờ hoá dữ liệu vàchi phí tìm luật kết hợp mờ. Tiếp tục hoàn thiện chương trình để có thểứng dụng vào trong thực tế