messenger_logo
Liên hệ qua Messenger
SciEco

Kết hợp mô hình bất kỳ với garch(1,1) để dự báo xác suất giá chứng khoán

I
IEFPA
Ngày viết: 17/06/2026

Trong lĩnh vực phân tích tài chính, việc dự báo giá trị tương lai của cổ phiếu luôn là một thách thức lớn do tính chất biến động liên tục và khó lường của thị trường. Dự báo điểm đơn thuần thường không cung cấp đủ thông tin cho các nhà đầu tư và nhà quản lý rủi ro, bởi vì nó bỏ qua mức độ bất định xung quanh dự báo đó. Để giải quyết vấn đề này, dự báo xác suất đã trở thành một công cụ quan trọng, giúp cung cấp cả giá trị kỳ vọng lẫn khoảng tin cậy của dự báo.

Bài viết này sẽ hướng dẫn cách kết hợp một mô hình dự báo xu hướng trung bình bất kỳ với mô hình GARCH(1,1) để nắm bắt cả giá trị trung bình có điều kiện lẫn phương sai có điều kiện của tỷ suất sinh lời chứng khoán. Phương pháp này giúp tạo ra các khoảng dự báo xác suất động, phản ánh chân thực mức độ biến động của thị trường theo thời gian.

Phương pháp tiếp cận linh hoạt trong dự báo tài chính

Mô hình hóa chuỗi thời gian tài chính thường đòi hỏi phải giải quyết hai thành phần chính: xu hướng trung bình và cấu trúc biến động của sai số. Các mô hình truyền thống thường giả định phương sai của sai số là không đổi, điều này hoàn toàn không phù hợp với thực tế thị trường chứng khoán, nơi thường xuyên xảy ra hiện tượng cụm biến động.

Bằng cách sử dụng thuật toán agnosticgarchf trong thư viện ahead của ngôn ngữ R, chúng ta có thể tách biệt hai nhiệm vụ này. Đầu tiên, một mô hình bất kỳ do người dùng lựa chọn sẽ được áp dụng để dự báo xu hướng trung bình có điều kiện. Sau đó, mô hình GARCH(1,1) được áp dụng trên phần dư để dự báo phương sai có điều kiện. Sự kết hợp này mang lại khả năng tùy biến cực kỳ cao cho các nhà phân tích dữ liệu.

Cài đặt thư viện và chuẩn bị dữ liệu

Trước khi đi vào triển khai, chúng ta cần cài đặt các thư viện cần thiết, bao gồm thư viện chứa dữ liệu chứng khoán của Google và thư viện thực hiện thuật toán dự báo.

1install.packages("pak")
2pak::pak("fpp2")
3devtools::install_github("Techtonique/ahead")
4pak::pak("fGarch")

Sau khi hoàn tất cài đặt, chúng ta sẽ lần lượt thử nghiệm việc kết hợp GARCH(1,1) với các mô hình dự báo xu hướng khác nhau.

Tích hợp mô hình ARIMA tự động với GARCH(1,1)

Mô hình ARIMA tự động là lựa chọn phổ biến hàng đầu khi xử lý chuỗi thời gian nhờ khả năng tự cấu hình các tham số tự hồi quy và trung bình trượt. Khi kết hợp với GARCH(1,1), chúng ta thu được kết quả dự báo điểm cùng khoảng tin cậy biến đổi linh hoạt.

1res <- ahead::agnosticgarchf(fpp2::goog200,
2                           FUN=forecast::auto.arima, h=20)
3print(res)
4# Kết quả dự báo:
5#     Point Forecast    Lo 95    Hi 95
6# 201       532.1750 518.1879 546.1621
7# 202       532.8717 518.8757 546.8678
8# 203       533.5684 519.5635 547.5734
9# 204       534.2652 520.2513 548.2790
10# 205       534.9619 520.9391 548.9847
11# 206       535.6586 521.6269 549.6903
12# 207       536.3553 522.3148 550.3959
13# 208       537.0521 523.0026 551.1015
14# 209       537.7488 523.6905 551.8071
15# 210       538.4455 524.3783 552.5127
16# 211       539.1422 525.0662 553.2183
17# 212       539.8390 525.7540 553.9239
18# 213       540.5357 526.4419 554.6295
19# 214       541.2324 527.1298 555.3351
20# 215       541.9291 527.8176 556.0407
21# 216       542.6259 528.5055 556.7462
22# 217       543.3226 529.1934 557.4518
23# 218       544.0193 529.8813 558.1573
24# 219       544.7160 530.5692 558.8629
25# 220       545.4128 531.2571 559.5684
26ggplot2::autoplot(res)

