# SYLLABUS ECONOMIC FORECASTING (3)

## Giai đoạn 4 - Macroeconomic Forecasting (Ngày 376–495, 120 ngày)

### PHẦN A: DYNAMIC FACTOR MODELS (Ngày 376–400)

**Ngày 376: Giới thiệu Dynamic Factor Models**

*   Mục tiêu: Hiểu động lực ra đời của DFM trong forecasting kinh tế.
    
*   Lý thuyết: Vấn đề "curse of dimensionality" khi có hàng trăm chỉ báo kinh tế; DFM giải quyết bằng cách nén thông tin.
    
*   Thực hành: Đọc tổng quan về việc FED, ECB sử dụng DFM trong nowcasting.
    

**Ngày 377: Nhân tố tiềm ẩn (Latent Factors)**

*   Mục tiêu: Hiểu khái niệm latent factor.
    
*   Lý thuyết: Latent factor, common component vs idiosyncratic component.
    
*   Thực hành: Minh họa bằng ví dụ: một "chu kỳ kinh tế chung" ẩn đằng sau nhiều chỉ báo quan sát được.
    

**Ngày 378: Cấu trúc toán học của Factor Model**

*   Mục tiêu: Viết được phương trình factor model tổng quát.
    
*   Lý thuyết: X\_t = ΛF\_t + e\_t, factor loadings Λ, common factors F\_t.
    
*   Thực hành: Viết lại phương trình cho trường hợp cụ thể 5 chỉ báo, 1 factor chung.
    

**Ngày 379: Static vs Dynamic Factor Model**

*   Mục tiêu: Phân biệt hai loại factor model.
    
*   Lý thuyết: Static factor model (factor không có động lực thời gian) vs dynamic factor model (factor tuân theo VAR).
    
*   Thực hành: So sánh giả định của hai loại mô hình qua ví dụ minh họa.
    

**Ngày 380: Ước lượng Factor bằng PCA**

*   Mục tiêu: Kết nối lại kiến thức PCA từ Giai đoạn 0 vào bài toán factor.
    
*   Lý thuyết: PCA như một phương pháp ước lượng static factor đơn giản.
    
*   Thực hành: Áp dụng PCA (đã viết từ scratch) lên bộ dữ liệu nhiều chỉ báo kinh tế Việt Nam để trích xuất factor đầu tiên.
    

**Ngày 381: Số lượng Factor tối ưu**

*   Mục tiêu: Biết cách chọn số lượng factor phù hợp.
    
*   Lý thuyết: Scree plot, eigenvalue > 1 criterion, Bai-Ng information criteria.
    
*   Thực hành: Áp dụng scree plot và Bai-Ng criteria để chọn số factor cho bộ dữ liệu đã có.
    

**Ngày 382: Diễn giải Factor Loadings**

*   Mục tiêu: Diễn giải ý nghĩa kinh tế của factor loadings.
    
*   Lý thuyết: Factor loadings thể hiện mức độ mỗi chỉ báo phản ánh factor chung.
    
*   Thực hành: Lập bảng factor loadings cho các chỉ báo, xếp hạng chỉ báo nào "đại diện" tốt nhất cho chu kỳ kinh tế.
    

**Ngày 383: Biểu diễn State Space của DFM**

*   Mục tiêu: Hiểu DFM có thể viết dưới dạng state space (chuẩn bị cho Phần B).
    
*   Lý thuyết: DFM như một trường hợp đặc biệt của state space model.
    
*   Thực hành: Viết lại phương trình DFM dưới dạng state equation + observation equation.
    

**Ngày 384: Ước lượng DFM bằng thuật toán EM - Lý thuyết**

*   Mục tiêu: Hiểu ý tưởng thuật toán EM áp dụng cho DFM.
    
*   Lý thuyết: Expectation-Maximization algorithm, E-step và M-step.
    
*   Thực hành: Vẽ sơ đồ minh họa quy trình lặp EM.
    

**Ngày 385: Ước lượng DFM bằng thuật toán EM - Thực hành**

*   Mục tiêu: Áp dụng EM để ước lượng DFM trên dữ liệu thực.
    
*   Lý thuyết: Ôn lại các bước lặp E-step/M-step.
    
*   Thực hành: Sử dụng `statsmodels.tsa.statespace.dynamic_factor` để ước lượng DFM.
    

**Ngày 386: Phương pháp ước lượng hai bước (Doz-Giannone-Reichlin)**

*   Mục tiêu: Biết phương pháp ước lượng nhanh, phổ biến trong thực hành nowcasting.
    
*   Lý thuyết: Two-step estimation, kết hợp PCA và Kalman filter.
    
*   Thực hành: Đọc tóm tắt paper gốc, so sánh ưu điểm tốc độ với phương pháp EM đầy đủ.
    

**Ngày 387: Dữ liệu đa tần suất trong DFM**

*   Mục tiêu: Hiểu DFM cho phép trộn dữ liệu tháng/quý (chuẩn bị cho MIDAS, Giai đoạn 6).
    
*   Lý thuyết: Mixed-frequency data trong factor model, cách xử lý biến quý như biến tháng có missing values.
    
*   Thực hành: Thiết lập cấu trúc dữ liệu mixed-frequency (GDP quý, CPI/PMI tháng) cho project sắp tới.
    

**Ngày 388: Xử lý dữ liệu thiếu trong DFM**

*   Mục tiêu: Biết cách DFM xử lý missing data một cách tự nhiên.
    
*   Lý thuyết: Kalman filter cho phép ước lượng ngay cả khi có missing observations - ưu điểm lớn so với PCA thuần.
    
*   Thực hành: Tạo dữ liệu có missing values ngẫu nhiên, so sánh kết quả ước lượng DFM với PCA thuần.
    

**Ngày 389: Đánh giá Factor Model**

*   Mục tiêu: Đánh giá chất lượng factor đã trích xuất.
    
*   Lý thuyết: Variance explained by factor, so sánh với các chỉ báo gốc.
    
*   Thực hành: Tính % variance explained bởi factor chung cho bộ dữ liệu Việt Nam.
    

**Ngày 390: Case study - Chỉ số kiểu Stock-Watson**

*   Mục tiêu: Học từ các chỉ số factor nổi tiếng trong thực tế.
    
*   Lý thuyết: Đọc tổng quan về ADS Index (FED Philadelphia) hoặc chỉ số coincident index kiểu Stock-Watson.
    
*   Thực hành: Tóm tắt cách các chỉ số này được xây dựng và sử dụng trong thực tế.
    

**Ngày 391: Project Nowcasting GDP - Chọn bộ chỉ báo**

*   Mục tiêu: Xác định tập chỉ báo phù hợp cho nowcasting GDP Việt Nam.
    
*   Lý thuyết: Tiêu chí chọn chỉ báo: tần suất cao, công bố sớm, tương quan với GDP.
    
*   Thực hành: Lập danh sách 8-10 chỉ báo (PMI, xuất khẩu, nhập khẩu, sản lượng công nghiệp, bán lẻ...).
    

**Ngày 392: Project Nowcasting GDP - Thu thập dữ liệu đa tần suất**

*   Mục tiêu: Có bộ dữ liệu hoàn chỉnh cho project.
    
*   Lý thuyết: Ôn lại nguồn dữ liệu đã học ở Giai đoạn 1 (GSO, PMI Vietnam).
    
*   Thực hành: Thu thập dữ liệu cho toàn bộ chỉ báo đã chọn, tổ chức theo tần suất gốc (tháng/quý).
    

**Ngày 393: Project Nowcasting GDP - Chuẩn hóa dữ liệu**

*   Mục tiêu: Chuẩn bị dữ liệu sẵn sàng cho ước lượng factor.
    
*   Lý thuyết: Standardization (mean 0, variance 1) bắt buộc trước khi trích factor.
    
*   Thực hành: Chuẩn hóa toàn bộ chỉ báo, xử lý stationarity nếu cần.
    

**Ngày 394: Project Nowcasting GDP - Ước lượng Factor**

*   Mục tiêu: Trích xuất factor chung từ bộ chỉ báo.
    
*   Lý thuyết: Ôn lại quy trình ước lượng DFM (Ngày 385).
    
*   Thực hành: Ước lượng DFM, trích xuất factor chung theo tháng.
    

**Ngày 395: Project Nowcasting GDP - Liên kết Factor với GDP**

*   Mục tiêu: Xây cầu nối từ factor tần suất tháng sang GDP tần suất quý (bridge equation).
    
*   Lý thuyết: Bridge equation, hồi quy GDP quý theo factor tháng (trung bình factor trong quý).
    
*   Thực hành: Ước lượng bridge equation bằng OLS.
    

**Ngày 396: Project Nowcasting GDP - Dự báo Nowcast**

*   Mục tiêu: Tạo ra nowcast GDP quý hiện tại.
    
*   Lý thuyết: Ôn lại cách cập nhật factor khi có dữ liệu tháng mới nhất trong quý.
    
*   Thực hành: Tính nowcast GDP quý hiện tại dựa trên dữ liệu tháng đã có.
    

**Ngày 397: Project Nowcasting GDP - Đánh giá độ chính xác**

*   Mục tiêu: Đánh giá chất lượng nowcast một cách nghiêm túc.
    
*   Lý thuyết: Pseudo out-of-sample evaluation cho nowcasting (giả lập từng thời điểm trong quá khứ).
    
*   Thực hành: Chạy pseudo-real-time evaluation, tính RMSE của nowcast so với GDP thực tế công bố sau đó.
    

**Ngày 398: Project Nowcasting GDP - Viết báo cáo**

*   Mục tiêu: Trình bày kết quả chuyên nghiệp.
    
*   Lý thuyết: Cấu trúc báo cáo nowcasting (Data, Factor extraction, Bridge equation, Evaluation).
    
*   Thực hành: Viết báo cáo hoàn chỉnh cho project Nowcasting GDP.
    

**Ngày 399: So sánh DFM với VAR**

*   Mục tiêu: Hiểu khi nào chọn DFM thay vì VAR.
    
*   Lý thuyết: DFM xử lý được nhiều biến (hàng chục-hàng trăm), VAR bị giới hạn bởi số tham số khi số biến tăng.
    
*   Thực hành: Lập bảng so sánh ưu/nhược điểm DFM vs VAR vs VECM đã học.
    

**Ngày 400: Tổng kết Dynamic Factor Models**

*   Mục tiêu: Củng cố toàn bộ Phần A.
    
*   Lý thuyết: Ôn tập Ngày 376–399.
    
*   Thực hành: Làm bài kiểm tra tổng hợp về quy trình xây dựng DFM từ đầu đến cuối.
    

### PHẦN B: STATE SPACE MODELS (Ngày 401–430)

**Ngày 401: Giới thiệu State Space Models**

*   Mục tiêu: Hiểu vì sao state space là khung tổng quát cho nhiều mô hình đã học.
    
*   Lý thuyết: State space model như một framework thống nhất (ARIMA, DFM đều là trường hợp đặc biệt).
    
*   Thực hành: Vẽ sơ đồ minh họa mối quan hệ giữa state space và các mô hình đã học trước đó.
    

**Ngày 402: Phương trình trạng thái (State Equation)**

*   Mục tiêu: Hiểu thành phần mô tả động lực trạng thái ẩn.
    
*   Lý thuyết: State equation, α\_t = Tα\_{t-1} + Rη\_t.
    
*   Thực hành: Viết phương trình trạng thái cho một ví dụ đơn giản (random walk trạng thái).
    

**Ngày 403: Phương trình quan sát (Observation Equation)**

*   Mục tiêu: Hiểu thành phần liên kết trạng thái ẩn với dữ liệu quan sát được.
    
*   Lý thuyết: Observation equation, y\_t = Zα\_t + ε\_t.
    
*   Thực hành: Viết phương trình quan sát cho ví dụ GDP quan sát được với nhiễu đo lường.
    

**Ngày 404: Mô hình Local Level**

*   Mục tiêu: Áp dụng state space cho mô hình đơn giản nhất - local level.
    
*   Lý thuyết: Local level model, mức (level) thay đổi theo random walk.
    
*   Thực hành: Viết state space đầy đủ cho local level model.
    

**Ngày 405: Mô hình Local Linear Trend**

*   Mục tiêu: Mở rộng sang mô hình có cả level và slope thay đổi.
    
*   Lý thuyết: Local linear trend model.
    
*   Thực hành: Viết state space đầy đủ cho local linear trend model.
    

