Skip to content

A beginner-friendly yet powerful Python toolkit for financial analysis and automation — built to make modern investing accessible to everyone

License

Notifications You must be signed in to change notification settings

thinh-vu/vnstock

Repository files navigation

Vnstock - Giải pháp phân tích chứng khoán mở cho người Việt

Vnstock Homepage

Version Commit Badge Custom License Badge

⚠️ Note: This document begins in 🇻🇳 Vietnamese for our local community.
🌐 English version available below — scroll or use the TOC (top-right 🟰) to navigate.


🎤 Giới thiệu về Vnstock

Chào mừng bạn đến với Vnstock, bộ giải pháp mã nguồn mở toàn diện cho phân tích và tự động hóa đầu tư chứng khoán.

Với sứ mệnh "Mang dữ liệu chứng khoán và công cụ đầu tư đến gần hơn với tất cả mọi người", Vnstock liên tục cải tiến, tích hợp những công nghệ hiện đại để không chỉ đáp ứng nhu cầu cơ bản về dữ liệu, mà còn giúp bạn xây dựng các giải pháp phân tích tài chính thông minh và linh hoạt hơn bao giờ hết.

🚀 Tại sao chọn Vnstock?

  • Hoàn toàn miễn phí & mã nguồn mở: Dễ dàng truy cập và sử dụng, phù hợp với nhà đầu tư cá nhân, nhà phân tích, và cộng đồng nghiên cứu.
  • Giải pháp Python toàn diện: Các hàm chức năng thân thiện, dễ dàng tích hợp để xây dựng các công cụ phân tích, bot giao dịch tự động.
  • Dữ liệu đa dạng, cập nhật liên tục: Bao gồm cổ phiếu, chứng quyền, chỉ số thị trường, hợp đồng tương lai, trái phiếu, ngoại hối, crypto và nhiều hơn thế nữa.

Bạn chính là một phần quan trọng trong hành trình chuyển đổi số thị trường tài chính Việt Nam. Hãy cùng Vnstock tạo nên những thay đổi tích cực và hiệu quả!

🤝 Tham gia cộng đồng cùng chúng tôi!

Tham gia ngay cộng đồng Vnstock để giao lưu, chia sẻ kinh nghiệm và cập nhật những tính năng mới nhất từ dự án:

II. Các nhóm tính năng chính

Vnstock giúp rút ngắn thời gian xử lý dữ liệu, hỗ trợ học tập, nghiên cứu và xây dựng hệ thống phân tích giao dịch tài chính một cách hiệu quả – không chỉ là một công cụ trích xuất dữ liệu, mà là nền tảng để phát triển giải pháp đầu tư cá nhân thông minh. Thư viện được thiết kế dễ dàng sử dụng và tích hợp vào các hệ thống phân tích, nghiên cứu, trang tổng quan, hoặc bot chứng khoán.

  1. Truy xuất dữ liệu qua API đơn giản
    Dễ dàng truy cập dữ liệu thông qua các hàm Python thân thiện, giúp tích hợp nhanh vào hệ thống phân tích tự động hoặc bot giao dịch.

  2. Dữ liệu cổ phiếu
    Giá cổ phiếu thời gian thực, dữ liệu lịch sử, chỉ số tài chính và thông tin doanh nghiệp của các mã niêm yết.

  3. Bộ lọc cổ phiếu
    Hỗ trợ lọc cổ phiếu theo tiêu chí tài chính, kỹ thuật hoặc thị trường để phục vụ phân tích.

  4. Chỉ số thị trường (Index)
    Theo dõi hiệu suất các chỉ số trong nước (VNIndex, HNXIndex, UPCOM) và một số chỉ số quốc tế.

  5. Chứng quyền (CW)
    Thông tin chứng quyền bao gồm giá, ngày đáo hạn, tổ chức phát hành và trạng thái thị trường.

  6. Kim loại quý
    Cập nhật giá vàng trong nước và thế giới.

  7. Hợp đồng tương lai (Phái sinh)
    Dữ liệu hợp đồng tương lai như VN30F và các kỳ hạn giao dịch.

  8. Quỹ đầu tư (ETF & Quỹ mở)
    Thông tin về danh mục, hiệu suất và các chỉ số liên quan của quỹ đầu tư.

  9. Trái phiếu
    Dữ liệu trái phiếu Chính phủ và doanh nghiệp bao gồm kỳ hạn, lãi suất và khối lượng giao dịch.

  10. Ngoại hối (Forex)
    Tỷ giá cập nhật theo thời gian thực của các cặp tiền tệ phổ biến.

  11. Tiền điện tử (Crypto)
    Giá cả và biến động thị trường của các loại tiền điện tử lớn.

  12. Tin tức & sự kiện tài chính
    Tự động cập nhật tin tức, công bố thông tin doanh nghiệp và lịch sự kiện thị trường.