Tích hợp phương pháp Theta với GARCH(1,1)

Phương pháp Theta phân tách chuỗi thời gian thành các đường cong có độ cong khác nhau để dự báo xu hướng dài hạn và biến động ngắn hạn. Việc bổ sung GARCH(1,1) giúp khoảng dự báo mở rộng một cách tự nhiên hơn khi thời gian dự báo tiến xa hơn.

1res <- ahead::agnosticgarchf(fpp2::goog200,
2                           FUN=forecast::thetaf, h=20)
3print(res)
4# Kết quả dự báo:
5#     Point Forecast    Lo 95    Hi 95
6# 201       531.4982 518.2318 544.7646
7# 202       531.7610 516.1991 547.3230
8# 203       532.0238 514.1041 549.9436
9# ...
10# 220       536.4916 438.3483 634.6349
11ggplot2::autoplot(res)

Kết hợp hồi quy Ridge với GARCH(1,1)

Hồi quy Ridge là một kỹ thuật học máy giúp kiểm soát hiện tượng quá khớp bằng cách thêm thành phần phạt vào hàm mất mát. Sử dụng mô hình hồi quy Ridge để dự báo xu hướng trung bình, kết hợp với GARCH(1,1) cho sai số, đem lại một mô hình lai mạnh mẽ giữa học máy và kinh tế lượng truyền thống.

1res <- ahead::agnosticgarchf(fpp2::goog200,
2                           FUN=ahead::ridge2f, h=20)
3print(res)
4# Kết quả dự báo:
5#     Point Forecast    Lo 95    Hi 95
6# 201       532.1740 519.4742 544.8737
7# 202       532.9003 517.9900 547.8106
8# 203       533.6547 516.8217 550.4877
9# ...
10# 220       549.0716 512.7274 585.4158
11ggplot2::autoplot(res)

Sử dụng mô hình làm mượt LOESS với GARCH(1,1)

LOESS là phương pháp làm mượt phi tham số dựa trên hồi quy đa thức cục bộ. Mô hình này cực kỳ linh hoạt trong việc bắt kịp các thay đổi phi tuyến tính của cấu trúc dữ liệu. Khi tích hợp với GARCH(1,1), chúng ta thu được khoảng tin cậy phản ánh độ bất định từ các ước lượng phi tham số này.

1res <- ahead::agnosticgarchf(fpp2::goog200,
2                           FUN=ahead::loessf, h=20)
3print(res)
4# Kết quả dự báo:
5#     Point Forecast    Lo 95    Hi 95
6# 201       544.3276 520.1558 568.4994
7# 202       548.2888 523.7199 572.8578
8# 203       552.0027 527.0698 576.9356
9# ...
10# 220       604.7474 576.5943 632.9006
11ggplot2::autoplot(res)

Như các biểu đồ trực quan hóa đã thể hiện rõ ràng, việc kết hợp bất kỳ mô hình dự báo xu hướng nào với GARCH(1,1) đều cung cấp một cái nhìn toàn diện và sâu sắc hơn về cả xu hướng giá dự kiến lẫn mức độ rủi ro đi kèm. Đây là một công cụ cực kỳ hữu ích cho các nhà phân tích tài chính trong việc định lượng rủi ro danh mục đầu tư.

