Vnstock Logo

Kiểm định chất lượng & hiệu năng

Mở rộng

Mục lục

Agent Guide Notebook minh hoạ

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:

  1. 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.
  2. 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ằng pip install -U --extra-index-url https://vnstocks.com/api/packages vnstock_quant, hoặc vnstock install vnstock_quant khi đã có vnstock thế 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 địnhPhạm vi đối chiếuTiêu chí đánh giá
TA-Lib C Core 0.8.134 chỉ báo kỹ thuật cổ điểnThư viện chỉ báo C phổ biến; sai số tương đối ≤10−12\le 10^{-12}
QuantConnect LEAN14 chỉ báo kỹ thuật nâng cao & dữ liệu SPYBộ dữ liệu kiểm thử chỉ báo của LEAN; sai số ≤10−8\le 10^{-8}
CFA® Program Curriculum99 chỉ số BCTC VAS, phân rã rủi ro Euler, MWRChuẩ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 & QuantStats33 thước đo rủi ro và hiệu suấtKhung định lượng kiểm nghiệm chéo các hệ số Sharpe, Sortino, VaR
pyxirrHộ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 & SciPyCá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 0.0e+000.0\text{e}+00 hoặc ≤10−12\le 10^{-12}).
  • 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ố ≤10−8\le 10^{-8}).
  • 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áoNhómMức tin cậyChuẩn đối chiếuSai số vs TA-Lib CĐối chiếu LEAN / Định nghĩa gốcSo với thế hệ cũ