**Ngày 406: Biểu diễn ARIMA dưới dạng State Space**

*   Mục tiêu: Thấy được ARIMA (đã học Giai đoạn 3) là trường hợp đặc biệt của state space.
    
*   Lý thuyết: ARIMA state space representation (companion form).
    
*   Thực hành: Viết lại một mô hình ARIMA(2,0,1) dưới dạng state space.
    

**Ngày 407: Kalman Filter - Trực giác**

*   Mục tiêu: Hiểu ý tưởng cốt lõi của Kalman Filter trước khi vào công thức.
    
*   Lý thuyết: Kalman Filter như một cách kết hợp tối ưu giữa dự đoán và quan sát mới (giống trọng số Bayesian).
    
*   Thực hành: Minh họa bằng ví dụ đơn giản: kết hợp một dự đoán và một phép đo có nhiễu để có ước lượng tốt hơn.
    

**Ngày 408: Kalman Filter - Bước dự đoán (Prediction)**

*   Mục tiêu: Hiểu và tính được bước prediction.
    
*   Lý thuyết: Prediction step: dự đoán trạng thái và phương sai trước khi có quan sát mới.
    
*   Thực hành: Tính tay bước prediction cho local level model với tham số cụ thể.
    

**Ngày 409: Kalman Filter - Bước cập nhật (Update)**

*   Mục tiêu: Hiểu và tính được bước update.
    
*   Lý thuyết: Update step: kết hợp prediction với quan sát mới qua Kalman Gain.
    
*   Thực hành: Tính tay bước update tiếp theo cho ví dụ ở Ngày 408.
    

**Ngày 410: Công thức Kalman Filter đầy đủ**

*   Mục tiêu: Nắm vững toàn bộ công thức Kalman Filter.
    
*   Lý thuyết: Tổng hợp đầy đủ 5 phương trình Kalman Filter.
    
*   Thực hành: Viết lại toàn bộ công thức từ trí nhớ, đối chiếu với tài liệu.
    

**Ngày 411: Cài đặt Kalman Filter từ scratch (Phần 1)**

*   Mục tiêu: Bắt đầu tự viết Kalman Filter bằng NumPy.
    
*   Lý thuyết: Ôn lại cấu trúc ma trận cần thiết (T, R, Z, Q, H).
    
*   Thực hành: Viết hàm `predict_step()` và `update_step()`.
    

**Ngày 412: Cài đặt Kalman Filter từ scratch (Phần 2)**

*   Mục tiêu: Hoàn thiện Kalman Filter chạy trên chuỗi dữ liệu đầy đủ.
    
*   Lý thuyết: Ôn lại vòng lặp filter qua toàn bộ chuỗi thời gian.
    
*   Thực hành: Chạy Kalman Filter tự viết trên chuỗi GDP Việt Nam (local level model), so sánh với `statsmodels`.
    

**Ngày 413: Kalman Gain - Ý nghĩa**

*   Mục tiêu: Hiểu sâu vai trò của Kalman Gain.
    
*   Lý thuyết: Kalman Gain quyết định "tin" quan sát mới hay dự đoán cũ nhiều hơn, phụ thuộc tỷ lệ nhiễu.
    
*   Thực hành: Mô phỏng với các mức nhiễu quan sát khác nhau, quan sát Kalman Gain thay đổi thế nào.
    

**Ngày 414: Kalman Smoother - Lý thuyết**

*   Mục tiêu: Hiểu khác biệt giữa filtering và smoothing.
    
*   Lý thuyết: Kalman Smoother sử dụng toàn bộ dữ liệu (kể cả tương lai) để ước lượng trạng thái quá khứ tốt hơn.
    
*   Thực hành: Vẽ sơ đồ minh họa khác biệt giữa filtered estimate và smoothed estimate.
    

**Ngày 415: Kalman Smoother - Thực hành**

*   Mục tiêu: Áp dụng Kalman Smoother trên dữ liệu thực.
    
*   Lý thuyết: Ôn lại thuật toán RTS smoother (Rauch-Tung-Striebel).
    
*   Thực hành: Chạy Kalman Smoother cho chuỗi GDP, so sánh trực quan với kết quả filter.
    

**Ngày 416: Ước lượng tham số State Space bằng MLE**

*   Mục tiêu: Biết cách ước lượng các tham số chưa biết (Q, H) của mô hình.
    
*   Lý thuyết: Maximum likelihood qua prediction error decomposition.
    
*   Thực hành: Ước lượng tham số phương sai cho local level model bằng `statsmodels`.
    

**Ngày 417: Xử lý dữ liệu thiếu bằng Kalman Filter**

*   Mục tiêu: Thấy được ưu điểm lớn của Kalman Filter với missing data.
    
*   Lý thuyết: Kalman Filter tự động "bỏ qua" bước update khi thiếu quan sát, vẫn dự đoán được.
    
*   Thực hành: Tạo chuỗi GDP có missing values, chạy Kalman Filter để nội suy giá trị thiếu.
    

**Ngày 418: Mô hình tham số thay đổi theo thời gian**

*   Mục tiêu: Hiểu ứng dụng state space cho time-varying parameter models.
    
*   Lý thuyết: Time-varying parameter regression, hệ số hồi quy thay đổi theo thời gian dưới dạng random walk.
    
*   Thực hành: Ước lượng một mô hình TVP đơn giản cho hệ số Phillips curve theo thời gian.
    

**Ngày 419: Local Level Model cho Trend GDP**

*   Mục tiêu: Áp dụng thực tế local level model.
    
*   Lý thuyết: Ôn lại ứng dụng tách trend "mềm" khỏi GDP (khác với trend tuyến tính cứng ở Giai đoạn 3).
    
*   Thực hành: Ước lượng local level model cho log GDP Việt Nam.
    

**Ngày 420: Local Linear Trend Model cho GDP**

*   Mục tiêu: So sánh với mô hình có cả slope thay đổi.
    
*   Lý thuyết: Ôn lại local linear trend, ứng dụng ước lượng potential GDP thay đổi theo thời gian.
    
*   Thực hành: Ước lượng local linear trend model cho GDP Việt Nam, so sánh output gap với HP filter đã học ở Giai đoạn 1 (Ngày 65).
    

**Ngày 421: Project Nowcasting Inflation - Thiết lập State Space**

*   Mục tiêu: Bắt đầu project nowcasting lạm phát bằng Kalman Filter.
    
*   Lý thuyết: Ôn lại cách thiết lập state space cho một biến quan sát nhiễu (CPI có nhiễu đo lường/mùa vụ).
    
*   Thực hành: Thiết lập state space model cho CPI Việt Nam (kết hợp trend + seasonal component).
    

**Ngày 422: Project Nowcasting Inflation - Chạy Kalman Filter**

*   Mục tiêu: Ước lượng trạng thái ẩn của lạm phát theo thời gian thực.
    
*   Lý thuyết: Ôn lại thuật toán filter.
    
*   Thực hành: Chạy Kalman Filter, trích xuất "lạm phát lõi ẩn" (unobserved core inflation).
    

**Ngày 423: Project Nowcasting Inflation - Chạy Kalman Smoother**

*   Mục tiêu: Có ước lượng lạm phát lõi mượt hơn cho phân tích lịch sử.
    
*   Lý thuyết: Ôn lại smoother.
    
*   Thực hành: Chạy Kalman Smoother, so sánh với chỉ số lạm phát lõi chính thức đã học ở Giai đoạn 1.
    

**Ngày 424: Project Nowcasting Inflation - Ước lượng tham số**

*   Mục tiêu: Tối ưu tham số mô hình bằng dữ liệu thực.
    
*   Lý thuyết: Ôn lại MLE cho state space.
    
*   Thực hành: Ước lượng tham số phương sai bằng MLE, kiểm tra hội tụ.
    

**Ngày 425: Project Nowcasting Inflation - Dự báo Nowcast**

*   Mục tiêu: Tạo nowcast lạm phát tháng hiện tại.
    
*   Lý thuyết: Ôn lại bước prediction để dự báo tháng tiếp theo.
    
*   Thực hành: Tính nowcast lạm phát cho tháng gần nhất chưa có dữ liệu chính thức.
    

**Ngày 426: Project Nowcasting Inflation - Đánh giá độ chính xác**

*   Mục tiêu: Đánh giá chất lượng nowcast.
    
*   Lý thuyết: Ôn lại pseudo real-time evaluation.
    
*   Thực hành: Đánh giá RMSE của nowcast lạm phát so với thực tế công bố sau đó.
    

**Ngày 427: Project Nowcasting Inflation - Viết báo cáo**

*   Mục tiêu: Hoàn thiện báo cáo project.
    
*   Lý thuyết: Ôn lại cấu trúc báo cáo nowcasting.
    
*   Thực hành: Viết báo cáo hoàn chỉnh cho project Nowcasting Inflation.
    

**Ngày 428: So sánh Kalman Filter với DFM**

*   Mục tiêu: Hiểu mối liên hệ và khác biệt thực dụng giữa hai công cụ.
    
*   Lý thuyết: DFM thường dùng Kalman Filter bên trong; khác biệt là DFM tập trung nén nhiều biến, state space đơn biến tập trung tách latent state.
    
*   Thực hành: Lập bảng so sánh use-case phù hợp cho từng công cụ.
    

**Ngày 429: Ứng dụng State Space trong thực tế NHTW**

*   Mục tiêu: Hiểu bối cảnh sử dụng thực tế.
    
*   Lý thuyết: Đọc tổng quan cách NHTW dùng state space cho ước lượng output gap, NAIRU theo thời gian thực.
    
*   Thực hành: Tóm tắt 1 case study cụ thể (VD: ước lượng NAIRU thời gian thực của FED).
    

**Ngày 430: Tổng kết State Space Models**

*   Mục tiêu: Củng cố toàn bộ Phần B.
    
*   Lý thuyết: Ôn tập Ngày 401–429.
    
*   Thực hành: Viết lại toàn bộ 5 phương trình Kalman Filter và giải thích ý nghĩa từng phương trình mà không nhìn tài liệu.
    

### PHẦN C: BAYESIAN FORECASTING (Ngày 431–460)

**Ngày 431: Ôn lại nền tảng Bayesian**

*   Mục tiêu: Củng cố lại định lý Bayes trong bối cảnh ước lượng mô hình.
    
*   Lý thuyết: Ôn lại Bayes theorem (Giai đoạn 0), áp dụng cho ước lượng tham số: P(θ|data) ∝ P(data|θ)P(θ).
    
*   Thực hành: Viết lại công thức Bayes cho bài toán ước lượng một tham số đơn giản.
    

**Ngày 432: Phân phối Prior**

*   Mục tiêu: Hiểu vai trò và các loại prior distribution.
    
*   Lý thuyết: Informative prior, non-informative (flat) prior, weakly informative prior.
    
*   Thực hành: So sánh ảnh hưởng của 3 loại prior lên kết quả ước lượng cho cùng một bộ dữ liệu nhỏ.
    

**Ngày 433: Phân phối Posterior**

*   Mục tiêu: Hiểu cách tính và diễn giải posterior distribution.
    
*   Lý thuyết: Posterior distribution, posterior mean/mode/credible interval.
    
*   Thực hành: Tính posterior cho một bài toán conjugate đơn giản (Beta-Binomial).
    

**Ngày 434: Conjugate Priors**

*   Mục tiêu: Biết các cặp conjugate phổ biến để tính posterior đóng dạng.
    
*   Lý thuyết: Conjugate prior, ví dụ Normal-Normal, Beta-Binomial, Gamma-Poisson.
    
*   Thực hành: Suy ra công thức posterior cho trường hợp Normal-Normal bằng tay.
    

**Ngày 435: Hồi quy Bayesian - Lý thuyết**

*   Mục tiêu: Mở rộng OLS sang khung Bayesian.
    
*   Lý thuyết: Bayesian linear regression, prior cho hệ số hồi quy và phương sai sai số.
    
*   Thực hành: Viết lại mô hình hồi quy CPI (từ Giai đoạn 2) dưới dạng Bayesian với prior cụ thể.
    

**Ngày 436: Giới thiệu MCMC**

*   Mục tiêu: Hiểu vì sao cần phương pháp mô phỏng khi posterior không có dạng đóng.
    
*   Lý thuyết: Markov Chain Monte Carlo, ý tưởng lấy mẫu từ posterior.
    
*   Thực hành: Đọc và tóm tắt trực giác về cách MCMC hoạt động.
    

