Chuyển từ bản 0.5
Mục lụ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 đó.
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:
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.5 | Bả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_quant | Cài bằng pip như trên |
vnstock thế hệ 5 | vnstock>=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:
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:
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ínhMỗ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àm | Bản 0.5 | Bản 1.0 |
|---|---|---|
ta.from_vnstock | source có giá trị mặc định | source=None: theo quy tắc vnstock.sources |
risk.from_vnstock | Chỉ số tham chiếu tải theo nguồn mặc định | Chỉ số tham chiếu tải cùng nguồn với mã (source) |
fa.Dataset.load | source | source (BCTC), thêm price_source (giá) và estimate_shares=False |
prices.from_vnstock | source | source (phiên), thêm events_source (sự kiện); tạm tắt, xem mục 6 |
compat.vnstock_ta.DataSource | source có giá trị mặc định | source=None |
5. Chỉ số định giá
| Bản 0.5 | Bả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_sharescủa bạn quafa.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.loadbá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_framesnhậ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ơv6về đồ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.5 | Bả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ện | Bá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àn | Như 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 khaicorporate_actions). - Đừng dựng
corporate_actionstừevents()rồi chạy trên giá tải quavnstock6 vớiprices_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.warningscó 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_backtesttrả thêmdaily_returns.
8. Vi cấu trúc thị trường
- Nhận bảng khớp lệnh hồ sơ
v6(cộtside,session) bên cạnhmatch_typecủa hồ sơv5. Lệnh cósessionlàatohoặcatcluô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ậnsource,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.5 | Bả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 5 | DependencyError 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ản | Khô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
- Môi trường mới, cài
"vnstock_quant==1.0.0rc1"từ kho phân phối của vnstocks.com. vnstock keys set <nguồn>cho từng nguồn bạn dùng;vnstock keys check.vnstock.sources.use(...)ở đầu chương trình, hoặcsource=trong từng lời gọi; bỏ tên nguồn cũ.fa: đưatotal_sharesvà giá gốc quafrom_framesnếu cần định giá; chấp nhậnMISSING_INPUTcho chỉ số cần thuyết minh.prices.from_vnstock→ohlcv(), hoặcprices.adjustvới bảng giá gốc của bạn.- Backtest: không ghép
corporate_actionsvới giá tải quavnstock6. - Chạy lại mã và đọc mọi
VnstockQuantWarningít nhất một lần.
Đọc tiếp
- Cài đặt và thiết lập — Từng bước cài và chọn nguồn.
- Mức hoàn thiện — Kết quả chạy trên dữ liệu thật.
- Chuyển từ vnstock thế hệ 5 — Thay đổi của chính
vnstock. - Chuyển từ vnstock_ta — Nếu mã của bạn còn viết cho
vnstock_ta1.x.