smaTrendATA-Lib SMA0.0e+00—Khớp chuẩn (1.2e-15)
emaTrendATA-Lib EMA0.0e+00LEAN spy_ema.csv: 5.7e-14Khớp chuẩn (3.8e-16)
wmaTrendATA-Lib WMA4.2e-15—Khớp chuẩn (2.2e-16)
hmaTrendAAlan Hull / TA-Lib1.5e-14LEAN spy_hma.txt: 5.0e-08Khớp chuẩn (5.0e-16)
smmaTrendAJ. Welles Wilder RMA9.2e-16—Khớp chuẩn (0.0e+00)
almaTrendBArnaud Legoux / LEAN—LEAN spy_alma.txt: 5.0e-08Khớp chuẩn (3.6e-16)
vwmaTrendBLEAN VWMA—LEAN spy_with_vwma.csv: 2.8e-14Khớp chuẩn (5.1e-16)
adxTrendAWilder ADX/DI0.0e+00LEAN spy_with_adx.txt: hội tụ ≤0.01\le 0.01Khắc phục lệch khởi động
psarTrendATA-Lib SAREXT / LEAN0.0e+00LEAN spy_sarext.txt: 5.7e-14Đã sửa lỗi logic
supertrendTrendBTradingView / LEAN—LEAN dwac_supertrend.txt: 5.0e-08Đã sửa lỗi logic
dmTrendATA-Lib PLUS/MINUS_DM0.0e+00Wilder sumsĐã sửa lỗi sai lệch
linregTrendATA-Lib LINEARREG6.6e-14—Khớp chuẩn (2.0e-15)
aroonTrendATA-Lib AROON0.0e+00—Khớp chuẩn (1.4e-15)
rsiMomentumATA-Lib RSI (Wilder)0.0e+00LEAN spy_with_indicators.txt: 5.0e-06Khắc phục lệch khởi động
stochMomentumATA-Lib STOCH0.0e+00LEAN spy_with_stoch12k3.txt: 3.7e-04Khớp chuẩn (1.1e-13)
stochrsiMomentumATradingView / TA-Lib0.0e+00LEAN spy_with_StochRSI.csv: 3.6e-13Khắc phục lệch khởi động
momMomentumATA-Lib MOM0.0e+00—Khớp chuẩn (0.0e+00)
rocMomentumATA-Lib ROC0.0e+00LEAN spy_with_rocp50.txt: 1.0e-05Khớp chuẩn (1.1e-14)
aoMomentumBBill Williams / LEAN—LEAN spy_ao.txt: 4.8e-13Khớp chuẩn (3.8e-11)
cciMomentumADonald Lambert CCI1.7e-12LEAN spy_with_cci.txt: 2.2e-03Đã sửa lỗi Mean Deviation
willrMomentumALarry Williams %R0.0e+00LEAN spy_with_williamsR14.txt: 4.0e-04Khớp chuẩn (3.4e-15)
tsiMomentumBWilliam Blau / LEAN—LEAN spy_tsi.csv: 2.1e-14Khắc phục lệch khởi động
cmoMomentumAChande Momentum Osc2.7e-16Chuẩn Chande unsmoothedĐã sửa lỗi logic
uoMomentumALarry Williams ULTOSC0.0e+00LEAN spy_ultosc.txt: 5.7e-14Khớp chuẩn (2.2e-16)
fisherMomentumCJohn Ehlers Transform—Công thức Ehlers gốc: sai số ≤10−9\le 10^{-9}Khắc phục lệch khởi động
cgMomentumCEhlers Center of Gravity—Công thức Ehlers gốc: sai số ≤10−9\le 10^{-9}Đã sửa lỗi tính toán
kstMomentumBMartin Pring / LEAN—LEAN spy_with_kst.csv: 8.5e-14Đã sửa lỗi trọng số
macdMomentumAGerald Appel MACD0.0e+00LEAN spy_with_macd.txt: 5.0e-06Khắc phục lệch khởi động
bbandsVolatilityATA-Lib BBANDS0.0e+00LEAN spy_bollinger_bands.txt: 1.1e-04Khớp chuẩn (8.9e-12)
kcVolatilityBChester Keltner / TV—Công thức Keltner chuẩn True RangeKhớp chuẩn (3.7e-16)
atrVolatilityATA-Lib ATR (Wilder)0.0e+00Wilder RMA trên True RangeKhắc phục lệch khởi động
stdevVolatilityATA-Lib STDDEV0.0e+00Phương sai tổng thể (ddof=0)Đã sửa lỗi bậc tự do
donchianVolatilityARichard Donchian0.0e+00LEAN spy_with_don50.txt: 0.0e+00Khớp chuẩn (0.0e+00)
true_rangeVolatilityATA-Lib TRANGE0.0e+00LEAN spy_tr.txt: 7.1e-15Khớp chuẩn (0.0e+00)
squeezeVolatilityCJohn Carter TTM Squeeze—LazyBear TTM Squeeze: sai số ≤10−7\le 10^{-7}Đã sửa lỗi đảo dải Keltner
squeeze_proVolatilityCCarter TTM Squeeze Pro—Đa ngưỡng Keltner (2.0 / 1.5 / 1.0)Đã sửa lỗi momentum
obvVolumeAJoe Granville OBV0.0e+00LEAN spy_with_obv.txt: 1.0e-04Đã sửa lỗi nến đứng giá
cmfVolumeBMarc Chaikin CMF—LEAN spy_cmf.txt: 1.5e-06Khớp chuẩn (2.8e-14)
adVolumeAChaikin A/D Line0.0e+00LEAN spy_ad.txt: 5.0e-06Khớp chuẩn (6.9e-14)
vpVolumeCVolume Profile—Bất biến bảo toàn tổng khối lượngĐã sửa lỗi phân bổ bin
vwapVolumeBAnchored Intraday VWAP—Nhóm chu kỳ Ngày / Tuần / Tháng: ≤10−9\le 10^{-9}Khớp chuẩn (0.0e+00)
pvoVolumeAPercentage Volume Osc0.0e+00TA-Lib PPO trên khối lượngKhắc phục lệch khởi động
mfiVolumeAMoney Flow Index8.9e-14Chuẩn Gene Quong & Avrum SoudackĐã sửa lỗi mẫu số 0
pivotsStatisticsCPivot Points Standard—Traditional, Woodie, DeMark chuẩnĐã sửa lỗi khung thời gian
varianceStatisticsATA-Lib VAR0.0e+00LEAN spy_var.txt: 1.1e-10Đã sửa lỗi bậc tự do
hl2StatisticsATA-Lib MEDPRICE0.0e+00(H+L)/2(H + L) / 2Khớp chuẩn (0.0e+00)
hlc3StatisticsATA-Lib TYPPRICE0.0e+00(H+L+C)/3(H + L + C) / 3Khớp chuẩn (0.0e+00)
ohlc4StatisticsATA-Lib AVGPRICE0.0e+00(O+H+L+C)/4(O + H + L + C) / 4Khớp chuẩn (3.1e-16)
midpriceStatisticsATA-Lib MIDPRICE0.0e+00LEAN spy_midprice.txt: 2.8e-14Khớ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:

  1. 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.
  2. supertrend: Sửa lỗi trôi dải band trong các đợt biến động mạnh kéo dài.
  3. dm: Sửa thuật toán cộng dồn Wilder Directional Movement.
  4. cci: Sửa phép tính độ lệch tuyệt đối trung bình (Mean Absolute Deviation).
  5. stdev & variance: Sửa việc nhầm lẫn giữa độ lệch chuẩn mẫu (N−1N-1) và độ lệch chuẩn tổng thể (NN), đồng bộ hoàn toàn với TA-Lib C.
  6. 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).
  7. 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.
  8. 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.
  9. cmo: Sửa phép làm mượt không đúng định nghĩa nguyên bản của Tushar Chande.
  10. cg & fisher: Sửa hiện tượng tràn số thực khi giá trị tiến gần biên độ dao động.
  11. kst: Sửa hệ số nhân trọng số 4 khung thời gian của Martin Pring.
  12. 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.
  13. 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.
  14. pivots: Sửa lỗi lệch ngày khi tính điểm xoay trên dữ liệu intraday.
  15. 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.
  16. 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_quant 0.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 thiThờ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 msNhanh hơn 77.4xBộ đệm số nguyên/thực phẳng
