Vnstock Logo

Kinh tế vĩ mô

Mở rộng

Mục lục

Ai dùng được

Mọi hàm trên trang này chạy với khoá API từ cấp tài trợ Bronze trở lên. Khoá cấp Cộng đồng hoặc chạy không khoá nhận EntitlementError (mã VNSTOCK_TIER_ROUTE hoặc VNSTOCK_TIER_SOURCE), và thư viện không gửi truy vấn nào đi.

Lớp Macro() giúp bạn tự truy xuất số liệu kinh tế vĩ mô của Việt Nam, tỷ giá, lãi suất và vài chuỗi vĩ mô thế giới. Hàm chia thành ba nhóm:

  • Macro().economy(): GDP, CPI, xuất nhập khẩu, FDI, cung tiền, tín dụng, vốn đầu tư, ngân sách.
  • Macro().currency(): tỷ giá, nghiệp vụ thị trường mở, lãi suất điều hành, tiền gửi, liên ngân hàng.
  • Macro().global_macro (tên khác Macro().world): lợi suất trái phiếu, lãi suất Fed, DXY, DJI.

Lưu ý cách gọi: economy() và currency() là hàm (có ngoặc), còn global_macro là thuộc tính (không ngoặc).

Mọi hàm lấy từ nguồn asean và không có tham số source. Đọc nguồn của kết quả ở df.attrs["source"].


Tóm tắt

HàmLàm gìCấp
economy().gdp()Tăng trưởng GDP và phần đóng góp từng khu vựcTài trợ
economy().cpi()CPI tổng và CPI lõiTài trợ
economy().import_export()Kim ngạch xuất khẩu, nhập khẩu, cán cânTài trợ
economy().fdi()FDI đăng ký, giải ngânTài trợ
economy().money_supply()Cung tiềnTài trợ
economy().credit()Tăng trưởng tín dụngTài trợ
economy().total_investment()Vốn đầu tư toàn xã hội theo khu vựcTài trợ
economy().state_budget()Thu, chi, cân đối ngân sáchTài trợ
currency().exchange_rate()Tỷ giá USD/VNDTài trợ
currency().omo()Nghiệp vụ thị trường mởTài trợ
currency().policy_rate()Lãi suất tái cấp vốn, chiết khấuTài trợ
currency().deposit_rate()Lãi suất tiền gửi theo ngân hàng, kỳ hạnTài trợ
currency().interbank_rate()Lãi suất liên ngân hàng một kỳ hạnTài trợ
global_macro.bond_yield()Lợi suất trái phiếu chính phủ VN, MỹTài trợ
global_macro.fed_rate()Lãi suất quỹ liên bang MỹTài trợ
global_macro.index()Chỉ số DXY hoặc DJITài trợ

1. Khởi tạo

Python
from vnstock import Macro

macro = Macro()
eco = macro.economy()
cur = macro.currency()
glb = macro.global_macro

2. Tham số thời gian chung

Các hàm của economy() và currency() nhận cùng ba tham số khoảng thời gian:

Tham sốKiểuMặc địnhÝ nghĩa
startstrNoneĐầu kỳ: "YYYY", "YYYY-MM" hoặc "YYYY-MM-DD". Để trống thì lấy ba năm trước end
endstrNoneCuối kỳ, cùng dạng. Để trống thì lấy hôm nay
lengthintNoneChỉ giữ chừng này dòng gần nhất

length là số dòng. Bản 3.x nhận cả chuỗi như "1Y", "3M"; thế hệ 5 thì không, truyền "1Y" nhận ValueError. Muốn lấy theo khoảng thời gian, dùng start và end.

start sau end thì nhận InputError mã VNSTOCK_INPUT_WINDOW.

Tham số period (kỳ số liệu) của nhóm economy() nhận "month", "quarter" hoặc "year". Mỗi hàm có mặc định riêng, ghi trong bảng của hàm đó. Không phải chỉ tiêu nào cũng có đủ ba kỳ: hỏi gdp(period="month") nhận ProviderError mã VNSTOCK_SOURCE_NOT_FOUND.

