Vnstock Logo

Lịch sử phiên bản

Thử nghiệm

Mục lục

Trang dùng chung với v0.5.0

Nội dung trang này giữ nguyên từ bản v0.5.0, chưa viết riêng cho v1.0.0rc1: ví dụ chạy được nếu tên hàm không đổi. Bản gốc: /docs/vnstock_quant/lich-su-phien-ban.

Nhãn [Mở rộng] đánh dấu phần chỉ có ở bản Mở rộng, nhãn [Cộng đồng] đánh dấu phần chỉ đúng với bản Cộng đồng. Phần không gắn nhãn đúng ở cả hai bản. Trang tổng hợp của từng bản lấy thay đổi từ tệp này theo nhãn.

06-11-2026 (v1.0.0rc1)

Bản thử nghiệm đầu tiên cho thế hệ 6

vnstock_quant 1.0 tải dữ liệu qua vnstock 6, thế hệ đọc Open API chính thức của công ty chứng khoán bằng khoá của chính bạn. Công thức tính không đổi. Tài liệu: Vnstock Quant v1; chuyển mã cũ: Chuyển từ bản 0.5.

  • Phụ thuộc: vnstock>=6.0.0rc3,<7 (kèm vnstock-oapi) là phụ thuộc bắt buộc; bỏ extra [vnstock]. vnstock chỉ được nạp khi gọi hàm tải dữ liệu. Cài vào môi trường riêng, vì vnstock 6 thay bản thế hệ 5 cùng tên gói.
  • Chọn nguồn: không có nguồn mặc định; mọi hàm tải nhận source, bỏ trống thì theo quy tắc vnstock.sources. fa.Dataset.load thêm price_source; prices.from_vnstock thêm events_source; risk.from_vnstock tải chỉ số tham chiếu cùng nguồn với mã.
  • Đầu vào: nhận bảng của cả hai hồ sơ cột v5 và v6 của vnstock 6; lịch sự kiện theo cột mới (event_type, ex_right_date, ratio, giá quyền mua theo nghìn đồng); khớp lệnh có side, session.
  • Chỉ số định giá tắt mặc định khi thiếu số cổ phiếu: thêm estimate_shares=True để ước từ vốn điều lệ, kèm cảnh báo. Giá đóng cửa lẻ bước giá 10 đồng (đã được nguồn điều chỉnh) bị bỏ khỏi định giá, kèm cảnh báo.
  • prices.from_vnstock tạm tắt: bảng giá đã được nguồn điều chỉnh bị từ chối (QUANT_INPUT_DATA) thay vì điều chỉnh hai lần. prices.adjust vẫn chạy với bảng giá gốc của bạn; bảng không có trần, sàn thì chỉ kiểm bằng giá tham chiếu và không tự suy sự kiện thiếu.
  • fa: báo cáo chỉ có chỉ tiêu cấp 1 thì chỉ số cần dòng chi tiết trả MISSING_INPUT thay vì tính với 0; doanh thu công ty chứng khoán lấy từ IS_REVENUE; chỉ số cần thuyết minh trả MISSING_INPUT khi chưa có thuyết minh, không dừng cả lần tải.
  • micro: lệnh trong phiên ATO, ATC luôn không có bên chủ động, kể cả khi nguồn gắn chiều cho cả lô; bảng không cho biết phiên thì có cảnh báo.
  • backtest: thêm 5 công cụ gọi bằng JSON (run_portfolio, sweep, walk_forward, monte_carlo, deflated_sharpe_ratio), tổng 15; run_backtest trả thêm daily_returns. Cổ tức tiền và cổ phiếu thưởng cùng ngày luôn tính cổ tức trên số cổ phiếu trước khi thưởng. Cảnh báo khi dùng biểu phí chưa xác minh và khi dùng hồ sơ vn_futures.
  • Cảnh báo: nhắc một lần mỗi tiến trình khi tải bảng mà vnstock 6 còn đánh dấu thử nghiệm (BCTC, giá theo phiên, lịch sự kiện).
  • Hạn chế: bản thử nghiệm dùng được 30 ngày; bản Windows chưa chạy thử trên máy thật. Kết quả chạy trên dữ liệu thật: Mức hoàn thiện.

27-10-2026 (v0.5.0)

Mô-đun mới: chạy thử chiến lược (backtest)

