Thứ Sáu, 8 tháng 5, 2015

SỬ DỤNG MÔ HÌNH MẠNG THẦN KINH NHÂN TẠO VÀ CHIÊM TINH TÀI CHÍNH ĐỂ DỰ BÁO GIÁ CHỨNG KHOÁN

LTS- Trong khi mô hình Neural Network được sử dụng rất rộng rãi trong lĩnh vực tài chính trên thế giới, Việt Nam vẫn rất ít đề cập đến mô hình này. Bài viết này, giới thiệu đôi chút về ANN cho giới tài chính. Bài viết sẽ có gắng minh họa đơn giản và tối thiểu hóa sử dụng các thuật ngữ toán học.

Triển vọng của ANN trong dự báo tài chính

ANN (Artificial Neural Network- Mạng thần kinh nhân tạo) bắt chước mạng thần kinh sinh học của não người. Mạng thần kinh sinh học là một cơ chế mà thông qua đó có thể giải quyết những nhiệm vụ khó khăn, phức tạp. Đơn vị xử lý trung ương của hệ thống thần kinh  được gọi là “neuron”. Não người có khoảng 10 đến 100 tỷ neuron, mỗi neuron được liên kết với nhau bởi “synapses- điểm tiếp hợp”.  Não người có khoảng 100 nghìn tỷ điểm tiếp hợp. Những liên kết này kiểm soát cơ thể con người và quá trình suy nghĩ. Nói ngắn gọn, mô hình ANN cố gắng lặp lại quá trình học của não người. Các lý thuyết đầu tiên về ANN được nêu ra bởi những nhà nghiên cứu cố gắng giải thích hành vi của con người và quá trình suy nghĩ bằng cách mô hình hóa não người. 

Một trong những bắt chước của ANN đối với não bộ là khả năng “phân loại mẫu hình”. ANN sẽ học cách mà não bộ xử lý và phân loại các mẫu hình. Dữ liệu thị trường tài chính khi được đưa vào mô hình ANN sẽ phát hiện ra các mẫu hình hành vi có thể lặp lại trong tương lai.


Mô hình ANN được sử dụng rất mạnh mẽ trong công nghiệp và các thiết bị kiểm soát điều khiển. Nhiều quốc gia như Nhật Bản, Mỹ, Tây Âu chi hàng trăm triệu USD cho các dự án nghiên cứu ANN. NASA,  Bộ Quốc Phòng Mỹ…có những kế hoạch rất tham vọng nghiên cứu ANN.

ANN được ứng dụng rất mạnh mẽ vào tài chính trong từ những năm 1980 trở lại đây. Medsker và cộng sự (1996) liệt kê những yêu cầu phân tích tài chính mà ANN giải quyết tốt như:

-     xếp hạng tín nhiệm nợ

- Đánh giá rủi ro tài sản thế chấp.

- Dự báo kinh tế và tài chính

- Xếp hạng rủi ro của các khoản đầu tư trái phiếu.

- Phát hiện sự bất thường trong chuyển động giá chứng khoán.

- Dự báo khả năng vỡ nợ và phá sản.

Hsieh (1993) phát hiện rằng những ứng dụng tài chính doanh nghiệp có thể được cải thiện khi sử dụng với ANN chẳng hạn như:
-       Mô phỏng tài chính

- Dự báo hành vi nhà đầu tư

- Định giá.

- Chấp thuận tín nhiệm nợ.

- Quản trị danh mục tài sản

- Định giá trong IPO

- Xác định cấu trúc vốn tối ưu
Và tất nhiên, một nội dung rất quan trọng là ANN được sử dụng để dự báo giá cả trên thị trường tài chính. Ngày nay, các nhà dự báo tài chính không còn xa lạ gì với mô hình Neuro Network. ANN không còn là một khái niệm hàn lâm mà được nhiều trader trên thị trường sử dụng.

Đối với các nhà phân tính kỹ thuật, ANN là mô hình định lượng (quantum) nổi tiếng. Ngày nay, có vô số các phần mềm ứng dụng Neural Network để dự báo như Neuroshell Trader, Wave59, Timing Solutions…..Các phần mềm này sử dụng input đầu vào là giá cả và các chỉ báo kỹ thuật, thậm chí là dữ liệu chiêm tinh học để dự báo thị trường tài chính.

