quant-agent 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,450 @@
1
+ Metadata-Version: 2.4
2
+ Name: quant-agent
3
+ Version: 0.3.0
4
+ Summary: Vietnam Quantitative Trading and Market Data Agent
5
+ Author: quant-agent
6
+ License-Expression: MIT
7
+ Keywords: vietnam,stock,quant,trading,agent,finance,algorithmic-trading
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Operating System :: OS Independent
10
+ Classifier: Topic :: Office/Business :: Financial :: Investment
11
+ Requires-Python: >=3.10
12
+ Description-Content-Type: text/markdown
13
+ Requires-Dist: pandas>=1.5.0
14
+ Requires-Dist: requests>=2.28.0
15
+ Requires-Dist: beautifulsoup4>=4.11.0
16
+ Requires-Dist: plotly>=5.10.0
17
+ Requires-Dist: python-dateutil>=2.8.0
18
+
19
+ # quant-agent: Thư viện Phân tích Dữ liệu Chứng khoán & Giao dịch Việt Nam
20
+
21
+ [![Python](https://img.shields.io/badge/Python-3.10%2B-blue.svg)](https://www.python.org/)
22
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
23
+ [![Market Data: Free](https://img.shields.io/badge/Market%20Data-Free%20%2F%20No%20Key-brightgreen.svg)]()
24
+ [![Smoke Test](https://img.shields.io/badge/Smoke%20Test-45%2F48%20PASS-success.svg)]()
25
+
26
+ **quant-agent** (Python package: quant_agent) là thư viện Python mã nguồn mở cung cấp dữ liệu thị trường tài chính Việt Nam (cổ phiếu, chỉ số thị trường, phái sinh, quỹ mở) dưới dạng `pandas.DataFrame` đã được chuẩn hóa.
27
+
28
+ Thư viện được thiết kế theo triết lý **Zero-Friction Market Data**: toàn bộ các hàm đọc dữ liệu thị trường đều hoạt động ngay lập tức mà không cần đăng ký tài khoản hay API key trả phí. Ngoài ra, thư viện cung cấp phân hệ kết nối giao dịch tự động qua tài khoản chứng khoán DNSE.
29
+
30
+ ---
31
+
32
+ ## 📑 Mục lục
33
+
34
+ 1. [Tính năng nổi bật](#-tính-năng-nổi-bật)
35
+ 2. [Hiện trạng nguồn dữ liệu (Cập nhật 2026)](#-hiện-trạng-nguồn-dữ-liệu-cập-nhật-2026)
36
+ 3. [Cài đặt](#-cài-đặt)
37
+ 4. [Kiến trúc & Code Flow](#-kiến-trúc--code-flow)
38
+ 5. [Hướng dẫn sử dụng nhanh](#-hướng-dẫn-sử-dụng-nhanh)
39
+ - [1. Danh sách mã niêm yết](#1-danh-sách-mã-niêm-yết)
40
+ - [2. Dữ liệu giá lịch sử & Kỹ thuật (OHLC)](#2-dữ-liệu-giá-lịch-sử--kỹ-thuật-ohlc)
41
+ - [3. Dữ liệu cơ bản doanh nghiệp](#3-dữ-liệu-cơ-bản-doanh-nghiệp)
42
+ - [4. Báo cáo tài chính & Chỉ số định giá](#4-báo-cáo-tài-chính--chỉ-số-định-giá)
43
+ - [5. Bảng giá, Sổ lệnh & Dữ liệu Intraday](#5-bảng-giá-sổ-lệnh--dữ-liệu-intraday)
44
+ - [6. Dữ liệu Quỹ mở (Fmarket)](#6-dữ-liệu-quỹ-mở-fmarket)
45
+ - [7. Trực quan hóa dữ liệu (Plotly Charts)](#7-trực-quan-hóa-dữ-liệu-plotly-charts)
46
+ - [8. Xuất dữ liệu sang AmiBroker](#8-xuất-dữ-liệu-sang-amibroker)
47
+ - [9. Giao dịch tự động qua Broker (DNSE)](#9-giao-dịch-tự-động-qua-broker-dnse)
48
+ 6. [Kiểm thử sức khỏe hệ thống (Smoke Test)](#-kiểm-thử-sức-khỏe-hệ-thống-smoke-test)
49
+ 7. [Tuyên bố miễn trừ trách nhiệm](#-tuyên-bố-miễn-trừ-trách-nhiệm)
50
+
51
+ ---
52
+
53
+ ## 🚀 Tính năng nổi bật
54
+
55
+ - **Dữ liệu giá OHLC toàn diện**: Hỗ trợ cổ phiếu, chứng quyền, chỉ số (VNINDEX, VN30, HNX, UPCOM) và phái sinh (VN30F1M, VN30F2M...) với các khung thời gian 1 ngày, 1 giờ, 30 phút, 15 phút, 1 phút.
56
+ - **Dữ liệu tài chính doanh nghiệp chuyên sâu**: Báo cáo tài chính (CĐKT, KQKD, LCTT) chuẩn hóa theo quý/năm; chỉ số P/E, P/B, ROE, ROA, EPS; hồ sơ doanh nghiệp, cơ cấu cổ đông, ban lãnh đạo, giao dịch nội bộ, sự kiện và tin tức.
57
+ - **Sổ lệnh & Intraday thời gian thực**: Xem bảng giá trực tiếp, độ sâu sổ lệnh (Top 3 mức giá Mua/Bán tốt nhất) và chi tiết từng lệnh khớp trong phiên.
58
+ - **Quỹ mở Việt Nam**: Danh mục tài sản, ngành nắm giữ, hiệu suất sinh lời và lịch sử biến động NAV của hơn 60 quỹ mở trên Fmarket.
59
+ - **Biểu đồ trực quan chuẩn Quant**: Tích hợp vẽ biểu đồ nến Candlestick kèm Volume, đường MA và Bollinger Bands tương tác qua Plotly.
60
+ - **Xuất dữ liệu AmiBroker**: Định dạng CSV tương thích ngay lập tức với phần mềm phân tích kỹ thuật AmiBroker.
61
+ - **Đặt lệnh giao dịch thật qua Broker**: Module `broker.dnse` hỗ trợ đăng nhập JWT, xác thực 2 lớp OTP/Smart OTP, kiểm tra sức mua (PPSE), đặt lệnh, tra cứu và hủy lệnh.
62
+
63
+ ---
64
+
65
+ ## 📡 Hiện trạng nguồn dữ liệu (Cập nhật 2026)
66
+
67
+ Hệ thống đã được tái cấu trúc và phân lập tầng nguồn dữ liệu (`quant_agent/sources/`):
68
+
69
+ | Phân hệ / Dữ liệu | Nguồn upstream | Trạng thái | Ghi chú kỹ thuật |
70
+ |---|---|---|---|
71
+ | **Dữ liệu OHLC ngắn hạn / Intraday** | DNSE (Entrade Gateway) | 🟢 Hoạt động tốt | Hỗ trợ nến 1D, 1h, 30m, 15m, 1m (khung < 1D giới hạn 90 ngày gần nhất) |
72
+ | **Dữ liệu OHLC dài hạn** | VCI (VietCap Securities) | 🟢 Hoạt động tốt | Tự động phân trang, trả tối đa 1000 nến/request |
73
+ | **Danh sách mã chứng khoán** | Wifeed API / Local CSV | 🟢 Hoạt động tốt | SSI API thường bị chặn bởi Cloudflare bot-detection |
74
+ | **Hồ sơ & Quản trị doanh nghiệp** | VCI (VietCap Securities) | 🟢 Hoạt động tốt | Tổng quan, mô tả KD, cổ đông lớn, ban lãnh đạo, công ty con, tin tức, sự kiện |
75
+ | **Báo cáo & Chỉ số tài chính** | VCI (VietCap Securities) | 🟢 Hoạt động tốt | BCTC, chuỗi tài chính, P/E, P/B, ROE, ROA (tự động handshake session cookie) |
76
+ | **Sổ lệnh độ sâu (Order Book)** | VPS (banggia.vps.com.vn) | 🟢 Hoạt động tốt | Top 3 bước giá Mua / Bán, bước khối lượng, room nước ngoài |
77
+ | **Bảng giá & Khớp lệnh Intraday** | VCI (trading.vietcap.com.vn) | 🟢 Hoạt động tốt | Bảng giá trực tiếp, từng lệnh khớp lệnh mua/bán chủ động |
78
+ | **Dữ liệu Quỹ mở** | Fmarket (api.fmarket.vn) | 🟢 Hoạt động tốt | Toàn bộ danh sách quỹ, NAV history, top holding cổ phiếu/trái phiếu |
79
+ | **Giao dịch Broker DNSE** | Entrade Order Service | 🟢 Hoạt động tốt | Yêu cầu tài khoản giao dịch thực tế |
80
+
81
+ ---
82
+
83
+ ## 📦 Cài đặt
84
+
85
+ ### Yêu cầu môi trường
86
+ - Python >= 3.10
87
+ - Kết nối Internet ổn định
88
+
89
+ ### Cài đặt thư viện
90
+ Clone repository và cài đặt ở chế độ editable hoặc build trực tiếp:
91
+
92
+ ```bash
93
+ # Clone repository
94
+ git clone https://github.com/quant-agent/quant-agent.git
95
+ cd quant-agent
96
+
97
+ # Cài đặt các gói phụ thuộc
98
+ pip install -r requirements.txt
99
+
100
+ # Hoặc cài đặt trực tiếp dạng package
101
+ pip install -e .
102
+ ```
103
+
104
+ ---
105
+
106
+ ## 🏗 Kiến trúc & Code Flow
107
+
108
+ ### 1. Sơ đồ kiến trúc phân tầng (Layered Architecture)
109
+
110
+ ```mermaid
111
+ graph TD
112
+ User["Lập trình viên / Quant Trader / Jupyter Notebook"]
113
+
114
+ subgraph "Tầng Public API (quant_agent/__init__.py)"
115
+ API["Public Functions (stock_historical_data, company_overview, price_board, ...)"]
116
+ end
117
+
118
+ subgraph "Tầng Domain Logic (Core Modules)"
119
+ TECH["technical.py<br>(OHLC, Intraday)"]
120
+ FUND["fundamental.py<br>(Profiles, Financials)"]
121
+ TRADE["trading.py<br>(Orderbook, Price Board)"]
122
+ FUNDS["funds.py<br>(Mutual Funds)"]
123
+ CHART["chart.py<br>(Plotly Visuals)"]
124
+ INTEG["integration.py<br>(AmiBroker Export)"]
125
+ BROKER["broker/dnse.py<br>(Authenticated Trading)"]
126
+ end
127
+
128
+ subgraph "Tầng HTTP Plumbing & Fail-Safe"
129
+ CLIENT["sources/http_client.py<br>(fetch, fetch_json)"]
130
+ COOKIE["sources/vci.py<br>(vci_session_cookies Handshake)"]
131
+ end
132
+
133
+ subgraph "Tầng Nguồn dữ liệu ngoài (Upstream Data Providers)"
134
+ VCI_API["VCI VietCap API<br>(Trading / IQ Service)"]
135
+ DNSE_API["DNSE / Entrade API<br>(Chart / User / Order)"]
136
+ VPS_API["VPS Banggia API<br>(Order Book)"]
137
+ FM_API["Fmarket API<br>(Mutual Funds)"]
138
+ WF_API["Wifeed API<br>(Stock List)"]
139
+ end
140
+
141
+ User --> API
142
+ API --> TECH
143
+ API --> FUND
144
+ API --> TRADE
145
+ API --> FUNDS
146
+ API --> CHART
147
+ API --> INTEG
148
+ API --> BROKER
149
+
150
+ TECH --> CLIENT
151
+ FUND --> CLIENT
152
+ FUND --> COOKIE
153
+ TRADE --> CLIENT
154
+ FUNDS --> CLIENT
155
+ BROKER --> CLIENT
156
+
157
+ CLIENT --> VCI_API
158
+ CLIENT --> DNSE_API
159
+ CLIENT --> VPS_API
160
+ CLIENT --> FM_API
161
+ CLIENT --> WF_API
162
+ ```
163
+
164
+ ### 2. Nguyên lý Code Flow
165
+
166
+ 1. **Top-Level Re-export Hub (`quant_agent/__init__.py`)**:
167
+ - Tất cả các hàm nghiệp vụ được re-export ra root namespace. Người dùng chỉ cần `import quant_agent as qa` và gọi `qa.stock_historical_data()`, `qa.company_overview()`, v.v. mà không cần quan tâm cấu trúc file bên dưới.
168
+
169
+ 2. **Cơ chế Fail-Safe & Fallback (`sources/http_client.py`)**:
170
+ - Mọi request HTTP đều đi qua `fetch_json()`.
171
+ - Nếu xảy ra lỗi mạng, timeout hoặc mã trạng thái HTTP khác 200, hàm sẽ in thông báo cảnh báo tường minh và trả về `None` thay vì quăng Exception làm crash chương trình.
172
+
173
+ 3. **Cơ chế Handshake Cookie Tự động (VCI Integration)**:
174
+ - Các endpoint thống kê tài chính chuyên sâu của VCI yêu cầu session cookie hợp lệ từ trang bảng giá.
175
+ - `quant_agent` tự động thực hiện handshake nhẹ qua `vci_session_cookies()` và đính kèm vào header request mà người dùng không cần can thiệp thủ công.
176
+
177
+ 4. **Luồng giao dịch bảo mật 2 lớp (`broker/dnse.py`)**:
178
+ - Tách biệt hoàn toàn khỏi các hàm đọc dữ liệu thị trường (Read-Only).
179
+ - Yêu cầu quy trình 2 bước: Đăng nhập nhận JWT Token -> Xác thực OTP nhận Trading Token -> Ký lệnh gửi lên sàn.
180
+
181
+ ---
182
+
183
+ ## 📖 Hướng dẫn sử dụng nhanh
184
+
185
+ ```python
186
+ import quant_agent as qa
187
+ ```
188
+
189
+ ### 1. Danh sách mã niêm yết
190
+
191
+ ```python
192
+ # Lấy danh sách toàn bộ cổ phiếu niêm yết (nguồn Wifeed - khuyến nghị)
193
+ df_symbols = qa.listing_companies(live=True, source='Wifeed')
194
+ print(df_symbols.head())
195
+
196
+ # Hoặc đọc từ file CSV offline do bạn tự quản lý
197
+ df_offline = qa.listing_companies(live=False, path='path/to/my_symbols.csv')
198
+ ```
199
+
200
+ ### 2. Dữ liệu giá lịch sử & Kỹ thuật (OHLC)
201
+
202
+ ```python
203
+ # Lấy dữ liệu OHLC hàng ngày (mặc định nguồn DNSE)
204
+ df_daily = qa.stock_historical_data(
205
+ symbol='TCB',
206
+ start_date='2026-01-01',
207
+ end_date='2026-08-30',
208
+ resolution='1D',
209
+ type='stock',
210
+ beautify=True, # Đổi giá sang đơn vị VNĐ
211
+ decor=True # Đặt 'Time' làm Index, đổi tên cột dạng Title Case (hỗ trợ TA-Lib)
212
+ )
213
+ print(df_daily.head())
214
+
215
+ # Lấy dữ liệu nến intraday (15 phút, 1 giờ...) - Giới hạn 90 ngày gần nhất
216
+ df_intraday = qa.stock_historical_data(
217
+ symbol='FPT',
218
+ start_date='2026-08-01',
219
+ end_date='2026-08-30',
220
+ resolution='15' # '1', '15', '30', '1H'
221
+ )
222
+
223
+ # Lấy nến chỉ số thị trường hoặc phái sinh
224
+ df_vnindex = qa.stock_historical_data(symbol='VNINDEX', type='index')
225
+ df_vn30f1m = qa.stock_historical_data(symbol='VN30F1M', type='derivative')
226
+
227
+ # Lấy dữ liệu OHLC dài hạn (nguồn VCI - VietCap, hỗ trợ tối đa 1000 nến/lần gọi)
228
+ df_longterm = qa.stock_historical_data(
229
+ symbol='TCB',
230
+ start_date='2022-01-01',
231
+ end_date='2026-08-30',
232
+ resolution='1D',
233
+ source='VCI'
234
+ )
235
+
236
+ # Hoặc gọi hàm chuyên biệt:
237
+ # df_longterm = qa.longterm_ohlc_data('TCB', start_date='2022-01-01', end_date='2026-08-30')
238
+ ```
239
+
240
+ ### 3. Dữ liệu cơ bản doanh nghiệp
241
+
242
+ ```python
243
+ symbol = 'TCB'
244
+
245
+ # 1. Tổng quan doanh nghiệp
246
+ df_overview = qa.company_overview(symbol)
247
+
248
+ # 2. Hồ sơ mô tả hoạt động kinh doanh (đã làm sạch thẻ HTML)
249
+ df_profile = qa.company_profile(symbol)
250
+
251
+ # 3. Danh sách cổ đông lớn
252
+ df_shareholders = qa.company_large_shareholders(symbol)
253
+
254
+ # 4. Ban lãnh đạo & Cán bộ chủ chốt
255
+ df_officers = qa.company_officers(symbol)
256
+
257
+ # 5. Danh sách công ty con & liên kết
258
+ df_subsidiaries = qa.company_subsidiaries_listing(symbol)
259
+
260
+ # 6. Lịch sử giao dịch nội bộ / cổ đông lớn
261
+ df_insiders = qa.company_insider_deals(symbol)
262
+
263
+ # 7. Sự kiện doanh nghiệp (cổ tức, chia tách, ĐHCĐ, M&A)
264
+ df_events = qa.company_events(symbol)
265
+
266
+ # 8. Tin tức doanh nghiệp mới nhất
267
+ df_news = qa.company_news(symbol)
268
+
269
+ # 9. Lịch sử chi trả cổ tức
270
+ df_div = qa.dividend_history(symbol)
271
+
272
+ # 10. Biên độ giá & Room ngoại
273
+ df_volatility = qa.ticker_price_volatility(symbol)
274
+ ```
275
+
276
+ ### 4. Báo cáo tài chính & Chỉ số định giá
277
+
278
+ ```python
279
+ symbol = 'HPG'
280
+
281
+ # Lấy Báo cáo tài chính theo năm hoặc quý (BalanceSheet, IncomeStatement, CashFlow)
282
+ df_bs = qa.financial_report(symbol, report_type='BalanceSheet', frequency='Quarterly')
283
+ df_is = qa.financial_report(symbol, report_type='IncomeStatement', frequency='Yearly')
284
+ df_cf = qa.financial_report(symbol, report_type='CashFlow', frequency='Yearly')
285
+
286
+ # Chuỗi thời gian chỉ tiêu tài chính
287
+ df_flow = qa.financial_flow(symbol, report_type='incomestatement', report_range='quarterly')
288
+
289
+ # Chỉ số tài chính chuyên sâu (P/E, P/B, ROE, ROA, EPS, Biên lợi nhuận...)
290
+ df_ratios_yearly = qa.financial_ratio(symbol, report_range='yearly', is_all=True)
291
+ df_ratios_quarterly = qa.financial_ratio(symbol, report_range='quarterly')
292
+
293
+ # So sánh chỉ số tài chính nhiều cổ phiếu cùng kỳ
294
+ df_compare = qa.financial_ratio_compare(symbol_ls=['HPG', 'NKG', 'HSG'], frequency='Quarterly')
295
+ print(df_compare)
296
+
297
+ # Lịch sử biến động P/E và P/B theo từng quý
298
+ df_pe_pb = qa.stock_evaluation(symbol)
299
+ ```
300
+
301
+ ### 5. Bảng giá, Sổ lệnh & Dữ liệu Intraday
302
+
303
+ ```python
304
+ # Bảng giá thời gian thực (Top 3 mức giá mua/bán, giá khớp lệnh)
305
+ df_board = qa.price_board(['TCB', 'SSI', 'FPT'])
306
+
307
+ # Sổ lệnh độ sâu (VPS Order Book)
308
+ df_depth = qa.price_depth('TCB,SSI,VND')
309
+
310
+ # Từng giao dịch khớp lệnh trong phiên (Tick-by-tick intraday trades)
311
+ df_trades = qa.stock_intraday_data('ACB', page_size=100)
312
+ ```
313
+
314
+ ### 6. Dữ liệu Quỹ mở (Fmarket)
315
+
316
+ ```python
317
+ import quant_agent.funds as qa_funds
318
+
319
+ # Lấy danh sách các quỹ mở (Lọc theo fund_type: "", "STOCK", "BOND", "BALANCED")
320
+ df_funds = qa_funds.funds_listing(fund_type="STOCK")
321
+
322
+ # Lấy thông tin top danh mục nắm giữ của quỹ (Ví dụ mã quỹ 'VESAF' hoặc fundId=23)
323
+ df_top_holdings = qa_funds.fund_details(symbol='VESAF', type='top_holding_list')
324
+
325
+ # Lấy tỷ trọng phân bổ tài sản theo ngành
326
+ df_industry = qa_funds.fund_industry_holding(fundId=23)
327
+
328
+ # Lịch sử NAV/CCQ hàng ngày của quỹ
329
+ df_nav = qa_funds.fund_nav_report(fundId='23')
330
+ ```
331
+
332
+ ### 7. Trực quan hóa dữ liệu (Plotly Charts)
333
+
334
+ ```python
335
+ import quant_agent.chart as qa_chart
336
+
337
+ # Lấy dữ liệu OHLC
338
+ df = qa.stock_historical_data('TCB', start_date='2026-01-01', end_date='2026-08-30')
339
+
340
+ # 1. Vẽ biểu đồ nến Candlestick + Volume + các đường MA
341
+ fig_candle = qa_chart.candlestick_chart(
342
+ df,
343
+ title='TCB - Candlestick Chart',
344
+ ma_periods=[10, 20, 50],
345
+ reference_period=90
346
+ )
347
+ fig_candle.show()
348
+
349
+ # 2. Tính toán và vẽ Bollinger Bands
350
+ df_bb = qa_chart.bollinger_bands(df, window=20, num_std_dev=2)
351
+ fig_bb = qa_chart.bollinger_bands_chart(df_bb, title='TCB - Bollinger Bands')
352
+ fig_bb.show()
353
+ ```
354
+
355
+ ### 8. Xuất dữ liệu sang AmiBroker
356
+
357
+ ```python
358
+ # Xuất dữ liệu ra file CSV chuẩn tương thích AmiBroker
359
+ qa.amibroker_ohlc_export(
360
+ path='./data_export',
361
+ symbol='TCB',
362
+ start_date='2026-01-01',
363
+ end_date='2026-08-30',
364
+ resolution='1D'
365
+ )
366
+ ```
367
+
368
+ ### 9. Giao dịch tự động qua Broker (DNSE)
369
+
370
+ > ⚠️ **CẢNH BÁO QUAN TRỌNG:**
371
+ > Phân hệ `broker` thực hiện đặt lệnh thật trên tài khoản chứng khoán thực tế với tiền thật. Hãy kiểm tra kỹ tham số trước khi gọi các hàm đặt lệnh.
372
+
373
+ ```python
374
+ from quant_agent.broker import DNSEClient
375
+
376
+ client = DNSEClient()
377
+
378
+ # 1. Đăng nhập lấy JWT Token
379
+ client.login(user_name="064CXXXXXX", password="YOUR_PASSWORD")
380
+
381
+ # 2. Xem thông tin tài khoản & danh sách tiểu khoản
382
+ profile = client.account()
383
+ sub_accs = client.sub_accounts()
384
+ sub_id = "064CXXXXXX1"
385
+
386
+ # 3. Tra cứu số dư và sức mua
387
+ balance = client.account_balance(sub_id)
388
+ capacity = client.trade_capacities(symbol="TCB", price=34000, sub_account=sub_id)
389
+
390
+ # 4. Xác thực 2 bước lấy Trading Token (cần thiết trước khi đặt lệnh)
391
+ # client.email_otp() # Nếu dùng Email OTP
392
+ client.get_trading_token(otp="123456", smart_otp=True)
393
+
394
+ # 5. Đặt lệnh mua/bán (THẬT)
395
+ order = client.place_order(
396
+ sub_account=sub_id,
397
+ symbol="TCB",
398
+ side="buy", # 'buy' hoặc 'sell'
399
+ quantity=100,
400
+ price=34000,
401
+ order_type="LO",
402
+ loan_package_id=None,
403
+ asset_type="stock"
404
+ )
405
+
406
+ # 6. Tra cứu sổ lệnh và hủy lệnh
407
+ orders = client.order_list(sub_account=sub_id)
408
+ # client.cancel_order(order_id="...", sub_account=sub_id)
409
+ ```
410
+
411
+ ---
412
+
413
+ ## 🩺 Kiểm thử sức khỏe hệ thống (Smoke Test)
414
+
415
+ Do `quant_agent` kết nối trực tiếp tới các cổng API tài chính không chính thức của các bên thứ ba, bạn có thể chạy bộ kiểm thử smoke test bất cứ lúc nào để kiểm tra tính sẵn sàng của từng endpoint:
416
+
417
+ ```bash
418
+ python tests/test_smoke.py
419
+ ```
420
+
421
+ Kết quả kiểm thử thực tế:
422
+ ```
423
+ Feature Status Detail
424
+ ------------------------------------------------------------------------------------------------------------------------
425
+ config.today PASS 2026-09-06
426
+ fundamental.listing_companies(live=True, Wifeed) PASS shape=(1820, 6)
427
+ fundamental.company_overview [VCI] PASS shape=(1, 8)
428
+ fundamental.company_large_shareholders [VCI] PASS shape=(56, 7)
429
+ fundamental.financial_ratio(yearly) [VCI] PASS shape=(53, 5)
430
+ fundamental.financial_report(BalanceSheet) [VCI] PASS shape=(8, 338)
431
+ technical.stock_historical_data(DNSE) PASS shape=(33, 7)
432
+ technical.stock_historical_data(VCI) PASS shape=(32, 7)
433
+ technical.longterm_ohlc_data [VCI] PASS shape=(151, 7)
434
+ trading.price_board [VCI] PASS shape=(2, 16)
435
+ trading.price_depth [VPS] PASS shape=(2, 22)
436
+ trading.stock_intraday_data [VCI] PASS shape=(20, 5)
437
+ funds.funds_listing PASS shape=(68, 11)
438
+ chart.candlestick_chart PASS Figure(...)
439
+ integration.amibroker_ohlc_export [DNSE] PASS wrote CSV, shape=(33, 7)
440
+ ...
441
+ 45/48 PASS, 3 EMPTY (expected: SSI Cloudflare), 0 CRASH
442
+ ```
443
+
444
+ ---
445
+
446
+ ## ⚖️ Tuyên bố miễn trừ trách nhiệm (Disclaimer)
447
+
448
+ 1. **quant-agent** (Python package: quant_agent) là dự án mã nguồn mở phục vụ mục đích nghiên cứu, học tập và phân tích dữ liệu cá nhân.
449
+ 2. Thư viện kết nối tới các dịch vụ API công cộng/không chính thức của các tổ chức tài chính. Tác giả không sở hữu, không đảm bảo tính sẵn sàng liên tục, tính toàn vẹn hoặc độ trễ thấp nhất của dữ liệu.
450
+ 3. Người dùng tự chịu hoàn toàn trách nhiệm pháp lý và tài chính khi sử dụng module đặt lệnh (`broker`) trên tài khoản giao dịch thực tế của mình.