**Ngày 437: Gibbs Sampling**

*   Mục tiêu: Hiểu một thuật toán MCMC cụ thể.
    
*   Lý thuyết: Gibbs sampling, lấy mẫu tuần tự từ các phân phối điều kiện đầy đủ.
    
*   Thực hành: Cài đặt Gibbs sampler đơn giản cho bài toán Normal-Normal.
    

**Ngày 438: Metropolis-Hastings**

*   Mục tiêu: Hiểu thuật toán MCMC tổng quát hơn.
    
*   Lý thuyết: Metropolis-Hastings algorithm, acceptance probability.
    
*   Thực hành: Cài đặt Metropolis-Hastings đơn giản để lấy mẫu từ một phân phối tùy ý.
    

**Ngày 439: Cài đặt Hồi quy Bayesian bằng PyMC**

*   Mục tiêu: Thành thạo công cụ chuẩn cho Bayesian modeling.
    
*   Lý thuyết: Ôn lại cú pháp cơ bản của PyMC (model context, priors, sampling).
    
*   Thực hành: Ước lượng lại mô hình hồi quy CPI bằng PyMC, kiểm tra trace plots.
    

**Ngày 440: Khoảng tin cậy Bayesian vs Tần suất**

*   Mục tiêu: Diễn giải đúng credible interval khác gì confidence interval.
    
*   Lý thuyết: Credible interval (xác suất trực tiếp về tham số) vs confidence interval (tần suất lặp lại lấy mẫu).
    
*   Thực hành: So sánh khoảng tin cậy 95% (OLS) và credible interval 95% (Bayesian) cho cùng hệ số hồi quy CPI.
    

**Ngày 441: Bayesian VAR - Động lực**

*   Mục tiêu: Hiểu tại sao VAR thường (Giai đoạn 3) gặp vấn đề "overparameterization" và Bayesian giúp gì.
    
*   Lý thuyết: Overfitting trong VAR khi số biến/lag lớn, Bayesian shrinkage giải quyết vấn đề này.
    
*   Thực hành: Minh họa overfitting bằng cách tăng số biến/lag trong VAR thường ở Giai đoạn 3, quan sát dự báo xấu đi.
    

**Ngày 442: BVAR - Minnesota Prior**

*   Mục tiêu: Hiểu prior đặc thù phổ biến nhất cho BVAR.
    
*   Lý thuyết: Minnesota prior (Litterman prior), giả định random walk là prior hợp lý cho biến kinh tế vĩ mô.
    
*   Thực hành: Viết lại cấu trúc Minnesota prior cho hệ 3 biến (GDP, CPI, lãi suất).
    

**Ngày 443: Cài đặt BVAR**

*   Mục tiêu: Ước lượng BVAR trên dữ liệu thực.
    
*   Lý thuyết: Ôn lại thư viện có sẵn (VD: `bvar` trong R, hoặc cài đặt thủ công bằng PyMC/NumPy trong Python).
    
*   Thực hành: Ước lượng BVAR với Minnesota prior cho hệ GDP-CPI-lãi suất Việt Nam.
    

**Ngày 444: So sánh BVAR với VAR thường**

*   Mục tiêu: Đánh giá lợi ích thực tế của Bayesian shrinkage.
    
*   Lý thuyết: Ôn lại kết quả VAR thường từ Giai đoạn 3.
    
*   Thực hành: So sánh RMSE dự báo out-of-sample giữa BVAR và VAR thường trên cùng hệ dữ liệu.
    

**Ngày 445: Bất định mô hình và Bayesian Model Averaging**

*   Mục tiêu: Hiểu cách xử lý bất định về việc chọn mô hình nào đúng.
    
*   Lý thuyết: Model uncertainty, Bayesian Model Averaging (BMA).
    
*   Thực hành: Minh họa BMA bằng cách kết hợp dự báo từ 3 đặc tả BVAR khác nhau theo trọng số posterior.
    

**Ngày 446: Phân tích độ nhạy với Prior**

*   Mục tiêu: Đánh giá mức độ ảnh hưởng của lựa chọn prior lên kết quả.
    
*   Lý thuyết: Prior sensitivity analysis.
    
*   Thực hành: Chạy lại BVAR với 3 mức độ "tightness" khác nhau của Minnesota prior, so sánh kết quả dự báo.
    

**Ngày 447: Phân phối dự báo hậu nghiệm**

*   Mục tiêu: Hiểu cách Bayesian tự nhiên cho ra toàn bộ phân phối dự báo, không chỉ điểm.
    
*   Lý thuyết: Posterior predictive distribution.
    
*   Thực hành: Trích xuất và vẽ toàn bộ phân phối dự báo hậu nghiệm cho CPI quý tới.
    

**Ngày 448: Dự báo mật độ từ mô hình Bayesian**

*   Mục tiêu: Kết nối với khái niệm density forecasting sẽ học sâu ở Giai đoạn 6.
    
*   Lý thuyết: Density forecast tự nhiên có được từ Bayesian framework (khác với point forecast của OLS/ARIMA).
    
*   Thực hành: So sánh density forecast (Bayesian) với prediction interval (tần suất, từ ARIMA Giai đoạn 3) cho cùng một chuỗi.
    

**Ngày 449: Case study - BVAR tại các NHTW**

*   Mục tiêu: Hiểu ứng dụng thực tế của BVAR.
    
*   Lý thuyết: Đọc tổng quan cách FED, ECB, các NHTW khác sử dụng BVAR trong dự báo chính thức.
    
*   Thực hành: Tóm tắt 1 case study cụ thể về mô hình BVAR được công bố bởi một NHTW.
    

**Ngày 450: Project BVAR - Thiết lập dữ liệu**

*   Mục tiêu: Chuẩn bị dữ liệu cho project BVAR hoàn chỉnh.
    
*   Lý thuyết: Ôn lại dữ liệu GDP-CPI-lãi suất đã dùng ở VAR (Giai đoạn 3).
    
*   Thực hành: Chuẩn bị lại bộ dữ liệu, đảm bảo tính nhất quán với project VAR trước đó để so sánh công bằng.
    

**Ngày 451: Project BVAR - Chọn Prior**

*   Mục tiêu: Xác định prior phù hợp cho hệ dữ liệu Việt Nam.
    
*   Lý thuyết: Ôn lại Minnesota prior và các tham số tightness.
    
*   Thực hành: Chọn và justify tham số prior cho hệ GDP-CPI-lãi suất.
    

**Ngày 452: Project BVAR - Ước lượng mô hình**

*   Mục tiêu: Fit mô hình BVAR cuối cùng.
    
*   Lý thuyết: Ôn lại quy trình ước lượng bằng MCMC.
    
*   Thực hành: Ước lượng BVAR, kiểm tra hội tụ MCMC (trace plots, R-hat).
    

**Ngày 453: Project BVAR - Dự báo và khoảng tin cậy**

*   Mục tiêu: Tạo dự báo hoàn chỉnh với credible interval.
    
*   Lý thuyết: Ôn lại posterior predictive distribution.
    
*   Thực hành: Dự báo 4 quý tới cho cả 3 biến, vẽ credible interval 68%/95%.
    

**Ngày 454: Project BVAR - So sánh với VAR thường**

*   Mục tiêu: Đánh giá lợi ích của phương pháp Bayesian trong thực tế.
    
*   Lý thuyết: Ôn lại kết quả VAR từ Giai đoạn 3 (Ngày 358).
    
*   Thực hành: Lập bảng so sánh RMSE, độ rộng khoảng dự báo giữa BVAR và VAR.
    

**Ngày 455: Project BVAR - Phân tích độ nhạy Prior**

*   Mục tiêu: Kiểm tra độ vững của kết quả.
    
*   Lý thuyết: Ôn lại sensitivity analysis (Ngày 446).
    
*   Thực hành: Chạy lại với 2-3 mức prior khác nhau, đánh giá độ ổn định của dự báo.
    

**Ngày 456: Project BVAR - Viết báo cáo**

*   Mục tiêu: Hoàn thiện báo cáo project.
    
*   Lý thuyết: Ôn lại cấu trúc báo cáo Bayesian forecasting.
    
*   Thực hành: Viết báo cáo hoàn chỉnh cho project BVAR.
    

**Ngày 457: Đọc chuyên sâu - Koop, Bayesian Econometrics**

*   Mục tiêu: Củng cố lý thuyết bằng tài liệu chuẩn.
    
*   Lý thuyết: Đọc các chương liên quan trong sách Koop.
    
*   Thực hành: Tóm tắt 3 điểm quan trọng nhất, đối chiếu với phần đã tự học.
    

**Ngày 458: Thảo luận Bayesian vs Frequentist**

*   Mục tiêu: Có quan điểm rõ ràng về khi nào dùng cách tiếp cận nào.
    
*   Lý thuyết: Ôn tập so sánh triết lý và thực dụng giữa hai trường phái.
    
*   Thực hành: Viết bài luận ngắn (1 trang) về việc lựa chọn Bayesian hay Frequentist cho một hệ thống dự báo production cụ thể.
    

**Ngày 459: Ôn tập Bayesian Forecasting**

*   Mục tiêu: Củng cố kiến thức trước khi tổng kết.
    
*   Lý thuyết: Ôn tập Ngày 431–458.
    
*   Thực hành: Làm bộ câu hỏi ôn tập tổng hợp về MCMC, prior, posterior, BVAR.
    

**Ngày 460: Tổng kết Bayesian Forecasting**

*   Mục tiêu: Củng cố toàn bộ Phần C.
    
*   Lý thuyết: Tổng hợp toàn bộ quy trình Bayesian forecasting.
    
*   Thực hành: Viết sơ đồ quy trình đầy đủ từ chọn prior đến dự báo hậu nghiệm cho một bài toán mới.
    

### PHẦN D: DSGE (Ngày 461–495)

**Ngày 461: Giới thiệu DSGE**

*   Mục tiêu: Hiểu vị trí của DSGE trong hệ sinh thái mô hình kinh tế.
    
*   Lý thuyết: Dynamic Stochastic General Equilibrium model, khác biệt căn bản so với VAR/factor model (có nền tảng vi mô).
    
*   Thực hành: Đọc tổng quan lý do các NHTW lớn (FED, ECB) phát triển và sử dụng DSGE.
    

**Ngày 462: Nền tảng vi mô - Representative Agent**

*   Mục tiêu: Hiểu giả định tác nhân đại diện trong DSGE.
    
*   Lý thuyết: Representative agent, microfoundations.
    
*   Thực hành: Thảo luận ưu/nhược điểm của giả định này so với mô hình có tác nhân dị biệt (heterogeneous agents).
    

**Ngày 463: Tối ưu hóa hữu dụng trong DSGE**

*   Mục tiêu: Thiết lập bài toán tối ưu hóa của hộ gia đình.
    
*   Lý thuyết: Ôn lại utility maximization (Giai đoạn 1) mở rộng sang nhiều thời kỳ.
    
*   Thực hành: Viết hàm mục tiêu utility liên thời gian cho hộ gia đình đại diện.
    

**Ngày 464: Ràng buộc ngân sách liên thời gian**

*   Mục tiêu: Thiết lập ràng buộc cho bài toán tối ưu.
    
*   Lý thuyết: Intertemporal budget constraint.
    
*   Thực hành: Viết ràng buộc ngân sách đầy đủ, thiết lập Lagrangian cho bài toán hộ gia đình.
    

**Ngày 465: Mô hình Real Business Cycle - Giới thiệu**

*   Mục tiêu: Hiểu mô hình DSGE cổ điển nhất.
    
*   Lý thuyết: RBC model, vai trò của technology shock trong việc giải thích chu kỳ kinh tế.
    
*   Thực hành: Vẽ sơ đồ cấu trúc mô hình RBC (hộ gia đình, doanh nghiệp, thị trường).
    

**Ngày 466: RBC - Hàm sản xuất và Shock công nghệ**

*   Mục tiêu: Thiết lập phía cung của mô hình.
    
*   Lý thuyết: Cobb-Douglas production function, technology shock A\_t (AR(1) process).
    
*   Thực hành: Viết hàm sản xuất và quá trình shock công nghệ.
    

**Ngày 467: RBC - Phương trình Euler**

*   Mục tiêu: Suy ra điều kiện tối ưu liên thời gian.
    
*   Lý thuyết: Euler equation, mô tả sự đánh đổi tiêu dùng hiện tại/tương lai.
    