✨ Điểm đắt giá của phương pháp này chính là tính kế thừa và sự tự do tối đa trong thiết kế mô hình. Bạn không cần phải xây dựng một mô hình toán học phức tạp tích hợp sẵn từ đầu. Thay vào đó, bạn có thể tận dụng thế mạnh của bất kỳ thuật toán dự báo hiện đại nào để nắm bắt xu hướng trung bình, đồng thời ủy thác nhiệm vụ ước lượng biến động thị trường cho cấu trúc GARCH(1,1) đã được chứng minh hiệu quả qua nhiều thập kỷ.

Câu hỏi tư duy: Khi áp dụng mô hình lai này vào thị trường chứng khoán có biên độ dao động giá hàng ngày bị giới hạn bởi quy định pháp lý, các giả định phân phối của mô hình GARCH(1,1) cần được điều chỉnh như thế nào để phản ánh đúng thực tế rủi ro?


Bài viết khác
Trong giới khoa học dữ liệu, cuộc tranh luận giữa việc sử dụng Python hay R chưa bao giờ kết thúc. Python sở hữu thế mạnh vượt trội về khả năng tích hợp hệ thống, xử lý học sâu và xây dựng ứng dụng thực tế. Trong khi đó, R lại là ông vua trong lĩnh vực phân tích thống kê chuyên sâu, dự báo chuỗi thời gian và sở hữu các gói thư viện được thiết kế tối ưu bởi cộng đồng các nhà thống kê học. Thay vì phải đau đầu lựa chọn một trong hai ngôn ngữ, việc kết hợp sức mạnh của cả hai ngay trong một quy trình làm việc là giải pháp tối ưu nhất. Thư viện rtopy chính là cầu nối hiện đại giúp bạn thực hiện điều này một cách mượt mà. Bài viết này sẽ giới thiệu những cải tiến mới nhất của thư viện rtopy, giúp việc chuyển dịch và gọi mã nguồn R từ Python trở nên đơn giản hơn bao giờ hết. Cài đặt các công cụ cần thiết Để bắt đầu, bạn cần cài đặt thư viện rtopy trong môi trường Python và một số gói thư viện R phổ biến phục vụ cho việc tính toán thống kê và học máy.
Việc hiển thị các tọa độ địa lý trên bản đồ tương tác là một kỹ thuật quen thuộc đối với các nhà phân tích dữ liệu không gian. Bằng cách sử dụng công cụ dòng lệnh exiftool, chúng ta có thể dễ dàng trích xuất toàn bộ thông tin định vị toàn cầu từ một thư mục chứa ảnh định dạng JPG và xuất ra tệp CSV để xử lý. Tuy nhiên, bên cạnh vĩ độ và kinh độ, các thiết bị di động hiện đại còn ghi lại một thông số cực kỳ thú vị là hướng của ống kính camera tại thời điểm bấm máy, được lưu trữ trong thẻ siêu dữ liệu GPSImgDirection. Việc thể hiện được hướng nhìn này trên bản đồ bằng các biểu tượng có khả năng xoay tự động sẽ giúp trực quan hóa hành trình một cách sinh động và chính xác hơn nhiều. Bài viết này sẽ hướng dẫn cách hiện thực hóa ý tưởng đó bằng thư viện leaflet trong môi trường R. Chuẩn bị dữ liệu từ siêu dữ liệu ảnh chụp Bước đầu tiên là trích xuất các thông tin định vị từ ảnh chụp. Công cụ exiftool tỏ ra cực kỳ hiệu quả cho tác vụ này. Bạn có thể mở cửa sổ dòng lệnh và chạy cú pháp sau để quét toàn bộ thư mục ảnh và lưu kết quả vào tệp CSV.
SciEco
Science for Economics
Định hướng đào tạo phân tích dữ liệu, xây dựng chính sách, tối ưu hoá danh mục tài chính cá nhân và dự báo thị trường.
Liên hệ
Địa chỉ: Số 60, ngõ 41, Phố Thái Hà, Trung Liệt, Đống Đa, Hà Nội (Google Map)
Email: science.for.economics@gmail.com
Hotline: 03.57.94.7680 (Mrs. Hà)
Mạng xã hội