Mọi bảng có cột time kiểu ngày, múi giờ Asia/Ho_Chi_Minh, là ngày cuối kỳ (ví dụ quý 3 là 30/09). Nhiều bảng có thêm cột vnindex: điểm VN-Index tại cùng mốc, để bạn đặt hai chuỗi cạnh nhau.


3. Kinh tế — Macro().economy()

3.1. GDP — gdp()

Python
eco.gdp(start=None, end=None, period="quarter", length=None)

period: "quarter" (mặc định) hoặc "year".

Python
df = eco.gdp(start="2025", length=3)            # 3 quý gần nhất
df = eco.gdp(start="2023", period="year")       # theo năm
CộtKiểuÝ nghĩa
timengàyCuối kỳ
gdpsốTăng trưởng GDP so với cùng kỳ, %
agriculture, industry, services, taxsốPhần đóng góp của nông nghiệp, công nghiệp, dịch vụ, thuế vào mức tăng, điểm %. Bốn cột cộng lại bằng gdp
vnindexsốĐiểm VN-Index

Dữ liệu mẫu (chạy ngày 10/10/2026):

                       time  agriculture  industry  services      tax      gdp  vnindex
0 2026-03-31 00:00:00+07:00      0.91654   2.90554   3.38016  0.62400  7.82625  1674.49
1 2026-06-30 00:00:00+07:00      0.97476   3.33868   3.49025  0.58869  8.39239  1860.01
2 2026-09-30 00:00:00+07:00      1.19158   4.09488   4.01025  0.65128  9.94799  1768.62

3.2. CPI — cpi()

Python
eco.cpi(start=None, end=None, period="month", length=None)

period: "month" (mặc định), "quarter" hoặc "year".

CộtKiểuÝ nghĩa
timengàyCuối kỳ
cpi_totalsốCPI tổng, % so với cùng kỳ
cpi_coresốCPI lõi, % so với cùng kỳ
vnindexsốĐiểm VN-Index

Dữ liệu mẫu (chạy ngày 10/10/2026, cpi(start="2026-01", length=3)):

                       time  cpi_total  cpi_core  vnindex
0 2026-07-31 00:00:00+07:00       4.45      4.63  1735.78
1 2026-08-31 00:00:00+07:00       4.89      4.55  1832.12
2 2026-09-30 00:00:00+07:00       5.08      4.45  1768.62

3.3. Xuất nhập khẩu — import_export()

Python
eco.import_export(start=None, end=None, period="month", length=None)

period: "month" (mặc định), "quarter" hoặc "year".

CộtKiểuÝ nghĩa
timengàyCuối kỳ
export_valuesốKim ngạch xuất khẩu, triệu USD
import_valuesốKim ngạch nhập khẩu, triệu USD
balance_valuesốCán cân thương mại (xuất trừ nhập), triệu USD
export_growthsốTăng trưởng xuất khẩu, %
import_growthsốTăng trưởng nhập khẩu, %
vnindexsốLần chạy 10/10/2026, cột này bằng 0 ở mọi dòng của bảng này

Dữ liệu mẫu (chạy ngày 10/10/2026, import_export(start="2026-01", length=3)):

                       time  export_value  import_value  balance_value  export_growth  import_growth
0 2026-07-31 00:00:00+07:00  53081.329334  56668.257918   -3586.928584           4.52           6.06
1 2026-08-31 00:00:00+07:00  54794.764261  54907.979099    -113.214838           3.23          -3.11
2 2026-09-30 00:00:00+07:00  59477.404354  58206.560939    1270.843415           8.55           6.01

3.4. FDI — fdi()

Python
eco.fdi(start=None, end=None, period="month", length=None)

period: "month" (mặc định), "quarter" hoặc "year".

CộtKiểuÝ nghĩa
timengàyCuối kỳ
register_valuesốVốn FDI đăng ký, triệu USD
realized_valuesốVốn FDI giải ngân, triệu USD
realized_percentsốGiải ngân trên đăng ký, %

Bảng này không có cột vnindex.

Dữ liệu mẫu (chạy ngày 10/10/2026, fdi(length=3)):

                       time  register_value  realized_value  realized_percent