*   Thực hành: Suy ra phương trình Euler từ bài toán tối ưu hóa hộ gia đình bằng tay.
    

**Ngày 468: RBC - Cân bằng thị trường lao động**

*   Mục tiêu: Thiết lập điều kiện cân bằng lao động.
    
*   Lý thuyết: Labor market equilibrium condition, đánh đổi giữa tiêu dùng và nghỉ ngơi (leisure).
    
*   Thực hành: Suy ra điều kiện cận biên cho lựa chọn lao động.
    

**Ngày 469: RBC - Trạng thái dừng (Steady State)**

*   Mục tiêu: Tìm điểm cân bằng dài hạn của mô hình.
    
*   Lý thuyết: Steady state, các biến không đổi theo thời gian khi không có shock.
    
*   Thực hành: Giải hệ phương trình steady state cho mô hình RBC cơ bản.
    

**Ngày 470: Log-linearization - Giới thiệu**

*   Mục tiêu: Hiểu vì sao cần tuyến tính hóa mô hình phi tuyến.
    
*   Lý thuyết: Log-linearization, xấp xỉ Taylor bậc 1 quanh steady state.
    
*   Thực hành: Log-linearize một phương trình đơn giản (hàm sản xuất Cobb-Douglas) làm ví dụ.
    

**Ngày 471: RBC - Giải mô hình bằng tuyến tính hóa**

*   Mục tiêu: Hoàn thiện việc tuyến tính hóa toàn bộ hệ phương trình RBC.
    
*   Lý thuyết: Ôn lại quy trình log-linearize từng phương trình của mô hình.
    
*   Thực hành: Log-linearize toàn bộ hệ RBC (Euler equation, production function, labor condition).
    

**Ngày 472: RBC - Mô phỏng phản ứng với Shock công nghệ**

*   Mục tiêu: Quan sát động lực học của mô hình sau cú sốc.
    
*   Lý thuyết: Impulse response trong DSGE, tương tự IRF đã học ở VAR nhưng có nền tảng cấu trúc.
    
*   Thực hành: Giải hệ phương trình tuyến tính hóa bằng phương pháp số (VD: `linearsolve` trong Python), vẽ IRF cho shock công nghệ.
    

**Ngày 473: Hạn chế của RBC**

*   Mục tiêu: Hiểu tại sao RBC không đủ để giải thích vai trò chính sách tiền tệ.
    
*   Lý thuyết: RBC không có giá cứng nhắc → tiền tệ trung lập (money neutrality), không khớp với thực tế.
    
*   Thực hành: Thảo luận và liệt kê các hiện tượng thực tế RBC không giải thích được (VD: tác động của chính sách tiền tệ lên sản lượng).
    

**Ngày 474: New Keynesian Model - Giới thiệu**

*   Mục tiêu: Hiểu động lực phát triển NK model để khắc phục hạn chế của RBC.
    
*   Lý thuyết: New Keynesian model, thêm nominal rigidities (giá cứng nhắc) vào khung DSGE.
    
*   Thực hành: So sánh cấu trúc NK model với RBC model qua sơ đồ.
    

**Ngày 475: NK - Cạnh tranh độc quyền và giá cứng nhắc**

*   Mục tiêu: Hiểu nền tảng vi mô cho phép giá cứng nhắc tồn tại.
    
*   Lý thuyết: Monopolistic competition, nominal price rigidity.
    
*   Thực hành: Giải thích vì sao cần cạnh tranh độc quyền (không phải cạnh tranh hoàn hảo) để giá cứng nhắc có ý nghĩa.
    

**Ngày 476: NK - Định giá kiểu Calvo**

*   Mục tiêu: Hiểu cơ chế phổ biến nhất mô tả giá cứng nhắc.
    
*   Lý thuyết: Calvo pricing, xác suất cố định doanh nghiệp được điều chỉnh giá mỗi kỳ.
    
*   Thực hành: Viết lại giả định Calvo pricing và ý nghĩa tham số xác suất điều chỉnh giá.
    

**Ngày 477: NK - Đường IS động (Dynamic IS)**

*   Mục tiêu: Suy ra phương trình đầu tiên trong hệ 3 phương trình NK.
    
*   Lý thuyết: Dynamic IS curve, suy ra từ Euler equation với lãi suất thực.
    
*   Thực hành: Viết lại phương trình dynamic IS và diễn giải từng thành phần.
    

**Ngày 478: NK - Đường Phillips mới**

*   Mục tiêu: Suy ra phương trình thứ hai - liên kết lạm phát và output gap.
    
*   Lý thuyết: New Keynesian Phillips Curve (NKPC), vai trò kỳ vọng lạm phát tương lai.
    
*   Thực hành: Viết lại NKPC và so sánh với đường Phillips truyền thống đã học ở Giai đoạn 1.
    

**Ngày 479: NK - Quy tắc Taylor**

*   Mục tiêu: Suy ra phương trình thứ ba - quy tắc phản ứng chính sách tiền tệ.
    
*   Lý thuyết: Taylor rule, NHTW điều chỉnh lãi suất theo lạm phát và output gap.
    
*   Thực hành: Viết lại Taylor rule, tính lãi suất gợi ý theo công thức Taylor cho dữ liệu Việt Nam gần nhất.
    

**Ngày 480: NK - Cân bằng tổng thể 3 phương trình**

*   Mục tiêu: Hoàn thiện hệ mô hình NK cơ bản.
    
*   Lý thuyết: Hệ 3 phương trình: dynamic IS, NKPC, Taylor rule.
    
*   Thực hành: Viết lại toàn bộ hệ 3 phương trình dưới dạng ma trận.
    

**Ngày 481: Giải mô hình NK bằng phương pháp số**

*   Mục tiêu: Tìm nghiệm cho hệ phương trình động NK.
    
*   Lý thuyết: Phương pháp giải rational expectations model (Blanchard-Kahn conditions - giới thiệu sơ lược).
    
*   Thực hành: Giải hệ 3 phương trình NK bằng công cụ số trong Python.
    

**Ngày 482: Mô phỏng phản ứng NK với Shock chính sách tiền tệ**

*   Mục tiêu: Quan sát động lực học mô hình NK sau cú sốc chính sách.
    
*   Lý thuyết: Ôn lại IRF áp dụng cho NK model.
    
*   Thực hành: Vẽ IRF của output gap và lạm phát sau một cú sốc tăng lãi suất bất ngờ.
    

**Ngày 483: So sánh RBC và NK**

*   Mục tiêu: Tổng hợp hiểu biết về hai mô hình DSGE nền tảng.
    
*   Lý thuyết: Ôn lại khác biệt cốt lõi: vai trò tiền tệ, nguồn gốc biến động kinh tế.
    
*   Thực hành: Lập bảng so sánh giả định, hệ quả chính sách của RBC vs NK.
    

**Ngày 484: Ước lượng DSGE bằng phương pháp Bayesian**

*   Mục tiêu: Kết nối Phần C (Bayesian) với Phần D (DSGE) - cách ước lượng DSGE trong thực tế.
    
*   Lý thuyết: Bayesian estimation of DSGE models, phổ biến nhất trong thực hành hiện đại (VD: Smets-Wouters model).
    
*   Thực hành: Đọc tổng quan quy trình ước lượng Bayesian DSGE (prior cho tham số cấu trúc → MCMC → posterior).
    

**Ngày 485: Calibration vs Estimation**

*   Mục tiêu: Hiểu hai cách tiếp cận để xác định tham số DSGE.
    
*   Lý thuyết: Calibration (gán giá trị từ nghiên cứu khác/steady state ratios) vs formal estimation.
    
*   Thực hành: Thử calibrate các tham số cơ bản (β, α, δ) cho mô hình RBC dùng dữ liệu kinh tế Việt Nam.
    

**Ngày 486: Đọc chuyên sâu - Galí, New Keynesian**

*   Mục tiêu: Củng cố lý thuyết bằng tài liệu chuẩn.
    
*   Lý thuyết: Đọc các chương liên quan trong sách Galí.
    
*   Thực hành: Tóm tắt 3 điểm quan trọng nhất, đối chiếu với phần đã tự học.
    

**Ngày 487: Project Mini DSGE - Thiết lập mô hình đơn giản**

*   Mục tiêu: Bắt đầu xây dựng mô hình DSGE hoàn chỉnh của riêng mình.
    
*   Lý thuyết: Ôn lại toàn bộ cấu trúc NK model 3 phương trình.
    
*   Thực hành: Viết lại đầy đủ hệ phương trình cho mô hình mini DSGE sẽ xây dựng.
    

**Ngày 488: Project Mini DSGE - Log-linearization**

*   Mục tiêu: Tuyến tính hóa mô hình đã thiết lập.
    
*   Lý thuyết: Ôn lại quy trình log-linearization.
    
*   Thực hành: Log-linearize toàn bộ hệ phương trình của mini DSGE.
    

**Ngày 489: Project Mini DSGE - Giải mô hình bằng Python**

*   Mục tiêu: Tìm nghiệm số cho mô hình.
    
*   Lý thuyết: Ôn lại phương pháp giải rational expectations.
    
*   Thực hành: Cài đặt và giải hệ phương trình bằng Python (thủ công hoặc dùng thư viện hỗ trợ).
    

**Ngày 490: Project Mini DSGE - Mô phỏng Shock công nghệ**

*   Mục tiêu: Kiểm tra hành vi mô hình với cú sốc cung.
    
*   Lý thuyết: Ôn lại IRF cho technology shock.
    
*   Thực hành: Vẽ IRF của các biến chính sau shock công nghệ.
    

**Ngày 491: Project Mini DSGE - Mô phỏng Shock chính sách tiền tệ**

*   Mục tiêu: Kiểm tra hành vi mô hình với cú sốc cầu/chính sách.
    
*   Lý thuyết: Ôn lại IRF cho monetary policy shock.
    
*   Thực hành: Vẽ IRF của các biến chính sau shock lãi suất.
    

**Ngày 492: Project Mini DSGE - So sánh với dữ liệu Việt Nam**

*   Mục tiêu: Đánh giá tính hợp lý của mô hình so với thực tế.
    
*   Lý thuyết: So sánh định tính hình dạng IRF mô phỏng với phản ứng thực tế quan sát được (VAR đã học ở Giai đoạn 3).
    
*   Thực hành: So sánh IRF từ mini DSGE với IRF từ VAR (Ngày 357) cho cùng loại shock.
    

**Ngày 493: Project Mini DSGE - Viết báo cáo**

*   Mục tiêu: Hoàn thiện báo cáo project.
    
*   Lý thuyết: Ôn lại cấu trúc báo cáo cho mô hình cấu trúc (structural model).
    
*   Thực hành: Viết báo cáo hoàn chỉnh cho project Mini DSGE.
    

**Ngày 494: Vai trò DSGE trong Forecasting thực tế**

*   Mục tiêu: Có cái nhìn thực dụng về việc dùng DSGE trong dự báo.
    
*   Lý thuyết: Thảo luận: DSGE thường không phải công cụ dự báo chính xác nhất, nhưng quan trọng cho phân tích kịch bản chính sách (scenario analysis - sẽ gặp lại ở Capstone 3).
    
*   Thực hành: Viết bài luận ngắn về vai trò bổ sung của DSGE bên cạnh các mô hình thống kê (ARIMA, VAR, DFM) đã học.
    

**Ngày 495: Tổng kết Giai đoạn 4 - Macroeconomic Forecasting**

*   Mục tiêu: Củng cố toàn diện trước khi bước vào Machine Learning Forecasting.
    
*   Lý thuyết: Ôn tập tổng hợp cả 4 phần: Dynamic Factor Models, State Space Models, Bayesian Forecasting, DSGE.
    
*   Thực hành: Viết báo cáo tổng kết cá nhân: so sánh 4 nhóm phương pháp đã học ở giai đoạn này về mục đích sử dụng (nowcasting, dự báo, phân tích chính sách), độ phức tạp, và yêu cầu dữ liệu.
    

## Giai đoạn 5 - Machine Learning Forecasting (Ngày 496–615, 120 ngày)

### PHẦN A: TREE MODELS (Ngày 496–520)

**Ngày 496: Giới thiệu Tree-based Models cho Forecasting**

*   Mục tiêu: Hiểu vì sao mô hình cây trở nên phổ biến trong forecasting hiện đại.
    