III. Tuyên bố miễn trừ trách nhiệm

Dự án Vnstock được phát triển nhằm phục vụ mục đích nghiên cứu và sử dụng cá nhân. Dữ liệu cung cấp có thể không đầy đủ, không liên tục hoặc sai lệch so với thực tế, do đó không khuyến nghị sử dụng cho mục đích giao dịch thực tế, thuật toán đầu tư, hoặc ra quyết định tài chính khi bạn không hiểu rõ.

Các tác giả không chịu trách nhiệm đối với bất kỳ tổn thất hay thiệt hại nào phát sinh từ việc sử dụng dữ liệu hoặc mã nguồn này, bao gồm nhưng không giới hạn: sai lệch dữ liệu, mất mát tài chính, hoặc sử dụng sai mục đích.

Vnstock không cung cấp tư vấn đầu tư hay tín hiệu giao dịch. Người dùng hoàn toàn tự chịu trách nhiệm khi sử dụng dự án.

IV. 🔑 Giấy phép sử dụng (License)

Vnstock được phát hành theo giấy phép tuỳ chỉnh hướng đến cá nhân, không dành cho mục đích thương mại. Quyền sử dụng được quy định cụ thể trong giấy phép kèm theo. Nếu bạn hoặc tổ chức bạn đang làm việc muốn sử dụng Vnstock có thể liên hệ tác giả để hiểu rõ phạm vi sử dụng và được cấp phép chính thức.

Khi sử dụng Vnstock trong dự án của mình, bạn cần trích dẫn thông tin về tác giả và dự án theo hướng dẫn của Vnstock.

V. Lịch sử lượt yêu thích

Bạn có thể hỗ trợ dự án bằng cách cực kỳ đơn giản là đánh dấu yêu thích để giúp dự án có thể tiếp cận tới nhiều người hơn. Dưới đây là lịch sử lượt yêu thích của dự án.

Star History Chart

VI. ⏱️ Cập nhật đáng chú ý

  • 20-03-2025: Ra mắt phiên bản Vnstock 3.2.0 bổ sung thêm tính năng truy xuất dữ liệu Bộ lọc cổ phiếu.
  • 02-01-2025: Vnstock3 chính thức sử dụng tên nhận diện gói thư viện là vnstock tại trang phân phối chính thức pypi.org. Chi tiết tại đây
  • 02-11-2024: Ra mắt Vnstock3 phiên bản 3.0.9. Chi tiết: tại đây
  • 10-05-2024: Ra mắt phiên bản Vnstock 3.0.1 với tên gói cài đặt vnstock3

Chi tiết cập nhật phần mềm và phiên bản tại đây

VII. 📔 Tài liệu hướng dẫn

Trước khi bắt đầu, hãy đánh dấu yêu thích để giúp dự án có thể tiếp cận tới nhiều người hơn. Cám ơn bạn!

star_project

Để hiểu rõ hơn về vnstock và hướng dẫn sử dụng toàn diện, bạn có thể truy cập vnstocks.com.

Xem minh hoạ các tính năng thông qua Colab Notebook sau:

7.1. Cài đặt

Bạn có thể cài đặt thư viện với câu lệnh sau:

pip install -U vnstock

7.2. Nạp thư viện

Bạn cần nạp thư viện vào môi trường Python thông qua giao diện Jupyter Notebook hoặc Terminal để có thể gọi và sử dụng các hàm được cung cấp.

Có 4 cách nạp thư viện vào môi trường làm việc như sau:

7.2.1. Nạp thông qua giao diện làm việc chính

Giao diện làm việc chính cho phép chuyển đổi nguồn và chỉ cần khai báo tên mã khi khởi động. Cấu trúc này phù hợp khi phân tích xuyên suốt 1 mã chứng khoán và nguồn dữ liệu đồng thời giúp tăng độ ổn định của mã nguồn trong tương lai khi các nguồn dữ mới được bổ sung hoặc nguồn cũ hết hiệu lực, bạn chỉ cần đổi tên nguồn để tiếp tục sử dụng.

