Vnstock Logo

Chuyển từ bản 0.5

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 đó.

Nguồn của bạn

Chọn nguồn bạn có khoá, mã trên trang sẽ điền theo. Chưa chọn thì mã giữ chỗ trống <nguồn>. Nguồn xếp theo bảng chữ cái, không phải khuyến nghị.

Bản 1.0 giữ nguyên các công thức và cách gọi hàm tính toán của bản 0.5. Mã chỉ tính trên DataFrame bạn tự chuẩn bị chạy được mà không cần sửa. Những chỗ phải sửa đều nằm ở phần tải dữ liệu, vì vnstock 6 đọc Open API chính thức của công ty chứng khoán và các bảng ở đó khác bảng của thế hệ 5.


1. Cài vào môi trường mới

vnstock 6 dùng chung tên gói với thế hệ 5 và sẽ thay bản đang cài. Giữ môi trường cũ cho mã thế hệ 5, tạo môi trường mới cho bản 1.0:

Shell
python -m venv ~/.venv_6x && source ~/.venv_6x/bin/activate
pip install -U --extra-index-url https://vnstocks.com/api/packages "vnstock_quant==1.0.0rc1"
Bản 0.5Bản 1.0
pip install "vnstock_quant[vnstock]"pip install "vnstock_quant==1.0.0rc1"; vnstock 6 luôn được cài kèm, không còn extra [vnstock]
vnstock install vnstock_quantCài bằng pip như trên
vnstock thế hệ 5vnstock>=6.0.0rc3,<7 và vnstock-oapi; cài nhầm bản khác thế hệ 6 thì hàm tải báo DependencyError

2. Cất khoá của nguồn

Bản 0.5 chỉ cần khoá API Vnstock. Bản 1.0 vẫn dùng khoá đó để kiểm tra cấp quyền, và cần thêm khoá Open API của từng nguồn bạn dùng:

Shell
vnstock keys set <nguồn>
vnstock keys check <nguồn>

Cách đăng ký khoá ở từng nguồn: Cài đặt vnstock 6.

3. Chọn nguồn

Thế hệ 6 không có nguồn mặc định. Bỏ source="vci", source="kbs" và các nguồn cũ khỏi mã: vnstock 6 báo VNSTOCK_INPUT_SOURCE với nguồn nó không đọc. Đặt quy tắc một lần ở đầu chương trình, hoặc nêu nguồn trong từng lời gọi:

Python
import vnstock

vnstock.sources.use("<nguồn A>")                                  # mọi hàm chưa nêu nguồn
vnstock.sources.use("<nguồn B>", route="fundamental.equity.*")    # riêng báo cáo tài chính

Mỗi loại dữ liệu có nguồn đọc được riêng; tra bằng vnstock.sources.readers("<loại dữ liệu>"). Chi tiết: Tải dữ liệu bằng vnstock.

4. Tham số mới của các hàm tải

HàmBản 0.5Bản 1.0
ta.from_vnstocksource có giá trị mặc địnhsource=None: theo quy tắc vnstock.sources
risk.from_vnstockChỉ số tham chiếu tải theo nguồn mặc địnhChỉ số tham chiếu tải cùng nguồn với mã (source)
fa.Dataset.loadsourcesource (BCTC), thêm price_source (giá) và estimate_shares=False
prices.from_vnstocksourcesource (phiên), thêm events_source (sự kiện); tạm tắt, xem mục 6
compat.vnstock_ta.DataSourcesource có giá trị mặc địnhsource=None

5. Chỉ số định giá

Bản 0.5Bản 1.0
Dataset.load() có total_shares và giá gốc theo ngày, nên P/E, P/B, vốn hoá có sốOpen API không có số cổ phiếu theo ngày, và giá lịch sử đã được nguồn điều chỉnh: định giá trả MISSING_MARKET kèm cảnh báo

Cách có lại số:

  • Nên dùng: đưa bảng giá đóng cửa gốc kèm total_shares của bạn qua fa.Dataset.from_frames(statements, prices={...}).
  • Tham khảo: fa.Dataset.load(..., estimate_shares=True) ước số cổ phiếu từ vốn điều lệ; vẫn chỉ tính được ở các phiên sau sự kiện quyền gần nhất, và có thể lệch nhiều sau đợt phát hành.

Chi tiết và số đo: Chỉ số tài chính.

Một số khác biệt khác của fa:

  • Chỉ số cần thuyết minh BCTC (nợ xấu, CASA, CAR của ngân hàng) trả MISSING_INPUT, vì Open API chưa có thuyết minh. Dataset.load báo một cảnh báo và tải tiếp, không dừng.
  • 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, không tính với giá trị 0 như có thể xảy ra trước đây.
  • Dataset.from_frames nhận thêm bảng hồ sơ v6 (report_period, item_id, item_value) và tự đổi giá nghìn đồng của hồ sơ v6 về đồng.
  • Một vài chỉ số có thể ra số khác dù cùng công thức, do dữ liệu đầu vào khác: xem Mức hoàn thiện.