*   Lý thuyết: Ưu điểm của tree-based models: bắt được non-linearity, ít cần tiền xử lý, xử lý tốt tương tác giữa biến.
    
*   Thực hành: So sánh khái niệm giữa tree-based models và các mô hình tuyến tính đã học (OLS, ARIMA, VAR).
    

**Ngày 497: Decision Tree - Lý thuyết cơ bản**

*   Mục tiêu: Hiểu cơ chế hoạt động của cây quyết định.
    
*   Lý thuyết: Decision tree, recursive binary splitting.
    
*   Thực hành: Vẽ tay một cây quyết định đơn giản cho bài toán dự báo CPI tăng/giảm dựa trên 2 biến.
    

**Ngày 498: Tiêu chí phân chia (Splitting Criteria)**

*   Mục tiêu: Hiểu cách cây chọn điểm chia tối ưu.
    
*   Lý thuyết: MSE reduction cho regression tree, information gain (tham khảo cho classification).
    
*   Thực hành: Tính tay MSE reduction cho một điểm chia cụ thể trên dữ liệu mẫu.
    

**Ngày 499: Overfitting và Pruning**

*   Mục tiêu: Hiểu vấn đề overfitting của cây đơn lẻ và cách khắc phục.
    
*   Lý thuyết: Overfitting trong decision tree, pre-pruning (max\_depth) vs post-pruning.
    
*   Thực hành: Fit decision tree với các độ sâu khác nhau, quan sát train/test error.
    

**Ngày 500: Cài đặt Decision Tree từ scratch**

*   Mục tiêu: Hiểu sâu cơ chế bằng cách tự lập trình.
    
*   Lý thuyết: Ôn lại thuật toán recursive splitting.
    
*   Thực hành: Viết class `DecisionTreeRegressor` đơn giản bằng Python, test trên dữ liệu giả lập.
    

**Ngày 501: Random Forest - Lý thuyết (Bagging)**

*   Mục tiêu: Hiểu cách kết hợp nhiều cây để giảm variance.
    
*   Lý thuyết: Bootstrap aggregating (bagging), random feature selection tại mỗi split.
    
*   Thực hành: Mô phỏng bagging đơn giản: fit nhiều decision tree trên các bootstrap sample, lấy trung bình dự báo.
    

**Ngày 502: Random Forest - Feature Importance**

*   Mục tiêu: Diễn giải được mức độ quan trọng của từng biến.
    
*   Lý thuyết: Feature importance dựa trên mean decrease in impurity.
    
*   Thực hành: Tính và vẽ feature importance cho một mô hình Random Forest dự báo CPI thử nghiệm.
    

**Ngày 503: Random Forest - Điều chỉnh Hyperparameter**

*   Mục tiêu: Biết tinh chỉnh các tham số quan trọng của Random Forest.
    
*   Lý thuyết: n\_estimators, max\_depth, min\_samples\_split, max\_features.
    
*   Thực hành: Chạy grid search cho Random Forest trên dữ liệu CPI.
    

**Ngày 504: Áp dụng Random Forest cho Dự báo CPI**

*   Mục tiêu: Fit mô hình Random Forest hoàn chỉnh trên dữ liệu kinh tế thực.
    
*   Lý thuyết: Ôn lại yêu cầu chuyển đổi bài toán time series thành supervised learning (dùng lag features).
    
*   Thực hành: Fit Random Forest dự báo CPI với các lag features cơ bản, đánh giá RMSE.
    

**Ngày 505: Gradient Boosting - Lý thuyết cơ bản**

*   Mục tiêu: Hiểu ý tưởng boosting khác biệt với bagging.
    
*   Lý thuyết: Gradient boosting, học tuần tự để sửa lỗi của các cây trước.
    
*   Thực hành: Minh họa từng bước boosting: fit cây đầu tiên, tính residual, fit cây tiếp theo trên residual.
    

**Ngày 506: Gradient Boosting - Thuật toán chi tiết**

*   Mục tiêu: Hiểu công thức toán học đầy đủ của gradient boosting.
    
*   Lý thuyết: Gradient descent trong không gian hàm số, learning rate, loss function.
    
*   Thực hành: Cài đặt gradient boosting đơn giản từ scratch cho bài toán regression 1 biến.
    

**Ngày 507: XGBoost - Giới thiệu và Ưu điểm**

*   Mục tiêu: Hiểu vì sao XGBoost trở thành công cụ phổ biến nhất.
    
*   Lý thuyết: XGBoost, cải tiến so với gradient boosting truyền thống (regularization, xử lý song song, xử lý missing values).
    
*   Thực hành: Cài đặt XGBoost cơ bản cho dữ liệu CPI, so sánh tốc độ với Random Forest.
    

**Ngày 508: XGBoost - Hyperparameters Quan Trọng**

*   Mục tiêu: Nắm vững các tham số cần tinh chỉnh.
    
*   Lý thuyết: learning\_rate, max\_depth, n\_estimators, subsample, colsample\_bytree.
    
*   Thực hành: Chạy random search cho các hyperparameter chính trên dữ liệu CPI.
    

**Ngày 509: XGBoost - Regularization**

*   Mục tiêu: Hiểu cơ chế chống overfitting của XGBoost.
    
*   Lý thuyết: L1/L2 regularization trong XGBoost (alpha, lambda), early stopping.
    
*   Thực hành: So sánh mô hình có/không có regularization, quan sát tác động đến overfitting.
    

**Ngày 510: Áp dụng XGBoost cho Dự báo CPI**

*   Mục tiêu: Fit mô hình XGBoost hoàn chỉnh, đã tune.
    
*   Lý thuyết: Ôn lại toàn bộ quy trình từ feature đến tuning.
    
*   Thực hành: Fit XGBoost cuối cùng cho CPI, đánh giá RMSE out-of-sample.
    

**Ngày 511: LightGBM - Giới thiệu**

*   Mục tiêu: Hiểu điểm khác biệt của LightGBM so với XGBoost.
    
*   Lý thuyết: LightGBM, tốc độ và hiệu quả bộ nhớ vượt trội cho dữ liệu lớn.
    
*   Thực hành: Cài đặt LightGBM cơ bản cho dữ liệu CPI, so sánh tốc độ training với XGBoost.
    

**Ngày 512: LightGBM - Leaf-wise vs Level-wise Growth**

*   Mục tiêu: Hiểu chiến lược tăng trưởng cây khác biệt.
    
*   Lý thuyết: Leaf-wise growth (LightGBM) vs level-wise growth (XGBoost truyền thống), trade-off tốc độ/overfitting.
    
*   Thực hành: Minh họa sự khác biệt bằng sơ đồ cây được tạo ra từ hai chiến lược.
    

**Ngày 513: Áp dụng LightGBM cho Dự báo CPI**

*   Mục tiêu: Fit mô hình LightGBM hoàn chỉnh.
    
*   Lý thuyết: Ôn lại hyperparameters đặc trưng của LightGBM (num\_leaves).
    
*   Thực hành: Fit và tune LightGBM cho CPI.
    

**Ngày 514: So sánh XGBoost và LightGBM**

*   Mục tiêu: Có cơ sở lựa chọn giữa hai công cụ trong thực tế.
    
*   Lý thuyết: Ôn tập so sánh tốc độ, độ chính xác, dễ sử dụng.
    
*   Thực hành: Lập bảng so sánh RMSE, thời gian training giữa XGBoost và LightGBM trên cùng dữ liệu CPI.
    

**Ngày 515: SHAP Values - Diễn giải mô hình Tree-based**

*   Mục tiêu: Biết công cụ diễn giải mô hình hiện đại nhất cho tree-based models.
    
*   Lý thuyết: SHAP (SHapley Additive exPlanations), dựa trên lý thuyết game Shapley value.
    
*   Thực hành: Đọc và diễn giải một SHAP summary plot mẫu.
    

**Ngày 516: Áp dụng SHAP cho mô hình CPI**

*   Mục tiêu: Diễn giải mô hình XGBoost/LightGBM đã xây dựng.
    
*   Lý thuyết: Ôn lại cách đọc SHAP force plot cho một dự báo cụ thể.
    
*   Thực hành: Tính SHAP values cho mô hình XGBoost dự báo CPI, vẽ summary plot và force plot cho một tháng cụ thể.
    

**Ngày 517: Project Forecast CPI - Chuẩn bị dữ liệu**

*   Mục tiêu: Chuẩn bị bộ dữ liệu đầy đủ cho project so sánh 3 mô hình tree.
    
*   Lý thuyết: Ôn lại lag features cơ bản (sẽ đi sâu ở Phần B).
    
*   Thực hành: Tạo bộ dữ liệu với lag features cho CPI, chia train/test theo thời gian.
    

**Ngày 518: Project Forecast CPI - Fit và Tune 3 mô hình Tree**

*   Mục tiêu: Xây dựng 3 mô hình hoàn chỉnh để so sánh.
    
*   Lý thuyết: Ôn lại quy trình tuning cho Random Forest, XGBoost, LightGBM.
    
*   Thực hành: Fit và tune cả 3 mô hình bằng cùng một bộ dữ liệu và cùng quy trình CV.
    

**Ngày 519: Project Forecast CPI - Đánh giá và So sánh**

*   Mục tiêu: Đưa ra kết luận về mô hình tốt nhất.
    
*   Lý thuyết: Ôn lại các metric đánh giá (RMSE, MAE, MAPE).
    
*   Thực hành: Lập bảng so sánh toàn diện, vẽ biểu đồ actual vs predicted cho cả 3 mô hình.
    

**Ngày 520: Tổng kết Tree Models**

*   Mục tiêu: Củng cố toàn bộ Phần A.
    
*   Lý thuyết: Ôn tập Ngày 496–519.
    
*   Thực hành: Viết báo cáo tổng kết so sánh Random Forest, XGBoost, LightGBM cho bài toán dự báo CPI.
    

### PHẦN B: FEATURE ENGINEERING (Ngày 521–535)

**Ngày 521: Giới thiệu Feature Engineering cho Time Series**

*   Mục tiêu: Hiểu vì sao ML models cần feature engineering thủ công (khác với ARIMA tự động dùng lag).
    
*   Lý thuyết: Chuyển bài toán time series thành supervised learning problem.
    
*   Thực hành: Vẽ sơ đồ minh họa chuyển đổi từ chuỗi thời gian sang bảng feature-target.
    

**Ngày 522: Lag Features**

*   Mục tiêu: Tạo được các đặc trưng trễ cơ bản.
    
*   Lý thuyết: Lag features, chọn số lag phù hợp (liên hệ lại ACF/PACF từ Giai đoạn 3).
    
*   Thực hành: Tạo lag 1-12 tháng cho CPI, kiểm tra tương quan với target.
    

**Ngày 523: Rolling Window Features**

*   Mục tiêu: Tạo đặc trưng thống kê trên cửa sổ trượt.
    
*   Lý thuyết: Rolling mean, rolling std, rolling min/max.
    
*   Thực hành: Tạo rolling mean 3/6/12 tháng cho CPI và các biến liên quan.
    

**Ngày 524: Expanding Window Features**

*   Mục tiêu: Tạo đặc trưng dựa trên toàn bộ lịch sử tính đến thời điểm hiện tại.
    
*   Lý thuyết: Expanding window statistics, khác biệt với rolling window.
    
*   Thực hành: Tạo expanding mean/std cho một biến kinh tế, so sánh với rolling window.
    

**Ngày 525: Diff Features và Pct Change Features**

*   Mục tiêu: Tạo đặc trưng biến động.
    
*   Lý thuyết: First difference, percentage change, YoY/MoM growth rate.
    
*   Thực hành: Tạo các đặc trưng biến động cho toàn bộ chuỗi kinh tế đã có.
    

**Ngày 526: Đặc trưng Ngày/Tháng**

*   Mục tiêu: Trích xuất thông tin thời gian hữu ích.
    
*   Lý thuyết: Month, quarter, is\_tet (đặc thù Việt Nam), day\_of\_year.
    
*   Thực hành: Tạo các đặc trưng lịch cho dữ liệu CPI, đặc biệt đánh dấu các tháng Tết.
    

**Ngày 527: Fourier Features cho Tính Mùa Vụ**

*   Mục tiêu: Biểu diễn tính mùa vụ dưới dạng liên tục cho ML models.
    
*   Lý thuyết: Fourier terms (sin/cos) để mã hóa chu kỳ mùa vụ, thay thế cho dummy variables mùa vụ.
    