from vnstock import Vnstock
stock = Vnstock().stock(symbol='VCI', source='VCI')
stock.quote.history(start='2020-01-01', end='2024-05-25')

7.2.2. Nạp thông qua các class tổng hợp

Bạn chọn nạp một trong các lớp chức năng chính. Các lớp chức năng này cho phép chuyển đổi dễ dàng nguồn dữ liệu được hỗ trợ trong khi giữ nguyên cấu trúc hàm. Cấu trúc này giúp tăng độ ổn định của mã nguồn trong tương lai khi các nguồn dữ mới được bổ sung hoặc nguồn cũ hết hiệu lực, bạn chỉ cần đổi tên nguồn để tiếp tục sử dụng.

from vnstock import Listing, Quote, Company, Finance, Trading, Screener 

7.2.3. Nạp các lớp tính năng riêng lẻ theo nguồn dữ liệu cố định

Bạn cần tham khảo mã nguồn để sử dụng đúng các chức năng có sẵn trong thư viện.

from vnstock.explorer.vci import Listing, Quote, Company, Finance, Trading

hoặc

from vnstock.explorer.tcbs import Quote, Company, Finance, Trading, Screener

7.3. Danh sách niêm yết

Danh sách các mã chứng khoán sử dụng trong việc thiết lập vòng lặp truy xuất dữ liệu từ các chức năng khác như Giá lịch sử, Thông tin công ty, Báo cáo tài chính, vv

from vnstock import Listing
listing = Listing()
listing.all_symbols()

7.7. Giá lịch sử & thống kê giao dịch

Giá lịch sử

from vnstock import Vnstock
stock = Vnstock().stock(symbol='ACB', source='VCI')
stock.quote.history(start='2024-01-01', end='2025-03-19', interval='1D')

hoặc

from vnstock import Quote
quote = Quote(symbol='ACB', source='VCI')
quote.history(start='2024-01-01', end='2025-03-19', interval='1D')

7.5. Intraday

Dữ liệu giao dịch khớp lệnh theo từng tick

stock.quote.intraday(symbol='ACB', page_size=10_000, show_log=False)

Chi tiết vui lòng tham khảo tài liệu và Demo Notebook.

5.6. Bảng giá giao dịch

from vnstock import Trading
Trading(source='VCI').price_board(['VCB','ACB','TCB','BID'])

7.7. Truy xuất thông tin công ty

from vnstock import Vnstock
company = Vnstock().stock(symbol='ACB', source='VCI').company
company.overview()

hoặc

from vnstock import Company
company = Company(symbol='ACB', source='VCI')
company.overview()

7.8. Truy xuất báo cáo tài chính

from vnstock import Vnstock
stock = Vnstock().stock(symbol='VCI', source='VCI')
# Bảng cân đối kế toán - năm
stock.finance.balance_sheet(period='year', lang='vi', dropna=True)
# Bảng cân đối kế toán - quý
stock.finance.balance_sheet(period='quarter', lang='en', dropna=True)
# Kết quả hoạt động kinh doanh
stock.finance.income_statement(period='year', lang='vi', dropna=True)
# Lưu chuyển tiền tệ
stock.finance.cash_flow(period='year', dropna=True)
# Chỉ số tài chính
stock.finance.ratio(period='year', lang='vi', dropna=True)

7.9. Bộ lọc cổ phiếu

from vnstock import Screener
stock.screener.stock(params={"exchangeName": "HOSE,HNX,UPCOM"}, limit=1700)

7.10. Dữ liệu quỹ mở

from vnstock.explorer.fmarket.fund import Fund
fund = Fund()
fund.listing()

7.11. Dữ liệu thị trường quốc tế: Cổ phiếu, FX, Index

from vnstock import Vnstock
fx = Vnstock().fx(symbol='JPYVND', source='MSN')
df = fx.quote.history(start='2025-01-02', end='2025-03-20', interval='1D')
df

7.12. Tỷ giá & giá vàng

from vnstock.explorer.misc import *

# Tỷ giá ngoại tệ VCB
vcb_exchange_rate(date='2024-03-21')

# Giá vàng SJC
sjc_gold_price()