vnstock_quant (API chuẩn)5.34 msNhanh hơn 25.9xpandas.DataFrame có đủ index & tên cột
pandas-ta (Python + Numba)127.0 msChậm hơnpandas.DataFrame
vnstock_ta thế hệ cũ138.5 msMốc cơ sở (1.0x)pandas.DataFrame
Lợi ích thực tế cho người dùng

Ở 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). 1 ms=1.000 µs1\text{ ms} = 1.000\text{ µs}:

Chỉ báo kỹ thuậtvnstock_quant (API)Lõi Rust thuầnvnstock_ta thế hệ cũMức tăng tốc độ
sma21.4 µs7.1 µs317.0 µs14.8x
ema22.6 µs8.4 µs92.6 µs4.1x
smma (RMA)35.3 µs19.8 µs20.224.0 µs573.0x
adx144.0 µs96.5 µs2.300.0 µs15.9x
supertrend86.2 µs38.6 µs29.790.0 µs346.0x
rsi28.1 µs15.2 µs366.0 µs13.0x
cci57.1 µs31.4 µs13.088.0 µs229.0x
linreg42.0 µs31.5 µs9.893.0 µs235.0x
psar71.0 µs16.8 µs3.124.0 µs44.0x
macd58.8 µs29.8 µs604.0 µs10.3x
bbands67.4 µs28.5 µs640.0 µs9.5x
atr34.7 µs9.7 µs660.0 µs19.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ệnThời gian xử lý toàn bộ 1.600 mãThời gian trung bình mỗi mã
vnstock_quant1.21 giây0.75 ms / mã
vnstock_ta thế hệ cũ14.01 giây8.76 ms / mã
pandas-ta12.76 giây7.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:

  1. 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 (x4x4 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_quant tự độ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.
  2. 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 Đaˆˋu kyˋ+Cuoˆˊi kyˋ2\frac{\text{Đầu kỳ} + \text{Cuối kỳ}}{2}. vnstock_quant áp dụng mặc định phép tính bình quân này.
  3. 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 (R−Rf‾\overline{R - R_f}) 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á ±7%\pm 7\% (HOSE) hay ±10%\pm 10\% (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_quant cung 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_returns tí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ẽ: wi≥0w_i \ge 0, ∑wi=1\sum w_i = 1, 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 1/N1/N 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 0.15%0.15\%, thuế bán chứng khoán 0.1%0.1\%) vào portfolio_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ệnVnstock Quant thế hệ 5
Cài đặt & Môi trườngMột số gói cần trình biên dịch C hoặc TA-Lib C, tuỳ máyGói nhị phân dựng sẵn, cài trong 1 lệnh duy nhất
Kiến trúc phát triểnGhép 4–5 thư viện riêng, mỗi thư viện một quy ướcLõi Rust an toàn bộ nhớ kết hợp lớp bọc Python tinh gọn
Tốc độ thực thi138.5 ms (58 chỉ báo)5.34 ms (Nhanh hơn 25.9 lần)
Xử lý quy mô toàn sàn14.0 giây (1.600 mã)1.21 giây (Nhanh hơn 11.6 lần)
Độ tin cậy số họcvnstock_ta 1.x: 16 chỉ báo lệch định nghĩa gốc34 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ínhTuỳ thư việnChuẩn hoá theo CFA® Institute Curriculum
Đặc thù thị trường VNThường chưa có sẵn quy ước riêng cho Việt NamTích hợp lô 100, biên độ trần/sàn, thuế phí Việt Nam
Hỗ trợ AI AgentTuỳ thư việnSẵ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