0 2025-01-31 00:00:00+07:00         4334.79          1510.0          34.83444
1 2025-02-28 00:00:00+07:00         2570.13          1440.0          56.02829
2 2025-03-31 00:00:00+07:00         4073.71          2012.0          49.38987

Lần chạy này, kỳ mới nhất nhận được là tháng 3/2025, nên fdi(start="2026-01") trả bảng rỗng.

3.5. Cung tiền — money_supply()

Python
eco.money_supply(breakdown="total", start=None, end=None, period="quarter", length=None)
Tham sốKiểuMặc địnhÝ nghĩa
breakdownstr"total"Chỉ nhận "total". "bank" chưa hỗ trợ, nhận UnsupportedError mã VNSTOCK_ROUTE_NOT_MIGRATED
periodstr"quarter""quarter", "month" hoặc "year"

Hàm này nằm ở economy(), không ở currency().

CộtKiểuÝ nghĩa
timengàyCuối kỳ
totalsốTổng phương tiện thanh toán, tỷ đồng
institutionalsốPhần của tổ chức, tỷ đồng
privatesốPhần của dân cư, tỷ đồng
vnindexsốĐiểm VN-Index

Dữ liệu mẫu (chạy ngày 10/10/2026, money_supply(length=3)):

                       time       total  institutional     private  vnindex
0 2024-12-31 00:00:00+07:00  17914566.0     7667207.69  7065062.55  1266.78
1 2025-03-31 00:00:00+07:00  18450042.0     7520233.24  7469971.36  1306.86
2 2025-06-30 00:00:00+07:00  19584434.0     8104341.37  7694546.37  1376.07

3.6. Tín dụng — credit()

Python
eco.credit(breakdown="total", start=None, end=None, period="quarter", length=None)

breakdown chỉ nhận "total"; giá trị khác nhận UnsupportedError. period: "quarter" (mặc định), "month" hoặc "year".

CộtKiểuÝ nghĩa
timengàyCuối kỳ
credit_growthsốTăng trưởng tín dụng toàn nền kinh tế, %
vnindexsốĐiểm VN-Index

Dữ liệu mẫu (chạy ngày 10/10/2026, credit(length=3)):

                       time  credit_growth  vnindex
0 2024-12-31 00:00:00+07:00       15.08762  1266.78
1 2025-03-31 00:00:00+07:00       17.91271  1306.86
2 2025-06-30 00:00:00+07:00       19.21941  1376.07

3.7. Vốn đầu tư toàn xã hội — total_investment()

Python
eco.total_investment(start=None, end=None, period="quarter", length=None)

period: "quarter" (mặc định), "month" hoặc "year".

CộtKiểuÝ nghĩa
timengàyCuối kỳ
publicsốKhu vực nhà nước, nghìn tỷ đồng
privatesốKhu vực ngoài nhà nước, nghìn tỷ đồng
fdisốKhu vực vốn đầu tư nước ngoài, nghìn tỷ đồng
othersốKhác, nghìn tỷ đồng
vnindexsốĐiểm VN-Index

Dữ liệu mẫu (chạy ngày 10/10/2026, total_investment(start="2025", length=3)):

                       time   public  private      fdi   other  vnindex
0 2026-03-31 00:00:00+07:00  184.680  402.500  135.050  22.480  1674.49
1 2026-06-30 00:00:00+07:00  271.980  566.911  191.021  29.604  1860.01
2 2026-09-30 00:00:00+07:00  385.836  671.335  203.285  30.785  1768.62

3.8. Ngân sách nhà nước — state_budget()

Python
eco.state_budget(start=None, end=None, period="quarter", length=None)

period: "quarter" (mặc định), "month" hoặc "year".

CộtKiểuÝ nghĩa
timengàyCuối kỳ
budget_insốThu ngân sách, tỷ đồng
budget_outsốChi ngân sách, tỷ đồng
budget_netsốCân đối thu chi, tỷ đồng

Bảng này không có cột vnindex.

Dữ liệu mẫu (chạy ngày 10/10/2026, state_budget(length=2)):

                       time  budget_in  budget_out  budget_net