7.13. Xuất dữ liệu

Tất cả dữ liệu trả về từ Vnstock đều là Pandas DataFrame hoặc Series, do đó, bạn có thể mô hình hoá các thao tác phân tích của mình với lệnh Python dễ dàng nhờ hỗ trợ của AI. Nếu cần xuất dữ liệu sang các định dạng truyền thống, bạn chỉ cần gán các hàm mô tả ở trên với 1 tên biến và thực hiện xuất dữ liệu như dưới đây:

# Biến ratio_df lưu giá trị của phép tính vào bộ nhớ
ratio_df = stock.finance.ratio(period='year', lang='vi', dropna=True)

# Xuất dữ liệu ra Excel
ratio_df.to_excel('/nơi_lưu_file_của_bạn/tên_file-ratio_df.xlsx`, index=False')
# Xuất dữ liệu ra CSV
ratio_df.to_csv('/nơi_lưu_file_của_bạn/tên_file-ratio_df.csv`, index=False')

Vnstock - The Open-Source Stock Analysis Toolkit for Investors in Vietnam

Vnstock Homepage

Version Commit Badge Custom License Badge

🎤 Introduction to Vnstock

Welcome to Vnstock, a comprehensive open-source solution for stock analysis and investment automation in Vietnam.

Driven by the mission "To bring financial data and investment tools closer to everyone", Vnstock continuously evolves by integrating modern technologies—not only meeting basic data needs but also empowering you to build flexible, intelligent financial analysis solutions.

🚀 Why Vnstock?

  • Free & Open-Source: Accessible for all—investors, analysts, researchers, and educators.
  • Full-Stack Python Support: Easy-to-use functions for building analysis tools or automated trading bots.
  • Diverse, Continuously Updated Data: Covers stocks, warrants, indices, futures, bonds, forex, crypto, and more.

You are an important part of the digital transformation of Vietnam’s financial market. Let’s create impact together with Vnstock!

🤝 Join the Community

Join the Vnstock community to share knowledge, collaborate, and stay updated with the latest features:


II. Key Feature Groups

Vnstock reduces time-to-insight by streamlining data processing, enabling learners, researchers, and financial analysts to build their own smart investment solutions. It is more than a data extraction tool—it’s a flexible foundation for personal investing systems.

  1. Easy API Access
    Retrieve financial data through simple and intuitive Python functions.

  2. Stock Data
    Real-time prices, historical prices, financial indicators, and company profiles for listed stocks.

  3. Stock Screener
    Filter stocks based on financial, technical, or market criteria.

  4. Market Indices
    Track performance of Vietnamese indices (VNIndex, HNX, UPCOM) and select global indices.

  5. Covered Warrants (CW)
    Includes price, expiration, issuers, and market status of warrants.

  6. Precious Metals
    Domestic and international gold price updates.

  7. Futures Contracts
    Derivatives like VN30F and other trading terms.

  8. Investment Funds (ETF & Mutual Funds)
    Portfolio composition, performance, and key metrics.

  9. Bonds
    Government and corporate bond data, including yield, maturity, and volume.

  10. Forex
    Real-time exchange rates for major currency pairs.

  11. Cryptocurrencies
    Prices and market volatility for top cryptocurrencies.

  12. Financial News & Events
    Auto-updated financial news, disclosures, and market events calendar.


III. Disclaimer

Vnstock is developed for personal and research use only. The provided data may be incomplete, inconsistent, or inaccurate, and should not be used for live trading, algorithmic strategies, or financial decisions without proper due diligence.

The authors disclaim all responsibility for any loss, damage, or financial risk arising from the use of this library, including but not limited to: data errors, misinterpretation, or misuse.

Vnstock does not offer investment advice or trading signals. Users bear full responsibility for how they use this project.


IV. 🔑 License

Vnstock is distributed under a custom license focused on personal, non-commercial use. Usage terms are detailed in the LICENSE. For commercial or institutional use, please contact the author for official licensing.

When using Vnstock in your project, you are required to cite the author and project as per the citation guide provided.


V. Star History

You can support the project by simply starring it on GitHub—this helps the project reach more people. Here's the star history:

Star History Chart


VI. ⏱️ Notable Updates

  • 20-Mar-2025: Version 3.2.0 released with Stock Screener data access.
  • 02-Jan-2025: Official package name for Vnstock3 updated to vnstock on PyPI. Read more
  • 02-Nov-2024: Vnstock3 version 3.0.9 released. Details
  • 10-May-2024: Initial release of Vnstock 3.0.1 under package name vnstock3

