goldcast

Phương pháp luận

Trang này mô tả chính xác những gì hệ thống làm với dữ liệu — và những gì nó không làm.

1. Dữ liệu đến từ đâu

Vàng thế giới (XAU/USD) và tỷ giá USD/VND lấy từ Stooq dưới dạng CSV lịch sử theo ngày. Một lần gọi trả về toàn bộ chuỗi, nên việc nạp lại nhiều năm dữ liệu chỉ tốn hai request.

Vàng miếng trong nước lấy từ feed XML công khai của SJC. Feed này chỉ có giá của ngày hiện tại — không có endpoint lịch sử — nên chuỗi trong nước dày lên dần kể từ lúc hệ thống bắt đầu chạy. Đây là giới hạn thật của nguồn dữ liệu, và hệ quả của nó là dự báo cho vàng trong nước cần thời gian tích luỹ trước khi có ý nghĩa.

Khi một chuỗi hoàn toàn chưa có dữ liệu và không kết nối được nguồn nào, hệ thống sinh dữ liệu mô phỏng có tính xác định để ứng dụng vẫn chạy được. Những dòng đó được gắn nhãn source = "synthetic" và giao diện luôn cảnh báo. Dữ liệu mô phỏng không bao giờ bị trộn vào một chuỗi đã có dữ liệu thật.

2. Quy đổi giữa hai thị trường

Vàng thế giới niêm yết theo USD mỗi troy ounce; trong nước niêm yết theo đồng mỗi lượng. Muốn so sánh phải quy đổi cả khối lượng lẫn tiền tệ:

1 troy ounce = 31,1034768 g
1 lượng (cây) = 37,5 g = 10 chỉ

VNĐ/lượng = USD/oz ÷ 31,1034768 × 37,5 × tỷ giá USD/VND

Khoảng cách giữa con số đó và giá SJC thực bán là chênh lệch trong nước. Ở Việt Nam khoản này lớn và biến động theo cung cầu, nguồn cung vàng miếng và chính sách trong nước chứ không theo thị trường thế giới. Vì vậy nó được hiển thị như một con số riêng, không bị gộp vào giá.

Khi so một mức giá trong nước với giá thế giới, hệ thống dùng giá thế giới và tỷ giá có hiệu lực đúng ngày đó, không phải giá mới nhất. So giá vàng niêm yết Chủ nhật với giá đóng cửa thứ Hai là so một mức giá với thông tin chưa tồn tại ở thời điểm đó.

3. Các mô hình dự báo

  • Naive (bước đi ngẫu nhiên) — giá ngày mai bằng giá hôm nay. Với giá kim loại quý theo ngày, đây là baseline rất mạnh, và là thước đo mà mọi mô hình khác phải vượt qua.
  • Drift — ngoại suy mức thay đổi trung bình của cả chuỗi huấn luyện.
  • SMA — dự báo phẳng bằng trung bình k phiên gần nhất. Ổn định hơn naive trên dữ liệu nhiễu, nhưng phản ứng chậm hơn.
  • Holt có xu hướng tắt dần — san mũ với hệ số φ < 1. Việc tắt dần là cố ý: một mô hình xu hướng không tắt, khi khớp vào một đợt tăng giá vàng, sẽ ngoại suy đợt tăng đó ra vô hạn.
  • AR(p) trên sai phân — hồi quy tự tương quan bậc p trên sai phân bậc 1, tương đương ARIMA(p,1,0), khớp bằng bình phương tối thiểu. Lấy sai phân là điều kiện cần: chuỗi giá có xu hướng nên không dừng, còn mức thay đổi ngày-qua-ngày thì xấp xỉ dừng.
  • Auto — backtest tất cả mô hình trên chính chuỗi đó rồi chọn mô hình có MASE thấp nhất. Khi hoà, mô hình đơn giản hơn thắng.

4. Đo sai số bằng backtest rolling-origin

Tại mỗi điểm gốc trong lịch sử, mô hình được khớp lại từ đầu chỉ với dữ liệu có trước thời điểm đó, rồi chấm điểm trên phần dữ liệu phía sau. Đây là cách duy nhất trả lời được câu hỏi người dùng thực sự quan tâm — "trước giờ mô hình này sai bao nhiêu?" — mà không để thông tin tương lai rò rỉ vào quá trình khớp.

Bốn chỉ số được báo cáo:

  • MAE — sai số tuyệt đối trung bình, theo đúng đơn vị của chuỗi.
  • RMSE — căn bậc hai sai số bình phương trung bình; phạt nặng các lần sai lớn.
  • MAPE — sai số phần trăm tuyệt đối trung bình.
  • MASE — chỉ số đáng đọc nhất. Nó chia MAE cho sai số mà dự báo naive mắc phải trên cùng chuỗi. Dưới 1: mô hình mang thêm thông tin. Từ 1 trở lên: không, bất kể MAPE trông đẹp thế nào.

Sai số cũng được tách riêng theo từng bước dự báo, vì nó nở ra theo khoảng cách. Gộp tất cả vào một con số trung bình là cách người ta bán một dự báo quá mức.

5. Khoảng tin cậy được tính thế nào

Khoảng tin cậy được suy ra từ RMSE out-of-sample đo được ở từng bước, chứ không phải từ phần dư in-sample.

Khác biệt này quan trọng. Phần dư in-sample luôn nhỏ hơn thực tế — mô hình đã nhìn thấy chính những điểm đó rồi — và khoảng tin cậy dựng từ chúng là lý do chính khiến các dashboard dự báo trông tự tin hơn nhiều so với mức chúng xứng đáng.

Khi một bước dự báo chưa đủ số mẫu out-of-sample để tin cậy, độ rộng quay về dùng sai số một bước nhân √h — tốc độ nở chuẩn của một bước đi ngẫu nhiên. Cận dưới luôn bị chặn tại 0.

6. Những gì hệ thống này không làm

Tất cả mô hình ở đây đều là ngoại suy thống kê từ giá quá khứ. Không mô hình nào biết đến lãi suất, chính sách tiền tệ, biến động địa chính trị, thay đổi quy định về vàng miếng, hay bất kỳ can thiệp nào lên thị trường trong nước. Những yếu tố đó mới là thứ thực sự tạo ra các cú sốc giá lớn.

Trên phần lớn khung thời gian, giá vàng theo ngày rất gần với bước đi ngẫu nhiên. Khi đó MASE sẽ ở quanh hoặc trên 1, và giao diện nói thẳng điều đó thay vì giấu đi. Một dự báo không vượt được baseline naive vẫn được hiển thị — kèm cảnh báo rằng nó không đáng tin hơn giả định giá đứng yên.

Đây không phải lời khuyên đầu tư, và không thay thế giá niêm yết chính thức tại quầy. Đừng dùng những con số này làm căn cứ duy nhất cho quyết định tài chính.