*   Thực hành: Tạo Fourier features bậc 1-3 cho chu kỳ 12 tháng, trực quan hóa.
    

**Ngày 528: Target Encoding cho Biến Phân Loại**

*   Mục tiêu: Biết cách xử lý biến phân loại nếu có (VD: ngành kinh tế, khu vực).
    
*   Lý thuyết: Target encoding, one-hot encoding, rủi ro leakage khi target encoding sai cách.
    
*   Thực hành: Áp dụng target encoding đúng cách (dùng CV) cho một biến phân loại giả định.
    

**Ngày 529: Đặc trưng Chéo giữa Nhiều Chuỗi**

*   Mục tiêu: Tạo đặc trưng kết hợp thông tin từ nhiều chuỗi kinh tế.
    
*   Lý thuyết: Cross-series features, spread (chênh lệch giữa hai lãi suất), ratio.
    
*   Thực hành: Tạo đặc trưng chênh lệch lãi suất trong nước/quốc tế, tỷ giá thực.
    

**Ngày 530: Chuẩn hóa Đặc trưng cho ML Models**

*   Mục tiêu: Biết khi nào và cách chuẩn hóa dữ liệu phù hợp.
    
*   Lý thuyết: StandardScaler, MinMaxScaler - tree models không cần nhưng neural network (Phần D) cần.
    
*   Thực hành: So sánh hiệu năng XGBoost với/không chuẩn hóa (nên không đổi), chuẩn bị pipeline scaling cho phần sau.
    

**Ngày 531: Lựa chọn Đặc trưng - Tương quan và Mutual Information**

*   Mục tiêu: Lọc bớt đặc trưng không hữu ích.
    
*   Lý thuyết: Correlation filter, mutual information (bắt được quan hệ phi tuyến).
    
*   Thực hành: Tính mutual information giữa từng feature và target CPI, xếp hạng.
    

**Ngày 532: Lựa chọn Đặc trưng - Recursive Feature Elimination**

*   Mục tiêu: Áp dụng phương pháp chọn đặc trưng dựa trên mô hình.
    
*   Lý thuyết: Recursive Feature Elimination (RFE), sử dụng feature importance để loại dần.
    
*   Thực hành: Chạy RFE với XGBoost làm base estimator trên bộ feature CPI đầy đủ.
    

**Ngày 533: Xử lý Data Leakage trong Feature Engineering**

*   Mục tiêu: Nhận diện và tránh lỗi rò rỉ dữ liệu tương lai - lỗi phổ biến nhất trong ML forecasting.
    
*   Lý thuyết: Data leakage, ví dụ điển hình (dùng rolling statistics tính cả điểm hiện tại/tương lai).
    
*   Thực hành: Rà soát lại toàn bộ feature đã tạo, sửa các trường hợp có nguy cơ leakage (VD: đảm bảo rolling window chỉ dùng dữ liệu quá khứ - shift trước khi rolling).
    

**Ngày 534: Project - Xây dựng bộ Feature đầy đủ cho CPI**

*   Mục tiêu: Tổng hợp toàn bộ kỹ thuật đã học thành một pipeline hoàn chỉnh.
    
*   Lý thuyết: Ôn lại toàn bộ các loại feature đã học.
    
*   Thực hành: Viết pipeline Python tạo đầy đủ lag, rolling, diff, calendar, Fourier features cho CPI, kiểm tra không có leakage.
    

**Ngày 535: Tổng kết Feature Engineering**

*   Mục tiêu: Củng cố toàn bộ Phần B.
    
*   Lý thuyết: Ôn tập Ngày 521–534.
    
*   Thực hành: Đánh giá lại hiệu năng mô hình XGBoost (Phần A) với bộ feature đầy đủ mới, so sánh với bộ feature cơ bản ban đầu.
    

### PHẦN C: FORECAST VALIDATION (Ngày 536–545)

**Ngày 536: Vì sao không dùng Random Split cho Time Series**

*   Mục tiêu: Hiểu sâu lý do phải đánh giá đặc thù cho time series.
    
*   Lý thuyết: Ôn lại data leakage khi random shuffle (dùng tương lai để dự đoán quá khứ).
    
*   Thực hành: Minh họa bằng thực nghiệm: so sánh RMSE khi dùng random split (giả tạo tốt) vs time-based split (thực tế hơn).
    

**Ngày 537: Walk-forward Validation - Ôn lại và Mở rộng**

*   Mục tiêu: Củng cố và mở rộng khái niệm đã học ở Giai đoạn 3 cho ML models.
    
*   Lý thuyết: Ôn lại walk-forward validation, áp dụng cho ML thay vì chỉ ARIMA.
    
*   Thực hành: Cài đặt walk-forward validation cho mô hình XGBoost.
    

**Ngày 538: Time Series Cross-Validation**

*   Mục tiêu: Sử dụng công cụ chuẩn có sẵn trong sklearn.
    
*   Lý thuyết: `sklearn.model_selection.TimeSeriesSplit`.
    
*   Thực hành: Áp dụng TimeSeriesSplit cho việc đánh giá XGBoost trên dữ liệu CPI.
    

**Ngày 539: Expanding Window vs Sliding Window CV**

*   Mục tiêu: Hiểu và lựa chọn giữa hai chiến lược CV.
    
*   Lý thuyết: Ôn lại từ Giai đoạn 3 (Ngày 324), áp dụng sâu hơn cho ML.
    
*   Thực hành: So sánh kết quả CV giữa hai chiến lược cho mô hình XGBoost.
    

**Ngày 540: Nested Cross-Validation cho Hyperparameter Tuning**

*   Mục tiêu: Tránh overfitting khi tune hyperparameter trên time series.
    
*   Lý thuyết: Nested CV, vòng ngoài đánh giá, vòng trong tuning.
    
*   Thực hành: Cài đặt nested CV cho việc tune và đánh giá XGBoost đồng thời.
    

**Ngày 541: Đánh giá Metric - MAE, RMSE, MAPE, SMAPE**

*   Mục tiêu: Hiểu ưu nhược điểm của từng metric.
    
*   Lý thuyết: MAE (robust với outlier), RMSE (phạt nặng lỗi lớn), MAPE (theo %, có vấn đề khi giá trị gần 0), SMAPE (symmetric MAPE).
    
*   Thực hành: Tính cả 4 metric cho cùng một dự báo, thảo luận khi nào metric nào phù hợp cho dữ liệu kinh tế.
    

**Ngày 542: Đánh giá so với Baseline**

*   Mục tiêu: Biết cách đặt kết quả mô hình vào ngữ cảnh so sánh hợp lý.
    
*   Lý thuyết: Naive forecast (random walk), seasonal naive, làm baseline tối thiểu.
    
*   Thực hành: Tính RMSE của naive forecast cho CPI, so sánh với XGBoost - nếu ML không thắng baseline thì cần xem lại.
    

**Ngày 543: Kiểm định Diebold-Mariano**

*   Mục tiêu: Biết cách kiểm định ý nghĩa thống kê khi so sánh 2 mô hình dự báo.
    
*   Lý thuyết: Diebold-Mariano test, kiểm tra liệu sự khác biệt về độ chính xác có ý nghĩa thống kê không.
    
*   Thực hành: Chạy Diebold-Mariano test so sánh ARIMA (Giai đoạn 3) và XGBoost (Phần A) cho dự báo CPI.
    

**Ngày 544: Project - Xây Pipeline Validation Chuẩn**

*   Mục tiêu: Có một pipeline đánh giá tái sử dụng được cho mọi mô hình ML forecasting sau này.
    
*   Lý thuyết: Ôn lại toàn bộ các thành phần: walk-forward split, multiple metrics, baseline comparison, DM test.
    
*   Thực hành: Viết hàm/class Python `ForecastEvaluator` tổng hợp toàn bộ quy trình đánh giá.
    

**Ngày 545: Tổng kết Forecast Validation**

*   Mục tiêu: Củng cố toàn bộ Phần C.
    
*   Lý thuyết: Ôn tập Ngày 536–544.
    
*   Thực hành: Áp dụng pipeline `ForecastEvaluator` đã xây để đánh giá lại toàn bộ 3 mô hình tree từ Phần A một cách chuẩn hóa.
    

### PHẦN D: DEEP LEARNING (Ngày 546–585)

**Ngày 546: Giới thiệu Deep Learning cho Time Series**

*   Mục tiêu: Hiểu vị trí của deep learning trong bức tranh forecasting.
    
*   Lý thuyết: Khi nào deep learning vượt trội hơn tree-based/statistical models (dữ liệu lớn, quan hệ phức tạp, chuỗi dài).
    
*   Thực hành: Thảo luận: dữ liệu kinh tế vĩ mô Việt Nam (thường ngắn, theo tháng/quý) có đủ lớn cho deep learning không?
    

**Ngày 547: Ôn lại Neural Network cơ bản**

*   Mục tiêu: Củng cố nền tảng trước khi vào kiến trúc chuyên biệt.
    
*   Lý thuyết: Feedforward neural network, activation functions.
    
*   Thực hành: Cài đặt một feedforward network đơn giản bằng NumPy để dự báo CPI (không dùng thời gian tuần tự).
    

**Ngày 548: Ôn lại Backpropagation**

*   Mục tiêu: Củng cố cơ chế học của neural network.
    
*   Lý thuyết: Backpropagation, chain rule, gradient descent.
    
*   Thực hành: Tính tay backpropagation cho một mạng 2 lớp đơn giản.
    

**Ngày 549: Vì sao Feedforward Network không phù hợp cho Sequence**

*   Mục tiêu: Hiểu hạn chế dẫn đến sự cần thiết của kiến trúc mới.
    
*   Lý thuyết: Feedforward network không có "bộ nhớ", không tận dụng được thứ tự thời gian một cách tự nhiên.
    
*   Thực hành: Thảo luận ví dụ cụ thể: vì sao thứ tự các tháng trong chuỗi CPI quan trọng mà feedforward network bỏ qua.
    

**Ngày 550: RNN - Kiến trúc cơ bản**

*   Mục tiêu: Hiểu ý tưởng cốt lõi của Recurrent Neural Network.
    
*   Lý thuyết: RNN, hidden state truyền qua các bước thời gian.
    
*   Thực hành: Vẽ sơ đồ RNN unrolled qua 5 bước thời gian.
    

**Ngày 551: RNN - Forward Pass qua Thời gian**

*   Mục tiêu: Hiểu công thức tính toán qua từng bước.
    
*   Lý thuyết: h\_t = tanh(W\_h h\_{t-1} + W\_x x\_t + b).
    
*   Thực hành: Tính tay forward pass cho RNN 3 bước thời gian với tham số cụ thể.
    

**Ngày 552: RNN - Backpropagation Through Time**

*   Mục tiêu: Hiểu cách RNN học qua nhiều bước thời gian.
    
*   Lý thuyết: BPTT, gradient được tính ngược qua toàn bộ chuỗi.
    
*   Thực hành: Vẽ sơ đồ minh họa luồng gradient ngược qua các bước thời gian.
    

**Ngày 553: Vấn đề Vanishing/Exploding Gradient**

*   Mục tiêu: Hiểu hạn chế lớn nhất của RNN thuần.
    
*   Lý thuyết: Vanishing gradient, exploding gradient, nguyên nhân toán học (lũy thừa của ma trận trọng số).
    
*   Thực hành: Mô phỏng minh họa gradient biến mất khi chuỗi dài dần trong RNN đơn giản.
    

**Ngày 554: Cài đặt RNN đơn giản bằng NumPy**

*   Mục tiêu: Hiểu sâu cơ chế bằng cách tự lập trình.
    
*   Lý thuyết: Ôn lại forward pass và BPTT.
    
*   Thực hành: Viết RNN cell từ scratch, test trên chuỗi giả lập ngắn.
    

**Ngày 555: LSTM - Động lực Ra đời**

*   Mục tiêu: Hiểu vì sao cần kiến trúc phức tạp hơn RNN.
    
*   Lý thuyết: LSTM giải quyết vanishing gradient bằng cơ chế gate.
    
*   Thực hành: Đọc tổng quan lịch sử phát triển LSTM (Hochreiter & Schmidhuber 1997).
    

**Ngày 556: LSTM - Cấu trúc Cell**

*   Mục tiêu: Hiểu chi tiết 3 gate của LSTM.
    
*   Lý thuyết: Forget gate, input gate, output gate.
    
