Vnstock Logo

Mức hoàn thiện của bản 1.0.0rc1

Thử nghiệm

Mục lục

Bản thử nghiệm, chưa phát hành chính thức

Trang này viết cho vnstock_quant v1.0.0rc1, bản thử nghiệm. Tên hàm, tham số và cột dữ liệu có thể còn đổi trước ngày phát hành; khi cài, ghi rõ số phiên bản như ở trang Cài đặt. Bản đang phát hành chính thức là v0.5.0, xem tài liệu bản đó.

Trang này ghi kết quả chạy bản phát hành vnstock_quant 1.0.0rc1 ngày 06/11/2026: cài từ gói dựng sẵn vào môi trường sạch, cùng vnstock 6.0.0rc3 và vnstock-oapi 0.1.0rc2, tải dữ liệu thật bằng khoá nguồn. Nguyên tắc của bản này: tính năng chưa đủ chắc chắn thì tắt, hoặc chạy kèm cảnh báo nêu điều kiện, thay vì trả một con số trông như thật.

Các kết quả trong trang được đo tại một thời điểm, trên một nhóm mã. Dữ liệu của nguồn có thể đổi; hãy đối chiếu trên chính dữ liệu của bạn.


Tóm tắt theo nhóm hàm

NhómTrên dữ liệu thậtĐiều kiện, giới hạn
taChạy: 58/58 chỉ báo trên chuỗi ngày từ 2019Không
riskChạy: lợi suất mã và VNINDEX căn theo ngày chungChỉ số tham chiếu tải cùng nguồn với mã
fa, chỉ số từ BCTCChạy trên cả bốn mẫu biểu (doanh nghiệp, ngân hàng, chứng khoán, bảo hiểm)Chỉ số cần thuyết minh trả MISSING_INPUT; nguồn giới hạn tần suất
fa, chỉ số định giáTắt mặc địnhCần số cổ phiếu và giá đóng cửa gốc; xem bên dưới
prices.from_vnstockTắt (báo lỗi)Nguồn trả giá đã điều chỉnh
prices.adjust trên bảng giá gốc của bạnChạyKhông có trần, sàn thì chỉ kiểm bằng giá tham chiếu, có cảnh báo
microChạy trên khớp lệnh trong ngàyCó nguồn không gửi phiên ATO, ATC: có cảnh báo
backtestChạy trên ohlcv()Không khai corporate_actions với giá tải qua vnstock 6; biểu phí chưa xác minh và hồ sơ phái sinh có cảnh báo
portfolio, valuationKhông đổiKhông dùng dữ liệu vnstock

Chỉ số tài chính

So kết quả cùng công thức, cùng kỳ trên 19 mã thuộc cả bốn mẫu biểu, giữa dữ liệu tải qua thế hệ 5 và dữ liệu Open API chụp tháng 11/2026, chỉ tính các chỉ số năm không cần giá:

Thước đoKết quả
Số điểm có giá trị ở cả hai bên4.819
Khớp trong 1%98,05%
Có ở bản cũ, mất ở bản mới0
Trống ở bản cũ, có ở bản mới196

Hai nhóm khác biệt lớn nhất đến từ dữ liệu đầu vào, không phải từ công thức:

  • Bao phủ lãi vay bằng tiền (RT_CF_INTEREST_COVERAGE) của mẫu biểu doanh nghiệp: dữ liệu mới có thuế thu nhập doanh nghiệp đã nộp ở nhiều kỳ mà dữ liệu cũ ghi 0.
  • Thanh toán hiện thời (RT_LQD_CR) của doanh nghiệp bảo hiểm: các nguồn phân loại nợ ngắn hạn và dài hạn khác nhau, dù tổng nợ phải trả như nhau.

Taxonomy rút gọn. Khi báo cáo chỉ có chỉ tiêu cấp 1, dòng chi tiết vắng mặt được coi là chưa biết, không phải 0. Trước khi chặn, 368 trong 1.248 điểm đo được vẫn có số nhưng lệch trên 1%; sau khi chặn, không còn điểm nào sai mà không báo, đổi lại 595 trong 1.460 điểm trả MISSING_INPUT.