6. Giá điều chỉnh

Bản 0.5Bản 1.0
prices.from_vnstock(symbol, start) tải giá gốc kèm trần, sàn và điều chỉnh theo sự kiệnBáo lỗi QUANT_INPUT_DATA khi khoảng ngày có sự kiện quyền, vì giá tải về đã được điều chỉnh
prices.adjust kiểm sự kiện bằng giá tham chiếu và trung điểm trần, sànNhư cũ với bảng có trần, sàn. Bảng không có trần, sàn: chỉ kiểm bằng giá tham chiếu (witness="reference_only"), không tự suy sự kiện thiếu, có cảnh báo
Đọc cột sự kiện event_code, exright_date, exercise_ratio, value_per_shareĐọc thêm event_type, ex_right_date, ratio, dividend_percent, value, exercise_price (nghìn đồng, tự đổi về đồng); bảng cũ đã lưu vẫn đọc được

Thay prices.from_vnstock(...) bằng Market().equity(s).ohlcv(...) nếu bạn chỉ cần giá đã điều chỉnh; giữ prices.adjust nếu bạn có bảng giá gốc của riêng mình. Mọi bảng có giá đóng cửa lẻ bước giá 10 đồng đều bị từ chối, vì đó là giá đã điều chỉnh.

7. Backtest

  • Chạy với giá ohlcv() như cũ (prices_adjusted=True, không khai corporate_actions).
  • Đừng dựng corporate_actions từ events() rồi chạy trên giá tải qua vnstock 6 với prices_adjusted=False: giá đã điều chỉnh, sự kiện bị tính hai lần.
  • Cổ tức tiền và cổ phiếu thưởng cùng ngày nay luôn tính cổ tức trên số cổ phiếu trước khi thưởng. Kết quả cũ phụ thuộc thứ tự khai có thể đổi.
  • res.warnings có thêm cảnh báo khi dùng biểu phí chưa xác minh và khi dùng hồ sơ vn_futures.
  • Gọi bằng JSON có thêm run_portfolio, sweep, walk_forward, monte_carlo, deflated_sharpe_ratio; run_backtest trả thêm daily_returns.

8. Vi cấu trúc thị trường

  • Nhận bảng khớp lệnh hồ sơ v6 (cột side, session) bên cạnh match_type của hồ sơ v5. Lệnh có session là ato hoặc atc luôn tính 0.
  • Bảng không cho biết phiên ATO, ATC thì có cảnh báo; xem Vi cấu trúc thị trường.
  • trades() thế hệ 6 nhận source, start, end, limit; số lệnh mỗi lần gọi và độ dài lịch sử tuỳ nguồn.

9. Lỗi và cảnh báo

Bản 0.5Bản 1.0
VNSTOCK_TIER_ROUTE khi tải giáVNSTOCK_INPUT_SOURCE, VNSTOCK_ROUTE_UNSUPPORTED, VNSTOCK_CREDENTIAL_MISSING, VNSTOCK_SOURCE_AUTH, VNSTOCK_SOURCE_LOGIN, VNSTOCK_SOURCE_OTP; thêm VNSTOCK_SOURCE_RATE_LIMITED khi nguồn giới hạn tần suất
DependencyError khi chưa cài vnstock 5DependencyError khi vnstock đang cài không thuộc thế hệ 6
Hạn mức lượt gọi dữ liệu của tài khoảnKhông còn; tần suất do nguồn giới hạn
Cảnh báo một lần mỗi tiến trình khi tải BCTC, giá theo phiên, lịch sự kiện (bảng thử nghiệm của vnstock 6)

Bảng đầy đủ: Quy ước dữ liệu và lỗi.

10. Bản thử nghiệm

vq.entitlement()["release"]["pre_release"] là True. Bản 1.0.0rc1 dùng được 30 ngày kể từ ngày dựng; gần hết hạn, release["warning"] nhắc bạn cập nhật. Ghim phiên bản trong dự án và cập nhật bằng cùng lệnh cài ở mục 1.


Danh sách kiểm tra

  1. Môi trường mới, cài "vnstock_quant==1.0.0rc1" từ kho phân phối của vnstocks.com.
  2. vnstock keys set <nguồn> cho từng nguồn bạn dùng; vnstock keys check.
  3. vnstock.sources.use(...) ở đầu chương trình, hoặc source= trong từng lời gọi; bỏ tên nguồn cũ.
  4. fa: đưa total_shares và giá gốc qua from_frames nếu cần định giá; chấp nhận MISSING_INPUT cho chỉ số cần thuyết minh.
  5. prices.from_vnstock → ohlcv(), hoặc prices.adjust với bảng giá gốc của bạn.
  6. Backtest: không ghép corporate_actions với giá tải qua vnstock 6.
  7. Chạy lại mã và đọc mọi VnstockQuantWarning ít nhất một lần.

Đọc tiếp