0 2023-12-31 00:00:00+07:00  1620758.0   2035930.0    415172.0
1 2024-03-31 00:00:00+07:00   539540.0    393495.0   -146045.0

Lần chạy này, kỳ mới nhất nhận được là quý 1/2024. Dấu của budget_net chưa thống nhất giữa các kỳ: ở kỳ quý, cột này bằng chi trừ thu; ở kỳ năm, bằng thu trừ chi. Nếu cần một quy ước dấu cố định, tự tính budget_in - budget_out.


4. Tỷ giá và lãi suất — Macro().currency()

4.1. Tỷ giá — exchange_rate()

Python
cur.exchange_rate(start=None, end=None, period="day", length=None)

Tham số period có trong chữ ký nhưng hiện không đổi tần suất: kết quả luôn là một dòng mỗi ngày.

CộtKiểuÝ nghĩa
timengàyNgày
center_ratesốTỷ giá trung tâm, đồng/USD. Lần chạy 10/10/2026, các dòng gần nhất để trống
vcb_ratesốTỷ giá tại Vietcombank, đồng/USD
market_ratesốTỷ giá thị trường, đồng/USD
vnindexsốĐiểm VN-Index

Dữ liệu mẫu (chạy ngày 10/10/2026, exchange_rate(start="2026-09-25", length=3)):

                       time  center_rate  vcb_rate  market_rate  vnindex
0 2026-10-07 00:00:00+07:00          NaN   26170.0      26140.0  1753.39
1 2026-10-08 00:00:00+07:00          NaN   26160.0      26140.0  1738.97
2 2026-10-09 00:00:00+07:00          NaN   26020.0      26180.0  1735.09

Tỷ giá mua bán nhiều ngoại tệ tại ngân hàng thì dùng Retail().exchange_rate() (trang Retail).

4.2. Nghiệp vụ thị trường mở — omo()

Python
cur.omo(start=None, end=None, length=None)
CộtKiểuÝ nghĩa
timengàyNgày
inflow_amountsốLượng bơm ra, tỷ đồng
outflow_amountsốLượng hút về, tỷ đồng
netflow_amountsốBơm ròng (bơm trừ hút), tỷ đồng
cumulative_flow_amountsốLượng còn lưu hành, tỷ đồng
vnindexsốĐiểm VN-Index

Dữ liệu mẫu (chạy ngày 10/10/2026, omo(start="2026-09-25", length=3), nhận 2 dòng):

                       time  vnindex  inflow_amount  outflow_amount  netflow_amount  cumulative_flow_amount
0 2026-10-01 00:00:00+07:00  1749.30         577.84         1000.00         -422.16               217459.23
1 2026-10-02 00:00:00+07:00  1737.71           0.00         2147.92        -2147.92               215311.31

4.3. Lãi suất điều hành — policy_rate()

Python
cur.policy_rate(start=None, end=None, length=None)

Một dòng mỗi ngày.

CộtKiểuÝ nghĩa
timengàyNgày
refinancesốLãi suất tái cấp vốn, %/năm
discountsốLãi suất tái chiết khấu, %/năm
vnindexsốĐiểm VN-Index

Dữ liệu mẫu (chạy ngày 10/10/2026, policy_rate(start="2026-01-01", length=3)):

                       time  refinance  discount  vnindex
0 2026-10-07 00:00:00+07:00        4.5       3.0  1753.39
1 2026-10-08 00:00:00+07:00        4.5       3.0  1738.97
2 2026-10-09 00:00:00+07:00        4.5       3.0  1735.09

4.4. Lãi suất tiền gửi — deposit_rate()

Python
cur.deposit_rate(mode="term", period="all", start=None, end=None, length=None)
Tham sốKiểuMặc địnhÝ nghĩa
modestr"term"Chỉ nhận "term": bảng hiện hành, mỗi ngân hàng một dòng. "historical" chưa hỗ trợ, nhận UnsupportedError mã VNSTOCK_ROUTE_NOT_MIGRATED
periodstr"all"Giữ cho mã cũ, hiện không dùng
lengthintNoneSố dòng tối đa
CộtKiểuÝ nghĩa
bank_codechuỗiMã ngân hàng
bank_name, bank_name_enchuỗiTên ngân hàng, tiếng Việt và tiếng Anh
timengàyNgày cập nhật
interest_1m, interest_3m, interest_6m, interest_13m, interest_36msốLãi suất kỳ hạn 1, 3, 6, 13, 36 tháng, %/năm

