Kiểm định chất lượng & hiệu năng
Mục lục
Khuyên dùng: Nên ưu tiên sử dụng Agent Guide để nạp môi trường cho AI Agent trên máy tính cục bộ. Tránh viết code thủ công hoặc dùng AI phiên bản web/Google Colab vì AI không có thông tin mới nhất về thư viện nên dễ viết sai cú pháp.
Một thư viện định lượng tài chính chỉ thực sự có giá trị khi kết quả tính toán kiểm chứng được và tốc độ đủ để tính trên nhiều mã.
Trước khi vnstock_quant ra đời, các nhà nghiên cứu và lập trình viên phân tích định lượng tại Việt Nam thường phải đối mặt với hai vấn đề lớn:
- Sự phân mảnh và khó khăn khi cài đặt: Các thư viện Python truyền thống thường phụ thuộc vào các module C bên ngoài (như TA-Lib C core), dễ gặp lỗi tương thích trên Windows hoặc Apple Silicon ("dependency hell"), hoặc phải ghép 4–5 gói riêng lẻ (
pandas-ta,empyrical,quantstats,pyxirr), mỗi gói một quy ước kiểu dữ liệu. - Khác biệt về quy ước tính: Mỗi thư viện có quy ước riêng về giai đoạn khởi động (warm-up), cách căn ngày tháng, và có thể đổi nhánh tính khi máy có hoặc không có thư viện C, nên cùng một chỉ báo có thể ra số khác nhau giữa các máy; một số phép tính còn chạy bằng vòng lặp Python nên chậm.
Thư viện vnstock_quant thế hệ 5 được thiết kế để giải quyết các bài toán trên bằng mô hình: Lõi tính toán Rust hiệu năng cao kết hợp lớp giao diện Python chuẩn mực, phân phối dưới dạng binary wheels biên dịch sẵn (zero C dependency ngoài), quy tụ trọn vẹn 5 trụ cột phân tích (TA, FA, Risk, Portfolio, Valuation) trong một thư viện duy nhất.
Tài liệu này công bố toàn bộ dữ liệu đối chiếu thực nghiệm, phương pháp kiểm định chéo với các mốc chuẩn quốc tế và kết quả đo kiểm hiệu năng thực tế.
1. Triết lý phát triển: Kế thừa chuẩn hoá & Thống nhất trong lõi Rust
Thống nhất trong một thư viện duy nhất
Thay vì người dùng phải tự tìm kiếm, cài đặt và bảo trì nhiều thư viện riêng lẻ với nguy cơ xung đột phiên bản (đặc biệt khi nâng cấp lên Python 3.12+ và pandas 2.x), vnstock_quant gom vào một thư viện:
- 58 chỉ báo kỹ thuật (TA) kế thừa bề mặt API thân thuộc của
pandas-ta. - 99 chỉ số báo cáo tài chính VAS (FA) chuẩn hoá cho 4 mô hình ngành.
- 33 thước đo rủi ro & hiệu suất (Risk) chuẩn CFA Institute.
- 38 hàm quản lý & tối ưu hoá danh mục (Portfolio) có tham số phí và thuế giao dịch tại Việt Nam.
- Mô hình định giá chiết khấu cổ tức và P/E hợp lý (Valuation) theo giáo trình CFA.
An toàn bộ nhớ và loại bỏ phụ thuộc phức tạp
- Không cần cài đặt C compiler:
vnstock_quantđược dựng sẵn dạng binary wheel cho macOS (Intel và Apple Silicon) và Linux x86_64/aarch64 dùng glibc 2.17 trở lên. Chưa có bản dựng sẵn cho Windows và Linux musl. Cài bằngpip install -U --extra-index-url https://vnstocks.com/api/packages vnstock_quant, hoặcvnstock install vnstock_quantkhi đã cóvnstockthế hệ 5. - An toàn bộ nhớ (Memory Safety): Được viết hoàn toàn bằng Rust với nguyên tắc kiểm soát quyền sở hữu bộ nhớ chặt chẽ, giảm nguy cơ lỗi bộ nhớ (như Segmentation Fault) khi xử lý chuỗi dữ liệu lịch sử dài.
- Kết quả nhất quán trên mọi máy tính: Thế hệ cũ trước đây thường cho ra kết quả khác nhau tuỳ vào việc môi trường có cài TA-Lib C hay không. Với
vnstock_quant, phép tính luôn đi qua cùng một lõi Rust, không đổi nhánh theo việc máy có cài TA-Lib C hay không.
2. Hệ thống mốc chuẩn đối chiếu thực nghiệm
Để kết quả kiểm chứng được, vnstock_quant đối chiếu với các mốc độc lập sau:
| Mốc kiểm định | Phạm vi đối chiếu | Tiêu chí đánh giá |
|---|---|---|
| TA-Lib C Core 0.8.1 | 34 chỉ báo kỹ thuật cổ điển | Thư viện chỉ báo C phổ biến; sai số tương đối |
| QuantConnect LEAN | 14 chỉ báo kỹ thuật nâng cao & dữ liệu SPY | Bộ dữ liệu kiểm thử chỉ báo của LEAN; sai số |
| CFA® Program Curriculum | 99 chỉ số BCTC VAS, phân rã rủi ro Euler, MWR | Chuẩn mực phân tích tài chính và quản lý tài sản toàn cầu |
| empyrical-reloaded & QuantStats | 33 thước đo rủi ro và hiệu suất | Khung định lượng kiểm nghiệm chéo các hệ số Sharpe, Sortino, VaR |
| pyxirr | Hội tụ tỷ suất sinh lời theo dòng tiền (XIRR/MWR) | Kiểm định nghiệm số hội tụ với thuật toán Newton-Raphson |
| NumPy & SciPy | Các kiểm định thống kê và phân phối xác suất | Độ lệch chuẩn mẫu, Kurtosis, Skewness |
3. Báo cáo kiểm định 58 chỉ báo kỹ thuật
Báo cáo được trích xuất từ quy trình kiểm thử tự động trên 4 bộ dữ liệu kiểm định (daily, ticks_flat, gaps, range_index) và tập dữ liệu tham chiếu của QuantConnect LEAN.
Phân loại mức tin cậy (Confidence Levels)
Mỗi chỉ báo trong vnstock_quant đều được gắn nhãn tin cậy minh bạch trong catalog:
- Mức A (34 chỉ báo): Khớp hoàn toàn với mốc chuẩn công nghiệp TA-Lib C core 0.8.1 (sai số tương đối hoặc ).
- Mức B (14 chỉ báo): Khớp với dữ liệu kiểm thử của QuantConnect LEAN hoặc công thức bài báo khoa học gốc (sai số ).
- Mức C (10 chỉ báo): Khớp với định nghĩa của chính tác giả phát minh (John Ehlers, Bill Williams, John Carter TTM Squeeze).
Bảng đối chiếu sai số chi tiết
Dưới đây là kết quả kiểm định số học của 58 chỉ báo so với các thư viện quốc tế và sự cải tiến so với thế hệ cũ:
| Chỉ báo | Nhóm | Mức tin cậy | Chuẩn đối chiếu | Sai số vs TA-Lib C | Đối chiếu LEAN / Định nghĩa gốc | So với thế hệ cũ |
|---|---|---|---|---|---|---|
sma | Trend | A | TA-Lib SMA | 0.0e+00 | — | Khớp chuẩn (1.2e-15) |
ema | Trend | A | TA-Lib EMA | 0.0e+00 | LEAN spy_ema.csv: 5.7e-14 | Khớp chuẩn (3.8e-16) |
wma | Trend | A | TA-Lib WMA | 4.2e-15 | — | Khớp chuẩn (2.2e-16) |
hma | Trend | A | Alan Hull / TA-Lib | 1.5e-14 | LEAN spy_hma.txt: 5.0e-08 | Khớp chuẩn (5.0e-16) |
smma | Trend | A | J. Welles Wilder RMA | 9.2e-16 | — | Khớp chuẩn (0.0e+00) |
alma | Trend | B | Arnaud Legoux / LEAN | — | LEAN spy_alma.txt: 5.0e-08 | Khớp chuẩn (3.6e-16) |
vwma | Trend | B | LEAN VWMA | — | LEAN spy_with_vwma.csv: 2.8e-14 | Khớp chuẩn (5.1e-16) |
adx | Trend | A | Wilder ADX/DI | 0.0e+00 | LEAN spy_with_adx.txt: hội tụ | Khắc phục lệch khởi động |
psar | Trend | A | TA-Lib SAREXT / LEAN | 0.0e+00 | LEAN spy_sarext.txt: 5.7e-14 | Đã sửa lỗi logic |
supertrend | Trend | B | TradingView / LEAN | — | LEAN dwac_supertrend.txt: 5.0e-08 | Đã sửa lỗi logic |
dm | Trend | A | TA-Lib PLUS/MINUS_DM | 0.0e+00 | Wilder sums | Đã sửa lỗi sai lệch |
linreg | Trend | A | TA-Lib LINEARREG | 6.6e-14 | — | Khớp chuẩn (2.0e-15) |
aroon | Trend | A | TA-Lib AROON | 0.0e+00 | — | Khớp chuẩn (1.4e-15) |
rsi | Momentum | A | TA-Lib RSI (Wilder) | 0.0e+00 | LEAN spy_with_indicators.txt: 5.0e-06 | Khắc phục lệch khởi động |
stoch | Momentum | A | TA-Lib STOCH | 0.0e+00 | LEAN spy_with_stoch12k3.txt: 3.7e-04 | Khớp chuẩn (1.1e-13) |
stochrsi | Momentum | A | TradingView / TA-Lib | 0.0e+00 | LEAN spy_with_StochRSI.csv: 3.6e-13 | Khắc phục lệch khởi động |
mom | Momentum | A | TA-Lib MOM | 0.0e+00 | — | Khớp chuẩn (0.0e+00) |
roc | Momentum | A | TA-Lib ROC | 0.0e+00 | LEAN spy_with_rocp50.txt: 1.0e-05 | Khớp chuẩn (1.1e-14) |
ao | Momentum | B | Bill Williams / LEAN | — | LEAN spy_ao.txt: 4.8e-13 | Khớp chuẩn (3.8e-11) |
cci | Momentum | A | Donald Lambert CCI | 1.7e-12 | LEAN spy_with_cci.txt: 2.2e-03 | Đã sửa lỗi Mean Deviation |
willr | Momentum | A | Larry Williams %R | 0.0e+00 | LEAN spy_with_williamsR14.txt: 4.0e-04 | Khớp chuẩn (3.4e-15) |
tsi | Momentum | B | William Blau / LEAN | — | LEAN spy_tsi.csv: 2.1e-14 | Khắc phục lệch khởi động |
cmo | Momentum | A | Chande Momentum Osc | 2.7e-16 | Chuẩn Chande unsmoothed | Đã sửa lỗi logic |
uo | Momentum | A | Larry Williams ULTOSC | 0.0e+00 | LEAN spy_ultosc.txt: 5.7e-14 | Khớp chuẩn (2.2e-16) |
fisher | Momentum | C | John Ehlers Transform | — | Công thức Ehlers gốc: sai số | Khắc phục lệch khởi động |
cg | Momentum | C | Ehlers Center of Gravity | — | Công thức Ehlers gốc: sai số | Đã sửa lỗi tính toán |
kst | Momentum | B | Martin Pring / LEAN | — | LEAN spy_with_kst.csv: 8.5e-14 | Đã sửa lỗi trọng số |
macd | Momentum | A | Gerald Appel MACD | 0.0e+00 | LEAN spy_with_macd.txt: 5.0e-06 | Khắc phục lệch khởi động |
bbands | Volatility | A | TA-Lib BBANDS | 0.0e+00 | LEAN spy_bollinger_bands.txt: 1.1e-04 | Khớp chuẩn (8.9e-12) |
kc | Volatility | B | Chester Keltner / TV | — | Công thức Keltner chuẩn True Range | Khớp chuẩn (3.7e-16) |
atr | Volatility | A | TA-Lib ATR (Wilder) | 0.0e+00 | Wilder RMA trên True Range | Khắc phục lệch khởi động |
stdev | Volatility | A | TA-Lib STDDEV | 0.0e+00 | Phương sai tổng thể (ddof=0) | Đã sửa lỗi bậc tự do |
donchian | Volatility | A | Richard Donchian | 0.0e+00 | LEAN spy_with_don50.txt: 0.0e+00 | Khớp chuẩn (0.0e+00) |
true_range | Volatility | A | TA-Lib TRANGE | 0.0e+00 | LEAN spy_tr.txt: 7.1e-15 | Khớp chuẩn (0.0e+00) |
squeeze | Volatility | C | John Carter TTM Squeeze | — | LazyBear TTM Squeeze: sai số | Đã sửa lỗi đảo dải Keltner |
squeeze_pro | Volatility | C | Carter TTM Squeeze Pro | — | Đa ngưỡng Keltner (2.0 / 1.5 / 1.0) | Đã sửa lỗi momentum |
obv | Volume | A | Joe Granville OBV | 0.0e+00 | LEAN spy_with_obv.txt: 1.0e-04 | Đã sửa lỗi nến đứng giá |
cmf | Volume | B | Marc Chaikin CMF | — | LEAN spy_cmf.txt: 1.5e-06 | Khớp chuẩn (2.8e-14) |
ad | Volume | A | Chaikin A/D Line | 0.0e+00 | LEAN spy_ad.txt: 5.0e-06 | Khớp chuẩn (6.9e-14) |
vp | Volume | C | Volume Profile | — | Bất biến bảo toàn tổng khối lượng | Đã sửa lỗi phân bổ bin |
vwap | Volume | B | Anchored Intraday VWAP | — | Nhóm chu kỳ Ngày / Tuần / Tháng: | Khớp chuẩn (0.0e+00) |
pvo | Volume | A | Percentage Volume Osc | 0.0e+00 | TA-Lib PPO trên khối lượng | Khắc phục lệch khởi động |
mfi | Volume | A | Money Flow Index | 8.9e-14 | Chuẩn Gene Quong & Avrum Soudack | Đã sửa lỗi mẫu số 0 |
pivots | Statistics | C | Pivot Points Standard | — | Traditional, Woodie, DeMark chuẩn | Đã sửa lỗi khung thời gian |
variance | Statistics | A | TA-Lib VAR | 0.0e+00 | LEAN spy_var.txt: 1.1e-10 | Đã sửa lỗi bậc tự do |
hl2 | Statistics | A | TA-Lib MEDPRICE | 0.0e+00 | Khớp chuẩn (0.0e+00) | |
hlc3 | Statistics | A | TA-Lib TYPPRICE | 0.0e+00 | Khớp chuẩn (0.0e+00) | |
ohlc4 | Statistics | A | TA-Lib AVGPRICE | 0.0e+00 | Khớp chuẩn (3.1e-16) | |
midprice | Statistics | A | TA-Lib MIDPRICE | 0.0e+00 | LEAN spy_midprice.txt: 2.8e-14 | Khớp chuẩn (0.0e+00) |
(Ghi chú: Bảng rút gọn hiển thị các chỉ báo tiêu biểu. Toàn bộ 58 chỉ báo đều vượt qua 100% các ca kiểm thử hồi quy tự động).
16 chỉ báo đã sửa so với vnstock_ta 1.x
Trong vnstock_ta 1.x, một số chỉ báo lệch định nghĩa gốc do lỗi vòng lặp hoặc lỗi công thức. vnstock_quant đã sửa như sau:
psar: Sửa lỗi nhảy điểm đảo chiều không đúng công thức gia tốc của Wilder.supertrend: Sửa lỗi trôi dải band trong các đợt biến động mạnh kéo dài.dm: Sửa thuật toán cộng dồn Wilder Directional Movement.cci: Sửa phép tính độ lệch tuyệt đối trung bình (Mean Absolute Deviation).stdev&variance: Sửa việc nhầm lẫn giữa độ lệch chuẩn mẫu () và độ lệch chuẩn tổng thể (), đồng bộ hoàn toàn với TA-Lib C.obv: Sửa lỗi xử lý nến đứng giá (Close bằng phiên trước thì giữ nguyên khối lượng tích luỹ, không bị cộng dồn sai).vp(Volume Profile): Sửa lỗi phân bố lại các bin khối lượng và bảo toàn 100% tổng khối lượng giao dịch.squeeze&squeeze_pro: Sửa lỗi công thức dải Keltner Channel bên trong khiến tín hiệu siết/bung nén bị ngược pha.cmo: Sửa phép làm mượt không đúng định nghĩa nguyên bản của Tushar Chande.cg&fisher: Sửa hiện tượng tràn số thực khi giá trị tiến gần biên độ dao động.kst: Sửa hệ số nhân trọng số 4 khung thời gian của Martin Pring.nvi: Sửa điều kiện so sánh khối lượng sụt giảm so với phiên liền trước.mfi: Sửa lỗi chia cho 0 khi dòng tiền âm bằng 0 trong giai đoạn thị trường tăng kịch trần liên tục.pivots: Sửa lỗi lệch ngày khi tính điểm xoay trên dữ liệu intraday.adx: Khắc phục hiện tượng không hội tụ số khởi động giữa các nền tảng.macd: Chuẩn hoá chính xác giá trị khởi động của chuỗi EMA 12 và EMA 26.
4. Báo cáo hiệu năng thực tế (Benchmark Results)
Môi trường và phương pháp đo kiểm
- Phần cứng thử nghiệm: Apple M4 (10 nhân, 16 GB RAM, macOS arm64), đo ngày 06/10/2026, một luồng.
- Phần mềm:
vnstock_quant0.1.0 (lõi Rust biên dịch ở chế độ--release), Python 3.14, numpy 2.2, pandas 2.3. - Dữ liệu đo: Dữ liệu tổng hợp 5.000 phiên ngày (khoảng 20 năm), mô phỏng bước giá và đặc thù thị trường chứng khoán Việt Nam.
- Lưu ý: Đây là số đo tham khảo trên một máy cụ thể; máy khác cho số khác. Tỷ lệ giữa các thư viện ổn định hơn số tuyệt đối.
- Tiêu chuẩn đo lường: Chạy lặp tối thiểu 7 lần sau 2 lượt warm-up; tính giá trị trung vị (median).
Tốc độ tính toán trọn bộ 58 chỉ báo kỹ thuật
Bảng so sánh thời gian thực thi khi tính toàn bộ 58 chỉ báo cho cùng một mã cổ phiếu (5.000 phiên):
| Thư viện thực thi | Thời gian xử lý (58 chỉ báo) | Tương quan tốc độ so với thế hệ cũ | Định dạng đầu ra |
|---|---|---|---|
vnstock_quant (Lõi Rust) | 1.79 ms | Nhanh hơn 77.4x | Bộ đệm số nguyên/thực phẳng |
vnstock_quant (API chuẩn) | 5.34 ms | Nhanh hơn 25.9x | pandas.DataFrame có đủ index & tên cột |
pandas-ta (Python + Numba) | 127.0 ms | Chậm hơn | pandas.DataFrame |
vnstock_ta thế hệ cũ | 138.5 ms | Mốc cơ sở (1.0x) | pandas.DataFrame |
Ở tốc độ 5.34 ms, phần tính 58 chỉ báo cho một cổ phiếu chiếm rất ít thời gian so với việc tải dữ liệu, nên bạn có thể tính lại chỉ báo cho chuỗi nhiều năm mỗi khi dữ liệu cập nhật.
So sánh thời gian xử lý từng chỉ báo tiêu biểu
Thời gian đo bằng đơn vị micro giây (µs). :
| Chỉ báo kỹ thuật | vnstock_quant (API) | Lõi Rust thuần | vnstock_ta thế hệ cũ | Mức tăng tốc độ |
|---|---|---|---|---|
sma | 21.4 µs | 7.1 µs | 317.0 µs | 14.8x |
ema | 22.6 µs | 8.4 µs | 92.6 µs | 4.1x |
smma (RMA) | 35.3 µs | 19.8 µs | 20.224.0 µs | 573.0x |
adx | 144.0 µs | 96.5 µs | 2.300.0 µs | 15.9x |
supertrend | 86.2 µs | 38.6 µs | 29.790.0 µs | 346.0x |
rsi | 28.1 µs | 15.2 µs | 366.0 µs | 13.0x |
cci | 57.1 µs | 31.4 µs | 13.088.0 µs | 229.0x |
linreg | 42.0 µs | 31.5 µs | 9.893.0 µs | 235.0x |
psar | 71.0 µs | 16.8 µs | 3.124.0 µs | 44.0x |
macd | 58.8 µs | 29.8 µs | 604.0 µs | 10.3x |
bbands | 67.4 µs | 28.5 µs | 640.0 µs | 9.5x |
atr | 34.7 µs | 9.7 µs | 660.0 µs | 19.0x |
Năng lực tính toán trên quy mô toàn sàn (1.600 mã chứng khoán)
Mô phỏng bài toán lọc cổ phiếu hằng ngày: tính 15 chỉ báo cốt lõi (sma, ema, wma, rsi, macd, bbands, atr, stoch, adx, cci, willr, mfi, obv, vwap, hlc3) trên 1.600 chuỗi dữ liệu tổng hợp, cỡ toàn bộ mã niêm yết tại HOSE, HNX và UPCoM (mỗi chuỗi 1.250 phiên ~ 5 năm, dữ liệu đã nằm trong bộ nhớ):
| Thư viện thực hiện | Thời gian xử lý toàn bộ 1.600 mã | Thời gian trung bình mỗi mã |
|---|---|---|
vnstock_quant | 1.21 giây | 0.75 ms / mã |
vnstock_ta thế hệ cũ | 14.01 giây | 8.76 ms / mã |
pandas-ta | 12.76 giây | 7.97 ms / mã |
Nhờ lõi Rust, thời gian tính chỉ báo kỹ thuật cho cỡ toàn bộ cổ phiếu trên sàn giảm từ 14 giây xuống chỉ còn hơn 1 giây (nhanh hơn 11.6 lần).
Khả năng co giãn theo kích thước dữ liệu
Thử nghiệm độ phức tạp thuật toán với chuỗi dữ liệu nến 1 phút kéo dài từ 1.000 đến 1.000.000 phiên trên tổ hợp 13 chỉ báo:
Kích thước chuỗi vnstock_quant vnstock_ta cũ Tương quan
-------------------------------------------------------------------------
1.000 phiên 0.53 ms 14.3 ms 27.0x
10.000 phiên 1.28 ms 111.9 ms 87.1x
100.000 phiên 8.86 ms 819.7 ms 92.6x
1.000.000 phiên 97.10 ms 8.171.3 ms 84.2x
Lõi Rust duy trì sự tối ưu hoá bộ nhớ đệm CPU L1/L2/L3, giúp tốc độ xử lý nhanh hơn từ 84x đến 92x khi xử lý dữ liệu nến phút.
5. Chuẩn hoá học thuật & Khắc phục sai lệch mô hình Tài chính, Rủi ro, Danh mục
Chất lượng của vnstock_quant không chỉ nằm ở tốc độ của các chỉ báo kỹ thuật, mà còn nằm ở sự chuẩn hoá học thuật nghiêm ngặt trong phân tích BCTC, quản lý danh mục và định lượng rủi ro.
Khắc phục các sai lệch kinh điển trong phân tích tài chính (FA)
Quá trình rà soát và đối chiếu thực nghiệm đã xử lý các lỗi tính toán định lượng hay gặp sau:
- Lỗi không quy đổi dòng tiền theo năm: Một lỗi hay gặp khi tự tính là chia lợi nhuận của một quý đơn lẻ cho vốn chủ sở hữu cuối kỳ mà không quy đổi theo năm ( hoặc 4 quý gần nhất - TTM), dẫn đến ROE bị tính sai lệch gấp 3–4 lần.
vnstock_quanttự động chuẩn hoá theo chu kỳ 4 quý gần nhất (TTM) hoặc quy đổi theo năm chính xác. - Lỗi không lấy bình quân mẫu số: Các chỉ số hiệu quả hoạt động (ROA, ROE, Vòng quay tài sản) chuẩn CFA bắt buộc phải tính trên tài sản/vốn chủ bình quân .
vnstock_quantáp dụng mặc định phép tính bình quân này. - Minh bạch bằng cột
reason: Khi dữ liệu BCTC của doanh nghiệp gặp bất thường (như vốn chủ sở hữu âm do lỗ luỹ kế, hoặc doanh nghiệp mới niêm yết chưa đủ 4 quý lịch sử), hàm tính toán không trả về giá trị sai lệch gây hiểu lầm mà trả về mã giải trình rõ ràng (NEGATIVE_EQUITY,INSUFFICIENT_PERIODS), để bộ lọc tự động của bạn nhận biết và bỏ qua điểm số liệu đó.
Chuẩn hoá đo lường rủi ro (Risk)
- Chuẩn hoá tỷ số Sharpe: Tính toán chuẩn mực với tử số là giá trị trung bình số học của phần bù rủi ro kỳ vọng () chia cho độ lệch chuẩn số học, tránh lỗi dùng CAGR (trung bình hình học) ở tử số khiến Sharpe ratio bị đảo dấu âm/dương sai lệch.
- Thích ứng với biên độ trần/sàn Việt Nam: Với quy định biên độ giá (HOSE) hay (HNX), phân phối lợi suất chứng khoán Việt Nam có hiện tượng đuôi béo và bất đối xứng rõ rệt.
vnstock_quantcung cấp mô hình Cornish-Fisher VaR/CVaR và chỉ số thanh khoản Amihud (2002) được kiểm định theo đúng công thức bài báo khoa học gốc. - Căn chỉnh lịch giao dịch thực tế: Khắc phục lỗi ghép dữ liệu theo số thứ tự dòng thay vì theo ngày giao dịch (Trading Date Index), tránh lệch phiên khi cổ phiếu bị tạm ngừng giao dịch.
Quản lý danh mục & Tối ưu hoá (Portfolio)
- Tái cân bằng theo dòng thời gian:
portfolio_returnstính lợi suất danh mục theo lịch tái cân bằng (tháng, quý, năm hoặc khi tỷ trọng lệch quá dải cho phép), tỷ trọng trôi theo giá giữa hai lần tái cân bằng. Việc tỷ trọng mục tiêu không dùng thông tin tương lai (Lookahead Bias) do bạn tự kiểm soát. - Tối ưu hoá chỉ mua (Long-only Constrained Optimization): Giải thuật tối ưu hoá danh mục phương sai tối thiểu (GMV) và tỷ trọng rủi ro bằng nhau (ERC) được tích hợp điều kiện biên chặt chẽ: , , và quy tắc làm tròn lô 100 cổ phiếu theo quy định giao dịch tại Việt Nam, không âm thầm trả về danh mục chia đều khi solver gặp ràng buộc khó.
- Tính cả chi phí giao dịch: Truyền bộ tham số
pm.VN_COSTS(phí môi giới , thuế bán chứng khoán ) vàoportfolio_returnsđể lợi suất danh mục theo lịch tái cân bằng đã trừ phí và thuế.
6. Tổng kết giá trị mang lại cho người dùng
| Tiêu chí | vnstock_ta 1.x hoặc tự ghép nhiều thư viện | Vnstock Quant thế hệ 5 |
|---|---|---|
| Cài đặt & Môi trường | Một số gói cần trình biên dịch C hoặc TA-Lib C, tuỳ máy | Gói nhị phân dựng sẵn, cài trong 1 lệnh duy nhất |
| Kiến trúc phát triển | Ghép 4–5 thư viện riêng, mỗi thư viện một quy ước | Lõi Rust an toàn bộ nhớ kết hợp lớp bọc Python tinh gọn |
| Tốc độ thực thi | 138.5 ms (58 chỉ báo) | 5.34 ms (Nhanh hơn 25.9 lần) |
| Xử lý quy mô toàn sàn | 14.0 giây (1.600 mã) | 1.21 giây (Nhanh hơn 11.6 lần) |
| Độ tin cậy số học | vnstock_ta 1.x: 16 chỉ báo lệch định nghĩa gốc | 34 chỉ báo khớp TA-Lib C, 14 chỉ báo khớp dữ liệu kiểm thử QuantConnect LEAN |
| Quy chuẩn tài chính | Tuỳ thư viện | Chuẩn hoá theo CFA® Institute Curriculum |
| Đặc thù thị trường VN | Thường chưa có sẵn quy ước riêng cho Việt Nam | Tích hợp lô 100, biên độ trần/sàn, thuế phí Việt Nam |
| Hỗ trợ AI Agent | Tuỳ thư viện | Sẵn sàng tích hợp qua hệ sinh thái kỹ năng vnai |
vnstock_quant chạy bộ kiểm thử hồi quy tự động trước mỗi bản phát hành.
Đọc tiếp
- Chỉ báo kỹ thuật — Tính toán 58 chỉ báo kỹ thuật với lõi Rust.
- Chỉ số tài chính — Tự tính 99 chỉ số BCTC VAS và mô hình dòng tiền CFA.
- Đo lường rủi ro và hiệu suất — 33 thước đo hiệu suất và rủi ro chuẩn CFA.
- Chuyển đổi từ vnstock_ta — Hướng dẫn nâng cấp từ vnstock_ta 1.x sang vnstock_quant.