Có ba lý do chính là ANN trở thành mô hình được ưa chuộng hiện nay

-   ANN dễ dàng xây dựng và giải quyết rất tốt với dữ liệu có độ nhiễu lớn. Chúng đặc biệt phù hợp các vấn đề phi tuyến tính. Chúng ta biết rằng, dữ liệu tài chính là nơi có tính chất phi tuyến.

- ANN cũng chấp nhận độ nhiễu cao và tập hợp dữ liệu không hoàn chỉnh. Đây là một đặc điểm khiến ANN rất năng động. Giống như não bộ, không phải cần môt dữ liệu hoàn chỉnh, não bộ vẫn có thể phát hiện ra quy tắc ẩn chứa trong dữ liệu. 

- Việc sử dụng mô hình ANN lại rất đơn giản hơn nhiều người nghĩ. Mặc dù ANN là một cái tên “nghe rất kêu” nhưng nó lại rất tiện cho người sử dụng, đặc biệt là dân tài chính, vốn không rành về toán học. Người sử dụng không cần phải hiểu rõ các quy tắc toán học, thuật toán giống như các phương pháp định lượng khác. Mối bận tâm chính của người sử dụng là lựa chọn biến số đầu vào, xử lý nó và lựa chọn biến số đầu ra (mục tiêu dự báo). Việc xử lý dữ liệu gần như là do mô hình tự xử lý với rất ít sự can thiệp vào.

 
Tất nhiên, việc sử dụng ANN cũng có trở ngại đôi chút là đòi hỏi dữ liệu khá lớn. Đối với các thị trường tài chính phát triển điều này có thể không thành vấn đề nhưng tại các thị trường non trẻ như ở Việt Nam thì đây lại là vấn đề khá lớn. Hơn nữa, còn là vấn đề độ tin cậy của dữ liệu. Nhưng với việc xuất hiện của chiêm tinh tài chính, vấn đề này được giải quyết bởi dữ liệu khổng lồ mà các hiện tượng chiêm tinh mang lại. Kết hợp ANN với dữ liệu chiêm tinh là điều hấp dẫn mà tôi muốn nói với các bạn.

Mô hình ANN là gì?
Bộ não bao gồm hàng tỷ các đơn vị đơn giản được gọi là các neuron (xem hình 2.1) được nhóm thành một mạng lưới rộng lớn. Các nghiên cứu sinh học đề nghị rằng, các neuron thực hiện nhiệm vụ tương đối đơn giản là chuyển các xung điện (electrical impulse) sang các neuron khác thông qua một axon. Khi một neuron nhận được xung điện từ các neuron kế bên, phản ứng của nó sẽ phụ thuộc vào cường độ của xung điện nhận được và độ nhạy riêng của nó đối với các neuron mà nó nhận được. Vài neuron sẽ không phản ứng với tất cả đối với xung điện nhất định. Khi một neuron phản ứng (hoặc bị kích động), nó sẽ truyền xung điện đến các neuron khác. Độ nhạy của xung điện được tạo ra sẽ tỷ lệ với độ nhạy của xung điện nhận được. Khi các xung điện được truyền giữa các neuron, cuối cùng sẽ dẫn đến một nhóm các neuron được kích hoạt, và chính điều này đã mang lại cho chúng ta suy nghĩ hay cảm xúc.
Về cơ chế sinh học hoạt động của các neuron là như sau. Các tế bào liên kết với nhau bằng cách gửi các tín hiệu điện thông qua một axon đến các tế bào khác. Tại điểm kết thúc của một nhánh axon, được gọi là điểm kết thúc tiếp hợp (synaptic terminal), tín hiệu tạo ra những phân tử hóa học gọi là neurotransmitters, để tách khỏi axon và tạm thời gắn vào các dendrites (sợi nhánh hình gai) của tế bào khác. Những phân tử này tạo ra kích hoạt điện xuất hiện trong các dendrit và thâm nhập vào thân tế bào. Khi việc kích hoạt điện tích lũy trong thân tế nào, nó có thể trở nên lớn hơn so với một ngưỡng (threhold) nhất định và khiến cho thân tế bào tạo ra lực đẩy tín hiệu tiếp tục đi tới tế bào khác.