Dữ liệu mẫu (chạy ngày 10/10/2026, deposit_rate(length=3)):

  bank_code          bank_name                      time  interest_1m  interest_3m  interest_6m  interest_13m
0       VCB        Vietcombank 2026-10-02 00:00:00+07:00         2.10         2.40          3.5           5.9
1       VIB  Ngân hàng Quốc tế 2026-10-02 00:00:00+07:00         4.25         4.35          5.5           6.5
2       VPB             VPBank 2026-10-02 00:00:00+07:00         4.45         4.65          6.8           6.9

4.5. Lãi suất liên ngân hàng — interbank_rate()

Python
cur.interbank_rate(period="ON", start=None, end=None, length=None)

Ở hàm này period là kỳ hạn, không phải tần suất, và đứng đầu danh sách tham số.

Tham sốKiểuMặc địnhÝ nghĩa
periodstr"ON"Kỳ hạn: "ON" (qua đêm), "1W", "1M", "3M". Mỗi lần gọi một kỳ hạn
CộtKiểuÝ nghĩa
timengàyNgày
interestsốLãi suất của kỳ hạn đã chọn, %/năm
vnindexsốĐiểm VN-Index

Dữ liệu mẫu (chạy ngày 10/10/2026, interbank_rate(start="2026-09-25", length=3), kỳ hạn qua đêm):

                       time  interest  vnindex
0 2026-09-29 00:00:00+07:00      0.56  1777.73
1 2026-09-30 00:00:00+07:00      6.95  1768.62
2 2026-10-01 00:00:00+07:00      4.29  1749.30

5. Vĩ mô thế giới — Macro().global_macro

Macro().world là tên khác, cho cùng kết quả. Ba hàm nhận chung các tham số sau:

Tham sốKiểuMặc địnhÝ nghĩa
startstrNoneNgày bắt đầu, "YYYY-MM-DD"
endstrNoneNgày kết thúc, "YYYY-MM-DD". Để trống thì lấy hôm nay
lengthintNoneChỉ giữ chừng này dòng gần nhất
resolutionstr"1D"Khung nến: "1D", "1W" hoặc "1M". Giá trị khác nhận InputError mã VNSTOCK_INPUT_INTERVAL

Cả ba trả bảng nến cùng cột:

CộtKiểuÝ nghĩa
timengàyNgày của nến
open, high, low, closesốGiá trị mở, cao, thấp, đóng. Với lợi suất và lãi suất: %/năm; với chỉ số: điểm
volumesốKhối lượng. Bằng 0 với các chuỗi không có khối lượng

5.1. Lợi suất trái phiếu chính phủ — bond_yield()

Python
glb.bond_yield(market="VN", tenor="10Y", start=None, end=None, length=None, resolution="1D")
Tham sốKiểuMặc địnhÝ nghĩa
marketstr"VN""VN" hoặc "US". Giá trị khác nhận InputError mã VNSTOCK_INPUT_MARKET
tenorstr"10Y"VN: 1Y, 2Y, 3Y, 5Y, 10Y. US: 1Y, 2Y, 5Y, 10Y, 30Y

Kỳ hạn không có trong danh sách hiện trả bảng rỗng, không báo lỗi. Lần chạy 10/10/2026, US 30Y cũng trả bảng rỗng; US 10Y, VN 2Y, VN 10Y có dữ liệu.

Dữ liệu mẫu (chạy ngày 10/10/2026, bond_yield(start="2026-09-25", length=3), VN 10 năm):

                       time  open  high   low  close  volume
0 2026-10-07 00:00:00+07:00  4.58  4.58  4.58   4.58     0.0
1 2026-10-08 00:00:00+07:00  4.56  4.56  4.56   4.56     0.0
2 2026-10-09 00:00:00+07:00  4.56  4.58  4.56   4.58     0.0