Tần suất. Một mã với period="both" cần khoảng 54 lần gọi, mất khoảng 90 giây. Tải mã thứ hai ngay sau đó đã bị nguồn từ chối (VNSTOCK_SOURCE_RATE_LIMITED); nghỉ vài phút giữa các mã thì tải được cả bốn mẫu biểu.


Chỉ số định giá

Hai đầu vào chưa đủ khi tải qua vnstock 6:

  1. Số cổ phiếu theo ngày: Open API không có. Định giá trả MISSING_MARKET trừ khi bạn truyền total_shares, hoặc bật estimate_shares=True. Đo cách ước tính trên 64 mã với giá gốc đã lưu: 86,5% điểm khớp trong 1%, 95,5% trong 5%, nhưng ở phiên mới nhất 19/64 mã lệch trên 5%, nặng nhất 50%.
  2. Giá đóng cửa gốc: các nguồn hiện có trả giá đã điều chỉnh cho mọi phiên trước sự kiện quyền gần nhất. Với FPT từ 01/01/2023, 922 trên 956 phiên có giá đóng cửa lẻ bước giá 10 đồng. Thư viện bỏ các phiên đó khỏi định giá và cảnh báo; định giá quá khứ vì vậy trống, chỉ các phiên sau sự kiện gần nhất có số.

Muốn có định giá quá khứ, đưa bảng giá đóng cửa gốc cùng total_shares qua fa.Dataset.from_frames.


Giá điều chỉnh

Trên dữ liệu thật, mọi sự kiện quyền trong khoảng của FPT, HPG, VNM từ 2023 đều lệch giá tham chiếu khi điều chỉnh lại bảng đã điều chỉnh, tức là sự kiện bị tính hai lần. Thư viện nay nhận ra bảng như vậy và báo lỗi QUANT_INPUT_DATA. Khoảng ngày sau sự kiện gần nhất vẫn chạy, và cho đúng kết quả của ohlcv().

Với bảng giá gốc không có trần, sàn, đo trên 72 mã lịch sử dài: trong 805 sự kiện có ở cả hai cách kiểm, 7 sự kiện lệch trên 0,1%, 3 sự kiện lệch trên 1% (đều có quyền mua); 13 sự kiện danh sách thiếu không được phát hiện; 11/72 mã có hệ số tích luỹ lệch trên 2%. Thư viện không tự suy sự kiện thiếu trong trường hợp này: nếu suy, riêng giá tham chiếu tạo ra 1.736 sự kiện không có thật trên 72 mã.


Backtest

  • Biểu phí: 11 trên 15 biểu phí tham khảo chưa xác minh (verified=False); dùng chúng thì kết quả có cảnh báo.
  • Phái sinh: hồ sơ vn_futures chưa mô phỏng thuế phái sinh, phí vị thế, phí quản lý ký quỹ, gọi ký quỹ, tất toán bắt buộc và đáo hạn; kết quả có cảnh báo.
  • Cổ tức tiền và cổ phiếu thưởng cùng ngày: ở bản 0.5, thứ tự khai làm tài sản cuối lệch khoảng 0,9 triệu trên 150 triệu đồng; bản 1.0 luôn tính cổ tức trên số cổ phiếu trước khi thưởng.
  • Sự kiện thiếu ngày niêm yết: lịch sự kiện thường không có ngày niêm yết cổ phiếu thưởng; engine cảnh báo và coi cổ phiếu mới bán được ngay từ ngày GDKHQ.

Bản dựng và môi trường

Hạng mụcTình trạng
Kiểm thử172 bài kiểm của lõi Rust và 1.503 bài kiểm của lớp Python đạt
macOS arm64, macOS x86_64, Linux aarch64, Linux x86_64Cài vào môi trường sạch, nhập thư viện và chạy bản Cộng đồng: đạt
Windows x86_64Đã dựng và qua bước kiểm tra rò rỉ; chưa chạy thử trên máy Windows thật
Nguồn cần mã OTPChưa chạy thử
Thời hạnBản thử nghiệm dùng được 30 ngày kể từ ngày dựng (06/11/2026)

Đọc tiếp