Khi mọi người học những kỹ năng và thông tin mới, sự thay đổi lớn xuất hiện trong não bộ là do số lượng neurotransimitter có một lực đẩy tín hiệu có thể giải phóng ra tại các synaptic terminal. Số neurotransimitter này được gọi là trọng số tiếp hợp (synaptic weight). Hầu hết các ANN cho phép khái niệm này và giả định trọng số có ảnh hưởng tuyến tính.
Neurotransmitters = Pulses (xung điện) x Weight (Trọng số)
Giá trị trọng số hợp lý của mỗi trọng số gọi là “Sự học hỏi-learned” được tạo ra trong quy trình huấn luyện. Sau khi quá trình huấn luyện kết thúc, các trọng số vẫn duy trì không đổi cho đến khi bước vào giai đoạn huấn luyện tiếp theo. Những ảnh hưởng tích lũy của nhiều tín hiệu gửi đến đối với nhiều dendrite của các neuron có thể được giải thích như sau:
 Sum= x1w1+ x2w2+ x3w3+ x4w4+…. Xnwn
 Trong đó, XN là xung điện (lực đẩy mỗi giây) đến các điểm kết thúc tiếp hợp thứ N và WN là trọng số của điểm tiếp hợp kết thúc.
Sau đó, xung điện tổng cộng này sẽ có một hàm ngưỡng xử lý để cho ra tín hiệu đầu ra.
Dựa trên nguyên tắc hoạt động não bộ, chúng ta có mô hình ANN như sau:
Cấu trúc cơ bản của ANN bao gồm các neuron nhân tạo (giống với các neuron sinh học trong não người) được nhóm thành các lớp. Cấu trúc phổ biến nhất của ANN bao gồm một lớp đầu vào, một hoặc nhiều lớp ẩn và một lớp đầu ra (hay còn gọi là mô hình đa lớp-MLP). Mô hình ANN đơn giản thể hiện trong hình 2.2.

Trong não người, các neuron liên kết bằng cách gửi các tín hiệu đến các neuron khác thông qua các liên kết phức tạp. ANN dựa trên cùng nguyên tắc này để cố gắng mô phỏng quá trình học của não người bằng cách sử dụng các thuật toán phức tạp. Mỗi liên kết có trọng số có thể là dương hoặc âm. Trọng số dương kích hoạt neuron trong khi trọng số âm kiềm hãm neuron. Hình 2.2 thể hiệu cấu trúc mạng của dữ liệu đầu vào liên kết với các neuron bởi các trọng số ở mỗi liên kết. Tổng của các tín hiệu mà neuron nhận được, với mỗi tín hiệu được nhân bởi trọng số kết hợp tác động lên liên kết.

Tổng các tín hiệu mà neuron nhận được sau đó được truyền thông qua một hàm chuyển tiếp (hoặc gọi là hàm kích hoạt), đó là một hàm phi tuyến để tạo ra dữ liệu đâu ra. Hầu hết các hàm được sử dụng phổ biến là dạng sigmoid.

ANN BP là cấu trúc mạng thần kinh truyền thẳng (feed-forward neural network) trong đó lấy dữ liệu đầu vào đến mô hình và nhân nó với trọng số nằm trên liên kết giữa các neuron; tổng của các tích trên sau đó được truyền qua một hàm ngưỡng để tạo ra dữ liệu đầu ra. Thuật toán BP làm việc bằng cách tối thiểu hóa sai số giữa dữ liệu đầu ra và mục tiêu (giá trị thực tế) bằng cách truyền ngược sai số trở lại mạng lưới. Các trọng số trong mỗi liên kết giữa các neuron được thay đổi để phù hợp với kích thước của sai số ban đầu. Dữ liệu đầu vào sau đó được truyền đi một lần nữa, tạo nên một dữ liệu đầu ra và sai số mới. Quá trình lặp laị cho đến khi có một sai số nhỏ nhất được chấp nhận. Mỗi neuron sử dụng một hàm truyền và được liên kết hoàn toàn với các neuron ở lớp tiếp theo. Một khi sai số đạt đến mức chấp nhận, việc huấn luyện dừng lại.


