vnstock là gói thư viện Python cho phép tải dữ liệu chứng khoán với cú pháp đơn giản sử dụng dữ liệu đáng tin cậy được cung cấp bởi public api từ các công ty chứng khoán và dịch vụ dữ liệu tại Việt Nam.
Thư viện này được tôi tạo ra lấy cảm hứng từ investingpy (sử dụng nguồn cấp dữ liệu từ investing.com). Phiên bản đầu tiên của vnstock lần đầu tiên được phát hành ngày 27/2/2022.
Nội dung chính
- I. Giới thiệu chung
- II. Đôi điều về nguồn tải dữ liệu chứng khoán từ TCBS và SSI
- Sử dụng thư viện python vnstock tải dữ liệu chứng khoán
- Tham gia cộng đồng vnstock
- III. Trang thông tin chính thức
- IV. Báo lỗi & phản hồi
- V. Ủng hộ tác giả
- VI. Web app cho người dùng phổ thông
- VII. File demo tính năng thư viện vnstock
I. Giới thiệu chung
Lý do ra đời của dự án này cũng thật đặc biệt, tôi rất thích phân tích dữ liệu với Python và thử áp dụng vào việc phân tích đầu tư thực tế để nâng cao kỹ năng kỹ thuật và rèn luyện tư duy. Cho đến hiện tại, khi tìm kiếm trên internet về “api dữ liệu chứng khoán”, “nguồn cấp dữ liệu chứng khoán” hay “tải dữ liệu chứng khoán” thì đa phần những cái tên hiện ra đều khá truyền thống như cophieu68, vietstock, cafef mà đặc thù là bạn có thể xem trên web hoặc tải file excel hoặc csv dùng cho phần mềm Amibroker. Một số dịch vụ khác cung cấp api dữ liệu nhưng cần trả phí hoặc thủ tục đăng ký rắc rối trong khi tôi muốn sử dụng cho mục đích nghiên cứu và tiết kiệm chi phí nhất có thể (không cần trả phí càng tốt). Thêm nữa, để giảm thiểu các thao tác truy xuất dữ liệu và đưa vào model tính toán thông thường với Excel mất thời gian, tôi thích sử dụng Google Sheets kết hợp với Python để tự động hoá các khâu phân tích cơ bản. Tất nhiên với một số phân tích và nhóm dữ liệu nhất định, bạn có thể gọi API để kéo data trực tiếp vào Google Colab đơn giản nhưng khi sử dụng ở nhiều môi trường máy tính khác nhau (desktop lẫn server), hay thay đổi giữa các tài khoản Google khác nhau thì việc tạo ra 1 thư viện giúp đơn giản hoá việc tận dụng lại những đoạn code viết sẵn, workbook trở nên thanh thoát và dễ làm việc hơn nhiều.
Tư tưởng dẫn dắt cho việc xây dựng thư viện tải dữ liệu chứng khoán này là “Đơn giản, dùng tốt và có tính lâu dài”. Bạn có thể tìm thấy mã nguồn mở của thư viện trên Github tại vnstock. Nếu cần bạn có thể đóng góp công sức vào cải tiến thư viện này để có thể sử dụng thuận tiện hơn. Bản thân tôi rất yêu thích và ấn tượng với ý nghĩa của những dự án mã nguồn mở đối với cộng đồng nhất là sự ra đời của Linux. Lần đầu tiên tôi học cách xây dựng 1 thư viện Python qua dự án này và cũng với mong muốn đóng góp một phần nhỏ nhoi vào cộng đồng mã nguồn mở để cổ vũ cho ý tưởng PAY IT FORWARD tôi cho rằng rất có ý nghĩa.
II. Đôi điều về nguồn tải dữ liệu chứng khoán từ TCBS và SSI
Qua quá trình sử dụng, tôi phải nói rằng TCBS là 1 trong số hiếm các công ty chứng khoán cung cấp dữ liệu phân tích rất đầy đủ, trực quan, thuận tiện cho việc sử dụng nhất là đối với các nhà đầu tư F0. Ngoài ra TCBS cũng sử dụng hình thức cung cấp dữ liệu lên web thông qua public api, do đó việc tận dụng các api này cho việc lấy dữ liệu trở nên đơn giản hơn rất nhiều so với cách truyền thống là scrape html table hay selenium để tải file. Trong khi đó dữ liệu được truyền qua api và được đọc bằng pandas rất nhanh chóng, hầu hết các trường hợp bạn chỉ cần đâu đó 1-2 giây để có được toàn bộ lịch sử giá của 1 cổ phiếu bất kỳ trong vòng 1 năm.
Với SSI, có khá nhiều dữ liệu phân tích sử dụng nguồn cấp từ Fiin Trade tôi cho rằng rất có giá trị và sử dụng thuận tiện, đôi khi đặc biệt và hữu ích hơn những thông tin do TCBS cung cấp. Dữ liệu từ SSI cung cấp qua thư viện vnstock cũng đến từ public api (tương tự bạn truy cập website thông qua trình duyệt).
Sử dụng thư viện python vnstock tải dữ liệu chứng khoán
Trong phạm vi bài viết này, tôi cung cấp demo và cách tải dữ liệu chứng khoán và lưu file vào Google Drive dưới hình thức đơn giản nhất để các bạn hình dung cách thức hoạt động của thư viện vnstock. Bạn có thể xem hướng dẫn sử dụng các hàm có sẵn trong thư viện tại file README trên github repo chính thức tại đây.
Đối với một số thuật ngữ, code name của dữ liệu lấy trực tiếp từ API tôi chưa có thời gian đổi lại tên cho dễ hiểu, các bạn có thể tìm lại trong danh sách thuật ngữ tại đây.
Bạn có thể sử dụng Google Colab là môi trường chạy Python để thử nghiệm thư viện vnstock và tải dữ liệu chứng khoán mà không cần thông qua các bước cài đặt phức tạp bằng đoạn code mẫu dưới đây. Các bạn có thể click vào nút “Open in Colab” trong phần Github gist preview để mở file với Google Colab. Bạn hãy tạo bản copy của file notebook này và thử nghiệm thêm những hàm thú vị khác nhé.
Tham gia cộng đồng vnstock
Bạn có thể đọc thêm chi tiết về cộng đồng vnstock và góp sức phát triển cộng đồng tại đây.
Tính năng mới InteractiveSheet trong Google Colab làm việc dễ dàng với Google Sheets
Nội dung chínhGiới thiệuLợi ích của InteractiveSheetTính năng nổi bậtCách sử dụng InteractiveSheet trong Google Colab1. Nhúng cửa sổ làm việc Google Sheets vào Google Colab2. Mở file có sẵn theo ID3. Đọc dữ liệu từ Sheets từ 1 WorkSheet cụ thể qua DataFrame4. Tạo Sheets rỗng5. Tạo sheet mới với dữ liệu từ Vnstock6. […]
Chung tay xây dựng cộng đồng vnstock vững mạnh
Xin chào các bạn, sau một thời gian tạm ngưng phát triển chính thức thư viện vnstock python và nhận phản hồi về các lỗi xuất hiện trong quá trình sử dụng của người dùng gần đây. Tôi đã suy nghĩ về việc tạo ra một cộng đồng kết nối và trao đổi về vnstock […]
III. Trang thông tin chính thức
Hiện tại, vnstock có mặt chính thức trên các trang/nền tảng sau. Bạn có thể theo dõi và kết nối để cập nhật những thông tin mới nhất:
- Website: vnstock.site và trang tài liệu hướng dẫn Vnstock Docs
- Github (mã nguồn & tài liệu): vnstock github
- Facebook Group (thành viên thân thiết): vnstock membership
- Discord (tất cả người dùng): vnstock
- Facebook Page: vnstock.official
- Youtube playlist chuyên biệt: LEArn Anything // vnstock
IV. Báo lỗi & phản hồi
Trong quá trình sử dụng vnstock, nếu gặp lỗi, các bạn có thể gửi phản hồi trong phần bình luận của bài viết này, tạo New issue trực tiếp trên Github hoặc tham gia cộng đồng Vnstock qua Discord/Facebook để được hỗ trợ. Để tôi có thể dễ dàng sửa lỗi nhanh chóng, bạn vui lòng gửi kèm ảnh chụp màn hình thể hiện câu lệnh bạn thực hiện và lỗi xuất hiện.
Bạn có thể tham gia cộng đồng vnstock qua 2 hình thức sau:
- Nhóm facebook thành viên thân thiết (cần dontate): vnstock membership
- Discord server cho tất cả thành viên (free): vnstock-discord
V. Ủng hộ tác giả
Nếu thấy vnstock hữu ích, bạn có thể donate để tôi tiếp tục phát triển thêm và đồng thời chia sẻ nhiều dự án open-source khác tới cộng đồng. Dưới đây là mã QR Momo và tài khoản ngân hàng nhận đóng góp hoặc đơn giản là bạn gửi tặng tôi 1 ly cafe. Cám ơn bạn đã ghé thăm.
VI. Web app cho người dùng phổ thông
Phiên bản vnstock web app cho người dùng phổ thông hỗ trợ các tính năng cơ bản bao gồm xem trước và tải file dữ liệu.
Giao diện người dùng thân thiện cho phép bạn chọn các thông số cần thiết để tải dữ liệu qua các form và widget được cung cấp bởi nền tảng streamlit. App được xây dựng hoàn toàn bằng Python.
VII. File demo tính năng thư viện vnstock
Để truy cập nhanh và trải nghiệm các tính năng mạnh mẽ của vnstock thông qua file demo, bạn truy cập đường dẫn sau: