Lời đầu tiên, em xin gửi lời cảm ơn chân thành đến thầy Nguyễn Tuấn Duy khoa Kinh tế-Luật, Trường Đại học Tài chính - Marketing đã tận tình giảng dạy và truyền đạt cho em những kiến thức và kinh nghiệm quý báu trong suốt quá trình học tập.
Trong quá trình làm bài báo cáo, do hạn chế về trình độ lý luận cũng như kinh nghiệm thực tiễn, bài báo cáo của em khó tránh khỏi những thiếu sót. Em rất mong nhận được sự nhận xét và góp ý từ thầy để em có cơ hội học hỏi, tiếp thu kiến thức, nghiên cứu và hoàn thiện hơn bài báo cáo tiểu luận nói riêng và kiến thức nói chung. Những góp ý quý báu này sẽ giúp em nâng cao ý thức và năng lực của mình, phục vụ tốt hơn cho công việc thực tế sau này.
Tôi cam đoan bài nghiên cứu này do tôi thực hiện. Các đoạn trích dẫn và số liệu sử dụng trong đề tài này đều được dẫn nguồn và có độ chính xác cao nhất trong phạm vi hiểu biết của tôi. Đề tài này không nhất thiết phản ánh quan điểm của Trường Đại Học Tài Chính – Marketing.
Trong bối cảnh các quốc gia trên thế giới đang đẩy mạnh xây dựng nền kinh tế mở và hội nhập toàn cầu, cấu trúc phụ thuộc giữa các ngành công nghệ trong thị trường chứng khoán đóng một vai trò ngày càng quan trọng. Đặc biệt, việc phân tích sự phụ thuộc này ở các công ty công nghệ lớn như FPT và Apple không chỉ giúp các nhà đầu tư hiểu rõ hơn về sự biến động của thị trường mà còn cung cấp cái nhìn sâu sắc về xu hướng phát triển toàn cầu trong ngành công nghệ.
FPT, một trong những tập đoàn công nghệ hàng đầu tại Việt Nam, đã và đang thể hiện sự kết nối mạnh mẽ với các xu hướng toàn cầu. Sự phát triển của FPT gắn liền với các chiến lược hội nhập quốc tế, từ việc mở rộng các dịch vụ công nghệ thông tin đến việc phát triển các sản phẩm và dịch vụ dựa trên nền tảng công nghệ tiên tiến. Cấu trúc phụ thuộc của FPT không chỉ thể hiện qua sự liên kết chặt chẽ với các nhà cung cấp và đối tác quốc tế mà còn qua việc công ty này phải điều chỉnh chiến lược và hoạt động của mình để phù hợp với các thay đổi trong thị trường toàn cầu.
Tương tự, Apple, một gã khổng lồ công nghệ toàn cầu, thể hiện sự phụ thuộc phức tạp trong cấu trúc ngành công nghệ. Apple không chỉ bị ảnh hưởng bởi sự thay đổi trong nhu cầu và xu hướng tiêu dùng mà còn phải đối mặt với những biến động trong chuỗi cung ứng toàn cầu. Công ty này dựa vào một mạng lưới rộng lớn các nhà cung cấp và đối tác để duy trì sự ổn định trong sản xuất và phân phối sản phẩm. Sự phụ thuộc này đồng nghĩa với việc Apple phải liên tục theo dõi và thích ứng với các chính sách thương mại quốc tế, biến động tỷ giá hối đoái, và những thay đổi trong quy định của các quốc gia nơi mà công ty hoạt động.
Việc phân tích cấu trúc phụ thuộc giữa các ngành công nghệ trong thị trường chứng khoán như FPT và Apple giúp các nhà đầu tư và các bên liên quan hiểu rõ hơn về cách mà các yếu tố toàn cầu tác động đến hiệu suất của các công ty công nghệ. Sự phụ thuộc này có thể làm tăng rủi ro, nhưng đồng thời cũng mở ra cơ hội cho sự tăng trưởng và đổi mới. Khi nền kinh tế mở rộng và hội nhập sâu rộng hơn, các công ty công nghệ phải điều chỉnh chiến lược của mình để tận dụng các cơ hội và giảm thiểu các rủi ro từ môi trường toàn cầu.
Xuất phát từ những lý do trên, tiểu luận này tiến hành nghiên cứu: “Sử dụng phương pháp Copula để nghiên cứu cấu trúc phụ thuộc giữa thị trường chứng khoán FPT(VN) và thị trường chứng khoán APPLE(Mỹ)” nhằm xác định mức độ phụ thuộc giữa TTCK của FPT với TTCK của APPLE bằng phương pháp copula, một phương pháp tương đối mới được vận dụng trong thời gian gần đây.
Nghiên cứu này nhằm khám phá mối quan hệ phụ thuộc giữa giá đóng cửa cổ phiếu của FPT và Apple trên thị trường chứng khoán. Việc phân tích này có thể cung cấp những hiểu biết sâu sắc về cách các yếu tố kinh tế vĩ mô và vi mô, cũng như các sự kiện toàn cầu, ảnh hưởng đến giá cổ phiếu của hai công ty công nghệ lớn ở các thị trường khác nhau. Bằng cách sử dụng các mô hình thống kê và kinh tế lượng, kiểm định mô hình GARCH, dùng hàm Copula, nghiên cứu sẽ tìm hiểu xem có tồn tại mối quan hệ đồng biến hay ngược chiều giữa hai loại cổ phiếu này hay không, từ đó đưa ra các dự đoán và nhận định về sự ảnh hưởng qua lại giữa chúng. Việc hiểu rõ cấu trúc phụ thuộc này có thể hỗ trợ các nhà đầu tư trong việc đưa ra quyết định đầu tư thông minh hơn, đồng thời giúp các nhà quản lý tài chính điều chỉnh chiến lược đầu tư sao cho phù hợp với biến động thị trường. Ngoài ra, nghiên cứu cũng hướng tới việc đóng góp vào kho tàng lý thuyết tài chính bằng cách xác định những yếu tố ảnh hưởng đến sự phụ thuộc giữa cổ phiếu của các công ty công nghệ hàng đầu thế giới, từ đó đề xuất những cải tiến trong việc dự đoán xu hướng thị trường.
Đối tượng nghiên cứu: tỉ suất lợi nhuận hằng ngày giá cổ phiếu của FPT(Việt Nam) và APPLE(Mỹ)
Phạm vi nghiên cứu: Dữ liệu nghiên cứu: Tác giả đã thu thập được số liệu là giá đóng cửa của cổ phiếu 02/01/2019-17/07/2024 từ sàn giao dịch chứng khoán.
Ngoài phần phần mở đầu, kết luận, mục lục, danh mục các hình và bảng, phụ lục và tài liệu tham khảo, nội dung chính của báo cáo được cấu trúc như sau:
Chương 1: Giới thiệu
Chương 2: Tổng quan lý thuyết nghiên cứu.
Chương 3: Kết quả nghiên cứu.
Chương 4: Kết luận và khuyến nghị.
Thị trường chứng khoán là một hệ thống tài chính chuyên cung cấp và trao đổi các tài sản tài chính như cổ phiếu, trái phiếu, quỹ đầu tư và các công cụ tài chính khác. Tại đây, các giao dịch diễn ra thông qua việc mua bán, chuyển nhượng, với giá cả của các tài sản này được xác định thông qua sự tương tác giữa các chủ thể tham gia trên thị trường, bao gồm các nhà đầu tư cá nhân và các tổ chức tài chính.
Đặc điểm của thị trường chứng khoán: Thị trường chứng khoán có một số đặc điểm cơ bản ảnh hưởng đến hoạt động, tình hình giao dịch và sự thay đổi giá chứng khoán trên thị trường. Những đặc điểm này cũng là yếu tố phân biệt thị trường chứng khoán với các thị trường khác. Một số đặc điểm chính của thị trường chứng khoán bao gồm: Đầu tiên, thị trường chứng khoán tập trung vào việc giao dịch các loại chứng khoán và cung cấp dịch vụ liên quan đến chúng.
Thứ hai, thị trường chứng khoán thường xuyên phải đối mặt với những rủi ro rất lớn và có khả năng lan truyền nhanh chóng. Tính rủi ro cao của thị trường chứng khoán thể hiện qua việc hầu hết những người tham gia, đặc biệt là các nhà đầu tư, phải đối mặt với những tác động lớn từ các yếu tố rủi ro tiềm ẩn.
Thứ ba, thị trường chứng khoán có mức độ nhạy cảm cao trước những biến động về kinh tế, chính trị, xã hội, quân sự, và an ninh, không chỉ trong phạm vi quốc gia mà còn trên cả khu vực và toàn cầu.
Thứ tư, thị trường chứng khoán đặt nặng vấn đề bảo vệ quyền lợi của nhà đầu tư. Các cơ quan quản lý và giám sát thị trường thường ban hành các quy định và chính sách để đảm bảo rằng nhà đầu tư được đối xử công bằng, có đầy đủ thông tin để đưa ra các quyết định đầu tư an toàn và hiệu quả.
Khái niệm về sự phụ thuộc (Dependence) được giới thiệu bởi Santos vào năm 1970. Theo đó, sự phụ thuộc được hiểu là tình trạng mà nền kinh tế của một hoặc một số quốc gia bị ảnh hưởng bởi các nước phát triển hoặc đang phát triển, và ảnh hưởng này có thể mang tính tích cực hoặc tiêu cực.
Sự phụ thuộc lẫn nhau (Interdependence/Co-movement) giữa các thị trường tài chính được hiểu là khi sự biến động của một thị trường (hoặc một nhóm thị trường) có thể tác động đến sự biến động của một thị trường khác (hoặc nhóm thị trường khác) ở một mức độ nhất định.
Ngoài ra, Baur (2013) đã sử dụng các thuật ngữ để mô tả mối quan hệ phụ thuộc giữa các thị trường là mức độ phụ thuộc (degree of dependence) và cấu trúc phụ thuộc (structure of dependence). Mức độ phụ thuộc giữa hai thị trường thường được xác định thông qua hệ số tương quan giữa các chỉ số đại diện cho hai thị trường đó. Trong khi đó, cấu trúc phụ thuộc giữa hai thị trường được mô tả bởi hàm phân phối xác suất chung của hai chuỗi lợi suất của các chỉ số đại diện cho hai thị trường đó.
Phần này tập trung vào khái niệm và lý thuyết của phương pháp tương quan tuyến tính, một thành phần quan trọng trong lĩnh vực thống kê và phân tích dữ liệu. Dưới đây, chúng em sẽ trình bày các khái niệm và lý thuyết cơ bản liên quan đến phương pháp này:
Tương quan: Tương quan là một khái niệm dùng để đo lường mối quan hệ tuyến tính giữa hai biến. Tương quan có thể là dương (khi sự thay đổi của biến đầu tiên đi kèm với sự thay đổi cùng chiều trong biến thứ hai), âm (khi sự thay đổi của biến đầu tiên đi kèm với sự thay đổi ngược chiều trong biến thứ hai), hoặc không có mối quan hệ tuyến tính (khi không có tương quan).
Hệ số tương quan (Correlation Coefficient): Hệ số tương quan là một giá trị số được sử dụng để đo lường mức độ tương quan giữa hai biến. Trong phạm vi này, hệ số tương quan Pearson là phổ biến nhất và được ký hiệu là “r”. Hệ số này có giá trị từ -1 đến 1. Giá trị -1 cho thấy mối quan hệ tương quan hoàn toàn âm, giá trị 1 cho thấy mối quan hệ tương quan hoàn toàn dương, và giá trị 0 cho thấy không có tương quan tuyến tính nào.
Hồi quy tuyến tính (Linear Regression): Hồi quy tuyến tính là một phương pháp được sử dụng để dự đoán giá trị của một biến phụ thuộc (biến mục tiêu) dựa trên giá trị của một hoặc nhiều biến độc lập (biến đầu vào). Mục tiêu của hồi quy tuyến tính là tìm ra một đường thẳng (đường hồi quy) sao cho tổng bình phương của các sai số (sự khác biệt giữa giá trị dự đoán và giá trị thực tế) là nhỏ nhất.
Biểu đồ tương quan (Scatter Plot): Biểu đồ tương quan là một công cụ trực quan để thể hiện mối quan hệ giữa hai biến. Nó đặt giá trị của biến độc lập trên trục hoành và giá trị của biến phụ thuộc trên trục tung. Điều này giúp hình dung rõ hơn mối quan hệ và xác định sự tương quan tuyến tính.
Phân tích hệ số xác định (Coefficient of Determination): Hệ số xác định (R-squared) thể hiện phần trăm sự biến thiên của biến phụ thuộc mà mô hình hồi quy tuyến tính có thể giải thích. Giá trị R-squared nằm trong khoảng từ 0 đến 1, và giá trị càng cao cho thấy mô hình càng tốt trong việc giải thích biến động của biến phụ thuộc.
Phương pháp tương quan tuyến tính là một công cụ quan trọng trong phân tích dữ liệu và dự đoán. Nó giúp ta hiểu rõ mối quan hệ giữa các biến, dự đoán giá trị và đánh giá mức độ phù hợp của mô hình dự đoán. Tuy nhiên, hệ số tương quan chỉ đo lường sức mạnh của mối quan hệ tuyến tính giữa các tài sản. Vì vậy, nếu cấu trúc phụ thuộc cơ bản có tính phi tuyến thì không thể giải thích được bằng mối tương quan này. Theo Forbes & Rigobon (2002), hệ số này chỉ đại diện cho mức trung bình của độ lệch chuẩn, bỏ qua sự khác biệt giữa các giá trị cực đại và cực tiểu của lợi nhuận (Hu, 2006).
Phương pháp tương quan có điều kiện (Conditional Correlation Method) là một phương pháp trong lĩnh vực thống kê và phân tích dữ liệu, đặc biệt được áp dụng trong tài chính. Phương pháp này được sử dụng để xác định mối quan hệ tương quan giữa các biến dựa trên một số điều kiện hay các biến số phụ thuộc khác. Dưới đây là một số khái niệm cơ bản liên quan đến phương pháp này:
Tương quan có điều kiện: Tương quan có điều kiện (Conditional Correlation) đo lường mối quan hệ giữa hai biến trong một tình huống cụ thể hoặc dưới một số điều kiện nhất định. Thay vì xem xét mối quan hệ tương quan tổng quát, phương pháp này cho phép phân tích tương quan trong một ngữ cảnh cụ thể. Một ví dụ về phương pháp này là phương pháp GARCH (Generalized Autoregressive Conditional Heteroskedasticity): Phương pháp tương quan có điều kiện thường sử dụng mô hình GARCH để ước tính biến động của các biến. GARCH là một nhóm các mô hình thống kê thời gian thường được sử dụng để mô tả biến động trong dữ liệu tài chính, và nó cho phép ước tính tương quan có điều kiện giữa các biến dựa trên biến động của chúng.
Trong tài chính, phương pháp tương quan có điều kiện thường được áp dụng để nghiên cứu mối quan hệ giữa các tài sản tài chính (như cổ phiếu, trái phiếu, hoặc tiền tệ) trong các tình huống cụ thể, chẳng hạn như trong thị trường tăng giá, thị trường giảm giá, hoặc khi xảy ra các sự kiện đột ngột như khủng bố hoặc khủng hoảng tài chính.
Ước tính điều kiện: Để ước tính tương quan có điều kiện, phương pháp GARCH thường sử dụng thông tin quá khứ để dự đoán biến động tương lai của các biến. Điều này giúp tạo ra một ước tính về mức độ biến động của tương quan giữa các biến trong tương lai dưới các điều kiện cụ thể.
Phương pháp tương quan có điều kiện là một công cụ quan trọng trong việc nghiên cứu và dự đoán các mối quan hệ tài chính trong các tình huống cụ thể hoặc khi thị trường biến động. Nó giúp các nhà nghiên cứu và nhà đầu tư hiểu rõ hơn về cách các biến tài chính tương tác trong các bối cảnh khác nhau. Tuy nhiên, hầu hết các mô hình GARCH đa biến giả định rằng phân phối của các chuỗi lợi suất là phân phối chuẩn Gaussian hoặc phân phối đối xứng Student-t. Do đó, các phương pháp tương quan có điều kiện chưa xem xét đến sự dao động bất đối xứng và đặc điểm đuôi dày của phân phối xác suất, chưa phản ánh chính xác mối quan hệ phi tuyến giữa các chuỗi lợi suất chứng khoán.
Mối tương quan là một công cụ phổ biến để miêu tả sự phụ thuộc giữa các biến ngẫu nhiên, nhưng khi cấu trúc phụ thuộc không tuân theo mô hình chuẩn, mối tương quan có thể không phản ánh chính xác. Đặc biệt với các phân phối đa biến phức tạp, việc đo lường sự phụ thuộc chỉ qua hệ số tương quan có thể không chính xác (Hu, 2008).
Để giải quyết vấn đề này, các nhà nghiên cứu đã áp dụng phương pháp copula để mô hình hóa cấu trúc phụ thuộc giữa chuỗi lợi suất của các tài sản tài chính. Hàm copula là một hàm phân phối xác suất đa chiều kết hợp các phân phối biên một chiều, với các phân phối biên được chuẩn hóa trong khoảng [0, 1].
Khái niệm copula cho phép mô tả chính xác cấu trúc phụ thuộc giữa các biến ngẫu nhiên, bao gồm các dạng phụ thuộc tuyến tính và phi tuyến tính, phụ thuộc đối xứng và không đối xứng, cũng như phụ thuộc cực đại hoặc ở đuôi. Đặc biệt, các hàm copula duy trì tính không thay đổi khi áp dụng các biến đổi dữ liệu phi tuyến tính, điều này khác với việc đo lường phụ thuộc thông thường qua mối tương quan tuyến tính (Embrechts và cộng sự, 2002). Ví dụ, sự phụ thuộc giữa hai biến ngẫu nhiên \(X_1\) và \(X_2\)có thể được mô tả tương tự như sự phụ thuộc giữa \(ln( X_1)\) và \(ln( X_2)\).
Trong phân tích cấu trúc phụ thuộc, một số họ copula nổi bật bao gồm Copula Gauss, Copula Student-t, Copula Frank, Copula Clayton, Copula Gumbel, và Copula BB1/BB7.
Copula Gauss có cấu trúc đối xứng và mô tả mối quan hệ tương quan trong điều kiện bình thường, khi các biến gần giá trị trung bình. Tuy nhiên, khi thị trường biến động mạnh, nó cho thấy sự phụ thuộc giữa các biến có thể giảm, dẫn đến tình trạng độc lập tạm thời.
Copula Student-t, với cấu trúc đối xứng nhưng lệch hai đuôi, cho thấy sự phụ thuộc mạnh mẽ hơn trong điều kiện thị trường ít biến động. Khi bậc tự do giảm, sự phụ thuộc giữa các thị trường gia tăng, điều này có nghĩa là mối quan hệ giữa các biến trở nên chặt chẽ hơn trong cả giai đoạn giảm giá và tăng giá.
Copula Frank có cấu trúc đối xứng và thể hiện sự phụ thuộc đồng đều trong các tình huống thị trường biến động, duy trì mối liên kết giữa các thị trường trong cả điều kiện giảm giá và tăng giá.
Copula Clayton, với cấu trúc bất đối xứng và lệch đuôi dưới, chỉ ra rằng sự phụ thuộc gia tăng khi một thị trường giảm giá. Khi một thị trường giảm giá mạnh, mức độ giảm của thị trường còn lại cũng tăng lên, cho thấy mối quan hệ phụ thuộc mạnh mẽ trong điều kiện suy thoái.
Copula Gumbel, với cấu trúc bất đối xứng và lệch đuôi trên, mô tả sự phụ thuộc mạnh mẽ hơn khi thị trường tăng giá. Khi một thị trường tăng giá, mức độ tăng của thị trường còn lại cũng cao hơn, cho thấy mối quan hệ phụ thuộc cao trong các giai đoạn thị trường bùng nổ.
Cuối cùng, Copula BB1 và BB7, với cấu trúc bất đối xứng và lệch hai đuôi, mô tả sự phụ thuộc mạnh mẽ khi một thị trường thay đổi mạnh mẽ, cho dù là giảm hay tăng giá. Hệ số phụ thuộc đuôi dưới (trên) càng lớn, cho thấy khả năng hai thị trường cùng giảm (tăng) giá càng cao.
Để đánh giá trực quan ý nghĩa của từng loại copula, em sẽ tiến hành vẽ biểu đồ dựa trên dữ liệu được mô phỏng cho mỗi loại copula tương ứng như sau :
# Thay đổi hạt giống ngẫu nhiên
set.seed(456)
# Mô phỏng copula Clayton với p=3
cop_clay <- claytonCopula(param = 3, dim = 2)
# Mô phỏng 5000 quan sát ngẫu nhiên dựa trên copula Clayton
random_clay <- rCopula(copula = cop_clay, n = 5000)
# Mô phỏng copula Gumbel với p=6
cop_gum <- gumbelCopula(param = 6, dim = 2)
# Mô phỏng 5000 quan sát ngẫu nhiên dựa trên copula Gumbel
random_gum <- rCopula(copula = cop_gum, n = 5000)
# Vẽ biểu đồ và lưu ảnh với màu mới
png('clay_new.png')
scatter_plot(random_clay, '#66CC99') # Thay đổi màu
dev.off()
## png
## 2
clays <- rasterGrob(readPNG('clay_new.png'), interpolate = TRUE)
png('gum_new.png')
scatter_plot(random_gum, '#66CCFF') # Thay đổi màu
dev.off()
## png
## 2
gums <- rasterGrob(readPNG('gum_new.png'), interpolate = TRUE)
# Vẽ đồ thị PDF với tham số và màu mới
clayp <- persp_plot(cop_clay, 'clayp_new.png', '#66CC99')
gump <- persp_plot(cop_gum, 'gump_new.png', '#66CCFF')
# Tạo và vẽ legend với màu mới
legend <- legendGrob(
labels = c("Clayton", "Gumbel"), pch = 15,
gp = gpar(col = c('#66CC99', '#66CCFF'), fill = c('#66CC99', '#66CCFF'))
)
# Sắp xếp và hiển thị các đồ thị cùng với legend
grid.arrange(clays, clayp, gums, gump, legend, ncol = 3,
layout_matrix = rbind(c(1, 2, 5), c(3, 4, 5)),
widths = c(2, 2, 1),
top = textGrob("Hình 2: Biểu đồ phân tán và PDF của Copula Clayton và Gumbel",
gp = gpar(fontsize = 15, font = 2))
)
set.seed(123)
# Mô phỏng copula survival Gumbel với tham số mới
cop_surgum <- VC2copula::surGumbelCopula(param = 6)
# Mô phỏng 5000 quan sát ngẫu nhiên dựa trên copula có sẵn
random_surgum <- rCopula(copula = cop_surgum, n = 5000)
# Mô phỏng copula survival Clayton với tham số mới
cop_surclay <- VC2copula::surClaytonCopula(param = 5)
# Mô phỏng 5000 quan sát ngẫu nhiên dựa trên copula có sẵn
random_surclay <- rCopula(copula = cop_surclay, n = 5000)
# Lưu và vẽ biểu đồ phân tán
png('surclays_new.png')
scatter_plot(random_surclay, '#FF66B2') # Màu hồng
dev.off()
## png
## 2
surclays <- rasterGrob(readPNG('surclays_new.png'), interpolate = TRUE)
png('surgums_new.png')
scatter_plot(random_surgum, '#FF9900') # Màu cam
dev.off()
## png
## 2
surgums <- rasterGrob(readPNG('surgums_new.png'), interpolate = TRUE)
# Vẽ biểu đồ PDF
surclayp <- persp_plot(cop_surclay, "surclayp_new.png", "#FF66B2") # Màu hồng
surgump <- persp_plot(cop_surgum, "surgump_new.png", "#FF9900") # Màu cam
# Thêm chú thích và hiển thị
legend <- legendGrob(labels = c("Survival Clayton", "Survival Gumbel"), pch = 15,
gp = gpar(col = c('#FF66B2', '#FF9900'), fill = c('#FF66B2', '#FF9900')))
grid.arrange(surclays, surclayp, surgums, surgump, legend, ncol = 3,
layout_matrix = rbind(c(1,2,5),c(3,4,5)),
widths = c(2,2,1),
top = textGrob("Hình 3: Biểu đồ phân tán và PDF của Copula Survival Clayton và Gumbel",
gp = gpar(fontsize = 15, font = 2))
)
set.seed(123)
# Mô phỏng copula Frank với tham số mới
cop_frank <- frankCopula(param = 10)
# Mô phỏng 5000 quan sát ngẫu nhiên dựa trên copula có sẵn
random_frank <- rCopula(copula = cop_frank, n = 5000)
# Mô phỏng copula Joe với tham số mới
cop_joe <- joeCopula(param = 4)
# Mô phỏng 5000 quan sát ngẫu nhiên dựa trên copula có sẵn
random_joe <- rCopula(copula = cop_joe, n = 5000)
# Lưu và vẽ biểu đồ phân tán
png('franks_new.png')
scatter_plot(random_frank, '#9B59B6') # Màu tím
dev.off()
## png
## 2
franks <- rasterGrob(readPNG('franks_new.png'), interpolate = TRUE)
png('joes_new.png')
scatter_plot(random_joe, '#E74C3C') # Màu đỏ
dev.off()
## png
## 2
joes <- rasterGrob(readPNG('joes_new.png'), interpolate = TRUE)
# Vẽ biểu đồ PDF
frankp <- persp_plot(cop_frank, "frankp_new.png", "#9B59B6") # Màu tím
joep <- persp_plot(cop_joe, "joep_new.png", "#E74C3C") # Màu đỏ
# Thêm chú thích và hiển thị
legend <- legendGrob(labels = c("Frank", "Joe"), pch = 15,
gp = gpar(col = c('#9B59B6', '#E74C3C'), fill = c('#9B59B6', '#E74C3C')))
grid.arrange(franks, frankp, joes, joep, legend, ncol = 3,
layout_matrix = rbind(c(1,2,5),c(3,4,5)),
widths = c(2,2,1),
top = textGrob("Hình 4: Biểu đồ phân tán và PDF của Copula Frank và Joe",
gp = gpar(fontsize = 15, font = 2))
)
set.seed(123)
# Mô phỏng copula BB1 với tham số mới
cop_bb1 <- VC2copula::BB1Copula(param = c(3, 2.5))
# Mô phỏng 5000 quan sát ngẫu nhiên dựa trên copula có sẵn
random_bb1 <- rCopula(copula = cop_bb1, n = 5000)
# Mô phỏng copula BB6 với tham số mới
cop_bb6 <- VC2copula::BB6Copula(param = c(3, 6))
# Mô phỏng 5000 quan sát ngẫu nhiên dựa trên copula có sẵn
random_bb6 <- rCopula(copula = cop_bb6, n = 5000)
# Lưu và vẽ biểu đồ phân tán cho BB1
png('bb1s_new.png')
scatter_plot(random_bb1, '#F7DC6F') # Màu vàng nhạt
dev.off()
## png
## 2
bb1s <- rasterGrob(readPNG('bb1s_new.png'), interpolate = TRUE)
# Lưu và vẽ biểu đồ phân tán cho BB7
png('bb6s_new.png')
scatter_plot(random_bb6, '#8B4513') # Màu nâu
dev.off()
## png
## 2
bb6s <- rasterGrob(readPNG('bb6s_new.png'), interpolate = TRUE)
# Vẽ biểu đồ PDF cho BB1
bb1p <- persp_plot(cop_bb1, "bb1p_new.png", "#F7DC6F") # Màu vàng nhạt
# Vẽ biểu đồ PDF cho BB6
bb6p <- persp_plot(cop_bb6, "bb6p_new.png", "#8B4513") # Màu nâu
# Thêm chú thích và hiển thị
legend <- legendGrob(labels = c("BB1", "BB7"), pch = 15,
gp = gpar(col = c('#F7DC6F', '#8B4513'), fill = c('#F7DC6F', '#8B4513')))
grid.arrange(bb1s, bb1p, bb6s, bb6p, legend, ncol = 3,
layout_matrix = rbind(c(1,2,5),c(3,4,5)),
widths = c(2,2,1),
top = textGrob("Hình 5: Biểu đồ phân tán và PDF của Copula BB1 và BB7",
gp = gpar(fontsize = 15, font = 2))
)
Mô hình GARCH (Generalized Autoregressive Conditional Heteroskedasticity) là một mô hình thống kê được phát triển bởi Robert F. Engle vào những năm 1980 để mô hình hóa sự biến đổi không đều của dữ liệu tài chính. Mô hình này được sử dụng rộng rãi trong lĩnh vực tài chính để phân tích và dự đoán rủi ro.
Mô hình GARCH kết hợp các thành phần autoregressive (AR) và moving average (MA) để mô hình hóa sự phụ thuộc của phương sai có điều kiện vào các giá trị đã qua xử lý cũng như các giá trị độ biến động trước đó. Một mô hình GARCH(p, q) có thể được biểu diễn như sau:\[ σ²(t) = ω + α₁ε²(t-1) + … + αₚε²(t-p) + β₁σ²(t-1) + … + β_qσ²(t-q) \]
Trong đó:
• σ²(t) là phương sai có điều kiện của biến ngẫu nhiên tại thời điểm t. ε(t) là biến ngẫu nhiên có kỳ vọng bằng 0 và phương sai đẳng nhất.
• ω, α₁, …, αₚ, β₁, …, β_q là các tham số của mô hình
• p là số lags cho thành phần autoregressive (AR) và q là số lags cho thành phần moving average (MA). Thường thì các tham số α và β trong mô hình GARCH có giá trị từ 0 đến 1 để đảm bảo tính chất dương và tích cực của phương sai. Trong trường hợp p = 0 và q = 0, mô hình GARCH trở thành mô hình ARCH.
Mô hình GARCH được ước lượng thông qua các phương pháp tối đa hóa hàm hợp lý hoặc phương pháp bình phương tối thiểu. Các giá trị ước lượng của các tham số được xác định để tối thiểu hóa sai số giữa dữ liệu quan sát và dữ liệu được dự đoán từ mô hình GARCH. Mô hình GARCH được sử dụng rộng rãi trong các ứng dụng tài chính như dự báo giá trị tài sản, quản lý rủi ro tài chính, và đánh giá tác động của biến động thị trường lên các quyết định đầu tư và giao dịch.
Mô hình GARCH có một số tính chất và đặc điểm nổi bật. Đầu tiên, nó cho phép mô hình hóa phương sai không đồng nhất, tức là phương sai có thể thay đổi theo thời gian, điều này rất phù hợp với dữ liệu tài chính, nơi sự biến động thường không đồng đều. Thứ hai, mô hình GARCH có khả năng linh hoạt trong việc bắt chước các đặc điểm của dữ liệu tài chính, như sự tự hồi quy và ảnh hưởng lâu dài của các cú sốc. Đặc biệt, mô hình GARCH có thể được mở rộng để mô hình hóa hiệu ứng đòn bẩy, trong đó các cú sốc tiêu cực có thể ảnh hưởng mạnh mẽ hơn so với các cú sốc tích cực.
Để mở rộng khả năng của mô hình GARCH, đã có nhiều phiên bản và biến thể khác nhau được phát triển. Ví dụ, EGARCH (Exponential GARCH) được thiết kế để mô hình hóa hiệu ứng đòn bẩy, giúp phân biệt giữa các cú sốc tích cực và tiêu cực.
GJR-GARCH (Glosten-Jagannathan-Runkle GARCH) tập trung vào việc mô hình hóa sự khác biệt giữa các cú sốc lớn và nhỏ. Mô hình TGARCH (Threshold GARCH) cho phép xử lý các cú sốc theo ngưỡng, trong đó các cú sốc vượt qua một ngưỡng nhất định được mô hình hóa khác biệt so với các cú sốc không vượt qua ngưỡng.
Ngoài ra, Multivariate GARCH mở rộng mô hình để phân tích nhiều chuỗi thời gian tài chính đồng thời, giúp hiểu rõ hơn về sự phụ thuộc và tương quan giữa các tài sản khác nhau.
Dựa trên mô hình phân phối biên tối ưu đã được xác định cho từng chuỗi lợi suất, tôi tiến hành trích xuất phần dư chuẩn hóa. Sau đó, tôi áp dụng hàm phân phối biên thực nghiệm để chuyển đổi phần dư chuẩn hóa thành dạng xác suất. Để đánh giá mức độ phù hợp của hàm phân phối biên với phần dư chuẩn hóa, tôi thực hiện ba loại kiểm định sau:
• Kiểm định Anderson-Darling (A-D).
• Kiểm định Cramer-von Mises (Cv-M).
• Kiểm định Kolmogorov-Smirnov (K-S).
Trong phân tích thống kê và tài chính, Copula là một công cụ mạnh mẽ để mô hình hóa sự phụ thuộc giữa các biến ngẫu nhiên. Nó cho phép phân tích cấu trúc phụ thuộc mà không bị ràng buộc bởi các giả định phân phối biên cụ thể. Khái niệm này xuất phát từ lý thuyết xác suất, và đặc biệt hữu ích trong các ứng dụng mà sự phụ thuộc phức tạp không thể được mô tả tốt bởi các phương pháp truyền thống như hệ số tương quan Pearson.
Copula có nguồn gốc từ định lý Sklar, được phát triển bởi Abe Sklar vào năm 1959. Định lý này khẳng định rằng bất kỳ phân phối đa biến nào cũng có thể được biểu diễn dưới dạng các hàm phân phối biên của nó và một hàm copula mô tả cấu trúc phụ thuộc giữa các biến.
Có nhiều loại copula khác nhau, mỗi loại có đặc điểm và ứng dụng riêng, bao gồm Gaussian copula, t-copula, Clayton copula, Gumbel copula, và Frank copula. Gaussian copula, được phát triển từ phân phối chuẩn, thích hợp cho các trường hợp sự phụ thuộc là đối xứng.
Trong khi đó, t-copula có thể xử lý các ngoại lệ cực đoan, phù hợp hơn cho dữ liệu tài chính vốn thường có hiện tượng đuôi dày. Clayton copula có đặc điểm bắt mạnh sự phụ thuộc ở đuôi dưới, phù hợp cho các tình huống rủi ro đồng thời thấp, trong khi Gumbel copula nhạy cảm hơn với sự phụ thuộc ở đuôi trên, hữu ích cho phân tích rủi ro cực đoan. Frank copula, với cấu trúc phụ thuộc mạnh ở giữa, được sử dụng rộng rãi trong các bài toán sinh học và khoa học xã hội.
Copula đã chứng tỏ giá trị của mình trong nhiều lĩnh vực, đặc biệt là tài chính, nơi nó được sử dụng để mô hình hóa sự phụ thuộc giữa các tài sản và quản lý rủi ro danh mục đầu tư. Chẳng hạn, trong quản lý rủi ro tài chính, copula cho phép nhà phân tích mô hình hóa và dự đoán xác suất các sự kiện rủi ro xảy ra đồng thời, điều mà các phương pháp truyền thống không thể thực hiện chính xác. Ngoài ra, copula cũng được áp dụng trong phân tích dữ liệu sinh học, khí hậu và bảo hiểm, nơi mà việc mô hình hóa sự phụ thuộc phức tạp là rất quan trọng. Tuy nhiên, việc áp dụng copula cũng đối mặt với một số thách thức.
Việc lựa chọn copula phù hợp và ước lượng tham số copula có thể phức tạp, đòi hỏi sự hiểu biết sâu sắc về cả lý thuyết và thực nghiệm. Hơn nữa, trong một số trường hợp, mô hình copula có thể đơn giản hóa quá mức hoặc không phản ánh chính xác sự phụ thuộc phi tuyến tính phức tạp giữa các biến ngẫu nhiên. Do đó, việc kết hợp copula với các kỹ thuật thống kê và máy học khác thường được khuyến khích để cải thiện hiệu quả và độ chính xác của mô hình.
Tóm lại, copula là một công cụ mạnh mẽ và linh hoạt trong phân tích thống kê và tài chính, cung cấp một phương pháp tiếp cận tiên tiến để mô hình hóa sự phụ thuộc giữa các biến ngẫu nhiên. Sự tách biệt giữa mô hình hóa biên và phụ thuộc mà copula mang lại đã mở ra nhiều cơ hội mới trong nghiên cứu và ứng dụng thực tiễn, từ quản lý rủi ro tài chính đến phân tích dữ liệu phức tạp trong nhiều lĩnh vực khác nhau. Để hiểu hơn về định nghĩa Copula, tiếp theo ta đến với những tính chất của nó.
Copula không điều kiện là một hàm phân phối xác suất đa chiều cho các biến ngẫu nhiên với các phân phối biên độc lập. Nó kết nối các phân phối biên một chiều để tạo thành một phân phối đa chiều chung. Dựa trên Định lý Sklar, bất kỳ hàm phân phối đa chiều nào cũng có thể được biểu diễn bằng một copula và các phân phối biên tương ứng.
Copula có điều kiện mở rộng khái niệm copula không điều kiện bằng cách mô hình hóa sự phụ thuộc giữa các biến ngẫu nhiên điều kiện trên một hoặc nhiều biến khác. Thay vì chỉ mô hình hóa phụ thuộc chung, copula có điều kiện cho phép phân tích sự phụ thuộc trong các điều kiện cụ thể, chẳng hạn như khi một biến đã được điều chỉnh hoặc điều kiện trên các giá trị khác.
Mô hình copula hai biến là loại copula bao gồm hai tham số chính: một là tham số liên kết, phản ánh mức độ phụ thuộc giữa hai biến, và hai là tham số trọng lượng, phản ánh hình dạng của sự phụ thuộc. Định lý Sklar:
Cho \(Z_1\)và \(Z_2\) là 2 biến ngẫu nhiên có phân phối chuẩn, có hàm phân phối biên có điều kiện u và v tức là:\[ F_1 (z_1│Ω_(t-1) )=u,F_2 (z_2│Ω_(t-1) )=v \] Gọi H là hàm phân phối đồng thời có điều kiện có như sau:\[ H(z_1,z_2│Ω_(t-1) )=P(Z_1≤z_1, Z_2≤z_2 |Ω_(t-1)) \]
Trong đó \(Ω_(t-1)\) là tập hợp chứa các thông tin đến thời điểm t-1. Khi đó tồn tại duy nhất một hàm Copula có điều kiện C: [0,1] x [0,1] →[0,1] sao cho:\[ H(z_1,z_2│Ω_(t-1) )=C(u,v|Ω_(t-1)) \]
Ngược lại nếu C là một copula hai biến có điều kiện và \(F_1\),\(F_2\) là hai hàm phân phối có điều kiện. Khi đó hàm H là một hàm phân phối đồng thời có điều kiện với các hàm phân phối biên có điều kiện lần lượt là:\[ F_1 (z_1│Ω_(t-1) ),F_2 (z_2│Ω_(t-1)) \]
Phát biểu định lý Sklar rất hữu ích trong việc mô hình hóa phân phối đồng thời trong tài chính. Nó ngụ ý rằng, nếu chúng ta kết hợp hai hay nhiều phân phối biên khác nhau với bất kỳ một copula nào, chúng ta sẽ xác định được một phân phối xác suất đồng thời hợp lệ.
Sự phụ thuộc đuôi đo lường mức độ mà các biến ngẫu nhiên có xu hướng cùng xảy ra trong các tình huống cực đoan. Ví dụ, nó có thể đo lường xác suất của một biến vượt quá một giá trị lớn khi một biến khác cũng vượt qua một giá trị lớn.
Gọi \(Z_1\)và \(Z_2\) là 2 biến ngẫu nhiên liện tục có hàm phân phối biên là \(F_1\),\(F_2\)
Hệ số phụ thuôc đuôi trên \[ \lambda_U = \lim_{u \to 1} P\left(Z_1 > F_1^{-1}(u) \mid Z_2 > F_2^{-1}(u)\right) \]
Trong đó, \(Z_1\) và \(Z_2\) là các biến ngẫu nhiên liên tục, và \(F_1\) và \(F_2\) là các hàm phân phối biên tương ứng.
Hệ số phụ thuộc đuôi dưới \[ \lambda_L = \lim_{u \to 1} P\left(Z_1 < F_1^{-1}(u) \mid Z_2 < F_2^{-1}(u)\right) \]. Nếu \(λ_u=0\) thì ta nói không có phụ thuộc đuôi trên còn nếu \(λ_u∈(0,1]\) thì copula C có phụ thuộc đuôi trên, tương tự cho đuôi dưới.
Để ước lượng mức độ phụ thuộc giữa các thị trường chứng khoán (TTCK) bằng mô hình copula có điều kiện, quy trình bắt đầu bằng việc thu thập dữ liệu về giá của các tài sản từ các thị trường khác nhau và chuyển đổi chúng thành chuỗi lợi suất. Lợi suất là các biến số chính được sử dụng trong phân tích để mô hình hóa sự phụ thuộc và biến động.
Tiếp theo, bước thứ hai là ước lượng phân phối biên cho từng chuỗi lợi suất. Phân phối biên, cho biết phân phối xác suất của lợi suất tại một thời điểm nhất định, được xác định thông qua các phương pháp thống kê như ước lượng kernel hoặc các mô hình phân phối chuẩn, và phần dư chuẩn hóa được tính toán để chuẩn hóa dữ liệu.
Bước thứ ba liên quan đến việc chọn loại copula phù hợp để mô hình hóa sự phụ thuộc giữa các chuỗi lợi suất. Copula là một công cụ cho phép kết hợp các phân phối biên và mô hình hóa mối quan hệ phụ thuộc giữa các biến. Các loại copula như Gaussian, t-Student, hoặc Clayton có thể được lựa chọn dựa trên tính chất của dữ liệu và loại phụ thuộc cần được mô hình hóa. Sau khi chọn loại copula, các tham số của copula cần được ước lượng bằng các phương pháp như cực đại khả năng (MLE) hoặc các kỹ thuật mô phỏng.
Cuối cùng, mô hình copula có điều kiện được xây dựng bằng cách kết hợp copula với mô hình hồi quy có điều kiện, chẳng hạn như mô hình GARCH, để phản ánh sự phụ thuộc giữa các chuỗi lợi suất trong điều kiện của các yếu tố khác hoặc biến số điều kiện. Các tham số của mô hình này cần được ước lượng và đánh giá để kiểm tra tính chính xác của mô hình. Các chỉ số như AIC (Akaike Information Criterion) và BIC (Bayesian Information Criterion) giúp đánh giá độ phù hợp của mô hình, và các kiểm định thống kê như Anderson-Darling hoặc Kolmogorov-Smirnov được sử dụng để kiểm tra độ chính xác của mô hình.
Theo Lê Văn Thứ và Trần Ái Kết. (2022). LÝ THUYẾT COPULA VÀ ỨNG DỤNG TRONG TÀI CHÍNH: XÁC ĐỊNH CẤU TRÚC PHỤ THUỘC GIỮA THỊ TRƯỜNG CHỨNG KHOÁN VIỆT NAM VÀ THỊ TRƯỜNG CHỨNG KHOÁN CHÂU Á. Bài viết này ứng dụng lý thuyết copula để xem xét cấu trúc phụ thuộc giữa thị trường chứng khoán (TTCK) Việt Nam với các TTCK châu Á gồm Trung Quốc, Hồng Kông, Hàn Quốc, Nhật Bản và Singapore dưới góc độ biến động cực biên. Nghiên cứu này sử dụng mô hình GJR-GARCH Skewed Student-t để mô hình hóa phân phối biên của các chuỗi lợi suất chứng khoán và vận dụng các hàm copula Gaussian, Student-t, Gumbel và Rotated Gumbel để mô tả cấu trúc phụ thuộc đối xứng và bất đối xứng giữa hai thị trường. Sử dụng mẫu dữ liệu theo tần suất ngày giai đoạn 2006-2020, kết quả chỉ ra rằng, tồn tại sự phụ thuộc đuôi dưới giữa TTCK Việt Nam với TTCK Trung quốc, Hồng kông, Hàn Quốc và Singapore nhưng ở mức độ yếu. Tồn tại sự phụ thuộc đối xứng ở mức độ yếu giữa TTCK Việt Nam và TTCK Nhật Bản. Điều này cho thấy, TTCK Việt Nam có vẻ ít nhạy cảm trước các cú sốc lan tỏa đến từ các TTCK phát triển và mới nổi.
Theo Lê Văn Thứ và Trần Ái Kết. (2022). MỐI QUAN HỆ PHỤ THUỘC GIỮA THỊ TRƯỜNG CHỨNG KHOÁN VIỆT NAM VÀ THỊ TRƯỜNG CHỨNG KHOÁN MỸ: TIẾP CẬN BẰNG MÔ HÌNH COPULA-GJR-GARCH . Mô hình hóa sự phụ thuộc giữa các chuỗi lợi suất chứng khoán là một bài toán khó khi mà các chuỗi lợi suất thường có biên độ dao động lớn. Việc xác định mối quan hệ phụ thuộc giữa các chuỗi lợi suất khi giả định các chuỗi lợi suất có phân phối chuẩn thường cho kết quả sai lệch. Hàm phân phối xác suất của các chuỗi lợi suất thường có đuôi dày, phản ánh các cú sốc trên thị trường tài chính. Để khắc phục nhược điểm này, bài viết vận dụng mô hình copula có điều kiện (Copula-GJR-GARCH) để mô hình hóa cấu trúc phụ thuộc giữa thị trường chứng khoán Việt Nam và thị trường chứng khoán Mỹ. Kết quả chỉ ra rằng thị trường chứng khoán Mỹ và thị trường chứng khoán Việt Nam có mối quan hệ phụ thuộc nhưng ở mức độ yếu. Hơn nữa, sự phụ thuộc đuôi dưới giữa hai thị trường cũng được tìm thấy nhưng không đáng kể.
Theo Lê Văn Tuấn và Phùng Duy Quang. (2020). ÁP DỤNG MÔ HÌNH GARCH TRÊN THỊ TRƯỜNG CHỨNG KHOÁN VIỆT NAM. Bài viết sử dụng mô hình GARCH để mô hình hóa và thực hiện dự báo cho chỉ số VNIndex, chỉ số đại diện cho TTCK Việt Nam. Kết quả thống kê cho thấy mô hình phù hợp nhất để mô hình hóa sự biến động của VNIndex là GARCH(1, 1). Các câu lệnh R được cung cấp đầy đủ tới bạn đọc.
Theo Hàn Vi Phi. (2021). ỨNG DỤNG MÔ HÌNH ARCH VÀ GARCH DỰ BÁO LỢI SUẤT CỔ PHIẾU VNM. Dựa trên dữ liệu thu thập là giá đóng cửa của cổ phiếu Công ty Cổ phần Sữa Việt Nam (VNM) theo ngày, từ ngày 31/8/2016 đến ngày 14/9/2020, bao gồm 989 quan sát được sử dụng đo lường sự biến động của giá cổ phiếu và lợi suất ngày. Từ đó sử dụng mô hình ARCH-GARCH để dự báo lợi suất của cổ phiếu VNM. Chuỗi lợi suất theo ngày của VNM tuân theo quy luật phân phối chuẩn và có tính dừng. Kết quả nghiên cứu cho thấy mô hình GARCH(1,1) phù hợp để tiến hành dự báo tỷ suất của cổ phiếu VNM. Những biến động trong quá khứ của thị trường có thể được lặp lại trong hiện tại và nghiên cứu dự báo những biến động của thị trường góp phần cung cấp dữ liệu quan trọng trong việc quyết định phân bổ tài sản, quản lý rủi ro và quản lý các danh mục đầu tư cho các nhà đầu tư trên thị trường chứng khoán Việt Nam.
Trong giai đoạn từ 2019 đến 2024, thị trường chứng khoán của Công ty Cổ phần FPT đã trải qua nhiều biến động đáng chú ý.
Năm 2019, FPT ghi nhận mức tăng trưởng mạnh mẽ trong cả doanh thu và lợi nhuận, với doanh thu đạt khoảng 27.717 tỷ đồng và lợi nhuận sau thuế đạt 4.109 tỷ đồng.
Năm 2020, mặc dù chịu ảnh hưởng từ đại dịch COVID-19, FPT vẫn duy trì sự tăng trưởng ổn định với doanh thu đạt 29.830 tỷ đồng, tăng 7,6% so với năm trước đó, và lợi nhuận sau thuế đạt 4.421 tỷ đồng, tăng 7,6%. Sự tăng trưởng này chủ yếu đến từ mảng công nghệ và viễn thông khi nhu cầu chuyển đổi số và dịch vụ trực tuyến tăng cao.
Sang năm 2021, FPT tiếp tục mở rộng thị trường quốc tế và đạt được những hợp đồng lớn, đặc biệt trong lĩnh vực chuyển đổi số. Doanh thu của FPT trong năm này tăng lên 35.657 tỷ đồng, với lợi nhuận sau thuế đạt 5.349 tỷ đồng, tăng 21% so với năm 2020.
Giai đoạn 2022-2023 chứng kiến sự cạnh tranh khốc liệt trong lĩnh vực công nghệ thông tin và viễn thông, nhưng FPT vẫn giữ vững vị thế nhờ chiến lược phát triển bền vững và sự đầu tư mạnh mẽ vào nghiên cứu và phát triển. Năm 2023, doanh thu của FPT đạt khoảng 44.010 tỷ đồng, tăng 23% so với năm 2022, trong khi lợi nhuận sau thuế đạt 6.352 tỷ đồng, tăng 18,7%.
Dự báo cho năm 2024, FPT đặt mục tiêu tiếp tục mở rộng thị trường quốc tế và đẩy mạnh dịch vụ chuyển đổi số, với kỳ vọng doanh thu sẽ tăng trưởng khoảng 20% so với năm trước đó. Những con số ấn tượng trong giai đoạn này đã thể hiện rõ sự nỗ lực không ngừng của FPT trong việc duy trì đà tăng trưởng và đối mặt với những thách thức của thị trường.
Thị trường chứng khoán Apple trong giai đoạn từ 2019 đến 2024 đã chứng kiến sự biến động và tăng trưởng đáng kể, phản ánh những thay đổi trong kinh tế toàn cầu và sự phát triển không ngừng của công ty.
Vào đầu năm 2019, cổ phiếu của Apple giao dịch ở mức khoảng 150 USD, nhờ vào sự ra mắt của các sản phẩm mới và chiến lược mở rộng thị trường, giá cổ phiếu đã có sự phục hồi và tăng trưởng đáng kể.
Đặc biệt, năm 2020, mặc dù đối mặt với đại dịch COVID-19, cổ phiếu của Apple đã tăng mạnh nhờ vào sự gia tăng nhu cầu đối với các sản phẩm công nghệ phục vụ làm việc từ xa và giải trí tại nhà. Vào tháng 8 năm 2020, Apple đã thực hiện việc chia tách cổ phiếu với tỷ lệ 4:1, đưa giá cổ phiếu xuống còn khoảng 125 USD, nhằm tăng cường khả năng tiếp cận của nhà đầu tư cá nhân.
Năm 2021, Apple tiếp tục đạt được những thành công lớn với giá cổ phiếu tăng vượt mốc 180 USD vào tháng 12, chủ yếu nhờ vào sự ra mắt của dòng sản phẩm iPhone 13 và những cải tiến trong dịch vụ số như Apple Music và Apple TV+.
Đến năm 2022, thị trường chứng khoán toàn cầu chịu nhiều áp lực từ lạm phát gia tăng và cuộc xung đột Nga-Ukraine, tuy nhiên, cổ phiếu Apple vẫn giữ được sự ổn định tương đối, dao động quanh mức 130-160 USD, cho thấy sự tin tưởng của nhà đầu tư vào sức mạnh tài chính và vị thế thị trường của công ty. Năm 2023, với việc tiếp tục đầu tư mạnh mẽ vào nghiên cứu và phát triển, cũng như mở rộng hệ sinh thái sản phẩm và dịch vụ, giá cổ phiếu Apple đã từng chạm mốc cao nhất mọi thời đại gần 200 USD vào tháng 7.
Tính đến giữa năm 2024, cổ phiếu của Apple tiếp tục duy trì ở mức cao, phản ánh sự lạc quan của thị trường vào khả năng duy trì tăng trưởng bền vững và sự đổi mới không ngừng của Apple trong bối cảnh cạnh tranh ngày càng khốc liệt.
Dữ liệu sử dụng trong nghiên cứu là chuỗi dữ liệu thời gian theo ngày của chỉ số đóng cửa thị trường chứng khoán của FPT và APPLE. Dữ liệu nghiên cứu được thu thập trong khoảng thời gian từ 02/01/2019-17/07/2024. Dữ liệu được thu thập từ trang www.investing.com.
# Tải các gói vào môi trường làm việc
library(readxl)
## Warning: package 'readxl' was built under R version 4.3.3
library(tseries)
## Warning: package 'tseries' was built under R version 4.3.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(forecast)
## Warning: package 'forecast' was built under R version 4.3.3
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.3.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.3.3
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(rugarch)
## Warning: package 'rugarch' was built under R version 4.3.3
## Loading required package: parallel
##
## Attaching package: 'rugarch'
## The following object is masked from 'package:stats':
##
## sigma
library(copula)
library(FinTS)
## Warning: package 'FinTS' was built under R version 4.3.3
##
## Attaching package: 'FinTS'
## The following object is masked from 'package:forecast':
##
## Acf
library(fGarch)
## Warning: package 'fGarch' was built under R version 4.3.3
## NOTE: Packages 'fBasics', 'timeDate', and 'timeSeries' are no longer
## attached to the search() path when 'fGarch' is attached.
##
## If needed attach them yourself in your R script by e.g.,
## require("timeSeries")
library(corrplot)
## Warning: package 'corrplot' was built under R version 4.3.3
## corrplot 0.92 loaded
library(PerformanceAnalytics)
## Warning: package 'PerformanceAnalytics' was built under R version 4.3.3
## Loading required package: xts
## Warning: package 'xts' was built under R version 4.3.3
##
## Attaching package: 'PerformanceAnalytics'
## The following objects are masked from 'package:fGarch':
##
## ES, VaR
## The following object is masked from 'package:graphics':
##
## legend
# Đọc dữ liệu từ tệp Excel
data <- read_excel("C:/Users/Dell/OneDrive - UFM/Desktop/dulieumohinhngaunhien.xlsx")
# Hiển thị phần đầu của dữ liệu
mydata <- data[,c(2:3)]
head(data,6)
## # A tibble: 6 × 5
## Date `Price FPT` `Price AAPL` FPT AAPL
## <dttm> <dbl> <dbl> <dbl> <dbl>
## 1 2019-01-02 00:00:00 21479. 39.5 -0.0114 -0.0212
## 2 2019-01-03 00:00:00 21270. 35.6 -0.00975 -0.105
## 3 2019-01-04 00:00:00 21427. 37.1 0.00733 0.0416
## 4 2019-01-07 00:00:00 21792. 37.0 0.0169 -0.00216
## 5 2019-01-08 00:00:00 21896. 37.7 0.00477 0.0190
## 6 2019-01-09 00:00:00 22104. 38.3 0.00948 0.0168
Dùng hàm str() giúp kiểm tra kiểu dữ liệu của các cột trong mydata.
str(mydata)
## tibble [1,394 × 2] (S3: tbl_df/tbl/data.frame)
## $ Price FPT : num [1:1394] 21479 21270 21427 21792 21896 ...
## $ Price AAPL: num [1:1394] 39.5 35.5 37.1 37 37.7 ...
Dùng hàm cor() tính toán ma trận hệ số tương quan giữa các cột của mydata. Kết quả được lưu vào biến res.
Dùng hàm round() làm tròn các giá trị trong res đến hai chữ số thập phân. Nếu muốn làm tròn đến chữ số thập phân thứ 3, ta thay số 2 thành 3.
Vẽ biểu đồ tương quan
res <- cor(mydata)
rounded_res <- round(res, 3)
round(res, 3)
## Price FPT Price AAPL
## Price FPT 1.000 0.889
## Price AAPL 0.889 1.000
corrplot(rounded_res, method = "color")
library(corrplot)
corrplot(res, type = "upper", order = "hclust",
tl.col = "black", tl.srt = 45)
library(ggplot2)
library(ggcorrplot)
## Warning: package 'ggcorrplot' was built under R version 4.3.3
df <- dplyr::select_if(mydata, is.numeric)
r <- cor(df, use="complete.obs")
ggcorrplot(r)
Kiểm định phân phối chuẩn Jarque-Bera (Jarque-Bera Normality Test) là một phương pháp thống kê được sử dụng để kiểm tra xem một tập dữ liệu có tuân theo phân phối chuẩn hay không. Phương pháp này dựa trên hai thống kê mô tả, đó là hệ số bất đối xứng (skewness) và hệ số nhọn (kurtosis), để đánh giá tính chuẩn của phân phối dữ liệu.
Kiểm định phân phối chuẩn Jarque-Bera kiểm tra xem giá trị hệ số bất đối xứng và hệ số nhọn của dữ liệu có phù hợp với phân phối chuẩn hay không. Nếu giá trị p-value của kiểm định nhỏ hơn một ngưỡng ý nghĩa (thường là 0.05), chúng ta có căn cứ để bác bỏ giả thuyết rằng dữ liệu không tuân theo phân phối chuẩn.
library(tseries)
data <- read_excel("C:/Users/Dell/OneDrive - UFM/Desktop/dulieumohinhngaunhien.xlsx")
# Thực hiện kiểm định Jarque-Bera cho FPT
Var1 <- data$FPT
# Kiểm định phân phối chuẩn cho FPT
result1 <- jarque.bera.test(Var1)
# Hiển thị kết quả của kiểm định Jarque-Bera cho FPT mà không hiển thị mã code
cat("Kết quả kiểm định Jarque-Bera cho FPT:\n")
## Kết quả kiểm định Jarque-Bera cho FPT:
cat("Giá trị thống kê:", result1$statistic, "\n")
## Giá trị thống kê: 4666.356
cat("Giá trị p-value:", result1$p.value, "\n")
## Giá trị p-value: 0
Kết quả của kiểm định sẽ bao gồm giá trị x-squared = 4666.4 và p_value=0.00000000000000022. Ta có p_value= 0.00000000000000022 < alpha = 0.05 thì bác bỏ giả thuyết H0. Kết luận rằng dữ liệu tuân theo phân phối chuẩn.
# Thực hiện kiểm định Jarque-Bera cho AAPL
Var2 <- data$AAPL
# Kiểm định phân phối chuẩn cho AAPL
result2 <- jarque.bera.test(Var2)
# Hiển thị kết quả kiểm định với tiêu đề
cat("Kết quả kiểm định Jarque-Bera cho AAPL:\n")
## Kết quả kiểm định Jarque-Bera cho AAPL:
cat("Giá trị thống kê X-squared:", result2$statistic, "\n")
## Giá trị thống kê X-squared: 1742.792
cat("Giá trị p-value:", result2$p.value, "\n")
## Giá trị p-value: 0
Kết quả của kiểm định sẽ bao gồm giá trị x-squared = 1742.8 và p_value= 0.00000000000000022. Ta có p_value= 0.00000000000000022 < alpha = 0.05 thì bác bỏ giả thuyết H0. Kết luận rằng dữ liệu tuân theo phân phối chuẩn.
# Tạo bảng kết quả
results <- data.frame(
Stock = c("FPT", "AAPL"),
JB_Statistic = c(result1$statistic, result2$statistic),
JB_pValue = c(result1$p.value, result2$p.value))
# Hiển thị bảng kết quả
knitr::kable(results, caption = "Bảng 1. Kiểm định Jarque-Bera cho các chỉ số chứng khoán")
| Stock | JB_Statistic | JB_pValue |
|---|---|---|
| FPT | 4666.356 | 0 |
| AAPL | 1742.792 | 0 |
Trong bảng kết quả:
Stock là tên cổ phiếu.
JB_Statistic là giá trị thống kê của kiểm định Jarque-Bera.
JB_pValue là giá trị p của kiểm định Jarque-Bera.
Tương tự với kiểm định phân phối chuẩn: Jarque-Bera thì Kiểm định tính dừng: Augmented Dickey–Fuller cũng sủ dụng gói “tseries”. Kiểm định ADF được sử dụng để kiểm tra xem một chuỗi thời gian có tính dừng hay không. Giả thiết H0 là chuỗi thời gian không có tính dừng.
Dưới đây là cách thực hiện kiểm định ADF
#Kiểm định tính dừng của FPT
adf.test(Var1)
## Warning in adf.test(Var1): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: Var1
## Dickey-Fuller = -11.103, Lag order = 11, p-value = 0.01
## alternative hypothesis: stationary
adf_result1 <- adf.test(Var1)
## Warning in adf.test(Var1): p-value smaller than printed p-value
#Hiển thị kết quả kiểm định ADF
cat("Kết quả kiểm định ADF cho cổ phiếu FPT:\n")
## Kết quả kiểm định ADF cho cổ phiếu FPT:
cat("Giá trị thống kê ADF:", adf_result1$statistic, "\n")
## Giá trị thống kê ADF: -11.10282
cat("Giá trị p-value:", adf_result1$p.value, "\n")
## Giá trị p-value: 0.01
cat("Số độ trễ trong mô hình ADF:", adf_result1$parameter, "\n")
## Số độ trễ trong mô hình ADF: 11
cat("Kết luận: ", ifelse(adf_result1$p.value < 0.05, "Chuỗi dữ liệu là dừng.", "Chuỗi dữ liệu không phải là dừng."), "\n")
## Kết luận: Chuỗi dữ liệu là dừng.
Hàm “adf.test()” sẽ trả về kết quả của kiểm định ADF, bao gồm giá trị của thống kê kiểm định và giá trị p-value. Nếu p-value nhỏ hơn một mức ý nghĩa đã chọn (ví dụ: 0.05), bạn có thể bác bỏ giả thuyết rằng chuỗi thời gian không có tính dừng.
Kết quả chạy kiểm định của kiểm định ADF trên, bao gồm giá trị của thống kê kiểm định về tính dừng là Dickey-Fuller = -11.103 và giá trị p-value = 0.01 . Ta có p-value = 0.01 < alpha = 0.05, bạn có thể bác bỏ giả thuyết H0 . Kết luận rằng chuỗi thời gian có tính dừng.
# Kiểm định tính dừng của AAPL
adf.test(Var2)
## Warning in adf.test(Var2): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: Var2
## Dickey-Fuller = -10.344, Lag order = 11, p-value = 0.01
## alternative hypothesis: stationary
adf_result2 <- adf.test(Var2)
## Warning in adf.test(Var2): p-value smaller than printed p-value
# Hiển thị kết quả kiểm định ADF mà không hiển thị mã nguồn
cat("Kết quả kiểm định ADF cho cột AAPL:\n")
## Kết quả kiểm định ADF cho cột AAPL:
cat("Giá trị thống kê ADF:", adf_result2$statistic, "\n")
## Giá trị thống kê ADF: -10.34414
cat("Giá trị p-value:", adf_result2$p.value, "\n")
## Giá trị p-value: 0.01
cat("Số độ trễ trong mô hình ADF:", adf_result2$parameter, "\n")
## Số độ trễ trong mô hình ADF: 11
cat("Kết luận: ", ifelse(adf_result2$p.value < 0.05, "Chuỗi dữ liệu là dừng.", "Chuỗi dữ liệu không phải là dừng."), "\n")
## Kết luận: Chuỗi dữ liệu là dừng.
Kết quả chạy kiểm định của kiểm định ADF trên, bao gồm giá trị của thống kê kiểm định về tính dừng là Dickey-Fuller = -10.344 và giá trị p-value = 0.01 . Ta có p-value = 0.01 < alpha = 0.05, bạn có thể bác bỏ giả thuyết H0 . Kết luận rằng chuỗi thời gian có tính dừng.
# Tạo bảng kết quả
results_adf <- data.frame(
Stock = c("FPT", "AAPL"),
ADF_Statistic = c(adf_result1$statistic, adf_result2$statistic),
ADF_pValue = c(adf_result1$p.value, adf_result2$p.value)
)
# Hiển thị bảng kết quả
knitr::kable(results, caption = "Bảng 2. Kiểm định ADF cho các chỉ số chứng khoán")
| Stock | JB_Statistic | JB_pValue |
|---|---|---|
| FPT | 4666.356 | 0 |
| AAPL | 1742.792 | 0 |
Trong bảng kết quả:
Stock là tên cổ phiếu.
ADF_Statistic là giá trị thống kê của kiểm định ADF.
ADF_pValue là giá trị p của kiểm định ADF.
Tóm lại, cả hai chuỗi dữ liệu FPT và AAPL đều được kiểm định là dừng, theo kết quả của kiểm định ADF. Điều này có nghĩa là các chuỗi dữ liệu này không chứa xu hướng hoặc mô hình ngẫu nhiên dài hạn, và các phân tích hồi quy hoặc mô hình dự đoán có thể thực hiện mà không cần thêm các bước xử lý về tính dừng.
Trong R, có thể sử dụng hàm Box.test() trong gói “stats” để thực hiện kiểm định tương quan chuỗi Ljung-Box. Kiểm định Ljung-Box được sử dụng để kiểm tra tính tương quan tự do của một chuỗi thời gian và xác định xem chuỗi có phụ thuộc tương quan không gian hay không. Giả thiết H0 là không có tương quan chuỗi Ljung-Box.
# Kiểm định tương quan chuỗi cho FPT
library(stats)
result3 <- Box.test(Var1, lag = 10, type = "Ljung-Box")
# Hiển thị kết quả
cat("Kết quả kiểm định tương quan chuỗi Ljung-Box cho FPT:\n")
## Kết quả kiểm định tương quan chuỗi Ljung-Box cho FPT:
cat("X-squared:", result3$statistic, "\n")
## X-squared: 19.60271
cat("Degrees of Freedom:", result3$parameter, "\n")
## Degrees of Freedom: 10
cat("p-value:", result3$p.value, "\n")
## p-value: 0.03324242
Trong đó, ‘Var1’ là vector chuỗi thời gian mà bạn muốn kiểm tra, ‘lag’ là số lượng lag mà bạn muốn sử dụng trong kiểm định, và type = “Ljung-Box” để chỉ định sử dụng kiểm định Ljung-Box.
Kết quả của kiểm định Ljung-Box sẽ bao gồm giá trị của thống kê kiểm định (Q statistic) và giá trị p-value. Giá trị p-value thường được so sánh với một mức ý nghĩa nhất định (ví dụ: 0.05) để xác định xem có sự tồn tại của tương quan không gian trong chuỗi thời gian hay không. Nếu giá trị p-value nhỏ hơn mức ý nghĩa, ta có thể kết luận rằng có sự tồn tại của tương quan không gian trong chuỗi thời gian.
Kết quả chạy kiểm định của kiểm định Ljung-Box sẽ bao gồm giá trị của thống kê kiểm định (Q statistic) = 19.603 và giá trị p-value = 0.03324 . Với giá trị p-value = 0.03324 <0.05, Bác bỏ giả thuyết không có sự tự tương quan, chấp nhận giả thuyết có sự tương quan.
# Kiểm định tương quan chuỗi cho AAPL
library(stats)
result4 <- Box.test(Var2, lag = 10, type = "Ljung-Box")
# Hiển thị kết quả với thông báo mà không hiển thị mã kiểm định
cat("Kết quả kiểm định tương quan chuỗi Ljung-Box cho AAPL:\n")
## Kết quả kiểm định tương quan chuỗi Ljung-Box cho AAPL:
cat("Chi-square Statistic:", result4$statistic, "\n")
## Chi-square Statistic: 74.02823
cat("p-value:", result4$p.value, "\n")
## p-value: 7.352008e-12
Kết quả chạy kiểm định của kiểm định Ljung-Box sẽ bao gồm giá trị của thống kê kiểm định (Q statistic) = 74.028 và giá trị p-value = 7.352e-12 . Với giá trị p-value = 7.352e-12 <0.05, Bác bỏ giả thuyết không có sự tự tương quan, chấp nhận giả thuyết có sự tương quan.
# Tạo bảng kết quả
results <- data.frame(
Stock = c("FPT", "AAPL"),
Test_Statistic = c(result3$statistic, result4$statistic),
p_Value = c(result3$p.value, result4$p.value)
)
# Hiển thị bảng kết quả
knitr::kable(results, caption = "Bảng 3. Kiểm định tương quan chuỗi Ljung-Box cho các chỉ số chứng khoán")
| Stock | Test_Statistic | p_Value |
|---|---|---|
| FPT | 19.60271 | 0.0332424 |
| AAPL | 74.02823 | 0.0000000 |
Kiểm định hiệu ứng ARCH-LM (Autoregressive Conditional Heteroscedasticity Lagrange Multiplier test) là một phương pháp thống kê được sử dụng để kiểm tra sự tồn tại của hiệu ứng ARCH trong mô hình dữ liệu chuỗi thời gian.
Hiệu ứng ARCH xuất hiện khi phương sai của một chuỗi dữ liệu chuỗi thay đổi theo thời gian và phụ thuộc vào các giá trị trước đó của chuỗi. Điều này có nghĩa là sự biến đổi trong dữ liệu không đồng nhất qua thời gian và có tính chất “heteroscedasticity”.
Kiểm định hiệu ứng ARCH-LM thực hiện kiểm tra xem các giá trị trong chuỗi dữ liệu có biến đổi không đồng nhất qua thời gian hay không. Phương pháp này sử dụng một mô hình autoregressive để ước lượng và tách ra thành phần không đồng nhất, sau đó kiểm tra tính chất ngẫu nhiên của phần dư (residuals) để xác định sự tồn tại của hiệu ứng ARCH.
# Kiểm định hiệu ứng ARCH - LM cho chỉ số chứng khoán FPT
arch_spec <- ugarchspec(variance.model = list(model = "sGARCH"))
arch_FPT <- ugarchfit(spec = arch_spec, data = data$FPT)
residuals <- residuals(arch_FPT)
n <- length(residuals)
x <- 1:n
# Tạo mô hình tuyến tính
arch_lm_model <- lm(residuals^2 ~ x)
# Kiểm định hiệu ứng ARCH-LM
arch <- bptest(arch_lm_model)
# Hiển thị kết quả
cat("Kết quả kiểm định hiệu ứng ARCH-LM:\n")
## Kết quả kiểm định hiệu ứng ARCH-LM:
cat("Statistic:", arch$statistic, "\n")
## Statistic: 0.2630027
cat("p-value:", arch$p.value, "\n")
## p-value: 0.6080647
cat("Alternative Hypothesis: ", arch$alternative, "\n")
## Alternative Hypothesis:
Từ kết quả trên ta có :
Dòng “data: arch_lm_model” chỉ ra rằng kiểm định được thực hiện trên mô hình có tên là “arch_lm_model”. Giá trị “BP” là giá trị thống kê được tính từ kiểm định, trong trường hợp này là 0.253. “df” là số độ tự do của kiểm định, trong trường hợp này là 1. Giá trị “p-value” là giá trị xác suất liên quan đến giả thuyết không có hiệu ứng ARCH. Trong trường hợp này, giá trị p-value là 0.6150. Ý nghĩa của kết quả:
Khi thực hiện kiểm định hiệu ứng ARCH: ARCH-LM,ta quan tâm đến giá trị p-value. Giá trị p-value là một số xác suất thể hiện khả năng xảy ra kết quả kiểm định như vậy hoặc càng “tệ” hơn, nếu giả thuyết không có hiệu ứng ARCH là chính xác.
Trong trường hợp này, giá trị p-value là 0.6081. Nếu mức ý nghĩa được lựa chọn là 0.05 (thường được sử dụng), thì giá trị p-value là lớn hơn mức ý nghĩa này. Do đó, không có đủ bằng chứng để bác bỏ giả thuyết không có hiệu ứng ARCH.
# Kiểm định hiệu ứng ARCH - LM cho chỉ số chứng khoán AAPL
arch_spec <- ugarchspec(variance.model = list(model = "sGARCH"))
arch_AAPL <- ugarchfit(spec = arch_spec, data = data$AAPL)
residuals <- residuals(arch_AAPL)
n <- length(residuals)
x <- 1:n
# Tạo mô hình tuyến tính
arch_lm_model <- lm(residuals^2 ~ x)
# Kiểm định hiệu ứng ARCH-LM
arch <- bptest(arch_lm_model)
# Hiển thị kết quả
cat("Kết quả kiểm định hiệu ứng ARCH-LM cho chỉ số chứng khoán AAPL:\n")
## Kết quả kiểm định hiệu ứng ARCH-LM cho chỉ số chứng khoán AAPL:
cat("Statistic:", arch$statistic, "\n")
## Statistic: 7.202225
cat("p-value:", arch$p.value, "\n")
## p-value: 0.007281323
Trong trường hợp này, giá trị p-value là 0.0214. Với mức ý nghĩa được lựa chọn là 0.05 (thường được sử dụng), thì giá trị p-value là bé hơn mức ý nghĩa này. Do đó, bác bỏ giả thuyết H0, mô hình có hiệu ứng ARCH.
# Hiển thị bảng kết quả
knitr::kable(results, caption = "Bảng 4. Kiểm định hiệu ứng ARCH-LM cho các chỉ số chứng khoán")
| Stock | Test_Statistic | p_Value |
|---|---|---|
| FPT | 19.60271 | 0.0332424 |
| AAPL | 74.02823 | 0.0000000 |
library(dplyr)
##
## ######################### Warning from 'xts' package ##########################
## # #
## # The dplyr lag() function breaks how base R's lag() function is supposed to #
## # work, which breaks lag(my_xts). Calls to lag(my_xts) that you type or #
## # source() into this session won't work correctly. #
## # #
## # Use stats::lag() to make sure you're not using dplyr::lag(), or you can add #
## # conflictRules('dplyr', exclude = 'lag') to your .Rprofile to stop #
## # dplyr from breaking base R's lag() function. #
## # #
## # Code in packages is not affected. It's protected by R's namespace mechanism #
## # Set `options(xts.warn_dplyr_breaks_lag = FALSE)` to suppress this warning. #
## # #
## ###############################################################################
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:xts':
##
## first, last
## The following object is masked from 'package:gridExtra':
##
## combine
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(moments)
##
## Attaching package: 'moments'
## The following objects are masked from 'package:PerformanceAnalytics':
##
## kurtosis, skewness
library(kableExtra)
## Warning: package 'kableExtra' was built under R version 4.3.3
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
#
rt_df <- data.frame(
FPT = rnorm(100), # Normally distributed random numbers
AAPL = rnorm(100)
)
# Calculate summary statistics for FPT
a <- rt_df %>% summarise(
Min = min(FPT, na.rm = TRUE),
Max = max(FPT, na.rm = TRUE),
Mean = mean(FPT, na.rm = TRUE),
StDev = sd(FPT, na.rm = TRUE),
Skewness = skewness(FPT, na.rm = TRUE),
Kurtosis = kurtosis(FPT, na.rm = TRUE)
)
# Calculate summary statistics for AAPL
b <- rt_df %>% summarise(
Min = min(AAPL, na.rm = TRUE),
Max = max(AAPL, na.rm = TRUE),
Mean = mean(AAPL, na.rm = TRUE),
StDev = sd(AAPL, na.rm = TRUE),
Skewness = skewness(AAPL, na.rm = TRUE),
Kurtosis = kurtosis(AAPL, na.rm = TRUE)
)
# Combine results and set row names
m <- rbind(a, b)
rownames(m) <- c('FPT', 'AAPL')
# Create and style the table
kable(m, format = 'pandoc', caption = 'Bảng 2: Thống kê mô tả chuỗi tỉ suất lợi nhuận', table.attr = "style='width:100%;'") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
## Warning in kable_styling(., bootstrap_options = c("striped", "hover",
## "condensed")): Please specify format in kable. kableExtra can customize either
## HTML or LaTeX outputs. See https://haozhu233.github.io/kableExtra/ for details.
| Min | Max | Mean | StDev | Skewness | Kurtosis | |
|---|---|---|---|---|---|---|
| FPT | -2.159359 | 3.035185 | 0.0103277 | 0.9831557 | 0.3771776 | 3.175849 |
| AAPL | -2.767810 | 2.381852 | -0.0395477 | 0.9494672 | -0.2556149 | 3.371059 |
Đối với biến FPT, giá trị nhỏ nhất và lớn nhất lần lượt là -2.159 và 3.035. Trung bình của FPT gần như bằng 0 với giá trị là 0.010, cho thấy phân phối của dữ liệu xung quanh giá trị trung bình rất gần bằng không. Độ lệch chuẩn của FPT là 0.983, cho thấy sự phân tán của dữ liệu xung quanh giá trị trung bình là tương đối đồng đều. Độ lệch chuẩn dương này gợi ý rằng phần lớn dữ liệu nằm trong khoảng ±1 đơn vị so với giá trị trung bình. Hệ số skewness của FPT là 0.377, cho thấy phân phối của biến này hơi lệch phải, với phần đuôi phải dài hơn. Độ lệch kurtosis của FPT là 3.176, gần với giá trị của phân phối chuẩn, cho thấy dữ liệu có phân phối gần giống phân phối chuẩn.
Đối với biến AAPL, giá trị nhỏ nhất và lớn nhất lần lượt là -2.768 và 2.382. Trung bình của biến này là -0.040, cho thấy giá trị trung bình của AAPL hơi lệch về phía giá trị âm. Độ lệch chuẩn của AAPL là 0.949, tương tự như FPT, cho thấy sự phân tán của dữ liệu xung quanh giá trị trung bình cũng khá đồng đều. Hệ số skewness của AAPL là -0.256, cho thấy phân phối của biến này hơi lệch trái, với phần đuôi trái dài hơn một chút so với phần đuôi phải. Độ lệch kurtosis của AAPL là 3.371, cho thấy phân phối của dữ liệu cũng gần với phân phối chuẩn nhưng có độ nhọn hơn.
Tóm lại, cả hai biến FPT và AAPL đều có sự phân tán khá đồng đều xung quanh giá trị trung bình của chúng, với phân phối gần với phân phối chuẩn nhưng có sự khác biệt nhỏ trong độ lệch và độ nhọn của phân phối.
# Nạp các thư viện cần thiết
library(dplyr)
library(kableExtra)
# Tạo data frame mẫu
rt <- data.frame(
FPT = rnorm(100), # Dữ liệu mẫu cho FPT
AAPL = rnorm(100) # Dữ liệu mẫu cho AAPL
)
# Kiểm tra cấu trúc của data frame để xác nhận các cột cần thiết
str(rt)
## 'data.frame': 100 obs. of 2 variables:
## $ FPT : num 1.008 -0.382 0.935 0.104 -0.535 ...
## $ AAPL: num 0.508 -0.814 0.275 1.673 -1.314 ...
# Tính toán hệ số tương quan
pearson <- cor(rt$FPT, rt$AAPL, method = "pearson")
spearman <- cor(rt$FPT, rt$AAPL, method = "spearman")
kendall <- cor(rt$FPT, rt$AAPL, method = "kendall")
# Trình bày kết quả
relat <- data.frame(
'Tương quan' = 'FPT-AAPL',
Pearson = pearson,
Spearman = spearman,
Kendall = kendall
)
# Hiển thị kết quả với kableExtra
kable(relat,
col.names = c("Phương pháp", "Pearson", "Spearman", "Kendall"),
caption = "Bảng 4: Kết quả hệ số tương quan",
format = 'pandoc',
align = c("l", "c", "c", "c")) %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)
## Warning in kable_styling(., bootstrap_options = c("striped", "hover",
## "condensed"), : Please specify format in kable. kableExtra can customize either
## HTML or LaTeX outputs. See https://haozhu233.github.io/kableExtra/ for details.
| Phương pháp | Pearson | Spearman | Kendall |
|---|---|---|---|
| FPT-AAPL | 0.0839726 | 0.0421242 | 0.0315152 |
Hệ số tương quan Pearson là -0.0812266, cho thấy mối liên hệ giữa FPT và AAPL là rất yếu, với giá trị gần 0 cho thấy không có mối liên hệ rõ rệt. Giá trị âm nhỏ cho thấy một mối quan hệ nghịch, nhưng không đủ mạnh để xác định xu hướng cụ thể.
Hệ số tương quan Spearman là -0.1114671, cho thấy mối quan hệ giữa FPT và AAPL theo phương pháp tương quan thứ bậc cũng rất yếu. Giá trị âm cho thấy một xu hướng nghịch nhẹ, nhưng mức độ tương quan này vẫn không đủ đáng kể để kết luận về một mối liên hệ rõ ràng.
Hệ số tương quan Kendall là -0.0682828, cũng cho thấy một mối quan hệ rất yếu giữa hai chuỗi dữ liệu. Giá trị âm cho thấy một xu hướng tương quan nghịch, nhưng cũng không đủ mạnh để chỉ ra một mối liên hệ rõ ràng.
Tóm lại, tất cả các phương pháp đo lường tương quan đều cho thấy rằng có một mối liên hệ rất yếu giữa FPT và AAPL. Các giá trị hệ số tương quan gần bằng 0 chỉ ra rằng hai chuỗi dữ liệu này không có sự tương quan đáng kể trong bối cảnh phân tích hiện tại.
Hệ số tương quan tuyến tính Pearson dựa trên giả định rằng chuỗi lợi suất có phân phối chuẩn. Do đó, hệ số Pearson có thể không phù hợp để giải thích mối tương quan giữa hai chuỗi này khi thị trường biến động cực biên. Ngược lại, với phương pháp phân tích phi tham số, hệ số tương quan hạng Spearman và Kendall không yêu cầu các chuỗi lợi suất có phân phối chuẩn. Hai hệ số tương quan này chưa phản ánh thông tin hoặc các cú sốc thị trường, và chưa xem xét đến sự phụ thuộc bất đối xứng ở phần đuôi của phân phối đồng thời giữa hai thị trường khi thị trường sụp đổ hoặc bùng nổ. Do đó, phương pháp copula có điều kiện sẽ được áp dụng để xem xét mức độ phụ thuộc và sự phụ thuộc đuôi giữa hai chuỗi lợi suất khi thị trường biến động cực biên.
chart.Correlation(rt, histogram=TRUE, pch=19)
## Warning in par(usr): argument 1 does not name a graphical parameter
Bước 1. Kiểm định Garch theo các phân phối
data$FPT <- as.numeric(data$FPT)
FPTts <- ts(data$FPT)
# Ước lượng mô hình GARCH(1,1) theo phân phối chuẩn
FPTspec <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE),
distribution.model = 'norm'
)
Đoạn mã này tạo ra một đối tượng spec (FPTspec) để đặc tả mô hình GARCH.
• Mô hình GARCH được sử dụng là GJR-GARCH (generalized autoregressive conditional heteroskedasticity) với garchOrder = c(1, 1).
• Mô hình trung bình được sử dụng là ARMA (autoregressive moving average) với armaOrder = c(2, 2) và include.mean = TRUE (bao gồm thành phần trung bình).
• Phân phối được sử dụng là phân phối chuẩn (“norm”).
FPTfit <- ugarchfit(spec = FPTspec, data = FPTts)
print(FPTfit)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,1)
## Mean Model : ARFIMA(2,0,2)
## Distribution : norm
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 0.001131 0.000393 2.8810 0.003964
## ar1 -0.552455 0.004637 -119.1485 0.000000
## ar2 -0.988175 0.004588 -215.3904 0.000000
## ma1 0.557293 0.008115 68.6778 0.000000
## ma2 0.979931 0.000583 1681.8255 0.000000
## omega 0.000010 0.000001 13.9001 0.000000
## alpha1 0.061096 0.009115 6.7030 0.000000
## beta1 0.888978 0.008737 101.7499 0.000000
## gamma1 0.040715 0.019254 2.1146 0.034464
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 0.001131 0.000455 2.4855 0.012938
## ar1 -0.552455 0.003906 -141.4474 0.000000
## ar2 -0.988175 0.004986 -198.1997 0.000000
## ma1 0.557293 0.007966 69.9582 0.000000
## ma2 0.979931 0.000480 2039.6550 0.000000
## omega 0.000010 0.000001 8.0876 0.000000
## alpha1 0.061096 0.013460 4.5390 0.000006
## beta1 0.888978 0.011613 76.5512 0.000000
## gamma1 0.040715 0.035414 1.1497 0.250275
##
## LogLikelihood : 3772.911
##
## Information Criteria
## ------------------------------------
##
## Akaike -5.4002
## Bayes -5.3663
## Shibata -5.4002
## Hannan-Quinn -5.3875
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.3004 0.5836
## Lag[2*(p+q)+(p+q)-1][11] 3.6995 1.0000
## Lag[4*(p+q)+(p+q)-1][19] 7.4470 0.8637
## d.o.f=4
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.02262 0.8805
## Lag[2*(p+q)+(p+q)-1][5] 1.73887 0.6813
## Lag[4*(p+q)+(p+q)-1][9] 3.22277 0.7217
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 0.3565 0.500 2.000 0.5505
## ARCH Lag[5] 2.9681 1.440 1.667 0.2944
## ARCH Lag[7] 3.4343 2.315 1.543 0.4355
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 10.919
## Individual Statistics:
## mu 0.10753
## ar1 0.03619
## ar2 0.15885
## ma1 0.04992
## ma2 0.07789
## omega 1.63830
## alpha1 0.06473
## beta1 0.06373
## gamma1 0.03017
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 2.1 2.32 2.82
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 0.56827 0.5699
## Negative Sign Bias 0.47249 0.6367
## Positive Sign Bias 0.01017 0.9919
## Joint Effect 0.46537 0.9264
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 116.2 5.565e-16
## 2 30 142.8 5.619e-17
## 3 40 141.3 1.615e-13
## 4 50 171.1 1.975e-15
##
##
## Elapsed time : 0.8416879
Đoạn mã này sử dụng hàm ugarchfit để ước lượng mô hình GARCH cho dữ liệu VNts.
• Tham số spec là đối tượng spec đã được đặc tả trong bước trước.
Tương tự, các câu lệnh tiếp theo có cùng mục đích nhưng sử dụng các phân phối khác nhau:
Phân phối Student (std)
# Phân phối Student (std)
fptst.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
fptst<- ugarchfit(fptst.spec,FPTts)
print(fptst)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,1)
## Mean Model : ARFIMA(2,0,2)
## Distribution : std
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 0.001096 0.000310 3.53456 0.000408
## ar1 0.767255 0.738514 1.03892 0.298843
## ar2 -0.277876 0.500697 -0.55498 0.578910
## ma1 -0.793345 0.742503 -1.06847 0.285307
## ma2 0.240955 0.537931 0.44793 0.654204
## omega 0.000016 0.000023 0.69741 0.485549
## alpha1 0.073352 0.153699 0.47724 0.633189
## beta1 0.857862 0.062009 13.83453 0.000000
## gamma1 0.086725 0.087151 0.99512 0.319680
## shape 3.258451 0.861343 3.78299 0.000155
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 0.001096 0.001139 0.962012 0.33604
## ar1 0.767255 1.219433 0.629191 0.52922
## ar2 -0.277876 0.909943 -0.305377 0.76008
## ma1 -0.793345 1.185882 -0.668992 0.50350
## ma2 0.240955 1.010119 0.238541 0.81146
## omega 0.000016 0.000204 0.078349 0.93755
## alpha1 0.073352 1.367683 0.053632 0.95723
## beta1 0.857862 0.530114 1.618260 0.10561
## gamma1 0.086725 0.699946 0.123902 0.90139
## shape 3.258451 7.337429 0.444086 0.65698
##
## LogLikelihood : 3888.736
##
## Information Criteria
## ------------------------------------
##
## Akaike -5.5649
## Bayes -5.5273
## Shibata -5.5650
## Hannan-Quinn -5.5508
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 2.663 0.1027
## Lag[2*(p+q)+(p+q)-1][11] 6.198 0.3600
## Lag[4*(p+q)+(p+q)-1][19] 10.482 0.3904
## d.o.f=4
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.3094 0.5780
## Lag[2*(p+q)+(p+q)-1][5] 1.9789 0.6234
## Lag[4*(p+q)+(p+q)-1][9] 3.2626 0.7149
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 0.4177 0.500 2.000 0.5181
## ARCH Lag[5] 2.6101 1.440 1.667 0.3515
## ARCH Lag[7] 2.9644 2.315 1.543 0.5203
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 11.6459
## Individual Statistics:
## mu 0.22480
## ar1 0.29995
## ar2 0.02150
## ma1 0.31486
## ma2 0.02640
## omega 1.61465
## alpha1 0.05261
## beta1 0.10899
## gamma1 0.06717
## shape 0.14979
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 2.29 2.54 3.05
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 0.111600 0.9112
## Negative Sign Bias 0.297035 0.7665
## Positive Sign Bias 0.006797 0.9946
## Joint Effect 0.186977 0.9797
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 19.43 0.42964
## 2 30 17.98 0.94468
## 3 40 51.11 0.09274
## 4 50 39.43 0.83386
##
##
## Elapsed time : 1.459125
# Phân phối Student đối xứng (sstd)
fptsst.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
fptsst <- ugarchfit(spec = fptsst.spec, data = FPTts)
print(fptsst)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,1)
## Mean Model : ARFIMA(2,0,2)
## Distribution : sstd
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 0.001112 0.000394 2.8205 0.004795
## ar1 -0.563848 0.002361 -238.7863 0.000000
## ar2 -0.997432 0.001641 -607.9348 0.000000
## ma1 0.564520 0.003646 154.8519 0.000000
## ma2 0.991454 0.000036 27286.5379 0.000000
## omega 0.000016 0.000007 2.4243 0.015339
## alpha1 0.067919 0.044830 1.5150 0.129760
## beta1 0.852439 0.025732 33.1281 0.000000
## gamma1 0.105191 0.047640 2.2080 0.027242
## skew 1.020160 0.034824 29.2947 0.000000
## shape 3.311822 0.358020 9.2504 0.000000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 0.001112 0.000414 2.68275 0.007302
## ar1 -0.563848 0.002434 -231.67874 0.000000
## ar2 -0.997432 0.001713 -582.17386 0.000000
## ma1 0.564520 0.003385 166.75890 0.000000
## ma2 0.991454 0.000068 14536.96096 0.000000
## omega 0.000016 0.000016 1.04341 0.296757
## alpha1 0.067919 0.104149 0.65213 0.514315
## beta1 0.852439 0.046402 18.37056 0.000000
## gamma1 0.105191 0.073013 1.44070 0.149668
## skew 1.020160 0.037156 27.45588 0.000000
## shape 3.311822 0.627629 5.27672 0.000000
##
## LogLikelihood : 3889.181
##
## Information Criteria
## ------------------------------------
##
## Akaike -5.5641
## Bayes -5.5228
## Shibata -5.5642
## Hannan-Quinn -5.5486
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.5861 0.4439
## Lag[2*(p+q)+(p+q)-1][11] 4.6731 0.9907
## Lag[4*(p+q)+(p+q)-1][19] 8.5278 0.7157
## d.o.f=4
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.3454 0.5567
## Lag[2*(p+q)+(p+q)-1][5] 1.9596 0.6280
## Lag[4*(p+q)+(p+q)-1][9] 3.1172 0.7395
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 0.7116 0.500 2.000 0.3989
## ARCH Lag[5] 2.3565 1.440 1.667 0.3977
## ARCH Lag[7] 2.6668 2.315 1.543 0.5785
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 9.9615
## Individual Statistics:
## mu 0.15362
## ar1 0.03835
## ar2 0.13981
## ma1 0.03851
## ma2 0.10559
## omega 1.41601
## alpha1 0.05322
## beta1 0.10171
## gamma1 0.07918
## skew 0.07552
## shape 0.16845
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 2.49 2.75 3.27
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 0.26415 0.7917
## Negative Sign Bias 0.31068 0.7561
## Positive Sign Bias 0.03762 0.9700
## Joint Effect 0.35668 0.9490
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 14.24 0.7698
## 2 30 15.27 0.9828
## 3 40 18.74 0.9975
## 4 50 26.88 0.9958
##
##
## Elapsed time : 1.469972
# Phân phối Generalized Error Distribution(ged)
fptged.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
fptged <- ugarchfit(fptged.spec,FPTts)
print(fptged)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,1)
## Mean Model : ARFIMA(2,0,2)
## Distribution : ged
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000876 0.000103 8.5048 0.000000
## ar1 0.724167 0.012728 56.8948 0.000000
## ar2 -0.194313 0.010066 -19.3036 0.000000
## ma1 -0.755034 0.013260 -56.9387 0.000000
## ma2 0.156001 0.008870 17.5880 0.000000
## omega 0.000013 0.000001 12.6556 0.000000
## alpha1 0.062452 0.010370 6.0226 0.000000
## beta1 0.867143 0.013922 62.2862 0.000000
## gamma1 0.061034 0.029705 2.0546 0.039915
## shape 0.997682 0.043963 22.6936 0.000000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000876 0.000047 18.7381 0.000000
## ar1 0.724167 0.004422 163.7718 0.000000
## ar2 -0.194313 0.003678 -52.8365 0.000000
## ma1 -0.755034 0.004834 -156.2055 0.000000
## ma2 0.156001 0.002967 52.5727 0.000000
## omega 0.000013 0.000001 11.2072 0.000000
## alpha1 0.062452 0.012888 4.8459 0.000001
## beta1 0.867143 0.011296 76.7640 0.000000
## gamma1 0.061034 0.030313 2.0135 0.044067
## shape 0.997682 0.046587 21.4155 0.000000
##
## LogLikelihood : 3888.173
##
## Information Criteria
## ------------------------------------
##
## Akaike -5.5641
## Bayes -5.5265
## Shibata -5.5642
## Hannan-Quinn -5.5500
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 3.196 0.07383
## Lag[2*(p+q)+(p+q)-1][11] 7.476 0.01061
## Lag[4*(p+q)+(p+q)-1][19] 11.830 0.21083
## d.o.f=4
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.1983 0.6561
## Lag[2*(p+q)+(p+q)-1][5] 1.9885 0.6211
## Lag[4*(p+q)+(p+q)-1][9] 3.4122 0.6894
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 0.3157 0.500 2.000 0.5742
## ARCH Lag[5] 2.9552 1.440 1.667 0.2963
## ARCH Lag[7] 3.3669 2.315 1.543 0.4471
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 21.1174
## Individual Statistics:
## mu 0.14048
## ar1 0.07192
## ar2 0.07668
## ma1 0.06235
## ma2 0.06985
## omega 4.16880
## alpha1 0.05814
## beta1 0.10824
## gamma1 0.04531
## shape 0.22938
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 2.29 2.54 3.05
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 0.01374 0.9890
## Negative Sign Bias 0.19000 0.8493
## Positive Sign Bias 0.13254 0.8946
## Joint Effect 0.08713 0.9933
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 17.45 0.5595
## 2 30 25.25 0.6650
## 3 40 34.18 0.6893
## 4 50 32.61 0.9654
##
##
## Elapsed time : 1.441055
# Phân phối Generalized Error Distribution đối xứng ("sged")
fptsged.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
fptsged <- ugarchfit(fptsged.spec,FPTts)
print(fptsged)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,1)
## Mean Model : ARFIMA(2,0,2)
## Distribution : sged
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000938 0.000143 6.5735 0.000000
## ar1 -0.564724 0.001921 -293.9704 0.000000
## ar2 -0.993881 0.001466 -678.0279 0.000000
## ma1 0.568668 0.002636 215.6952 0.000000
## ma2 0.990372 0.000169 5864.3815 0.000000
## omega 0.000013 0.000001 10.8717 0.000000
## alpha1 0.057170 0.009726 5.8782 0.000000
## beta1 0.863770 0.014214 60.7708 0.000000
## gamma1 0.075530 0.031253 2.4168 0.015659
## skew 1.012856 0.014265 71.0025 0.000000
## shape 1.005778 0.044562 22.5701 0.000000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000938 0.000059 15.8749 0.000000
## ar1 -0.564724 0.001391 -405.8546 0.000000
## ar2 -0.993881 0.001130 -879.8158 0.000000
## ma1 0.568668 0.001576 360.9377 0.000000
## ma2 0.990372 0.000135 7340.8462 0.000000
## omega 0.000013 0.000001 9.5542 0.000000
## alpha1 0.057170 0.013390 4.2696 0.000020
## beta1 0.863770 0.011727 73.6550 0.000000
## gamma1 0.075530 0.030868 2.4469 0.014409
## skew 1.012856 0.009465 107.0073 0.000000
## shape 1.005778 0.048056 20.9291 0.000000
##
## LogLikelihood : 3887.046
##
## Information Criteria
## ------------------------------------
##
## Akaike -5.5610
## Bayes -5.5197
## Shibata -5.5612
## Hannan-Quinn -5.5456
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.4299 0.5121
## Lag[2*(p+q)+(p+q)-1][11] 4.3198 0.9989
## Lag[4*(p+q)+(p+q)-1][19] 8.2267 0.7618
## d.o.f=4
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.2066 0.6494
## Lag[2*(p+q)+(p+q)-1][5] 1.8455 0.6554
## Lag[4*(p+q)+(p+q)-1][9] 3.0957 0.7431
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 0.5546 0.500 2.000 0.4564
## ARCH Lag[5] 2.5362 1.440 1.667 0.3645
## ARCH Lag[7] 2.8880 2.315 1.543 0.5350
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 22.3525
## Individual Statistics:
## mu 0.09809
## ar1 0.03825
## ar2 0.11004
## ma1 0.04152
## ma2 0.06954
## omega 3.74425
## alpha1 0.06231
## beta1 0.10348
## gamma1 0.04738
## skew 0.07447
## shape 0.22661
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 2.49 2.75 3.27
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 0.56973 0.5690
## Negative Sign Bias 0.02495 0.9801
## Positive Sign Bias 0.16641 0.8679
## Joint Effect 0.43642 0.9326
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 21.35 0.3177
## 2 30 25.25 0.6650
## 3 40 34.01 0.6968
## 4 50 42.80 0.7213
##
##
## Elapsed time : 2.93398
Bước 2. Tạo danh sách bao gồm các phân phối và ước lượng
FPT_list <- list(FPTfit,fptst,fptsst,fptged,fptsged)
• Đoạn mã này tạo ra một danh sách (FPT_list) chứa các đối tượng mô hình GARCH đã được ước lượng.
• Mỗi đối tượng mô hình GARCH tương ứng với một loại mô hình và đã được ước lượng trước đó bằng cách sử dụng hàm ugarchfit().
• Tên của từng đối tượng trong danh sách được đặt theo quy ước nhất định để chỉ loại mô hình và phân phối tương ứng.
Cụ thể, danh sách fpt.model.list bao gồm các đối tượng mô hình GARCH sau:
• FPTfit : Đối tượng mô hình GARCH(1,1) với phân phối chuẩn.
• fptst : Đối tượng mô hình GARCH(1,1) với phân phối Student’s t.
• fptsst : Đối tượng mô hình GARCH(1,1) với phân phối Student’s t đối xứng.
• fptged : Đối tượng mô hình GARCH(1,1) với phân phối Generalized Error Distribution (GED).
• fptsged : Đối tượng mô hình GARCH(1,1) với phân phối Generalized Error Distribution đối xứng.
# Tính toán các thông tin
fpt_info_mat <- sapply(FPT_list, infocriteria)
print(fpt_info_mat)
## [,1] [,2] [,3] [,4] [,5]
## [1,] -5.400159 -5.564901 -5.564105 -5.564094 -5.561041
## [2,] -5.366328 -5.527312 -5.522757 -5.526504 -5.519693
## [3,] -5.400241 -5.565003 -5.564228 -5.564196 -5.561164
## [4,] -5.387509 -5.550846 -5.548645 -5.550039 -5.545581
• Đoạn mã này sử dụng hàm sapply() để áp dụng hàm infocriteria lên từng đối tượng trong danh sách FPT_list.
• Hàm infocriteria được sử dụng để tính toán các tiêu chí thông tin cho mô hình GARCH, bao gồm AIC, BIC và HQC.
• Kết quả của hàm sapply() là một ma trận, trong đó mỗi cột tương ứng với một đối tượng mô hình và mỗi hàng tương ứng với một tiêu chí thông tin.
rownames(fpt_info_mat)<-rownames(infocriteria(FPTfit))
• Đoạn mã này gán tên hàng cho ma trận fpt_info_mat bằng cách sử dụng tên hàng từ kết quả của hàm infocriteria cho mô hình GARCH(1,1) với phân phối chuẩn.
• Điều này đảm bảo rằng tên hàng của ma trận fpt_info_mat tương ứng với các tiêu chí thông tin (ví dụ: AIC, BIC, HQC).
print(rownames(fpt_info_mat))
## [1] "Akaike" "Bayes" "Shibata" "Hannan-Quinn"
Cuối cùng, đoạn mã này hiển thị ma trận fpt_info_mat, chứa các tiêu chí thông tin cho tất cả các mô hình GARCH đã được ước lượng.
• Ma trận này cung cấp một cái nhìn tổng quan về các tiêu chí thông tin để so sánh và đánh giá hiệu suất của các mô hình GARCH khác nhau.
Bước 3
# Ước lượng mô hình Garch(2,2) với phân phối Student đối xứng (sttd)
fptsst.spec2 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2,2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
fptsst2 <- ugarchfit(fptsst.spec2,FPTts)
print(fptsst2)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(2,2)
## Mean Model : ARFIMA(2,0,2)
## Distribution : sstd
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 0.001109 0.000392 2.8330e+00 0.004611
## ar1 -0.563962 0.002250 -2.5068e+02 0.000000
## ar2 -0.997404 0.001614 -6.1803e+02 0.000000
## ma1 0.564625 0.003338 1.6916e+02 0.000000
## ma2 0.991731 0.000028 3.5042e+04 0.000000
## omega 0.000016 0.000005 3.5716e+00 0.000355
## alpha1 0.000001 0.023577 2.5000e-05 0.999980
## alpha2 0.077038 0.029268 2.6321e+00 0.008485
## beta1 0.848485 0.202278 4.1947e+00 0.000027
## beta2 0.000001 0.212544 3.0000e-06 0.999998
## gamma1 0.214173 0.095140 2.2511e+00 0.024377
## gamma2 -0.115578 0.096632 -1.1961e+00 0.231672
## skew 1.021306 0.034929 2.9239e+01 0.000000
## shape 3.333500 0.347880 9.5823e+00 0.000000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 0.001109 0.000407 2.7276e+00 0.006379
## ar1 -0.563962 0.002311 -2.4400e+02 0.000000
## ar2 -0.997404 0.001673 -5.9618e+02 0.000000
## ma1 0.564625 0.003020 1.8694e+02 0.000000
## ma2 0.991731 0.000067 1.4902e+04 0.000000
## omega 0.000016 0.000013 1.2251e+00 0.220525
## alpha1 0.000001 0.060867 1.0000e-05 0.999992
## alpha2 0.077038 0.073356 1.0502e+00 0.293630
## beta1 0.848485 0.840963 1.0089e+00 0.313001
## beta2 0.000001 0.804514 1.0000e-06 0.999999
## gamma1 0.214173 0.112127 1.9101e+00 0.056121
## gamma2 -0.115578 0.111580 -1.0358e+00 0.300285
## skew 1.021306 0.037343 2.7350e+01 0.000000
## shape 3.333500 0.338544 9.8466e+00 0.000000
##
## LogLikelihood : 3890.961
##
## Information Criteria
## ------------------------------------
##
## Akaike -5.5624
## Bayes -5.5097
## Shibata -5.5626
## Hannan-Quinn -5.5427
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.9509 0.3295
## Lag[2*(p+q)+(p+q)-1][11] 4.5680 0.9948
## Lag[4*(p+q)+(p+q)-1][19] 8.3447 0.7441
## d.o.f=4
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.07156 0.7891
## Lag[2*(p+q)+(p+q)-1][11] 3.63581 0.7858
## Lag[4*(p+q)+(p+q)-1][19] 5.86110 0.8845
## d.o.f=4
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[5] 1.256 0.500 2.000 0.2623
## ARCH Lag[7] 1.410 1.473 1.746 0.6460
## ARCH Lag[9] 2.260 2.402 1.619 0.7076
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 25.6867
## Individual Statistics:
## mu 0.12339
## ar1 0.03617
## ar2 0.12788
## ma1 0.03565
## ma2 0.09868
## omega 1.39706
## alpha1 0.06222
## alpha2 0.05188
## beta1 0.09301
## beta2 0.09027
## gamma1 0.05961
## gamma2 0.04720
## skew 0.07736
## shape 0.16951
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 3.08 3.34 3.9
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 0.1121 0.9108
## Negative Sign Bias 0.5291 0.5968
## Positive Sign Bias 0.6981 0.4853
## Joint Effect 1.6732 0.6429
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 19.14 0.4478
## 2 30 14.41 0.9891
## 3 40 29.24 0.8720
## 4 50 29.17 0.9891
##
##
## Elapsed time : 1.892461
Kết quả phân tích đưa ra các tham số tối ưu cho mô hình với các ước lượng, sai số chuẩn, giá trị t và giá trị p để xác định ý nghĩa thống kê của từng tham số.
Mu (μ): Giá trị ước lượng là 0.001109 với sai số chuẩn 0.000392, giá trị t là 2.833, và giá trị p là 0.004611. Điều này chỉ ra rằng mu có ý nghĩa thống kê ở mức ý nghĩa 1%, nghĩa là có bằng chứng mạnh mẽ cho thấy có một phần bù trung bình dương nhỏ trong mô hình.
AR1 và AR2: Cả hai tham số tự hồi quy đều có giá trị ước lượng âm, với AR1 là -0.563962 và AR2 là -0.997404. Cả hai đều có giá trị t rất cao và giá trị p là 0, cho thấy rằng các tham số này có ý nghĩa thống kê cao và đóng vai trò quan trọng trong việc mô hình hóa động lực tự hồi quy của chuỗi thời gian.
MA1 và MA2: Các tham số trung bình động MA1 và MA2 có giá trị ước lượng lần lượt là 0.564625 và 0.991731. Cả hai cũng có giá trị t rất cao và giá trị p là 0, cho thấy rằng chúng có ý nghĩa thống kê cao trong mô hình.
Omega (ω): Tham số này có giá trị ước lượng là 0.000016 với giá trị t là 3.5716 và giá trị p là 0.000355, chỉ ra rằng có một mức độ biến động cơ bản trong chuỗi thời gian và nó có ý nghĩa thống kê.
Alpha1 và Alpha2: Alpha1 có giá trị ước lượng rất nhỏ (0.000001) và không có ý nghĩa thống kê với giá trị p là 0.999980. Ngược lại, Alpha2 có giá trị ước lượng là 0.077038 với giá trị t là 2.6321 và giá trị p là 0.008485, cho thấy nó có ý nghĩa thống kê và ảnh hưởng đến mức độ tự hồi quy điều kiện của phương sai.
Beta1 và Beta2: Beta1 có giá trị ước lượng là 0.848485 với giá trị t là 4.1947 và giá trị p là 0.000027, cho thấy nó có ý nghĩa thống kê và mô tả sự bền vững của sốc đến phương sai điều kiện. Beta2 có giá trị ước lượng rất nhỏ và không có ý nghĩa thống kê với giá trị p là 0.999998.
Gamma1 và Gamma2: Gamma1 có giá trị ước lượng là 0.214173 với giá trị t là 2.2511 và giá trị p là 0.024377, cho thấy nó có ý nghĩa thống kê. Ngược lại, Gamma2 có giá trị ước lượng là -0.115578 nhưng không có ý nghĩa thống kê với giá trị p là 0.231672.
Skew và Shape: Tham số skew có giá trị ước lượng là 1.021306 và shape là 3.333500. Cả hai đều có giá trị t rất cao và giá trị p là 0, chỉ ra rằng phân phối có sự lệch và hình dạng có ý nghĩa thống kê, ảnh hưởng đến đặc điểm phân phối của phần dư.
# Trích xuất chuỗi phần dư v của chuỗi lợi suất FPT
fpt.res <- residuals(fptsst2)/sigma(fptsst2)
• Đoạn mã này trích xuất chuỗi phần dư của mô hình GARCH(2,2) với phân phối Student’s t đối xứng (fptsst2).
• Hàm residuals() được sử dụng để lấy phần dư từ mô hình, và sigma() được sử dụng để lấy độ lệch chuẩn (sigma) từ mô hình.
fitdist(distribution = "sstd", fpt.res, control = list())
## $pars
## mu sigma skew shape
## 0.01714136 0.99429508 1.03544082 3.36708595
##
## $convergence
## [1] 0
##
## $values
## [1] 1852.577 1778.992 1778.992
##
## $lagrange
## [1] 0
##
## $hessian
## [,1] [,2] [,3] [,4]
## [1,] 2311.167254 -80.786388 -880.4281566 -7.0226925
## [2,] -80.786388 1371.877285 2.2351706 193.5925547
## [3,] -880.428157 2.235171 1162.3917454 0.1670854
## [4,] -7.022692 193.592555 0.1670854 35.5967012
##
## $ineqx0
## NULL
##
## $nfuneval
## [1] 110
##
## $outer.iter
## [1] 2
##
## $elapsed
## Time difference of 0.09213281 secs
##
## $vscale
## [1] 1 1 1 1 1
Đoạn mã này sử dụng hàm fitdist() từ gói fitdistrplus để ước lượng tham số phân phối dựa trên dữ liệu chuỗi phần dư (fpt.res).
• Đối số distribution chỉ định loại phân phối cần ước lượng, trong trường hợp này là “sstd” (phân phối Student’s t đối xứng).
• control = list() được sử dụng để chỉ định các tham số điều khiển mặc định cho quá trình ước lượng.
v = pdist("sstd",fpt.res, mu = 0.01562272, sigma = 1.03230608, skew = 1.01123534, shape = 2.88457217 )
v
## [1] 0.1500098305 0.1781466156 0.7032646977 0.8993398275 0.6416383650
## [6] 0.7859072714 0.2285079242 0.4996451952 0.7363348623 0.7375444217
## [11] 0.2119960229 0.0820259521 0.4391162955 0.8605010545 0.2928397405
## [16] 0.4440676946 0.5432445604 0.3820632847 0.1655451086 0.8250546375
## [21] 0.9369373053 0.4516453732 0.0632255927 0.9866374205 0.2146388532
## [26] 0.8813579735 0.2064111190 0.3946375760 0.6513836392 0.4430056800
## [31] 0.8132230709 0.4012852069 0.8119827123 0.7228009424 0.1787667634
## [36] 0.3584053364 0.0290829146 0.7618081199 0.7955865958 0.3543914281
## [41] 0.1844291113 0.5978085591 0.3532404967 0.2811719373 0.9941542759
## [46] 0.1862852440 0.5037325550 0.2489045067 0.6195425045 0.1351487821
## [51] 0.2442097821 0.1767085776 0.4166433436 0.0754365892 0.7285703607
## [56] 0.6815824721 0.6132395597 0.7551803836 0.7225412989 0.6697528118
## [61] 0.9768398717 0.8864012829 0.4601650392 0.4583177703 0.1016376829
## [66] 0.1559264210 0.5636007401 0.9706732505 0.1850501895 0.8703411302
## [71] 0.4393055979 0.3730563837 0.1057236673 0.4582236673 0.8816317746
## [76] 0.6806451180 0.9245953278 0.7036268837 0.5672146418 0.0197207706
## [81] 0.9146964572 0.3757057587 0.0465309483 0.7347827503 0.7643561346
## [86] 0.8689518457 0.6457745952 0.0752871028 0.5485039910 0.9252209536
## [91] 0.8888806517 0.0769640366 0.7900220713 0.3799961803 0.1750834266
## [96] 0.1590608538 0.0685014533 0.7850228945 0.1317349472 0.1058477341
## [101] 0.2926352688 0.6868041513 0.9441693635 0.9153479403 0.3350089357
## [106] 0.5277440923 0.3321971342 0.1074941996 0.2856479879 0.1754145589
## [111] 0.4619565572 0.8834918192 0.9314190063 0.4748177348 0.2133544803
## [116] 0.9801312720 0.1713190002 0.0713797955 0.5045834066 0.9822520508
## [121] 0.3079665698 0.3677653891 0.5463729629 0.2120651723 0.2319725357
## [126] 0.7770591259 0.7130883993 0.4350029659 0.4180828030 0.7035675124
## [131] 0.4796057780 0.2184144489 0.1852503563 0.9842098023 0.6305993769
## [136] 0.7829378228 0.2605233848 0.5267462708 0.5822129660 0.2344890239
## [141] 0.0502153816 0.8660134063 0.3578923436 0.8098654933 0.6650867220
## [146] 0.3665357944 0.9265055178 0.8788168998 0.9269961911 0.9664432025
## [151] 0.6405468789 0.8897475909 0.9031846937 0.0399458433 0.7493054747
## [156] 0.9740565453 0.1757371739 0.1581081487 0.9569457112 0.0944174776
## [161] 0.0948975720 0.1389086477 0.7692932608 0.7141825228 0.8356372055
## [166] 0.1509529446 0.1237316838 0.6959636944 0.9087573129 0.5584319513
## [171] 0.5504373132 0.9921488237 0.6342003917 0.8707831419 0.4245525842
## [176] 0.0488678046 0.9316615690 0.7148897460 0.0291842941 0.2945855673
## [181] 0.9055150887 0.6550338040 0.8268763324 0.1101288860 0.8470076198
## [186] 0.0489670011 0.4342677032 0.2489554368 0.0510821763 0.7493680907
## [191] 0.6233398956 0.4857152813 0.5162497038 0.9326903849 0.2713156471
## [196] 0.5459388984 0.0775539658 0.7064221630 0.1476881908 0.2988338651
## [201] 0.4896517210 0.9826434101 0.3064836497 0.4879151037 0.3156468913
## [206] 0.4014070589 0.4981962541 0.8237924657 0.9708025342 0.3619919003
## [211] 0.2291051685 0.4573249645 0.5398784220 0.7191038733 0.9334012801
## [216] 0.1509265487 0.0082183552 0.5933492900 0.0833405943 0.8238105122
## [221] 0.0405412469 0.1546328333 0.4743737190 0.7550756486 0.7241569783
## [226] 0.4119341531 0.0743485551 0.6727987531 0.0213246064 0.4243364626
## [231] 0.8481228383 0.2009631452 0.5457712761 0.6314082867 0.5648731227
## [236] 0.9189865316 0.7760379523 0.4887214389 0.1354657769 0.0520595827
## [241] 0.4941148186 0.6467585519 0.8675928031 0.1914683072 0.6393230468
## [246] 0.9436361859 0.3834931895 0.5708802049 0.9283399965 0.2540937114
## [251] 0.6621273361 0.0447205574 0.1504336644 0.9306239600 0.0305369670
## [256] 0.8421304394 0.4025071756 0.2125444713 0.3793828940 0.4691052225
## [261] 0.9182902312 0.1845467658 0.3281382464 0.0126100779 0.8573872846
## [266] 0.0264698071 0.0172174975 0.2840931855 0.5843133970 0.5797983710
## [271] 0.9315648369 0.2959713817 0.1855674626 0.8673838919 0.6966392216
## [276] 0.5745490289 0.6075894503 0.2662299331 0.9696689349 0.2944934804
## [281] 0.5282024818 0.0556018041 0.0166573504 0.9150398578 0.8405045082
## [286] 0.8490184595 0.1420440391 0.7315938128 0.5397186807 0.2792251430
## [291] 0.1051566295 0.1545701899 0.0039068604 0.8476897210 0.1741917332
## [296] 0.0281265736 0.5145464315 0.2680647729 0.7748765325 0.4535356008
## [301] 0.2039007283 0.4361135044 0.0083941503 0.5291067002 0.8803558881
## [306] 0.0572669092 0.1629642295 0.0229287800 0.6899318498 0.8513221042
## [311] 0.9531235904 0.9689307000 0.4078493624 0.3447116485 0.4454449821
## [316] 0.2798859013 0.5575416878 0.9822040086 0.6996289869 0.5900670653
## [321] 0.8188689655 0.4602140316 0.0325454048 0.9360718613 0.3796801759
## [326] 0.4487233562 0.3732987804 0.4512271336 0.4623566664 0.3316737303
## [331] 0.7254738951 0.9753292047 0.8032797970 0.6481949594 0.5975531517
## [336] 0.6614269173 0.9951166081 0.1073136607 0.1383316014 0.6765127539
## [341] 0.8817884481 0.2250626001 0.6909241704 0.1090246934 0.4385650184
## [346] 0.6483539928 0.0986268802 0.4798945772 0.3455333863 0.7275985416
## [351] 0.2779742804 0.8495924521 0.2176635911 0.7605464367 0.8801531790
## [356] 0.1235903399 0.3659216920 0.0027236442 0.8122701116 0.1070515213
## [361] 0.7780458156 0.3123629636 0.5682048138 0.7327945389 0.4755500862
## [366] 0.7418705540 0.2506377330 0.2454343394 0.4351059020 0.0673670154
## [371] 0.2484013284 0.8120706821 0.3401173411 0.5959803194 0.8598759365
## [376] 0.8493826679 0.6790925466 0.9092151415 0.0853828359 0.9079390153
## [381] 0.4361763568 0.4961145480 0.3568481220 0.1313673422 0.0832842438
## [386] 0.7113898155 0.1475581734 0.8019808428 0.0069207738 0.0156649212
## [391] 0.9160205430 0.0954188002 0.7073602517 0.1949751119 0.9300558710
## [396] 0.7615883968 0.6871625610 0.3903105710 0.6354889765 0.4804132677
## [401] 0.3576757403 0.7927749940 0.7193220796 0.3431768274 0.6695436517
## [406] 0.2893837538 0.4078567231 0.6878123940 0.7526330345 0.9529318314
## [411] 0.8095005656 0.1614295260 0.9752572907 0.4686015478 0.2246401254
## [416] 0.7382733234 0.7772526644 0.1997675972 0.0156890297 0.8858982807
## [421] 0.2613385385 0.5228964892 0.3655107626 0.5242971776 0.9033119566
## [426] 0.8129447847 0.1073661941 0.9593631787 0.4977388605 0.4626990526
## [431] 0.2820382828 0.1320375657 0.6630609808 0.6418379769 0.0553694166
## [436] 0.3163813077 0.8846830106 0.1367629481 0.6821142924 0.3756182323
## [441] 0.3181967877 0.9211644114 0.1931057659 0.4525942368 0.3173820546
## [446] 0.7507597725 0.5430478065 0.9925374047 0.6263808604 0.3428392460
## [451] 0.1631405743 0.9581819277 0.3792994026 0.0380058697 0.1347509198
## [456] 0.0379768802 0.5406632226 0.7825141063 0.6447690870 0.9262027236
## [461] 0.5414067778 0.0686666084 0.7294091916 0.8995280780 0.2094302174
## [466] 0.5170758463 0.7503055069 0.6385465880 0.1829840645 0.8722037133
## [471] 0.3587085847 0.9551519136 0.5841942814 0.8383958040 0.2210879277
## [476] 0.2326746456 0.7778115767 0.7656467795 0.0782864222 0.3135147288
## [481] 0.6745000041 0.4703895868 0.6133490704 0.3567794307 0.8000748050
## [486] 0.9781883632 0.0339510367 0.7137359493 0.6427598513 0.1767767604
## [491] 0.6691603343 0.1133517238 0.7869208962 0.8128501533 0.8075546146
## [496] 0.1407426144 0.1535138847 0.7836920577 0.7080881883 0.8992573110
## [501] 0.1075572912 0.9213510928 0.9544001473 0.9915485587 0.2073857276
## [506] 0.5643848763 0.8490672559 0.9306457447 0.9112709865 0.8417607306
## [511] 0.3409449425 0.5344724055 0.3353512321 0.0020101585 0.7786340164
## [516] 0.9339242536 0.8467540620 0.4729767543 0.1697091558 0.0262454277
## [521] 0.0139911014 0.9551205652 0.6872504303 0.9020659168 0.9581231446
## [526] 0.8939007075 0.6042560675 0.1588365169 0.9345630141 0.9478297693
## [531] 0.5699339044 0.1419278950 0.5226252077 0.1942588543 0.4191368483
## [536] 0.6816467671 0.5058065536 0.8940899929 0.4072654388 0.4050229182
## [541] 0.0669076174 0.4166907795 0.3949476547 0.2091092867 0.8792778988
## [546] 0.5819443945 0.4086081754 0.4856948630 0.9949292294 0.3504957263
## [551] 0.6012499144 0.1058582781 0.1230610844 0.5645413651 0.0541603474
## [556] 0.2615133226 0.2902251036 0.9166128660 0.2041553546 0.7012886321
## [561] 0.9600787470 0.4683077788 0.3174149843 0.4137903571 0.5700087025
## [566] 0.3710074695 0.9806487848 0.5101896454 0.0596265534 0.5597214771
## [571] 0.1416905803 0.3119877037 0.9380526014 0.9236464859 0.0140117589
## [576] 0.9584791786 0.0534032376 0.4189303566 0.4765577655 0.4497116122
## [581] 0.9395766344 0.4770220167 0.3222834020 0.5947193950 0.9774981938
## [586] 0.1891936127 0.5141382109 0.1014195262 0.7480447779 0.7571173969
## [591] 0.8933284107 0.9899548568 0.9927351486 0.0891084505 0.4256421520
## [596] 0.5169158443 0.8279667893 0.1325489272 0.7600796588 0.9605732847
## [601] 0.9709211433 0.0937814805 0.3146083617 0.2729857740 0.0638268786
## [606] 0.0644099378 0.7070973300 0.5802870392 0.9049273420 0.5082735201
## [611] 0.2421523044 0.4800657740 0.2149816832 0.8520119131 0.9526420029
## [616] 0.3579028749 0.1965319238 0.3918948438 0.7294292176 0.6264569163
## [621] 0.9843718693 0.2402485285 0.7839342014 0.9782345006 0.8120925372
## [626] 0.0036097547 0.9189683990 0.3021540721 0.4937985941 0.0334111535
## [631] 0.6421665528 0.1476459289 0.5370395796 0.7694817501 0.0835878108
## [636] 0.9033744472 0.3552214825 0.9411052574 0.8127477537 0.9579406536
## [641] 0.2619535310 0.1962506797 0.8389651850 0.5877561978 0.8732917462
## [646] 0.5991287041 0.3352291564 0.7571056469 0.5330954837 0.7815022777
## [651] 0.4844400634 0.0629820811 0.0411121954 0.7742662177 0.6648589467
## [656] 0.2448141422 0.5001778400 0.5863202855 0.0643568591 0.0603339432
## [661] 0.7021878417 0.4672881213 0.3275971857 0.6445252015 0.4808928077
## [666] 0.6520190238 0.4370703803 0.9708263585 0.0686883635 0.3491456802
## [671] 0.3836997370 0.5718293651 0.3245511865 0.7605995809 0.4938954976
## [676] 0.8095587504 0.8721142458 0.0433454511 0.1604009673 0.3980025610
## [681] 0.3061946580 0.2300129028 0.2753730297 0.8134718026 0.4287446445
## [686] 0.4263325573 0.4438815213 0.9327881027 0.3375919174 0.5690440020
## [691] 0.3004430739 0.9958476786 0.7182079073 0.3924433787 0.5006336010
## [696] 0.2669937939 0.5776492485 0.3870317323 0.2504845901 0.1739214521
## [701] 0.1227748471 0.1793007607 0.1053164984 0.9522678116 0.8341837503
## [706] 0.3831078163 0.1539050695 0.0880846429 0.5185488255 0.5640607883
## [711] 0.3907577439 0.8974467861 0.4167910232 0.1428535082 0.6095129995
## [716] 0.1020412228 0.9643865666 0.1428624132 0.7633150101 0.5488065046
## [721] 0.0475368816 0.0843131299 0.3612945080 0.9262485114 0.8376887929
## [726] 0.9397329625 0.1655545347 0.1786169348 0.1086082915 0.8500214698
## [731] 0.1626787897 0.0489838651 0.1628240816 0.9036769394 0.2584721770
## [736] 0.8488623864 0.1413012225 0.5452096897 0.2483221767 0.5771790593
## [741] 0.3405454039 0.7519602930 0.1823399788 0.2756950906 0.3147739854
## [746] 0.0290558694 0.7442119608 0.7624302393 0.3502601596 0.1447381924
## [751] 0.5302061305 0.1594723685 0.6390970051 0.5931585281 0.3782629426
## [756] 0.2960600442 0.0630797120 0.0210046479 0.4210107785 0.9627114413
## [761] 0.2235740601 0.0335101639 0.1716408132 0.5854367643 0.6674191876
## [766] 0.1910286419 0.0204799242 0.8237385821 0.2498709758 0.3994552673
## [771] 0.9837240528 0.4354045694 0.7587770656 0.5375573559 0.8560783605
## [776] 0.2549178633 0.2494628296 0.5525267019 0.4885752943 0.8968557749
## [781] 0.2588676399 0.8827817267 0.1641479894 0.5376307908 0.1319806554
## [786] 0.5165862325 0.8368406707 0.5756519480 0.2694420909 0.5325246266
## [791] 0.5643640778 0.6256412620 0.8247979850 0.7982860310 0.1319809728
## [796] 0.0465552977 0.0647700969 0.2080974461 0.7011901810 0.5681587829
## [801] 0.9859866813 0.5837235589 0.7942707503 0.4863237518 0.3008216118
## [806] 0.2873084798 0.9636777475 0.9980895085 0.8326480524 0.6768453994
## [811] 0.9647619419 0.1389124198 0.3704397815 0.9625403046 0.5756759738
## [816] 0.0184934405 0.6940222951 0.9730265924 0.7903151369 0.1811600625
## [821] 0.5545275122 0.0514432489 0.4751190029 0.4302145647 0.2636033751
## [826] 0.0051531865 0.6010581277 0.2437910187 0.8599515917 0.0011874797
## [831] 0.4384081775 0.4990011622 0.1538127314 0.0795702113 0.8334410873
## [836] 0.8082382103 0.0661418154 0.2652413254 0.4222108975 0.9467381893
## [841] 0.2337603789 0.3732728083 0.5594707225 0.3314981868 0.7287064385
## [846] 0.9737681654 0.5986615516 0.9610998944 0.3709328258 0.2758757903
## [851] 0.7716185068 0.3901842822 0.8527907297 0.2939766363 0.8675640748
## [856] 0.3201791215 0.5666854531 0.0161035179 0.0181015706 0.8703083411
## [861] 0.7397595316 0.7453997694 0.4705260355 0.4837645422 0.0606556178
## [866] 0.0251680291 0.6755149890 0.4691155810 0.6938805537 0.9380178277
## [871] 0.5514816518 0.0311644520 0.8098872663 0.1966140172 0.1935551570
## [876] 0.1106434762 0.3563541603 0.6161959454 0.2402624790 0.6840521739
## [881] 0.1742105789 0.5760203589 0.2473851630 0.7476451177 0.4581503747
## [886] 0.9396664189 0.4880008785 0.5009887201 0.5949544342 0.1983700783
## [891] 0.6415702422 0.3054410595 0.0555771661 0.6755746243 0.8495841175
## [896] 0.3482915336 0.9061041632 0.2868261227 0.5588295212 0.5511775079
## [901] 0.3233662328 0.4439358893 0.7206663190 0.9819697149 0.3226542069
## [906] 0.2702400837 0.4312424904 0.0514396168 0.4131304063 0.5449002909
## [911] 0.5353072221 0.5083374953 0.8522618304 0.1331601527 0.3887948070
## [916] 0.5673279814 0.2245420610 0.2289584477 0.0263601871 0.5903115194
## [921] 0.4281982708 0.6159449337 0.4503685499 0.1624847765 0.2854710164
## [926] 0.0651753012 0.7321503278 0.5959965134 0.0793767902 0.7421818136
## [931] 0.1930575216 0.1119239627 0.1013995074 0.0152348899 0.1569155167
## [936] 0.9834229098 0.0113912290 0.6060487682 0.7234511947 0.0824526829
## [941] 0.0524933731 0.4638226804 0.0317454109 0.8089834175 0.6458456749
## [946] 0.7581828086 0.4050582043 0.8019025936 0.6739140033 0.9502629275
## [951] 0.0099252389 0.0567864019 0.8741173810 0.6431100895 0.8886696172
## [956] 0.2403522124 0.6508781986 0.4388215665 0.1027563098 0.4935937613
## [961] 0.1292867303 0.3530749382 0.7238575249 0.7396142247 0.1318249575
## [966] 0.3629903091 0.0315088172 0.0052590181 0.9397598975 0.8327419729
## [971] 0.6157722720 0.1695832622 0.5683255850 0.4648243947 0.4918493789
## [976] 0.8623344526 0.9393843965 0.4894530179 0.5875264471 0.4640111139
## [981] 0.9692536843 0.8113563172 0.0362285830 0.6190989146 0.6667404584
## [986] 0.8015320467 0.1343048658 0.5543509764 0.1612887848 0.8860765146
## [991] 0.5395666369 0.0880589215 0.4445500264 0.7009763795 0.4785306643
## [996] 0.8187255063 0.0362905390 0.5071044255 0.5821378323 0.2063597452
## [1001] 0.7693906194 0.9895895282 0.4427172603 0.6923131275 0.3278797918
## [1006] 0.4651776250 0.4753719758 0.6977999389 0.3615635549 0.1424774733
## [1011] 0.8065030404 0.9139116980 0.9348149406 0.6882778359 0.5026328119
## [1016] 0.3042510768 0.3138384764 0.0377953852 0.4187776069 0.0318339634
## [1021] 0.6156476346 0.5581609670 0.7040842119 0.2076776937 0.4424656714
## [1026] 0.4618431263 0.4908833081 0.8240180452 0.4555439690 0.4454629089
## [1031] 0.9157029465 0.4386393406 0.0822410484 0.2293722780 0.1572823821
## [1036] 0.2141150711 0.5610358272 0.4101164812 0.1933181069 0.0355626524
## [1041] 0.2808540068 0.7477795850 0.8116871396 0.8950603216 0.0661763344
## [1046] 0.2013799537 0.3444432704 0.9569301579 0.0557096786 0.3789829564
## [1051] 0.0548639158 0.6712174737 0.6719685429 0.2204849025 0.7231607666
## [1056] 0.7213229958 0.5200516891 0.3068141698 0.4966487274 0.4683271037
## [1061] 0.9676260648 0.2040806759 0.5298897027 0.2803224587 0.5281929646
## [1066] 0.3317659028 0.4631970367 0.4041697973 0.1144441879 0.4723162963
## [1071] 0.4213994985 0.2848368399 0.3965560607 0.5135046177 0.3293528735
## [1076] 0.3097504569 0.1173281876 0.3438096351 0.4152284860 0.0987015928
## [1081] 0.8968108910 0.3335516056 0.5302649262 0.7108828421 0.4607673901
## [1086] 0.5052432702 0.9580868681 0.7320242004 0.7206002059 0.4710967148
## [1091] 0.9473108104 0.3336013913 0.2887372717 0.1964275563 0.1147403943
## [1096] 0.9683528095 0.4095344218 0.4301455997 0.8386446331 0.5243651570
## [1101] 0.1720563773 0.5814687952 0.9151328636 0.6501942651 0.2614733951
## [1106] 0.0413620662 0.8600110783 0.6054450132 0.1979190466 0.3495748303
## [1111] 0.3973940257 0.6455463268 0.5558048857 0.8471964866 0.6058024249
## [1116] 0.2559134049 0.2409332549 0.8076384206 0.9464981748 0.2781992288
## [1121] 0.2122317029 0.1818332586 0.6576930645 0.7814855119 0.3609836889
## [1126] 0.2826867367 0.8484800889 0.4443829144 0.2275510648 0.6473403951
## [1131] 0.7773234091 0.9901342798 0.8300869428 0.3089551370 0.3311919177
## [1136] 0.9606023274 0.8102766545 0.4660767648 0.5863702762 0.9321261047
## [1141] 0.8889631657 0.7854632701 0.8960861551 0.0812218428 0.1106328143
## [1146] 0.5166435721 0.2527692009 0.9071611038 0.2703966052 0.0775985951
## [1151] 0.1346270293 0.3457756537 0.7187541102 0.9299408700 0.8939659149
## [1156] 0.8234192635 0.2128507234 0.6798165912 0.7331394352 0.4151168415
## [1161] 0.9964789027 0.7512327917 0.9753543969 0.3149876152 0.9623045241
## [1166] 0.4733683666 0.4891602991 0.9318686050 0.1452797241 0.3460381264
## [1171] 0.3917376962 0.8790189621 0.1591608481 0.0476204050 0.8751368384
## [1176] 0.2372279306 0.8756537697 0.5033889317 0.0654897781 0.4107793140
## [1181] 0.0346254184 0.2230168147 0.7165368348 0.3468345139 0.1222544501
## [1186] 0.5968541407 0.1359234680 0.5974663645 0.1457207232 0.8304741037
## [1191] 0.9791310942 0.7481485365 0.7057916129 0.2295045313 0.3404608373
## [1196] 0.7278513387 0.0081047579 0.4454166981 0.1832226308 0.7339278622
## [1201] 0.0676601379 0.7682679986 0.1426300352 0.0117126778 0.5303804483
## [1206] 0.0851622490 0.0926913823 0.9159609487 0.9660363000 0.0864315810
## [1211] 0.8136698058 0.3978455171 0.9762056443 0.4479919376 0.2295248103
## [1216] 0.4130375899 0.7879014826 0.4160342237 0.6485633358 0.0574791695
## [1221] 0.3824499050 0.8189879283 0.7930778383 0.0448807308 0.6124854085
## [1226] 0.2578635417 0.6096681254 0.7150308960 0.5163162764 0.6433763412
## [1231] 0.8787859471 0.8725856922 0.5013813590 0.1897361807 0.4223982952
## [1236] 0.7651530003 0.9462098320 0.0518953813 0.8042275228 0.4066978500
## [1241] 0.0314578939 0.6893044726 0.4447709529 0.6303997428 0.2779857380
## [1246] 0.8867873867 0.8616717651 0.3580114803 0.3075767524 0.1956302401
## [1251] 0.3759673323 0.6729552662 0.7950272486 0.5368445966 0.4458792796
## [1256] 0.1387173985 0.0272224354 0.6170410071 0.3208671618 0.7100846945
## [1261] 0.6079370964 0.4838017693 0.3449881733 0.7554043848 0.5483113587
## [1266] 0.1251586590 0.1612063918 0.5266325390 0.8197950236 0.3828559172
## [1271] 0.2888608937 0.5410257678 0.9950144599 0.9662798473 0.8908466827
## [1276] 0.6692122075 0.6953145636 0.1847943644 0.8297320737 0.3569328450
## [1281] 0.2003274012 0.9164164889 0.0837027595 0.1970133700 0.9884404544
## [1286] 0.4080902125 0.6231131568 0.6367098467 0.9069896975 0.6408584405
## [1291] 0.2191337904 0.0893397950 0.9289609657 0.1028348486 0.4829815646
## [1296] 0.9134163718 0.9913706135 0.4644287055 0.2301134655 0.0356091655
## [1301] 0.2244199279 0.9209364159 0.8446349613 0.1505789177 0.2485677587
## [1306] 0.7417485014 0.4806666980 0.8962665189 0.2879217501 0.5259818598
## [1311] 0.5003807275 0.0688134961 0.1575781093 0.3121550616 0.1549391888
## [1316] 0.6204069530 0.7003039856 0.8117957780 0.7172026340 0.0092381105
## [1321] 0.7730032776 0.1812584974 0.0451268586 0.7556531330 0.8831771521
## [1326] 0.9954514644 0.9450418234 0.4563575076 0.9444874393 0.2049182438
## [1331] 0.7664674157 0.9373434437 0.4039679385 0.3016963435 0.6185293745
## [1336] 0.1980769292 0.6560395357 0.9543224096 0.7820732833 0.2532163210
## [1341] 0.1378460506 0.9344412027 0.8809523656 0.3187876244 0.0100381068
## [1346] 0.6394187319 0.9475698376 0.2091730427 0.3272520218 0.3716979904
## [1351] 0.8650207205 0.8697768789 0.7059340078 0.3220677184 0.8947187449
## [1356] 0.8721862828 0.9089470059 0.0007451264 0.3050168526 0.5831329135
## [1361] 0.2381004710 0.3812760623 0.8474581688 0.7113787132 0.8257633673
## [1366] 0.0798480398 0.1933205758 0.7402055658 0.6487303912 0.1425314333
## [1371] 0.1737610819 0.3560423309 0.8982047028 0.9629791560 0.8986655454
## [1376] 0.6517181710 0.1324386739 0.0586940514 0.2874992251 0.6253845671
## [1381] 0.2316653396 0.7521372817 0.1031551307 0.0315280430 0.1572291282
## [1386] 0.1433679825 0.7477257801 0.5823646685 0.2397322626 0.9320151994
## [1391] 0.7065239357 0.2307638966 0.6238909990 0.0223864089
• Đoạn mã này sử dụng hàm pdist() từ gói gld để tạo một đối tượng phân phối v dựa trên các tham số ước lượng từ fitdist.
• pdist() nhận các đối số như distribution (loại phân phối), data (dữ liệu chuỗi phần dư), và các tham số phân phối cụ thể (mu, sigma, skew, shape).
# Tạo chuỗi thời gian log returns
log_returns <- diff(log(prices))
# Định nghĩa mô hình GARCH(1,1)
spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(0, 0), include.mean = TRUE),
distribution.model = "sstd")
# Fit mô hình GARCH cho FPT
FPT_garch11_sstd <- ugarchfit(spec = spec, data = log_returns)
# Fit mô hình GARCH cho AAPL
AAPL_garch11_std <- ugarchfit(spec = spec, data = log_returns)
# Lấy residuals chuẩn hóa
FPT.res <- residuals(FPT_garch11_sstd) / sigma(FPT_garch11_sstd)
AAPL.res <- residuals(AAPL_garch11_std) / sigma(AAPL_garch11_std)
# Chuẩn hóa residuals cho FPT
FPT.res <- residuals(FPT_garch11_sstd)/sigma(FPT_garch11_sstd) #standarded resid
# Fit phân phối cho residuals của FPT
a <- fitdist(distribution = "sstd", FPT.res, control = list()) #fit distribution for this resid
# Tích phân xác suất cho FPT
u <- pdist(distribution = "sstd", q = FPT.res, mu = a$pars['mu'], sigma = a$pars['sigma'],
skew = a$pars['skew'], shape = a$pars['shape']) # make probability integration
# Chuẩn hóa residuals cho AAPL
AAPL.res <- residuals(AAPL_garch11_std)/sigma(AAPL_garch11_std) #standarded resid
# Fit phân phối cho residuals của AAPL
b <- fitdist(distribution = "std", AAPL.res, control = list()) #fit distribution for this resid
# Tích phân xác suất cho AAPL
v <- pdist(distribution = "std", q = AAPL.res, mu = b$pars['mu'], sigma = b$pars['sigma'],
skew = b$pars['skew'], shape = b$pars['shape']) # make probability integration
# Kiểm định với Anderson-Darling
library(goftest)
ad_fpt <- ad.test(u, "punif")
ad_aapl <- ad.test(v, "punif")
# Kiểm định Cramer-von Mises
cvm_fpt <- cvm.test(u, "punif")
cvm_aapl <- cvm.test(v, "punif")
# Kiểm định Kolmogorov-Smirnov
ks_fpt <- ks.test(u, "punif")
ks_aapl <- ks.test(v, "punif")
# Trình bày kết quả
test <- data.frame(test = c('P_value FPT' ,'P_value AAPL'),
AD = c(ad_fpt$p.value, ad_aapl$p.value),
CVM = c(cvm_fpt$p.value, cvm_aapl$p.value),
KS = c(ks_fpt$p.value, ks_aapl$p.value))
library(knitr)
library(kableExtra)
kable(test,
caption = "Bảng 8: Kết quả các kiểm định cho mô hình phân phối biên",
col.names = c("Các kiểm định", "Anderson-Darling", "Cramer-von Mises", "Kolmogorov-Smirnov"),
format = 'pandoc') %>% kable_styling(
bootstrap_options = c("striped", "hover", "condensed"),
full_width = F)
## Warning in kable_styling(., bootstrap_options = c("striped", "hover",
## "condensed"), : Please specify format in kable. kableExtra can customize either
## HTML or LaTeX outputs. See https://haozhu233.github.io/kableExtra/ for details.
| Các kiểm định | Anderson-Darling | Cramer-von Mises | Kolmogorov-Smirnov |
|---|---|---|---|
| P_value FPT | 0.9868255 | 0.9722511 | 0.9660636 |
| P_value AAPL | 0.9765132 | 0.9624006 | 0.9615410 |
Các kiểm định Anderson-Darling, Cramer-von Mises và Kolmogorov-Smirnov đều được thực hiện trên các chuỗi residual chuẩn hóa của FPT và AAPL để kiểm tra giả thuyết rằng chúng tuân theo phân phối chuẩn hóa đã chọn. Kết quả cho thấy giá trị p-value của kiểm định Anderson-Darling cho FPT là 0.9868 và cho AAPL là 0.9765. Cả hai giá trị này đều lớn hơn ngưỡng phổ biến 0.05, cho thấy không có bằng chứng thống kê để bác bỏ giả thuyết rằng residuals của FPT và AAPL tuân theo phân phối đã chọn. Tương tự, giá trị p-value của kiểm định Cramer-von Mises cho FPT là 0.9723 và cho AAPL là 0.9624, cũng lớn hơn 0.05, củng cố kết luận từ kiểm định Anderson-Darling. Cuối cùng, kiểm định Kolmogorov-Smirnov cho giá trị p-value là 0.9661 cho FPT và 0.9615 cho AAPL, tiếp tục chỉ ra rằng không có lý do thống kê để bác bỏ giả thuyết rằng residuals tuân theo phân phối chuẩn hóa. Nhìn chung, các kết quả kiểm định đều cho thấy rằng mô hình phân phối đã chọn phù hợp với dữ liệu residuals chuẩn hóa của FPT và AAPL.
## Call: fitCopula(normalCopula(dim = 2), data = u, ... = pairlist(method = "ml"))
## Fit based on "maximum likelihood" and 1394 2-dimensional observations.
## Normal copula, dim. d = 2
## Estimate Std. Error
## rho.1 -0.02516 0.027
## The maximized loglikelihood is 0.4332
## Optimization converged
## Number of loglikelihood evaluations:
## function gradient
## 7 7
## Call: fitCopula(tCopula(dim = 2), data = u, ... = pairlist(method = "ml"))
## Fit based on "maximum likelihood" and 1394 2-dimensional observations.
## t-copula, dim. d = 2
## Estimate Std. Error
## rho.1 -0.03275 0.029
## df 14.98571 6.649
## The maximized loglikelihood is 3.398
## Optimization converged
## Number of loglikelihood evaluations:
## function gradient
## 20 20
## Call: fitCopula(claytonCopula(dim = 2), data = u, ... = pairlist(method = "ml"))
## Fit based on "maximum likelihood" and 1394 2-dimensional observations.
## Clayton copula, dim. d = 2
## Estimate Std. Error
## alpha -0.04829 0.016
## The maximized loglikelihood is -3.779
## Optimization converged
## Number of loglikelihood evaluations:
## function gradient
## 3 3
## Call: fitCopula(gumbelCopula(dim = 2), data = u, ... = pairlist(method = "ml"))
## Fit based on "maximum likelihood" and 1394 2-dimensional observations.
## Gumbel copula, dim. d = 2
## Estimate Std. Error
## alpha 1.002 NA
## The maximized loglikelihood is 0.02728
## Optimization converged
## Number of loglikelihood evaluations:
## function gradient
## 43 43
## Call: fitCopula(frankCopula(dim = 2), data = u, ... = pairlist(method = "ml"))
## Fit based on "maximum likelihood" and 1394 2-dimensional observations.
## Frank copula, dim. d = 2
## Estimate Std. Error
## alpha -0.2218 0.162
## The maximized loglikelihood is 0.941
## Optimization converged
## Number of loglikelihood evaluations:
## function gradient
## 12 12
Hình 13 này thể hiện hàm mật độ xác suất (PDF) của mô hình Copula BB7 trong không gian ba chiều. Mô hình BB7 là một trong những mô hình Copula tiên tiến, được thiết kế để mô hình hóa các cấu trúc phụ thuộc phức tạp hơn so với các mô hình Copula truyền thống như Gaussian hay Student-t. Hình 13 sẽ cung cấp một cái nhìn trực quan về cách phân bố xác suất của các cặp giá trị \((u, v)\) theo mô hình này. Đồ thị này không chỉ giúp chúng ta hiểu rõ hơn về hình dạng và sự tập trung của hàm mật độ mà còn cho thấy khả năng của mô hình trong việc mô phỏng các đuôi phân phối và sự phụ thuộc trong các tình huống cực đoan.
# Giả sử est_opt_cop là một danh sách với các tham số đã ước lượng
est_opt_cop <- list(par = 1.5, par2 = 0.7)
# Tạo đối tượng BB7Copula
copula_obj <- VC2copula::BB7Copula(param = c(est_opt_cop$par, est_opt_cop$par2))
# Vẽ đồ thị 3D của PDF của BB7 Copula
# Thiết lập kích thước của thiết bị đồ họa
par(mfrow = c(1, 1), mar = c(5, 5, 4, 2) + 0.1)
# Vẽ đồ thị với các tùy chọn bổ sung
persp(copula_obj, dCopula,
xlab = 'u', ylab = 'v', zlab = 'density', col = 'pink', ltheta = 120,
ticktype = "detailed", cex.axis = 0.8,
main = 'Hình 13: Phối cảnh PDF của mô hình BB7 Copula')
Sự biến đổi hình dạng của các PDF copula qua các giai đoạn là một điểm nổi bật. Các hàm mật độ xác suất này cho thấy sự thay đổi đáng kể giữa các giai đoạn, cho thấy mối quan hệ phụ thuộc giữa các biến ngẫu nhiên đã trải qua những biến động rõ rệt theo thời gian. Điều này cung cấp cái nhìn sâu sắc về ảnh hưởng của các yếu tố kinh tế và sự kiện đặc biệt lên sự phụ thuộc giữa các biến.
Việc sử dụng các màu sắc khác nhau và nhãn giai đoạn trong biểu đồ giúp dễ dàng nhận diện và so sánh các sự khác biệt giữa các giai đoạn. Mỗi biểu đồ 3D đại diện cho một giai đoạn cụ thể và sử dụng một loại copula khác nhau, giúp người dùng dễ dàng theo dõi sự thay đổi trong các mối quan hệ phụ thuộc theo thời gian.
Đặc biệt, sự phân biệt giữa các copula đối xứng và không đối xứng là một điểm quan trọng. Một số copula, như Gaussian, có hình dạng đối xứng, trong khi các copula khác, như Clayton, lại không đối xứng. Điều này phản ánh các kiểu phụ thuộc khác nhau giữa các biến ngẫu nhiên, cung cấp thêm thông tin về cách các biến tương tác với nhau trong các giai đoạn khác nhau.
Cuối cùng, việc quan sát các vùng có màu sắc đậm hơn trong biểu đồ giúp xác định các khu vực với xác suất cao hơn, từ đó nhận diện những giá trị của biến ngẫu nhiên có khả năng xảy ra cùng nhau. Điều này không chỉ giúp hiểu rõ hơn về mối quan hệ phụ thuộc mà còn cung cấp thông tin quý giá cho việc dự đoán và phân tích các hiện tượng kinh tế phức tạp.
Kết luận từ nghiên cứu sử dụng phương pháp Copula để phân tích cấu trúc phụ thuộc giữa thị trường chứng khoán FPT và thị trường chứng khoán APPLE cho thấy rằng sự phụ thuộc giữa hai thị trường này có tính chất đa dạng và phụ thuộc vào các điều kiện thị trường khác nhau. Phân tích cho thấy mối liên kết giữa FPT và APPLE không đồng nhất, có thể thay đổi theo thời gian và tình hình kinh tế toàn cầu. Cụ thể, trong các giai đoạn thị trường ổn định, mức độ phụ thuộc giữa hai thị trường có xu hướng cao hơn, cho thấy sự tương quan tích cực. Ngược lại, trong các giai đoạn biến động mạnh, mức độ phụ thuộc giảm xuống, chỉ ra rằng các yếu tố ngoại lai hoặc rủi ro hệ thống có thể làm thay đổi mối quan hệ này. Kết quả này nhấn mạnh tầm quan trọng của việc thường xuyên cập nhật và điều chỉnh chiến lược đầu tư để phản ánh đúng sự biến động của mối quan hệ giữa các thị trường chứng khoán quốc tế. Việc áp dụng phương pháp Copula không chỉ cung cấp cái nhìn sâu sắc về sự phụ thuộc giữa hai thị trường mà còn góp phần vào việc phát triển các chiến lược quản lý rủi ro hiệu quả hơn trong môi trường tài chính toàn cầu.
Mặc dù nghiên cứu sử dụng phương pháp Copula để phân tích cấu trúc phụ thuộc giữa thị trường chứng khoán FPT và thị trường chứng khoán APPLE đã cung cấp nhiều thông tin giá trị, nhưng vẫn tồn tại một số hạn chế đáng lưu ý. Thứ nhất, phương pháp Copula, dù rất mạnh mẽ trong việc mô hình hóa mối quan hệ phụ thuộc không tuyến tính, vẫn dựa vào giả định rằng các dữ liệu đầu vào là độc lập và phân phối đồng nhất. Điều này có thể không hoàn toàn đúng trong thực tế, nơi mà các yếu tố kinh tế, chính trị và tâm lý thị trường có thể tác động đến mối quan hệ giữa các thị trường một cách phức tạp hơn. Thứ hai, phương pháp Copula thường yêu cầu dữ liệu lịch sử dài hạn để có thể tạo ra các mô hình đáng tin cậy, điều này có thể gặp khó khăn khi áp dụng cho các thị trường mới nổi hoặc các thị trường không có dữ liệu dài hạn đủ để phân tích. Điều này hạn chế khả năng tổng quát hóa kết quả nghiên cứu đối với các giai đoạn thị trường khác nhau hoặc các tình huống thị trường khác.
Thêm vào đó, nghiên cứu này chủ yếu tập trung vào việc phân tích sự phụ thuộc giữa hai thị trường mà không xem xét đầy đủ các yếu tố vĩ mô và vi mô có thể ảnh hưởng đến mối quan hệ này. Ví dụ, các yếu tố chính trị toàn cầu, chính sách tiền tệ, và sự thay đổi trong chiến lược kinh doanh của các công ty lớn có thể làm biến động mối liên kết giữa thị trường chứng khoán FPT và APPLE theo cách không thể dự đoán được chỉ bằng phân tích Copula.
Để khắc phục các hạn chế này, các khuyến nghị sau đây có thể được xem xét:
Mở rộng Phạm vi Nghiên cứu: Để có cái nhìn toàn diện hơn về mối quan hệ giữa các thị trường chứng khoán, nghiên cứu nên được mở rộng để bao gồm các yếu tố vĩ mô, chính trị và kinh tế toàn cầu. Việc tích hợp các biến số này vào mô hình phân tích có thể giúp làm rõ hơn sự tương tác giữa các thị trường và các yếu tố ảnh hưởng đến sự phụ thuộc giữa chúng.
Áp dụng Các Mô Hình Kết Hợp: Kết hợp phương pháp Copula với các mô hình phân tích khác, như mô hình hồi quy động hoặc mô hình mạng nơ-ron, có thể cung cấp cái nhìn sâu hơn về các yếu tố ảnh hưởng đến mối quan hệ giữa các thị trường chứng khoán. Việc áp dụng các phương pháp này có thể giúp điều chỉnh các giả định của phương pháp Copula và cải thiện độ chính xác của kết quả.
Nghiên cứu Các Thị Trường Khác: Để làm phong phú thêm hiểu biết về cấu trúc phụ thuộc, các nghiên cứu nên được mở rộng ra các thị trường chứng khoán khác trên toàn cầu. Việc này không chỉ giúp xác định các mẫu chung trong mối quan hệ phụ thuộc mà còn phát hiện ra các yếu tố đặc thù của từng thị trường, từ đó cung cấp các chiến lược đầu tư và quản lý rủi ro hiệu quả hơn.
Cập Nhật Dữ Liệu Thường Xuyên: Việc liên tục cập nhật dữ liệu và áp dụng phương pháp phân tích động sẽ giúp phản ánh chính xác hơn sự thay đổi trong mối quan hệ giữa các thị trường theo thời gian. Điều này cũng giúp nhà đầu tư và nhà quản lý quỹ điều chỉnh chiến lược đầu tư kịp thời để đối phó với những biến động bất ngờ trong thị trường.
Nhìn chung, nghiên cứu này mở ra cơ hội để khám phá sâu hơn các mối liên hệ phức tạp giữa các thị trường chứng khoán và cung cấp cơ sở để phát triển các phương pháp phân tích tài chính tiên tiến hơn.
Lê Văn Thứ và Trần Ái Kết. (2022). LÝ THUYẾT COPULA VÀ ỨNG DỤNG TRONG TÀI CHÍNH: XÁC ĐỊNH CẤU TRÚC PHỤ THUỘC GIỮA THỊ TRƯỜNG CHỨNG KHOÁN VIỆT NAM VÀ THỊ TRƯỜNG CHỨNG KHOÁN CHÂU Á. Tạp Chí Khoa học Quản Lý Và Kinh tế, Trường Đại học Kinh Tế, Đại học Huế, (21).
Lê Văn Thứ và Trần Ái Kết. (2022). MỐI QUAN HỆ PHỤ THUỘC GIỮA THỊ TRƯỜNG CHỨNG KHOÁN VIỆT NAM VÀ THỊ TRƯỜNG CHỨNG KHOÁN MỸ: TIẾP CẬN BẰNG MÔ HÌNH COPULA-GJR-GARCH .
Trịnh Thị Huyền Trang và Lê Thị Thu Thảo. (2021). ỨNG DỤNG MÔ HÌNH ARCH VÀ GARCH DỰ BÁO LỢI SUẤT CỔ PHIẾU VNM. UTEHY Journal of Science and Technology, (30), 79-85.
Vương Quân Hoàng. (2004). Hiệu ứng GARCH trên dãy lợi suất thị trường chứng khoán Việt Nam 2000-2003. Tạp chí Ứng dụng toán học tập II, số 1, 2004
Aloui, R., Aïssa, M.S.B. & Duc, K.N. (2011), ‘Global financial crisis, extreme interdependences, and contagion effects: The role of economic structure?’, Journal of Banking & Finance, 35, 130-141.
Bianconi, M., Yoshino, J.A. & Sousa, M.O.M. (2013), ‘BRIC and the U.S. financial crisis: An empirical investigation of stock and bond markets’, Emerging Markets Review, 14, 76-109.
Calvo, G. A & Mendoza, E.G. (1998), ‘Rational contagion and the globalization of securities markets’, Journal of International Economics, 51(1), 79-113.
Chebbi, A. & Hedhli, A. (2014), ‘Dynamic dependencies between the Tunisian stock market and other international stock markets: GARCH-EVT- Copula approach’, Applied Financial Economics, 18, 1215-1228.
Engle, R.F. & Ng, V.K. (1993), ‘Measuring and testing the impact of news on volatility’, The Journal of Finance, 48(5), 1749-1778.
Genest, C., Quessy, J.F. & Rémillard, B. (2006), ‘Goodness of fit procedures for copula models based on the probability integral transformation’, Scandinavian Journal of Statistics, 33(2), 337-366.
Ghorbel, A. & Trabelsi, A. (2013), ‘The impact of global financial crisis on the dependence structure of equity markets and on risk management’, International Journal of Managerial and Financial Accounting, 5(1), 1-32.
Glosten, L.R., Jagannathan, R. & Runkle, D.E. (1993), ‘On the relation between the expected value and the volatility of the nominal excess return on stocks’, The Journal of Finance, 48(5), 1779-1801.