Thuật toán truyền ngược BP (Back Propagation)

Cần thiết hiểu qua đôi chút về thuật toán truyền ngược (BP). Thuật toán BP là thuật toán sử dụng phổ biến nhất trong ANN vì sự đơn giản trong thiết kế và triển khai. Thuật toán BP được sử dụng để điều chỉnh trọng số (synapse).


Mô hình neuron trong hình 3.7 sẽ được sử dụng để giải thích thuật toán BP.

Thuật toán BP liên quan đến một quá trình học gồm hai giai đoạn sử dụng hai bước vượt (pass): bước truyển thằng (forward pass) và bước truyền ngược (backward pass). Trong bước truyền thẳng, dữ liệu đầu ra được tính toán từ tập hợp mẫu hình đầu vào.

Một trong những thuật toán điều chỉnh trọng số của BP là nguyên tắc giảm độ dốc (Gradient) thể hiện trong hình 2.3. Nghĩa là các trọng số được di chuyển theo hướng ngược với đường cong, do đó nó sẽ dịch chuyển đến điểm có bề mặt phẳng hơn.







Nguồn: Neural Networks in Finance gaining predictive edge in the market của Paul D. Mc Nelis.

Thuật ngữ ANN

Khi sử dụng ANN các bạn sẽ sử dụng một số thuật ngữ riêng. Thực ra nó cũng khá giống như các nhà thống kê sử dụng. Ví dụ việc huấn luyện (training), việc học (learning)  là quá trình thực hiện ước lượng bên thống kê. Bảng dưới mô tả một số thuật ngữ khi sử dụng ANN.



Thiết kế mô hình ANN

Có nhiều cách để xây dựng một mô hình neural network. Tính năng động của neuro (neurodynamic) và cấu trúc  (architecture) là hai thuật ngữ thường được sử dụng trong việc mô tả cách thức tổ chức mạng neural network. Sự kết hợp của neurodynamic và architecture tạo nên paradigm của neural network. Neurodynamc mô tả đặc điểm của một neuron riêng biệt chẳng hạn như hàm truyền (transfer functon) và làm như thế nào để kết hợp các dữ liệu đầu vào. Architecture của neural network mô tả cấu trúc bao gồm số lượng neuron trong mỗi lớp ẩn và số hoặc loại liên kết.

Bảng 1: Tám bước khi thiết kế mô hình phân tích và dự báo ANN
Bước 1:
Lựa chọn biến số
Bước 2:
Thu thập dữ liệu
Bước 3:
Xử lý dữ liệu
Bước 4:
Thiết lập dữ liệu dùng để huấn luyện, thử nghiệm, và kiểm tra ANN.
Bước 5:
Xây dựng cấu trúc ANN (Paradigm= Architecture + topology)
-         Số lượng các lớp ẩn (hidden layer)
-         Số lượng các neuron ẩn (neuron layer)
-         Số lượng các neuron đầu ra (output layer)
-         Lựa chọn hàm truyền (transfer function/activation function)
Bước 6:
Các tiêu chuẩn đánh giá
Bước 7:
Huấn luyện ANN
-         Số vòng lặp huấn luyện (training iteration)
-         Lựa chọn các hệ số Learning rate và Momentum
Bước 8:
Ứng dụng ANN vào thực tiễn

Có một số kinh nghiệm liên quan đến các bước như sau:
1.    Dữ liệu đầu vào: Để tránh vấn đề quá khớp (overfitting), kích thước của dữ liệu tập hợp nên gấp 5 lần số lượng trọng số.



2. Dữ liệu kiểm tra (testing sets) có kích thước từ 10%-30% dữ liệu huấn luyện (traning set). Người nghiên cứu sẽ lựa chọn mô hình ANN có kết quả tốt nhất đối với dữ liệu kiểm tra.



3. Số lớp ẩn:
Các nghiên cứu thực nghiệm cho thấy chỉ cần 1 lớp ẩn là đủ để xử lý nhiều vấn đề trong tài chính. Tôi đề nghị chỉ nên sử dụng 1 lớp ẩn. Sau đó, chỉ nên cân nhắc sử dụng lớp ẩn thứ hai nếu thấy cần thiết. Lưu ý, càng sử dụng nhiều lớp ẩn thì vấn đề quá vừa khít (overfiting) dễ xuất hiện.