vnstock_quant.backtest chạy thử chiến lược trên dữ liệu giá bạn chuẩn bị, theo luật thị trường Việt Nam, trong cùng lõi Rust với các nhóm hàm khác: bảng quy tắc dùng đúng 58 chỉ báo của ta, tear sheet dùng 33 thước đo của risk, chung cấp quyền và cây lỗi của thư viện. Tài liệu: Chạy thử chiến lược.

  • Tín hiệu: mảng [-1, 0, 1], cặp entries/exits hoặc bảng quy tắc rule_dsl dạng JSON; kiểm thiên lệch nhìn trước tương lai cho cả hàm tín hiệu và bảng quy tắc (check_causality, check_rule_dsl_causality).
  • Luật thị trường: mặc định lô 100, bước giá theo sàn, biên độ, phiên khóa trần và khóa sàn, T+2.5, thuế bán 0,1% tính riêng ngoài phí; hồ sơ phái sinh VN30F, crypto, cổ phiếu quốc tế, ngoại hối; cổ tức tiền, cổ phiếu thưởng và quyền mua trên giá gốc.
  • Khớp lệnh: chế độ vn_realistic và bốn chế độ tái tạo hành vi mặc định của backtesting.py, backtrader, vectorbt, zipline, khớp tới từng lệnh trên 11 kịch bản đối chứng; lệnh giới hạn và lệnh dừng theo phiên, nhiều lô trong một vị thế, chốt lời từng phần, dừng lỗ động, chặn rủi ro cấp tài khoản.
  • Danh mục và chống quá khớp: run_portfolio cho nhiều mã chung một tài khoản và tái cân bằng theo tỷ trọng; sweep, walk_forward, monte_carlo, deflated_sharpe_ratio.
  • Gọi bằng JSON: catalog(), schema() và call() với 10 công cụ dùng được trực tiếp cho trợ lý AI và Vnstock MCP.
  • Lỗi và quyền: lớp lỗi mới CausalityViolationError (QUANT_CAUSALITY_VIOLATION); mã QUANT_QUOTA_LIMIT (QuotaExceededError) khi một lần chạy vượt quy mô của cấp; vq.entitlement() có thêm khoá backtest và bộ quy tắc quant_entitlement_v3.
  • [Cộng đồng] Backtest một mã với 10 chỉ báo cơ bản trong bảng quy tắc, 3 lượt mỗi ngày. Lượt backtest đếm riêng, không trừ vào 30 phép tính chỉ báo và chỉ số; xem vq.entitlement()["backtest"].
  • [Mở rộng] Từ Bronze mở đủ chỉ báo, danh mục, dò tham số, walk-forward, Monte Carlo; các cấp khác nhau ở quy mô mỗi lần chạy.
  • Extra chart (pip install --extra-index-url https://vnstocks.com/api/packages "vnstock-quant[chart]") cài vnstock_chart để vẽ kết quả chạy thử.

Mô-đun mới: giá điều chỉnh (prices)

  • [Mở rộng] vnstock_quant.prices chuyển giá chưa điều chỉnh sang giá đã điều chỉnh theo cổ tức tiền, cổ phiếu thưởng và quyền mua, kiểm từng sự kiện với giá tham chiếu của sàn: prices.adjust(), prices.factors() và prices.from_vnstock(). Xem Giá điều chỉnh.

Chỉ số tài chính (fa)

Các chỉ số nêu sau cho số khác bản 0.4.0; những chỉ số không nhắc tới giữ nguyên. Mỗi thay đổi được kiểm trên dữ liệu thị trường tải ngày 27/10/2026 và trên 64 mã của bộ đối chiếu. Cách tính chi tiết xem ở Chỉ số tài chính.

  • P/E, P/B, P/S, P/CF, EV/EBITDA kỳ năm: Lấy giá đóng cửa và số cổ phiếu của cùng một phiên, tại ngày định giá của quý 4 năm đó, nên dòng năm trùng dòng quý 4 và P/E bằng giá / EPS trong cùng một dòng. Bản trước lấy giá cuối năm sau nhân với số cổ phiếu của năm báo cáo: chỉ số dùng giá của một năm sau kỳ báo cáo, và thấp hơn thực tế khi có chia cổ phiếu trong năm sau (P/E năm 2024 của VCB ra 9,5 thay vì 14,65; FPT ra 17,9 thay vì 22,2). Tham số overrides={"year_valuation": ...} không còn dùng được.
  • Dòng quý 4 của chuỗi quý: Mẫu số bình quân (ROE, ROA, vòng quay, số ngày thu tiền...) là bình quân 4 điểm cuối quý như các quý khác, với điểm cuối là số cuối năm đã kiểm toán. Bản trước dùng bình quân đầu năm và cuối năm, làm chuỗi quý nhảy ở mỗi quý 4 (ROE quý 4 của ngân hàng cao hơn trung bình hai quý kề 2,2%; nay −0,3%, ngang các quý khác). ROE quý 4/2025 của FPT từ 28,29% thành 27,25%. Dòng năm không đổi.
  • [Mở rộng] Tăng trưởng tín dụng và huy động theo quý (RT_BANK_LOAN_GROWTH, RT_BANK_DEPOSIT_GROWTH): Quý 4 so với cuối quý 3 như các quý khác. Bản trước so quý 4 với cuối năm trước, trộn tăng trưởng một quý với tăng trưởng cả năm (tín dụng VCB quý 4/2025: 15,5% thành 2,7%). Dòng năm không đổi.
  • [Mở rộng] CIR và thu nhập ngoài lãi theo quý (RT_BANK_CIR, RT_BANK_NOII): Quý 4 tính trên số riêng của quý 4, như các quý khác. Bản trước dùng số cả năm.
  • [Mở rộng] Chỉ số dòng tiền kinh doanh với ngân hàng và công ty chứng khoán: RT_VALUE_P_CF, RT_VALUE_CFPS, RT_CF_CROA, RT_CF_CROE, RT_CF_INCOME_QUALITY, RT_CF_DEBT_COVERAGE, RT_CF_DIVIDEND_PAYMENT, RT_CF_TO_REVENUE trả NOT_APPLICABLE cho hai loại hình này. Dòng tiền kinh doanh của ngân hàng và công ty chứng khoán chủ yếu là tiền gửi, cho vay và mua bán chứng khoán; P/CF quý của VCB đi từ −13,7 tới 123,3 trong hai năm.
  • [Mở rộng] Tỷ lệ dồn tích theo lưu chuyển tiền tệ (RT_QUALITY_ACCRUALS_CF): Loại tiền chi cho vay, gửi có kỳ hạn và tiền thu hồi khỏi dòng tiền đầu tư, cho khớp với tài sản hoạt động thuần (đã loại tiền và đầu tư ngắn hạn). Tương quan với bản theo bảng cân đối tăng từ 0,16 lên 0,87 (266 năm-doanh nghiệp); FPT năm 2025 từ 0,575 thành 0,220.
  • [Mở rộng] DuPont: RT_DUPONT_TAX_BURDEN là lợi nhuận sau thuế / lợi nhuận trước thuế, theo giáo trình CFA (FPT năm 2025: 0,861, bằng 1 − thuế suất hiệu dụng). Chỉ số mới RT_DUPONT_PARENT_SHARE (lợi nhuận cổ đông công ty mẹ / lợi nhuận sau thuế) tách phần của cổ đông không kiểm soát; tích sáu thành phần bằng ROE. Thư viện có 100 chỉ số.
  • Mô tả ROE trong fa.describe(): Bỏ câu nói hồ sơ vn đổi mẫu số từ năm 2022; ROE luôn chia cho vốn chủ của cổ đông công ty mẹ bình quân.
  • fa.Dataset.load() khi chưa tải được giá: Nếu cấp của vnstock chưa mở giá chưa điều chỉnh, thư viện cảnh báo một lần và vẫn tính các chỉ số từ báo cáo tài chính; chỉ số định giá trả MISSING_MARKET. Dùng prices=False để bỏ qua bước tải giá.

Thay đổi khác

  • Vi cấu trúc (micro): Mỗi lần gọi một hàm tính là một lượt, kể cả hàm chạy nhiều bước bên trong như bars và cvd.
  • Đo lượt dùng: Thư viện không còn hỏi đồng ý đo lượt dùng ở lần chạy đầu. Lựa chọn đặt trên vnstocks.com, mục tùy chọn dữ liệu của tài khoản; chưa chọn thì không đo. Tắt riêng trên máy bằng vnstock_quant.telemetry.disable() hoặc biến môi trường VNSTOCK_TELEMETRY=0.

17-10-2026 (v0.4.0)

Dữ liệu khung phút

  • [Mở rộng] Ichimoku: Với nến trong ngày, span tương lai đi tiếp theo nhịp phiên giao dịch có trong dữ liệu (bỏ qua giờ nghỉ trưa, hết phiên thì sang ngày làm việc kế tiếp), thay vì lùi xa 26 ngày. Thị trường giao dịch cả cuối tuần (ví dụ tiền mã hoá) được giữ Thứ 7 và Chủ nhật. Nến ngày không đổi.
  • [Mở rộng] Ichimoku với cột thời gian: Bảng có cột time (hoặc date, ngay...) trên chỉ mục số thứ tự, như dữ liệu trả về từ vnstock, nay có span tương lai đánh chỉ mục theo thời gian. Bảng chính vẫn giữ chỉ mục của bạn.
  • VWAP và pivots: Đọc được cột thời gian dạng dd/mm/YYYY HH:MM và dd/mm/YYYY HH:MM:SS.
  • [Mở rộng] MFI: Khi dữ liệu có nến thiếu giá trị, chỉ báo trả NaN cho các cửa sổ chứa nến đó, không còn dừng chương trình.
  • [Mở rộng] Rủi ro (risk): Lợi suất theo phút được gộp thành lợi suất ngày trước khi tính các thước đo quy đổi theo năm, và được ghép với chuỗi đối chiếu theo đúng mốc thời gian (kể cả khi một bên thiếu vài phút). Áp dụng cho các hàm risk và portfolio.risk_decomposition. Lợi suất ngày cho kết quả như trước.
  • Chỉ số tài chính (fa): Bảng giá theo phút được đọc thành một phiên mỗi ngày, lấy giá của nến cuối ngày (kể cả phiên ATC). Bảng giá ngày không đổi.

Thay đổi khác

  • [Mở rộng] portfolio: Bổ sung tham số flow_dates cho twr, periods cho covariance, lịch tái cân bằng M/Q/Y cho portfolio_returns, và weights/benchmark_weights cho ex_ante_tracking_error (active_weights không còn bắt buộc). Cách gọi cũ cho kết quả như cũ.
  • [Mở rộng] portfolio.twr: Chạy được với chỉ mục ngày có múi giờ.
  • [Mở rộng] fa.Dataset.from_frames: Bỏ các dòng giá thiếu thời gian; chuỗi thời gian lẫn nhiều múi giờ khác nhau báo ValueError.
  • Thông báo lỗi: vwap với anchor không hợp lệ báo InvalidParameterError bằng tiếng Việt, giống micro.cvd.
  • Chú thích hàm: Chú thích viết bằng tiếng Anh; mô tả ngắn của 58 chỉ báo viết song ngữ (tiếng Anh trước, tiếng Việt sau). Công thức và phương pháp chi tiết xem ở các trang tài liệu.
  • Đo lượt dùng: Câu hỏi đồng ý đo lượt dùng ở lần chạy đầu thống nhất giữa các thư viện thế hệ 5.

10-10-2026 (v0.1.3)

  • Thư viện xác thực: Ghim vnstock-auth ở bản 0.5.1, thống nhất với các thư viện thế hệ 5 khác. Không đổi cách tính.

09-10-2026 (v0.1.2)

  • Giữ chỉ mục đầu vào: Kết quả chỉ báo giữ nguyên chỉ mục của bảng bạn truyền vào. Cột thời gian chỉ được dùng cho vwap và pivots.
  • Nhận cột thời gian: Với bảng dữ liệu thô, thư viện tự nhận cột thời gian và chuyển thành DatetimeIndex.
  • Gọi lớp chính gọn hơn: Các lớp chính nhập được thẳng từ vnstock_quant; thông báo lỗi rõ hơn khi thiếu cột.

08-10-2026 (v0.1.1)

  • Hạn dùng bản phát hành: Thư viện kiểm tra hạn dùng của bản cài trước khi tính; thông tin hạn dùng xem ở vq.entitlement()["release"].
  • Chú thích song ngữ: Chú thích hàm của các mô-đun ta, fa, risk, portfolio, valuation có cả tiếng Việt và tiếng Anh.
  • Bản hết hạn: Bản đã hết hạn báo lỗi VNSTOCK_RELEASE_EXPIRED kèm lệnh cập nhật.

08-10-2026 (v0.1.0)

Bản phát hành đầu tiên của Vnstock Quant thế hệ 5

  • [Cộng đồng] Dùng thử mỗi ngày: Bản Cộng đồng có 30 lượt dùng thử (30 phép tính) mỗi ngày cho 10 chỉ báo kỹ thuật cơ bản và 10 chỉ số tài chính VAS. Tra cứu số lượt còn lại bằng vnstock_quant.entitlement() (khoá trial).

  • Gói cài đặt dựng sẵn: Gói nhị phân dựng sẵn (binary wheels) dùng chung cho Python 3.10 trở lên, trên macOS (Intel và Apple Silicon) và Linux x86_64/aarch64 dùng glibc 2.17 trở lên.

  • Đối chiếu chỉ báo: Kết quả 58 chỉ báo kỹ thuật được đối chiếu với TA-Lib C 0.8.1 và QuantConnect LEAN.

  • Kiểm tra tham số: Tham số nến không hợp lệ báo lỗi InvalidParameterError thay vì trả kết quả sai lệch.

  • Tái cấu trúc từ vnstock_ta sang vnstock_quant: Gộp và nâng cấp thư viện vnstock_ta sang namespace mới vnstock_quant với lõi tính toán biên dịch bằng Rust (_native.abi3.so).

  • 58 chỉ báo kỹ thuật hiệu năng cao: Tính đủ 58 chỉ báo nhanh hơn 25,9 lần so với phiên bản cũ (5.000 phiên, số đo tham khảo, đo trên máy Apple M4 (10 nhân, 16 GB RAM), một luồng, ngày 06/10/2026); lõi Rust nhả khoá GIL của Python trong lúc tính.

  • Khắc phục lỗi thuật toán: Sửa 16 chỉ báo bị sai lệch công thức trong phiên bản cũ (bao gồm CCI, KST, PSAR, Supertrend, Squeeze, OBV, MFI).

  • Giữ cú pháp gọi hàm: Lớp Indicator giữ nguyên tên 58 phương thức chỉ báo, tên và giá trị mặc định của tham số; chuyển đổi bằng cách đổi tên gói khi import. Một số chỉ báo cho số khác bản cũ, xem danh sách khác biệt.

Mô-đun Chỉ số Tài chính (FA) và Mô hình Điểm số [Mở rộng]

  • Tự tính toán 99 chỉ số tài chính: Tự động tính chỉ số từ hệ thống BCTC chuẩn hoá VAS cho 4 loại hình doanh nghiệp: phi tài chính (dn), ngân hàng (tctd), chứng khoán (ctck) và bảo hiểm (dnpnt).
  • Chuẩn hoá dòng tiền CFA: Tích hợp công thức tính toán dòng tiền tự do doanh nghiệp (FCFF) và dòng tiền tự do chủ sở hữu (FCFE).
  • Hệ thống mô hình điểm số: Bổ sung mô hình phân rã DuPont (3 và 5 nhân tố), điểm số dự báo phá sản Altman Z''-score, điểm chất lượng kinh doanh Piotroski F-score và mô hình phát hiện gian lận Beneish M-score.
  • Kiểm thử công thức: Công thức được kiểm thử trên báo cáo tài chính dựng tay theo ví dụ của giáo trình CFA. Cách tính và cách hiệu chỉnh theo chuẩn mực kế toán Việt Nam được ghi ở tài liệu từng chỉ số, để bạn tự tính lại từ báo cáo tài chính.

Mô-đun Đo lường Rủi ro và Hiệu suất (Risk) [Mở rộng]

  • 33 thước đo rủi ro chuẩn CFA: Tích hợp các hàm tính toán Sharpe, Sortino, Treynor, Information Ratio, Alpha, Omega, Ulcer Index và các biến thể VaR / CVaR (lịch sử, phân phối chuẩn, Cornish-Fisher).
  • Kiểm định đối chứng quốc tế: Toàn bộ các thước đo được đối chiếu song song với thư viện empyrical và quantstats với sai số dấu phẩy động cực nhỏ (≤ 2e-14).
  • Thước đo đặc thù cho thị trường Việt Nam: Bổ sung hệ số đo độ kém thanh khoản Amihud (risk.amihud), hệ số Beta hiệu chỉnh Dimson cho cổ phiếu thanh khoản thấp (risk.dimson_beta) và các tỷ lệ theo dõi tần suất đứng giá / chạm biên độ trần sàn (zero_return_ratio, limit_hit_ratio).

Giao diện gọi hàm JSON cho trợ lý AI

  • [Mở rộng] Chuẩn hoá JSON Schema cho AI Agent: Bổ sung hàm portfolio.schema(name) và portfolio.catalog() xuất schema tự mô tả tham số, hỗ trợ kết nối trực tiếp với các mô hình ngôn ngữ lớn (OpenAI, Claude, Antigravity) và các trợ lý tự động hoá.
  • [Mở rộng] Thực thi hàm bằng JSON: Giới thiệu hàm portfolio.call(name, **kwargs) cho phép AI kích hoạt các hàm danh mục và định giá bằng payload JSON với quy ước epoch days và phân số thập phân.
  • Chẩn đoán cấp quyền và bản build: Bổ sung hai hàm chẩn đoán chạy cục bộ vq.entitlement() và vq.build_info(), hỗ trợ theo dõi lượt dùng thử của bản Cộng đồng và kiểm tra tính toàn vẹn của lõi Rust.