5.2. Lãi suất Fed — fed_rate()

Python
glb.fed_rate(start=None, end=None, length=None, resolution="1D")

Chuỗi này thưa: lần chạy 10/10/2026 cho một dòng mỗi tháng dù resolution="1D".

Dữ liệu mẫu (chạy ngày 10/10/2026, world.fed_rate(length=2)):

                       time  open  high   low  close  volume
0 2026-08-01 00:00:00+07:00  3.63  3.63  3.63   3.63     0.0
1 2026-09-01 00:00:00+07:00  3.75  3.75  3.75   3.75     0.0

5.3. Chỉ số DXY, DJI — index()

Python
glb.index(symbol="DXY", start=None, end=None, length=None, resolution="1D")

symbol nhận "DXY" (chỉ số đô la Mỹ, mặc định) hoặc "DJI" (Dow Jones). Mã khác nhận InputError mã VNSTOCK_INPUT_SYMBOL. Chỉ số chứng khoán thế giới khác (ví dụ USA30, JPN225) nằm ở Market().index(symbol, scope="global"), trang Tài sản quốc tế.

Dữ liệu mẫu (chạy ngày 10/10/2026, index("DXY", start="2026-09-25", length=3)):

                       time    open    high     low   close  volume
0 2026-10-07 00:00:00+07:00  101.89  102.50  101.89  102.24     0.0
1 2026-10-08 00:00:00+07:00  102.23  102.47  102.03  102.14     0.0
2 2026-10-09 00:00:00+07:00  102.13  102.34  101.92  102.23     0.0

6. Đã ngừng

Các hàm dưới đây vẫn giữ tên để mã cũ không gặp AttributeError, nhưng gọi là nhận UnsupportedError mã VNSTOCK_FEATURE_REMOVED và không có dữ liệu trả về.

Chỉ tiêu đã gỡ, không có hàm thay:

HàmNgừng từ
Macro().economy().industry_prod()5.0.0a3
Macro().economy().retail()5.0.0a3
Macro().economy().population_labor()5.0.0a3
Macro().currency().interest_rate()5.0.0a3. Dùng interbank_rate(), policy_rate(), deposit_rate() cho từng loại lãi suất
Macro().commodity()5.0.0a2. Giá hàng hoá quốc tế ở Market().commodity(symbol), trang Tài sản quốc tế

Hàm phẳng kiểu cũ trên Macro(). Bản 3.x cho gọi thẳng Macro().gdp(), Macro().exchange_rate()… kèm cảnh báo hết hạn ngày 31/08/2026. Từ 5.0.0a6 các hàm này báo lỗi, và thông báo lỗi nêu hàm thay:

Hàm cũDùng thay
Macro().gdp()Macro().economy().gdp()
Macro().cpi()Macro().economy().cpi()
Macro().import_export()Macro().economy().import_export()
Macro().fdi()Macro().economy().fdi()
Macro().money_supply()Macro().economy().money_supply()
Macro().exchange_rate()Macro().currency().exchange_rate()
Macro().industry_prod()Không có (ngừng từ 5.0.0a3)
Macro().retail()Không có (ngừng từ 5.0.0a3)
Macro().population_labor()Không có (ngừng từ 5.0.0a3)
Macro().interest_rate()Không có hàm gộp; dùng các hàm lãi suất của currency()

Ví dụ thông báo khi gọi hàm cũ:

UnsupportedError: `Macro().gdp()` đã ngừng hỗ trợ từ vnstock 5.0.0a6 và không còn trả dữ liệu. Dùng Macro().economy().gdp().

Bảng trả về của thế hệ 5 cũng khác hàm phẳng cũ: mỗi kỳ một dòng, mỗi chỉ tiêu một cột (ví dụ agriculture, industry, gdp), thay cho bảng dọc có group_name, name, value, unit. Hàm gdp() mới không còn tham số keep_label.

Bắt lỗi theo mã, xem Xử lý lỗi:

Python
from vnstock import Macro
from vnstock.core.exceptions import UnsupportedError

try:
    df = Macro().economy().gdp(length=4)
except UnsupportedError as e:
    print(e.code)