4. Số lượng Neuron trong lớp ẩn

Mặc dù điều này là rất quan trọng nhưng thật không may là không có một công thức nào để lựa chọn số lượng tối ưu các neuron trong lớp ẩn. Do đó, tất cả các nhà nghiên cứu đều sử dụng kinh nghiệm. Tuy nhiên, chí ít là có quy tắc bàn tay cái. Một ước lượng xấp xĩ có thể được quan sát bởi quy tắc kim tự tháp hình học được đề nghị bởi Masters. Đối với mạng thần kinh ba lớp với n neuron đầu vào và m neuron đâu ra, số lượng lớp ẩn có thể được tính bằng cách lấy căn bậc hai của n x m neuron. Trong dự báo chứng khoán, neuron đầu ra thường là m=1, nên thực ra có thể là căn bậc hai của số lượng neuron đầu vào (n).


5. Lựa chọn hàm kích hoạt (Activation Function)

Hàm chuyển tiếp là một công thức toán học nhằm xác định dữ liệu đầu ra từ một tổng của các dữ liệu đầu vào nhân trọng số của một neuron. Chúng cũng thường được gọi là hàm chuyển đổi (transformation) hoặc squashing, hàm kích hoạt (activation function), hoặc hàm ngưỡng (threhold). 

Trong dự báo giá chứng khoán, hàm sigmoid (dạng chữ S) là ưa chuộng nhất.

6. Số lượng vòng lặp tối ưu

Một lần nữa, chũng chẳng có quy tắc nào để xác định cả. Kinh nghiệm sử dụng là người thầy tốt nhất. Với số lượng input đầu vào khoảng vài trăm, tôi thường sử dụng số vòng lặp khoảng 50,000-100,000.

Việc điều chỉnh trọng số bằng cách giảm độ dốc của thuật toán BP sẽ liên quan đến hai tham số quan trọng là Learning Rate và Momentum. Tương tưởng, trọng số là một quả bóng trên bề mặt sai số. Learning Rate giống như là lực ném một quả bóng trên bề mặt sai số. Trong khi đó, Momentum xem xét tác động mức độ thay đổi của quả bóng trên bề mặt sai số.


7. Tốc độ học (Learning rate)

Tốc độ học xác định số lượng tương quan được áp dụng để điều chỉnh trọng số neuron trong quá trình huấn luyện. tốc độ học quá nhỏ làm tăng thời gian học nhưng có khuynh hướng làm giảm khả năng thay đổi quá nhanh của giải pháp tối ưu. Tuy nhiên, chúng sẽ làm gia tăng khả năng bị mắc kẹt trong cực trị nhỏ nhất địa phương. Tốc độ học quá lớn có thể làm cho việc học của mạng trở nên nhanh hơn nhưng có thể dẫn đến không học được gì cả. Tốc độ học thích ứng thay đổi theo số lượng sai số được tạo ra. Giá trị sai số càng lớn, tốc độ học càng nhỏ và ngược lại. 

Tốc độ học tôi thường sử dụng là từ 0.01 đến 0.05.

8. Momentum

Giá trị momentum xác định bao nhiêu mức độ điều chỉnh trước đó nên được ghi nhớ và chuyển sang cho lần huấn luyện hiện tại. Giá trị momentum quá lớn, sẽ nhấn mạnh hơn đến mức điều chỉnh hiện tại và ít để ý đến mức điều chỉnh trước đó. 

Momemtum thường được sử dụng là từ 0.1 đến 0.7. Trong đó, tôi đề nghị nên khởi đầu từ 0.7 và tiến hành giảm dần.

Ứng dụng thực tế

Vào tháng 8.2012, tôi đã sử dụng mô hình Neuro Network kết hợp với dữ liệu chiêm tinh để dự báo sự sụt giảm mạnh của tháng 8. Thật trùng hợp, TTCK Việt Nam sụt giảm mạnh bởi Bầu Kiên bị bắt. Xem tại đây

Không có nhận xét nào:

Đăng nhận xét