A beginner-friendly yet powerful Python toolkit for financial analysis and automation — built to make modern investing accessible to everyone
The Listing class provides access to securities listing data including symbol directories, industry classifications, exchange groupings, and various market segments for Vietnamese and international markets.
Adapter for securities listing data with support for multiple classification systems and market segments.
class Listing:
"""
Listing data adapter for securities classification and directories.
Supported sources: VCI, MSN
"""
def __init__(self, source: str = "vci", random_agent: bool = False, show_log: bool = False):
"""
Initialize Listing data adapter.
Args:
source (str): Data source ("vci", "msn"), defaults to "vci"
random_agent (bool): Use random user agent, defaults to False
show_log (bool): Enable logging, defaults to False
"""Comprehensive symbol listings with filtering capabilities for different security types.
def all_symbols(self, *args, **kwargs) -> pd.DataFrame:
"""
Get all available symbols filtered to STOCK type.
Returns:
pd.DataFrame: Symbol data including:
- symbol: Trading symbol
- company_name: Company name
- exchange: Stock exchange (HOSE, HNX, UPCOM)
- industry: Industry classification
- sector: Business sector
- market_cap: Market capitalization
- listing_date: Stock listing date
"""
def symbols_by_industries(self, *args, **kwargs) -> pd.DataFrame:
"""
Get symbols grouped by ICB industry classifications.
Returns:
pd.DataFrame: Symbols organized by industry with ICB codes
"""
def symbols_by_exchange(self, *args, **kwargs) -> pd.DataFrame:
"""
Get symbols organized by exchange/board.
Returns:
pd.DataFrame: Symbols grouped by HOSE, HNX, UPCOM exchanges
"""
def industries_icb(self, *args, **kwargs) -> pd.DataFrame:
"""
Get ICB code hierarchy and industry mapping.
Returns:
pd.DataFrame: ICB industry classification structure
"""
def symbols_by_group(self, *args, **kwargs) -> pd.DataFrame:
"""
Get symbols by predefined market groups.
Common parameters:
group (str): Group name ("VN30", "HNX30", "CW", "FU_INDEX", "FU_BOND", "BOND")
Returns:
pd.DataFrame: Symbols in specified market group
"""Convenience methods for accessing specific market segments and security types.
def all_future_indices(self, **kwargs) -> pd.DataFrame:
"""
Get all futures indices (group='FU_INDEX').
Returns:
pd.DataFrame: Futures indices symbols and details
"""
def all_government_bonds(self, **kwargs) -> pd.DataFrame:
"""
Get all government bonds (group='FU_BOND').
Returns:
pd.DataFrame: Government bond symbols and details
"""
def all_covered_warrant(self, **kwargs) -> pd.DataFrame:
"""
Get all covered warrants (group='CW').
Returns:
pd.DataFrame: Covered warrant symbols and details
"""
def all_bonds(self, **kwargs) -> pd.DataFrame:
"""
Get all bonds (group='BOND').
Returns:
pd.DataFrame: Bond symbols and details
"""from vnstock import Listing
# Initialize listing adapter
listing = Listing(source="vci")
# Get all stock symbols
all_stocks = listing.all_symbols()
# Get symbols by industry
tech_stocks = listing.symbols_by_industries()
# Get VN30 index components
vn30_stocks = listing.symbols_by_group(group="VN30")
# Get covered warrants
covered_warrants = listing.all_covered_warrant()
# Get government bonds
gov_bonds = listing.all_government_bonds()Install with Tessl CLI
npx tessl i tessl/pypi-vnstock