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.
- quant_agent-0.3.0/PKG-INFO +450 -0
- quant_agent-0.3.0/README.md +432 -0
- quant_agent-0.3.0/pyproject.toml +31 -0
- quant_agent-0.3.0/quant_agent/__init__.py +25 -0
- quant_agent-0.3.0/quant_agent/broker/__init__.py +20 -0
- quant_agent-0.3.0/quant_agent/broker/dnse.py +257 -0
- quant_agent-0.3.0/quant_agent/chart.py +235 -0
- quant_agent-0.3.0/quant_agent/config.py +60 -0
- quant_agent-0.3.0/quant_agent/economics.py +1 -0
- quant_agent-0.3.0/quant_agent/fundamental.py +580 -0
- quant_agent-0.3.0/quant_agent/funds.py +270 -0
- quant_agent-0.3.0/quant_agent/integration.py +54 -0
- quant_agent-0.3.0/quant_agent/sources/__init__.py +34 -0
- quant_agent-0.3.0/quant_agent/sources/dnse.py +18 -0
- quant_agent-0.3.0/quant_agent/sources/fmarket.py +18 -0
- quant_agent-0.3.0/quant_agent/sources/http_client.py +52 -0
- quant_agent-0.3.0/quant_agent/sources/ssi.py +27 -0
- quant_agent-0.3.0/quant_agent/sources/vci.py +28 -0
- quant_agent-0.3.0/quant_agent/sources/vps.py +18 -0
- quant_agent-0.3.0/quant_agent/technical.py +134 -0
- quant_agent-0.3.0/quant_agent/trading.py +110 -0
- quant_agent-0.3.0/quant_agent/utils.py +53 -0
- quant_agent-0.3.0/quant_agent.egg-info/PKG-INFO +450 -0
- quant_agent-0.3.0/quant_agent.egg-info/SOURCES.txt +27 -0
- quant_agent-0.3.0/quant_agent.egg-info/dependency_links.txt +1 -0
- quant_agent-0.3.0/quant_agent.egg-info/requires.txt +5 -0
- quant_agent-0.3.0/quant_agent.egg-info/top_level.txt +1 -0
- quant_agent-0.3.0/setup.cfg +4 -0
- quant_agent-0.3.0/tests/test_smoke.py +210 -0
|
@@ -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
|
+
[](https://www.python.org/)
|
|
22
|
+
[](https://opensource.org/licenses/MIT)
|
|
23
|
+
[]()
|
|
24
|
+
[]()
|
|
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.
|