0
# Company Information
1
2
The Company class provides comprehensive access to corporate data including company overview, shareholder structure, management information, subsidiaries, affiliates, news, and corporate events. It supports Vietnamese data sources with detailed corporate governance and business intelligence.
3
4
## Capabilities
5
6
### Company Class
7
8
Adapter for company-related data with dynamic method dispatch supporting VCI and TCBS data sources. Provides detailed corporate information for Vietnamese listed companies.
9
10
```python { .api }
11
class Company:
12
"""
13
Company data adapter for corporate information.
14
15
Supported sources: VCI, TCBS
16
"""
17
18
def __init__(self, source: str = "vci", symbol: str = None, random_agent: bool = False, show_log: bool = False):
19
"""
20
Initialize Company data adapter.
21
22
Args:
23
source (str): Data source ("vci", "tcbs"), defaults to "vci"
24
symbol (str): Default company symbol, defaults to None
25
random_agent (bool): Use random user agent, defaults to False
26
show_log (bool): Enable logging, defaults to False
27
"""
28
```
29
30
### Company Overview
31
32
Comprehensive company profile including business description, key metrics, financial highlights, and basic corporate information.
33
34
```python { .api }
35
def overview(self, *args, **kwargs) -> pd.DataFrame:
36
"""
37
Get comprehensive company overview and profile data.
38
39
Common parameters (vary by source):
40
symbol (str): Company symbol
41
lang (str): Language ("vi", "en"), defaults to "vi"
42
43
Returns:
44
pd.DataFrame: Company overview with information including:
45
- company_name: Official company name
46
- symbol: Trading symbol
47
- exchange: Stock exchange (HOSE, HNX, UPCOM)
48
- industry: Industry classification
49
- sector: Business sector
50
- market_cap: Market capitalization
51
- shares_outstanding: Number of shares outstanding
52
- book_value: Book value per share
53
- eps: Earnings per share
54
- pe_ratio: Price-to-earnings ratio
55
- dividend_yield: Dividend yield percentage
56
- business_summary: Company business description
57
- address: Company headquarters address
58
- phone: Contact phone number
59
- website: Company website
60
- established_date: Company establishment date
61
- listing_date: Stock listing date
62
"""
63
```
64
65
#### Usage Examples
66
67
```python
68
from vnstock import Company
69
70
# Initialize Company adapter
71
company = Company(source="vci", symbol="TCB")
72
73
# Get company overview
74
tcb_overview = company.overview(symbol="TCB", lang="vi")
75
76
# Get overview for multiple companies
77
vcb_overview = company.overview(symbol="VCB")
78
hpg_overview = company.overview(symbol="HPG")
79
80
# Using TCBS source
81
tcbs_company = Company(source="tcbs")
82
company_profile = tcbs_company.overview(symbol="FPT", lang="en")
83
```
84
85
### Shareholder Information
86
87
Detailed shareholder structure including major shareholders, ownership percentages, and shareholding changes over time.
88
89
```python { .api }
90
def shareholders(self, *args, **kwargs) -> pd.DataFrame:
91
"""
92
Get company shareholder structure and ownership information.
93
94
Common parameters (vary by source):
95
symbol (str): Company symbol
96
page_size (int): Number of records per page
97
page (int): Page number for pagination
98
99
Returns:
100
pd.DataFrame: Shareholder data including:
101
- shareholder_name: Name of shareholder
102
- shareholding_percentage: Ownership percentage
103
- shares_held: Number of shares held
104
- shareholder_type: Type ("individual", "institutional", "foreign")
105
- change_percentage: Recent change in ownership
106
- report_date: Reporting date
107
"""
108
```
109
110
#### Usage Examples
111
112
```python
113
# Get shareholder structure
114
shareholders_data = company.shareholders(symbol="TCB")
115
116
# Get detailed shareholder information with pagination
117
detailed_shareholders = company.shareholders(
118
symbol="VCB",
119
page_size=50,
120
page=1
121
)
122
123
# Track shareholder changes
124
historical_shareholders = company.shareholders(symbol="HPG")
125
```
126
127
### Management Information
128
129
Company officers and management team including board of directors, executives, and key personnel with their roles and background.
130
131
```python { .api }
132
def officers(self, *args, **kwargs) -> pd.DataFrame:
133
"""
134
Get company management and officer information.
135
136
Common parameters (vary by source):
137
symbol (str): Company symbol
138
filter_by (str): Filter criteria ("working", "resigned", "all")
139
140
Returns:
141
pd.DataFrame: Management data including:
142
- full_name: Officer full name
143
- position: Job title/position
144
- status: Employment status ("working", "resigned")
145
- start_date: Start date in position
146
- end_date: End date (if resigned)
147
- shares_held: Number of shares held by officer
148
- ownership_percentage: Ownership percentage
149
- background: Professional background
150
- education: Educational background
151
"""
152
```
153
154
#### Usage Examples
155
156
```python
157
# Get current management team
158
current_officers = company.officers(symbol="TCB", filter_by="working")
159
160
# Get all officers including resigned ones
161
all_officers = company.officers(symbol="VCB", filter_by="all")
162
163
# Get only resigned officers
164
former_officers = company.officers(symbol="HPG", filter_by="resigned")
165
```
166
167
### Subsidiary Companies
168
169
Information about subsidiary and affiliated companies including ownership structure and business relationships.
170
171
```python { .api }
172
def subsidiaries(self, *args, **kwargs) -> pd.DataFrame:
173
"""
174
Get company subsidiary and affiliate information.
175
176
Common parameters (vary by source):
177
symbol (str): Company symbol
178
filter_by (str): Filter criteria ("all", "subsidiary")
179
180
Returns:
181
pd.DataFrame: Subsidiary data including:
182
- subsidiary_name: Name of subsidiary company
183
- ownership_percentage: Ownership percentage by parent
184
- business_type: Type of business
185
- established_date: Establishment date
186
- capital: Registered capital
187
- address: Business address
188
- main_business: Primary business activities
189
- relationship_type: Relationship type ("subsidiary", "affiliate")
190
"""
191
```
192
193
#### Usage Examples
194
195
```python
196
# Get all subsidiaries
197
subsidiaries_data = company.subsidiaries(symbol="TCB", filter_by="all")
198
199
# Get only direct subsidiaries
200
direct_subs = company.subsidiaries(symbol="VCB", filter_by="subsidiary")
201
202
# Comprehensive subsidiary analysis
203
hpg_subsidiaries = company.subsidiaries(symbol="HPG")
204
```
205
206
### Affiliate Information
207
208
Details about affiliated companies and business partnerships including joint ventures and strategic alliances.
209
210
```python { .api }
211
def affiliate(self, *args, **kwargs) -> pd.DataFrame:
212
"""
213
Get company affiliate and partnership information.
214
215
Common parameters (vary by source):
216
symbol (str): Company symbol
217
218
Returns:
219
pd.DataFrame: Affiliate data including:
220
- affiliate_name: Name of affiliated company
221
- relationship_type: Type of relationship
222
- partnership_percentage: Partnership or ownership percentage
223
- business_cooperation: Areas of business cooperation
224
- agreement_date: Partnership agreement date
225
- main_activities: Primary cooperative activities
226
"""
227
```
228
229
#### Usage Examples
230
231
```python
232
# Get affiliate information
233
affiliates_data = company.affiliate(symbol="TCB")
234
235
# Comprehensive affiliate analysis
236
vcb_affiliates = company.affiliate(symbol="VCB")
237
```
238
239
### Company News
240
241
Recent news, press releases, and announcements related to the company including corporate events and market updates.
242
243
```python { .api }
244
def news(self, *args, **kwargs) -> pd.DataFrame:
245
"""
246
Get company news and press releases.
247
248
Common parameters (vary by source):
249
symbol (str): Company symbol
250
page_size (int): Number of news items per page
251
page (int): Page number for pagination
252
start_date (str): Start date for news filter
253
end_date (str): End date for news filter
254
255
Returns:
256
pd.DataFrame: News data including:
257
- title: News headline
258
- summary: News summary
259
- publish_date: Publication date
260
- source: News source
261
- category: News category
262
- url: Link to full article
263
- importance: News importance level
264
"""
265
```
266
267
#### Usage Examples
268
269
```python
270
# Get recent company news
271
recent_news = company.news(symbol="TCB", page_size=20)
272
273
# Get news for specific date range
274
filtered_news = company.news(
275
symbol="VCB",
276
start_date="2023-01-01",
277
end_date="2023-12-31",
278
page_size=50
279
)
280
281
# Get latest news updates
282
latest_news = company.news(symbol="HPG", page=1)
283
```
284
285
### Corporate Events
286
287
Corporate events including dividends, stock splits, shareholder meetings, and other significant corporate actions.
288
289
```python { .api }
290
def events(self, *args, **kwargs) -> pd.DataFrame:
291
"""
292
Get corporate events and actions.
293
294
Common parameters (vary by source):
295
symbol (str): Company symbol
296
event_type (str): Type of event filter
297
start_date (str): Start date for events
298
end_date (str): End date for events
299
300
Returns:
301
pd.DataFrame: Corporate events including:
302
- event_type: Type of corporate event
303
- event_date: Event date
304
- ex_date: Ex-dividend/ex-rights date
305
- record_date: Record date
306
- event_description: Event description
307
- dividend_rate: Dividend rate (if applicable)
308
- split_ratio: Stock split ratio (if applicable)
309
- meeting_type: Meeting type (AGM, EGM)
310
- announcement_date: Event announcement date
311
"""
312
```
313
314
#### Usage Examples
315
316
```python
317
# Get all corporate events
318
all_events = company.events(symbol="TCB")
319
320
# Get dividend events only
321
dividend_events = company.events(
322
symbol="VCB",
323
event_type="dividend",
324
start_date="2023-01-01",
325
end_date="2023-12-31"
326
)
327
328
# Get upcoming shareholder meetings
329
upcoming_meetings = company.events(
330
symbol="HPG",
331
event_type="meeting"
332
)
333
```
334
335
## Data Source Specifics
336
337
### VCI (Vietnam Capital Securities)
338
339
- **Coverage**: All Vietnamese listed companies (HOSE, HNX, UPCOM)
340
- **Data Depth**: Comprehensive corporate governance data
341
- **Update Frequency**: Daily updates for corporate actions
342
- **Languages**: Vietnamese and English support
343
- **Historical Data**: Multi-year historical corporate data
344
345
#### VCI-Specific Features
346
347
- Detailed shareholder tracking with ownership changes
348
- Comprehensive management background information
349
- Complete subsidiary mapping with ownership percentages
350
- Real-time corporate event notifications
351
352
### TCBS (Techcombank Securities)
353
354
- **Coverage**: Vietnamese listed companies with focus on major stocks
355
- **Data Depth**: Detailed financial and corporate information
356
- **Update Frequency**: Real-time corporate event updates
357
- **Languages**: Vietnamese and English
358
- **Specialization**: Enhanced analytical data and ratios
359
360
#### TCBS-Specific Features
361
362
- Advanced company screening capabilities
363
- Enhanced financial ratio analysis
364
- Comprehensive industry comparisons
365
- Real-time news aggregation from multiple sources
366
367
## Data Integration Examples
368
369
### Comprehensive Company Analysis
370
371
```python
372
from vnstock import Company
373
374
# Initialize company adapter
375
company = Company(source="vci")
376
377
# Get complete company profile
378
symbol = "TCB"
379
380
# Basic information
381
overview = company.overview(symbol=symbol)
382
shareholders = company.shareholders(symbol=symbol)
383
management = company.officers(symbol=symbol, filter_by="working")
384
385
# Corporate structure
386
subsidiaries = company.subsidiaries(symbol=symbol, filter_by="all")
387
affiliates = company.affiliate(symbol=symbol)
388
389
# Recent developments
390
news = company.news(symbol=symbol, page_size=10)
391
events = company.events(symbol=symbol)
392
393
# Combine for comprehensive analysis
394
print(f"Company: {overview['company_name'].iloc[0]}")
395
print(f"Market Cap: {overview['market_cap'].iloc[0]}")
396
print(f"Number of Shareholders: {len(shareholders)}")
397
print(f"Management Team Size: {len(management)}")
398
print(f"Subsidiaries Count: {len(subsidiaries)}")
399
print(f"Recent News Items: {len(news)}")
400
```
401
402
### Multi-Company Comparison
403
404
```python
405
# Compare multiple companies
406
symbols = ["TCB", "VCB", "BID"]
407
comparison_data = {}
408
409
for symbol in symbols:
410
comparison_data[symbol] = {
411
'overview': company.overview(symbol=symbol),
412
'shareholders': company.shareholders(symbol=symbol),
413
'management': company.officers(symbol=symbol, filter_by="working")
414
}
415
416
# Analyze comparative metrics
417
for symbol, data in comparison_data.items():
418
overview = data['overview']
419
print(f"{symbol}: Market Cap = {overview['market_cap'].iloc[0]}, P/E = {overview['pe_ratio'].iloc[0]}")
420
```