Full changelog available here


VII. 📔 Documentation

Before getting started, consider starring the project to support us—thank you!

star_project

Full documentation and usage guide: vnstocks.com/docs

Example use cases in Colab Notebook:

7.1 Installation

Install or upgrade to the latest version of Vnstock via pip:

pip install -U vnstock

7.2 Importing the Library

You can import Vnstock into your Python environment using Jupyter Notebook or any Python console. There are four supported methods:

7.2.1. Import via Unified Interface

This is the primary method for loading the library, allowing you to define the data source once and reuse across functions. Ideal for analyzing a single stock with consistent settings:

from vnstock import Vnstock
stock = Vnstock().stock(symbol='VCI', source='VCI')
stock.quote.history(start='2020-01-01', end='2024-05-25')

7.2.2. Import Main Functional Classes

Load from core modules that support dynamic switching between data providers:

from vnstock import Listing, Quote, Company, Finance, Trading, Screener 

7.2.3. Import from Specific Data Providers

For advanced users needing fixed data sources. Refer to the source code for details:

from vnstock.explorer.vci import Listing, Quote, Company, Finance, Trading

or

from vnstock.explorer.tcbs import Quote, Company, Finance, Trading, Screener

7.3 Listing Symbols

Used for generating lists of available tickers—essential for batch operations:

from vnstock import Listing
listing = Listing()
listing.all_symbols()

7.4 Historical Prices & Trading Stats

Historical Prices

from vnstock import Vnstock
stock = Vnstock().stock(symbol='ACB', source='VCI')
stock.quote.history(start='2024-01-01', end='2025-03-19', interval='1D')

Or use:

from vnstock import Quote
quote = Quote(symbol='ACB', source='VCI')
quote.history(start='2024-01-01', end='2025-03-19', interval='1D')

7.5 Intraday Tick Data

Retrieves granular trade data per tick:

stock.quote.intraday(symbol='ACB', page_size=10_000, show_log=False)

7.6 Market Price Board

Get real-time quotes for multiple tickers:

from vnstock import Trading
Trading(source='VCI').price_board(['VCB','ACB','TCB','BID'])

7.7 Company Information

from vnstock import Vnstock
company = Vnstock().stock(symbol='ACB', source='VCI').company
company.overview()

Or:

from vnstock import Company
company = Company(symbol='ACB', source='VCI')
company.overview()

7.8 Financial Reports

from vnstock import Vnstock
stock = Vnstock().stock(symbol='VCI', source='VCI')

# Balance Sheet - yearly
stock.finance.balance_sheet(period='year', lang='vi', dropna=True)

# Balance Sheet - quarterly
stock.finance.balance_sheet(period='quarter', lang='en', dropna=True)

# Income Statement
stock.finance.income_statement(period='year', lang='vi', dropna=True)

# Cash Flow
stock.finance.cash_flow(period='year', dropna=True)

# Financial Ratios
stock.finance.ratio(period='year', lang='vi', dropna=True)

7.9 Stock Screener

from vnstock import Screener
stock.screener.stock(params={"exchangeName": "HOSE,HNX,UPCOM"}, limit=1700)

7.10 Mutual Fund Data

from vnstock.explorer.fmarket.fund import Fund
fund = Fund()
fund.listing()

7.11 International Markets: Stocks, FX, Indices

from vnstock import Vnstock
fx = Vnstock().fx(symbol='JPYVND', source='MSN')
df = fx.quote.history(start='2025-01-02', end='2025-03-20', interval='1D')
df

7.12 Exchange Rates & Gold Prices

from vnstock.explorer.misc import *

# VCB exchange rate
vcb_exchange_rate(date='2024-03-21')

# SJC gold price
sjc_gold_price()

7.13 Exporting Data

All data from Vnstock is returned as Pandas DataFrame or Series, making it AI-friendly and easy to process or export.

# Save ratio data to memory
ratio_df = stock.finance.ratio(period='year', lang='vi', dropna=True)

# Export to Excel
ratio_df.to_excel('/your_save_path/ratio_df.xlsx', index=False)

# Export to CSV
ratio_df.to_csv('/your_save_path/ratio_df.csv', index=False)