Định giá thị trường
Cập nhật lần cuối:
Thảo luậnMục lục
Lớp TopStock cung cấp thông tin về các cổ phiếu hàng đầu theo các tiêu chí khác nhau.
Khởi Tạo
Python
from vnstock_data import TopStock
# Khởi tạo cơ bản
insights = TopStock()
# Khởi tạo với random user agent
insights = TopStock(random_agent=True)
# Hiển thị debug logs
insights = TopStock(show_log=True)Tham Số Khởi Tạo
show_log(bool, default=False): Hiển thị debug logsrandom_agent(bool, default=False): Sử dụng random user agent để tránh bị block
Lưu ý: Chỉ VND hỗ trợ TopStock.
Phương Thức
gainer() - Top Cổ Phiếu Tăng Giá
Python
# Lấy top 10 tăng giá VNINDEX (mặc định)
df = insights.gainer()
# Lấy top 5 tăng giá VNINDEX
df = insights.gainer(limit=5)
# Lấy top 10 tăng giá HNX
df = insights.gainer(index="HNX")Tham Số:
index(str, default="VNINDEX"): Chỉ số thị trường ("VNINDEX", "HNX", "VN30")limit(int, default=10): Số lượng cổ phiếu
Trả về: DataFrame với 15 cột (shape: limit, 15)
- Cột cơ bản:
symbol,index,last_price,last_updated - Cột giá:
price_change_1d,price_change_pct_1d - Cột khối lượng:
avg_volume_20d,volume_spike_20d_pct,total_volume_avg_20d - Cột giao dịch:
accumulated_value,deal_volume_spike_20d_pct,deal_volume_spike_5d_20d_pct - Cột 5 ngày:
deal_volume_sum_5d,deal_value_avg_5d,deal_volume_avg_5d
Ví dụ (Top 3 tăng giá):
symbol index last_price price_change_pct_1d accumulated_value
0 ITD VNINDEX 15.3 6.99 3.704415e+09
1 VPS VNINDEX 9.69 6.95 3.821120e+08
2 TLG VNINDEX 63.40 6.91 9.460624e+10
loser() - Top Cổ Phiếu Giảm Giá
Python
# Lấy top 10 giảm giá VNINDEX (mặc định)
df = insights.loser()
# Lấy top 5 giảm giá
df = insights.loser(limit=5)
# Lấy top 10 giảm giá HNX
df = insights.loser(index="HNX")Tham Số:
index(str, default="VNINDEX"): Chỉ số thị trường ("VNINDEX", "HNX", "VN30")limit(int, default=10): Số lượng cổ phiếu
Trả về: DataFrame với 15 cột (giống gainer())
Ví dụ (Top 3 giảm giá):
symbol index last_price price_change_pct_1d accumulated_value
0 RYG VNINDEX 10.00 -5.00 1.234515e+09
1 CDC VNINDEX 25.00 -4.51 7.285780e+09
2 ICT VNINDEX 21.10 -3.71 2.442279e+11
value() - Top Theo Giá Trị Giao Dịch
Python
# Lấy top 10 theo giá trị giao dịch (mặc định)
df = insights.value()
# Lấy top 5
df = insights.value(limit=5)
# Lấy top 10 của HNX
df = insights.value(index="HNX")Tham Số:
index(str, default="VNINDEX"): Chỉ số thị trường ("VNINDEX", "HNX", "VN30")limit(int, default=10): Số lượng cổ phiếu
Trả về: DataFrame với 15 cột (giống gainer())
Ví dụ (Top 3 giá trị giao dịch):
symbol index last_price accumulated_value
0 SSI VNINDEX 32.20 5.011092e+11
1 VIX VNINDEX 24.15 4.995282e+11
2 VIC VNINDEX 270.00 4.805920e+11
volume() - Top Theo Khối Lượng Đột Biến
Python
# Lấy top 10 theo khối lượng (mặc định)
df = insights.volume()
# Lấy top 5
df = insights.volume(limit=5)Tham Số:
index(str, default="VNINDEX"): Chỉ số thị trường ("VNINDEX", "HNX", "VN30")limit(int, default=10): Số lượng cổ phiếu
Trả về: DataFrame với 15 cột (giống gainer())
Ví dụ (Top 3 khối lượng đột biến):
symbol index last_price volume_spike_20d_pct
0 ITD VNINDEX 15.30 185.41
1 TLG VNINDEX 63.40 125.63
2 VPL VNINDEX 103.90 118.72
deal() - Top Theo Giao Dịch Thỏa Thuận Đột Biến
Python
# Lấy top 10 theo giao dịch thỏa thuận (mặc định)
df = insights.deal()
# Lấy top 5
df = insights.deal(limit=5)Tham Số:
index(str, default="VNINDEX"): Chỉ số thị trường ("VNINDEX", "HNX", "VN30")limit(int, default=10): Số lượng cổ phiếu
Trả về: DataFrame với 15 cột (giống gainer())
Ví dụ (Top 3 giao dịch thỏa thuận):
symbol index last_price deal_volume_spike_20d_pct
0 BKG VNINDEX 2.92 22.50
1 NAB VNINDEX 14.35 2.69
2 CDC VNINDEX 25.00 6.24
foreign_buy() - Top Nước Ngoài Mua Ròng
Python
# Lấy top 10 mua ròng hôm nay (mặc định)
df = insights.foreign_buy()
# Lấy top 5
df = insights.foreign_buy(limit=5)
# Lấy top 10 của ngày cụ thể
df = insights.foreign_buy(date="2025-11-30")Tham Số:
date(str, optional): Ngày giao dịch (format: "YYYY-MM-DD"). Nếu không cung cấp, sử dụng ngày hôm naylimit(int, default=10): Số lượng cổ phiếu
Trả về: DataFrame với 3 cột (shape: limit, 3)
symbol: str - Mã cổ phiếudate: str - Ngày giao dịch (YYYY-MM-DD)net_value: float64 - Giá trị mua ròng (VND)
Ví dụ (Top 3 mua ròng):
symbol date net_value
0 VJC 2025-12-02 1.326863e+11
1 VIC 2025-12-02 9.060632e+10
2 TCB 2025-12-02 6.987791e+10
foreign_sell() - Top Nước Ngoài Bán Ròng
Python
# Lấy top 10 bán ròng hôm nay (mặc định)
df = insights.foreign_sell()
# Lấy top 5
df = insights.foreign_sell(limit=5)
# Lấy top 10 của ngày cụ thể
df = insights.foreign_sell(date="2025-11-30")Tham Số:
date(str, optional): Ngày giao dịch (format: "YYYY-MM-DD"). Nếu không cung cấp, sử dụng ngày hôm naylimit(int, default=10): Số lượng cổ phiếu
Trả về: DataFrame với 3 cột (shape: limit, 3)
symbol: str - Mã cổ phiếudate: str - Ngày giao dịch (YYYY-MM-DD)net_value: float64 - Giá trị bán ròng (VND - âm)
Ví dụ (Top 3 bán ròng):
symbol date net_value
0 VPI 2025-12-02 -5.005783e+10
1 VIX 2025-12-02 -4.019161e+10
2 VRE 2025-12-02 -4.015856e+10
Ví Dụ
Python
from vnstock_data import TopStock
insights = TopStock()
# Top tăng giá
gainers = insights.gainer(limit=5)
print("Top 5 cổ phiếu tăng giá:")
print(gainers[['symbol', 'price_change_pct_1d', 'accumulated_value']].to_string())
# Top giảm giá
losers = insights.loser(limit=5)
print("\nTop 5 cổ phiếu giảm giá:")
print(losers[['symbol', 'price_change_pct_1d', 'accumulated_value']].to_string())
# Top giá trị giao dịch
top_value = insights.value(limit=5)
print("\nTop 5 cổ phiếu theo giá trị giao dịch:")
print(top_value[['symbol', 'accumulated_value']].to_string())
# Top khối lượng
top_volume = insights.volume(limit=5)
print("\nTop 5 cổ phiếu theo khối lượng đột biến:")
print(top_volume[['symbol', 'volume_spike_20d_pct']].to_string())
# Khối ngoại mua ròng
foreign_buy = insights.foreign_buy(limit=5)
print("\nTop 5 cổ phiếu NĐTNN mua ròng:")
print(foreign_buy.to_string())Phân Tích Ví Dụ
Python
from vnstock_data import TopStock
import pandas as pd
insights = TopStock()
# Lấy dữ liệu
gainers = insights.gainer(limit=20)
losers = insights.loser(limit=20)
foreign_buy = insights.foreign_buy(limit=20)
# Tìm giao lộ: tăng giá + nước ngoài mua
gaining_symbols = set(gainers['symbol'])
foreign_buying_symbols = set(foreign_buy['symbol'])
intersection = gaining_symbols & foreign_buying_symbols
print(f"Cổ phiếu vừa tăng giá vừa NĐTNN mua ròng ({len(intersection)} cổ):")
for symbol in sorted(intersection):
gainer_pct = gainers[gainers['symbol'] == symbol]['price_change_pct_1d'].values[0]
foreign_buy_val = foreign_buy[foreign_buy['symbol'] == symbol]['net_value'].values[0]
print(f" {symbol}: +{gainer_pct:.2f}% | Mua ròng: {foreign_buy_val:.2e}")
# Phân tích flow nước ngoài
print(f"\nTop 5 NĐTNN mua ròng:")
print(foreign_buy[['symbol', 'net_value']].head(5).to_string(index=False))
print(f"\nTop 5 NĐTNN bán ròng:")
top_sell = insights.foreign_sell(limit=5)
print(top_sell[['symbol', 'net_value']].to_string(index=False))
# Tìm cơ hội: giảm giá nhưng nước ngoài vẫn mua
losing_symbols = set(losers['symbol'])
potential_opportunities = foreign_buying_symbols - losing_symbols
print(f"\nCổ phiếu NĐTNN mua không xuất hiện trong top giảm:")
print(f"Số lượng: {len(potential_opportunities)}")
print(f"Ví dụ: {list(potential_opportunities)[:5]}")Lưu ý: Chỉ VND hỗ trợ TopStock.
Ứng Dụng
- Tìm cơ hội: Phát hiện cổ phiếu tăng giá, khối ngoại mua
- Theo dõi dòng tiền: Xem khối ngoại đang mua/bán cổ phiếu nào
- Phân tích thị trường: Hiểu tâm lý thị trường qua top tăng/giảm giá.
- Cảnh báo: Theo dõi nếu cổ phiếu quan tâm xuất hiện trong top
Thảo luận