*   Thực hành: Vẽ sơ đồ chi tiết một LSTM cell, đánh dấu luồng thông tin qua từng gate.
    

**Ngày 557: LSTM - Luồng thông tin qua Cell State**

*   Mục tiêu: Hiểu vì sao cell state giúp LSTM nhớ thông tin dài hạn.
    
*   Lý thuyết: Cell state như một "băng chuyền" thông tin, gate kiểm soát thêm/bớt thông tin.
    
*   Thực hành: Tính tay một bước cập nhật LSTM cell state với tham số cụ thể.
    

**Ngày 558: Cài đặt LSTM (Phần 1 - Setup)**

*   Mục tiêu: Chuẩn bị dữ liệu và kiến trúc mô hình.
    
*   Lý thuyết: Ôn lại API PyTorch/TensorFlow cho LSTM layer.
    
*   Thực hành: Chuẩn bị dữ liệu sequence (windowing) và xây dựng kiến trúc LSTM cơ bản.
    

**Ngày 559: Cài đặt LSTM (Phần 2 - Training)**

*   Mục tiêu: Huấn luyện mô hình LSTM hoàn chỉnh.
    
*   Lý thuyết: Ôn lại loss function (MSE), optimizer (Adam).
    
*   Thực hành: Training LSTM trên chuỗi CPI, vẽ training/validation loss curve.
    

**Ngày 560: GRU - Kiến trúc và So sánh với LSTM**

*   Mục tiêu: Hiểu kiến trúc đơn giản hóa của GRU.
    
*   Lý thuyết: Gated Recurrent Unit, update gate và reset gate (ít gate hơn LSTM).
    
*   Thực hành: Vẽ sơ đồ so sánh trực quan giữa LSTM cell và GRU cell.
    

**Ngày 561: Cài đặt GRU**

*   Mục tiêu: Thực hành với kiến trúc thay thế cho LSTM.
    
*   Lý thuyết: Ôn lại API GRU layer.
    
*   Thực hành: Training GRU trên cùng dữ liệu CPI, so sánh thời gian training với LSTM.
    

**Ngày 562: So sánh RNN, LSTM, GRU**

*   Mục tiêu: Tổng hợp hiểu biết để lựa chọn kiến trúc phù hợp.
    
*   Lý thuyết: Ôn tập trade-off về độ phức tạp, tốc độ, khả năng nhớ dài hạn.
    
*   Thực hành: Lập bảng so sánh RMSE và thời gian training giữa 3 kiến trúc trên dữ liệu CPI.
    

**Ngày 563: Chuẩn bị Dữ liệu Sequence (Windowing)**

*   Mục tiêu: Thành thạo kỹ thuật biến chuỗi thời gian thành input cho RNN/LSTM.
    
*   Lý thuyết: Sliding window để tạo (X, y) pairs cho sequence models.
    
*   Thực hành: Viết hàm tổng quát tạo windowed dataset với window size tùy chỉnh.
    

**Ngày 564: Chuẩn hóa Dữ liệu cho Neural Network**

*   Mục tiêu: Đảm bảo dữ liệu phù hợp cho việc training ổn định.
    
*   Lý thuyết: Ôn lại StandardScaler/MinMaxScaler (Ngày 530), quan trọng hơn nhiều với neural network so với tree models.
    
*   Thực hành: Chuẩn hóa dữ liệu CPI đúng cách (fit scaler trên tập train, transform cả train/test).
    

**Ngày 565: Thiết kế Kiến trúc Mạng cho Time Series Forecasting**

*   Mục tiêu: Biết cách thiết kế kiến trúc phù hợp với bài toán.
    
*   Lý thuyết: Số lớp LSTM, số units, thêm dense layer sau LSTM để ra output.
    
*   Thực hành: Thử 2-3 kiến trúc khác nhau (1 lớp LSTM vs 2 lớp LSTM stacked), so sánh hiệu năng.
    

**Ngày 566: Tinh chỉnh Hyperparameter cho LSTM**

*   Mục tiêu: Tối ưu hiệu năng mô hình.
    
*   Lý thuyết: Units, number of layers, dropout rate, learning rate.
    
*   Thực hành: Chạy grid/random search cho các hyperparameter chính của LSTM.
    

**Ngày 567: Regularization - Dropout cho RNN/LSTM**

*   Mục tiêu: Biết cách chống overfitting cho deep learning.
    
*   Lý thuyết: Dropout, recurrent dropout đặc thù cho RNN/LSTM.
    
*   Thực hành: So sánh mô hình có/không có dropout, quan sát validation loss.
    

**Ngày 568: Early Stopping và Learning Rate Scheduling**

*   Mục tiêu: Áp dụng các kỹ thuật huấn luyện hiệu quả.
    
*   Lý thuyết: Early stopping dựa trên validation loss, learning rate decay/scheduling.
    
*   Thực hành: Thêm callback early stopping và learning rate scheduler vào quy trình training LSTM.
    

**Ngày 569: Dự báo Nhiều bước - Chiến lược Recursive**

*   Mục tiêu: Hiểu và áp dụng chiến lược dự báo multi-step đơn giản nhất.
    
*   Lý thuyết: Recursive strategy, dùng dự báo 1 bước làm input cho bước tiếp theo.
    
*   Thực hành: Cài đặt recursive multi-step forecasting cho LSTM, dự báo 6 bước tới.
    

**Ngày 570: Dự báo Nhiều bước - Chiến lược Direct/Multi-output**

*   Mục tiêu: Hiểu chiến lược thay thế tránh tích lũy lỗi.
    
*   Lý thuyết: Direct strategy (mô hình riêng cho mỗi horizon) vs multi-output strategy (một mô hình ra nhiều output cùng lúc).
    
*   Thực hành: Cài đặt multi-output LSTM (output layer có 6 units cho 6 bước dự báo), so sánh với recursive.
    

**Ngày 571: Multivariate LSTM**

*   Mục tiêu: Mở rộng sang dự báo nhiều biến đồng thời, tương tự VAR nhưng phi tuyến.
    
*   Lý thuyết: Multivariate input/output LSTM, kết hợp GDP, CPI, lãi suất.
    
*   Thực hành: Xây dựng LSTM multivariate cho 3 biến kinh tế Việt Nam.
    

**Ngày 572: Giới thiệu Attention Mechanism**

*   Mục tiêu: Chuẩn bị nền tảng cho Transformer (Phần E).
    
*   Lý thuyết: Attention mechanism, giải quyết hạn chế "quên" thông tin xa của LSTM.
    
*   Thực hành: Đọc và tóm tắt trực giác về cách attention "nhìn lại" các bước thời gian quan trọng.
    

**Ngày 573: Project LSTM GDP - Chuẩn bị Dữ liệu**

*   Mục tiêu: Chuẩn bị dữ liệu cho project LSTM hoàn chỉnh.
    
*   Lý thuyết: Ôn lại toàn bộ quy trình windowing, scaling.
    
*   Thực hành: Chuẩn bị dữ liệu GDP Việt Nam sẵn sàng cho training LSTM.
    

**Ngày 574: Project LSTM GDP - Thiết kế Kiến trúc**

*   Mục tiêu: Chọn kiến trúc phù hợp cho bài toán GDP.
    
*   Lý thuyết: Ôn lại các lựa chọn kiến trúc đã thử nghiệm.
    
*   Thực hành: Thiết kế kiến trúc LSTM cuối cùng cho GDP (số lớp, units, dropout).
    

**Ngày 575: Project LSTM GDP - Training và Tuning**

*   Mục tiêu: Huấn luyện mô hình cuối cùng.
    
*   Lý thuyết: Ôn lại early stopping, learning rate scheduling.
    
*   Thực hành: Training LSTM với đầy đủ callback, lưu lại mô hình tốt nhất.
    

**Ngày 576: Project LSTM GDP - Đánh giá và Dự báo**

*   Mục tiêu: Tạo dự báo và đánh giá chất lượng.
    
*   Lý thuyết: Ôn lại pipeline `ForecastEvaluator` từ Phần C.
    
*   Thực hành: Đánh giá LSTM bằng walk-forward validation, dự báo 4 quý tới.
    

**Ngày 577: Project LSTM GDP - So sánh với ARIMA/SARIMA**

*   Mục tiêu: Đặt LSTM vào ngữ cảnh so sánh với mô hình cổ điển.
    
*   Lý thuyết: Ôn lại kết quả ARIMA/SARIMA từ Giai đoạn 3.
    
*   Thực hành: So sánh RMSE, chạy Diebold-Mariano test giữa LSTM và ARIMA cho GDP.
    

**Ngày 578: Project LSTM GDP - Viết Báo cáo**

*   Mục tiêu: Hoàn thiện báo cáo project.
    
*   Lý thuyết: Ôn lại cấu trúc báo cáo deep learning forecasting.
    
*   Thực hành: Viết báo cáo hoàn chỉnh cho project LSTM GDP.
    

**Ngày 579: Hạn chế của RNN/LSTM cho Chuỗi Dài**

*   Mục tiêu: Hiểu giới hạn còn lại để chuẩn bị học Transformer.
    
*   Lý thuyết: LSTM vẫn xử lý tuần tự (chậm), khó song song hóa, vẫn có giới hạn "nhớ" thực tế dù đã cải thiện.
    
*   Thực hành: Thảo luận: với dữ liệu kinh tế vĩ mô tần suất thấp (theo tháng/quý), hạn chế này có thực sự quan trọng không?
    

**Ngày 580: CNN cho Time Series**

*   Mục tiêu: Biết một hướng tiếp cận thay thế khác cho sequence modeling.
    
*   Lý thuyết: 1D convolution áp dụng cho time series, học pattern cục bộ.
    
*   Thực hành: Cài đặt một mạng CNN 1D đơn giản cho dự báo CPI, so sánh với LSTM.
    

**Ngày 581: Temporal Convolutional Network (TCN)**

*   Mục tiêu: Hiểu kiến trúc CNN chuyên biệt cho time series dài.
    
*   Lý thuyết: TCN, dilated convolution, causal convolution.
    
*   Thực hành: Đọc tổng quan kiến trúc TCN, vẽ sơ đồ minh họa dilated convolution.
    

**Ngày 582: So sánh TCN với LSTM**

*   Mục tiêu: Đánh giá ưu nhược điểm giữa hai hướng tiếp cận.
    
*   Lý thuyết: TCN có thể song song hóa tốt hơn LSTM, receptive field có thể kiểm soát rõ ràng.
    
*   Thực hành: Lập bảng so sánh tốc độ training và RMSE giữa TCN và LSTM cho CPI.
    

**Ngày 583: Ensemble Deep Learning Models**

*   Mục tiêu: Biết cách kết hợp nhiều mô hình deep learning để cải thiện độ chính xác.
    
*   Lý thuyết: Model averaging, weighted ensemble của LSTM/GRU/TCN.
    
*   Thực hành: Xây dựng ensemble đơn giản kết hợp dự báo từ LSTM, GRU, TCN cho CPI.
    

**Ngày 584: Ôn tập Deep Learning**

*   Mục tiêu: Củng cố kiến thức trước khi tổng kết.
    
*   Lý thuyết: Ôn tập Ngày 546–583.
    
*   Thực hành: Làm bộ câu hỏi ôn tập tổng hợp về RNN, LSTM, GRU, CNN/TCN.
    

**Ngày 585: Tổng kết Deep Learning**

*   Mục tiêu: Củng cố toàn bộ Phần D.
    
*   Lý thuyết: Tổng hợp toàn bộ các kiến trúc đã học và use-case phù hợp.
    
*   Thực hành: Viết báo cáo tổng kết cá nhân về khi nào nên/không nên dùng deep learning cho forecasting kinh tế Việt Nam (xét về độ dài dữ liệu, tần suất, độ phức tạp bài toán).
    

### PHẦN E: TRANSFORMERS (Ngày 586–615)

**Ngày 586: Giới thiệu Transformer**

*   Mục tiêu: Hiểu bối cảnh Transformer chuyển từ NLP sang time series.
    
*   Lý thuyết: Transformer architecture (Vaswani et al. 2017), lý do thành công vượt trội trong NLP và tiềm năng cho time series.
    
*   Thực hành: Đọc tổng quan lịch sử phát triển Transformer và ứng dụng mở rộng sang forecasting.
    

**Ngày 587: Self-Attention - Lý thuyết**

*   Mục tiêu: Hiểu ý tưởng cốt lõi thay thế cho recurrence.
    
*   Lý thuyết: Self-attention mechanism, mỗi vị trí "chú ý" đến mọi vị trí khác trong chuỗi.
    
*   Thực hành: Vẽ sơ đồ minh họa self-attention cho một chuỗi 5 bước thời gian.
    

**Ngày 588: Self-Attention - Công thức Query, Key, Value**

*   Mục tiêu: Hiểu công thức toán học đầy đủ.
    
*   Lý thuyết: Attention(Q,K,V) = softmax(QK^T/√d)V.
    
*   Thực hành: Tính tay self-attention cho một ví dụ nhỏ (3 bước thời gian, vector 2 chiều).
    

**Ngày 589: Multi-Head Attention**

*   Mục tiêu: Hiểu cách mở rộng attention để bắt nhiều loại quan hệ.
    
*   Lý thuyết: Multi-head attention, mỗi head học một "khía cạnh" quan hệ khác nhau.
    
*   Thực hành: Vẽ sơ đồ multi-head attention với 4 head, giải thích ý nghĩa việc concatenate kết quả.
    

**Ngày 590: Positional Encoding**

*   Mục tiêu: Hiểu cách Transformer đưa thông tin thứ tự vào mô hình (vì attention vốn không có khái niệm thứ tự).
    
*   Lý thuyết: Positional encoding, sinusoidal encoding.
    
*   Thực hành: Cài đặt và trực quan hóa positional encoding cho chuỗi 50 bước thời gian.
    

**Ngày 591: Kiến trúc Transformer - Encoder**

*   Mục tiêu: Hiểu cấu trúc đầy đủ của encoder block.
    
*   Lý thuyết: Encoder block: multi-head attention + feedforward + residual connection + layer normalization.
    
*   Thực hành: Vẽ sơ đồ chi tiết một encoder block.
    

**Ngày 592: Kiến trúc Transformer - Decoder**

*   Mục tiêu: Hiểu cấu trúc đầy đủ của decoder block.
    
*   Lý thuyết: Decoder block, masked self-attention, cross-attention với encoder output.
    
*   Thực hành: Vẽ sơ đồ chi tiết một decoder block.
    

**Ngày 593: Vì sao Transformer phù hợp cho Chuỗi Dài**

*   Mục tiêu: Hiểu lợi thế cốt lõi so với RNN/LSTM.
    
*   Lý thuyết: Song song hóa hoàn toàn (không tuần tự như RNN), đường dẫn gradient ngắn hơn giữa các vị trí xa nhau.
    
*   Thực hành: Lập bảng so sánh path length giữa vị trí đầu/cuối chuỗi trong RNN vs Transformer.
    

**Ngày 594: Temporal Fusion Transformer (TFT) - Giới thiệu**

*   Mục tiêu: Biết kiến trúc Transformer chuyên biệt cho forecasting phổ biến nhất hiện nay.
    
*   Lý thuyết: TFT (Lim et al. 2021), thiết kế riêng cho multi-horizon time series forecasting.
    
*   Thực hành: Đọc tổng quan paper TFT, tóm tắt động lực thiết kế.
    

**Ngày 595: TFT - Kiến trúc Chi tiết**

*   Mục tiêu: Hiểu các thành phần đặc trưng của TFT.
    
*   Lý thuyết: Variable selection network, gating mechanisms, static covariate encoders.
    
*   Thực hành: Vẽ sơ đồ tổng thể kiến trúc TFT với các thành phần chính.
    

**Ngày 596: TFT - Tính năng Diễn giải (Interpretability)**

*   Mục tiêu: Hiểu ưu điểm lớn của TFT so với các Transformer khác.
    
*   Lý thuyết: Attention weights của TFT có thể diễn giải được biến nào quan trọng tại thời điểm nào.
    
*   Thực hành: Đọc ví dụ về cách diễn giải attention weights của TFT trong một ứng dụng thực tế.
    

**Ngày 597: Cài đặt TFT bằng Thư viện**

*   Mục tiêu: Thực hành với công cụ có sẵn.
    
*   Lý thuyết: Ôn lại API của `pytorch-forecasting` cho TFT.
    
*   Thực hành: Cài đặt TFT cơ bản cho dữ liệu CPI bằng `pytorch-forecasting`.
    

**Ngày 598: PatchTST - Giới thiệu Ý tưởng Patching**

*   Mục tiêu: Biết một hướng tiếp cận Transformer khác, đơn giản và hiệu quả.
    
*   Lý thuyết: PatchTST (Nie et al. 2023), chia chuỗi thành các "patch" giống như Vision Transformer chia ảnh.
    
*   Thực hành: Vẽ sơ đồ minh họa việc chia chuỗi thời gian thành các patch.
    

**Ngày 599: PatchTST - Kiến trúc Chi tiết**

*   Mục tiêu: Hiểu cơ chế hoạt động đầy đủ.
    
*   Lý thuyết: Channel-independence, patch embedding, chỉ dùng encoder (đơn giản hơn TFT).
    
*   Thực hành: Đọc tổng quan paper PatchTST, tóm tắt lý do đạt hiệu năng tốt dù đơn giản.
    

**Ngày 600: So sánh PatchTST với TFT**

*   Mục tiêu: Có cơ sở lựa chọn giữa hai kiến trúc.
    
*   Lý thuyết: Ôn tập trade-off: TFT có interpretability tốt hơn, PatchTST đơn giản và hiệu quả hơn cho pure forecasting.
    
*   Thực hành: Lập bảng so sánh đặc điểm, use-case phù hợp cho mỗi kiến trúc.
    

**Ngày 601: TimeGPT và Foundation Models cho Time Series**

*   Mục tiêu: Biết xu hướng mới nhất trong lĩnh vực.
    
*   Lý thuyết: Khái niệm foundation models cho time series (TimeGPT, Chronos, Moirai...), pretrained trên dữ liệu khổng lồ.
    
*   Thực hành: Đọc tổng quan về khái niệm và tiềm năng ứng dụng của các mô hình này.
    

**Ngày 602: Zero-shot Forecasting**

*   Mục tiêu: Hiểu khả năng đặc biệt của foundation models.
    
*   Lý thuyết: Zero-shot forecasting, dự báo trên chuỗi mới hoàn toàn không cần training riêng.
    
*   Thực hành: Nếu có thể truy cập, thử zero-shot forecast một chuỗi kinh tế Việt Nam bằng một foundation model có sẵn (qua API/thư viện mở), so sánh với LSTM đã tự train.
    

**Ngày 603: Ưu nhược điểm Transformer cho Forecasting Kinh tế**

*   Mục tiêu: Có cái nhìn thực dụng về việc áp dụng Transformer cho bài toán kinh tế vĩ mô.
    
*   Lý thuyết: Transformer cần nhiều dữ liệu hơn LSTM để phát huy hiệu quả - vấn đề với dữ liệu kinh tế vĩ mô thường ngắn.
    
*   Thực hành: Viết bài luận ngắn thảo luận: liệu Transformer có thực sự phù hợp cho dữ liệu GDP/CPI Việt Nam (thường chỉ vài trăm quan sát) hay không.
    

**Ngày 604: Project Transformer - Chuẩn bị Dữ liệu**

*   Mục tiêu: Chuẩn bị dữ liệu cho project Transformer hoàn chỉnh.
    
*   Lý thuyết: Ôn lại định dạng dữ liệu cần thiết cho `pytorch-forecasting`.
    
*   Thực hành: Chuẩn bị dữ liệu GDP Việt Nam theo định dạng TimeSeriesDataSet.
    

**Ngày 605: Project Transformer - Cài đặt TFT cho GDP**

*   Mục tiêu: Xây dựng mô hình TFT hoàn chỉnh.
    
*   Lý thuyết: Ôn lại cấu hình TFT (hidden size, attention heads, dropout).
    
*   Thực hành: Cài đặt TFT cho dữ liệu GDP Việt Nam.
    

**Ngày 606: Project Transformer - Training và Tuning**

*   Mục tiêu: Huấn luyện mô hình cuối cùng.
    
*   Lý thuyết: Ôn lại early stopping, learning rate finder (đặc thù cho `pytorch-forecasting`).
    
*   Thực hành: Training TFT, tinh chỉnh hyperparameter cơ bản.
    

**Ngày 607: Project Transformer - Đánh giá và Dự báo**

*   Mục tiêu: Tạo dự báo và đánh giá chất lượng.
    
*   Lý thuyết: Ôn lại pipeline `ForecastEvaluator`.
    
*   Thực hành: Đánh giá TFT bằng walk-forward validation, dự báo 4 quý tới, trích xuất attention weights để diễn giải.
    

**Ngày 608: Project Benchmark - So sánh ARIMA vs LSTM vs Transformer**

*   Mục tiêu: Có cái nhìn tổng thể về hiệu năng các họ mô hình đã học.
    
*   Lý thuyết: Ôn lại toàn bộ kết quả từ Giai đoạn 3 (ARIMA/SARIMA), Phần D (LSTM), Phần E (TFT).
    
*   Thực hành: Lập bảng benchmark tổng hợp RMSE/MAE/MAPE cho GDP giữa 3 họ mô hình.
    

**Ngày 609: Project Benchmark - Phân tích Trade-off**

*   Mục tiêu: Hiểu sâu đánh đổi giữa độ chính xác và độ phức tạp.
    
*   Lý thuyết: Ôn lại chi phí triển khai, thời gian training, khả năng diễn giải của từng họ mô hình.
    
*   Thực hành: Vẽ biểu đồ scatter (độ chính xác vs độ phức tạp/thời gian training) cho toàn bộ mô hình đã benchmark.
    

**Ngày 610: Project Benchmark - Khi nào Deep Learning không đáng dùng**

*   Mục tiêu: Có quan điểm thực dụng, tránh over-engineering.
    
*   Lý thuyết: Với dữ liệu ít (như GDP quý Việt Nam ~100 quan sát), mô hình đơn giản (ARIMA, Random Forest) thường thắng deep learning.
    
*   Thực hành: Phân tích cụ thể trên kết quả benchmark: mô hình nào thắng cho GDP (dữ liệu ít) và liệu kết luận có khác cho CPI (dữ liệu nhiều hơn, theo tháng).
    

**Ngày 611: Project Benchmark - Viết Báo cáo So sánh Tổng hợp**

*   Mục tiêu: Hoàn thiện báo cáo benchmark toàn diện.
    
*   Lý thuyết: Ôn lại cấu trúc báo cáo so sánh mô hình.
    
*   Thực hành: Viết báo cáo hoàn chỉnh so sánh ARIMA, Tree models, LSTM, TFT cho cả GDP và CPI.
    

**Ngày 612: Đọc Paper gần đây về Forecasting Kinh tế bằng Transformer**

*   Mục tiêu: Cập nhật xu hướng nghiên cứu mới nhất.
    
*   Lý thuyết: Tìm và đọc 1 paper ứng dụng Transformer cho dự báo kinh tế vĩ mô.
    
*   Thực hành: Tóm tắt phương pháp và kết quả chính của paper.
    

**Ngày 613: Thảo luận Xu hướng Tương lai của ML Forecasting**

*   Mục tiêu: Có cái nhìn dài hạn về lĩnh vực.
    
*   Lý thuyết: Xu hướng: foundation models, kết hợp causal inference với ML, hybrid statistical-ML models.
    
*   Thực hành: Viết bài luận ngắn về hướng phát triển bạn quan tâm nhất cho hệ thống dự báo kinh tế Việt Nam.
    

**Ngày 614: Ôn tập Transformers**

*   Mục tiêu: Củng cố kiến thức Phần E trước khi tổng kết.
    
*   Lý thuyết: Ôn tập Ngày 586–613.
    
*   Thực hành: Làm bộ câu hỏi ôn tập tổng hợp về self-attention, TFT, PatchTST.
    

**Ngày 615: Tổng kết Giai đoạn 5 - Machine Learning Forecasting**

*   Mục tiêu: Củng cố toàn diện trước khi bước vào Advanced Economic Forecasting.
    
*   Lý thuyết: Ôn tập tổng hợp cả 5 phần: Tree Models, Feature Engineering, Forecast Validation, Deep Learning, Transformers.
    
*   Thực hành: Viết báo cáo tổng kết cá nhân: xây dựng "quyết định tree" hướng dẫn chọn mô hình (thống kê cổ điển/tree/deep learning/transformer) dựa trên đặc điểm dữ liệu (độ dài, tần suất, số biến, mục tiêu diễn giải).
