1. Giới thiệu chung và Mục tiêu tiểu luận

Trong bối cảnh nền kinh tế toàn cầu ngày càng phụ thuộc vào dữ liệu, việc phân tích và khai thác dữ liệu tài chính trở thành một kỹ năng không thể thiếu đối với các nhà phân tích và nhà đầu tư. Ngôn ngữ R được xem là một trong những công cụ mạnh mẽ nhất cho phân tích dữ liệu, nhờ khả năng xử lý linh hoạt, tích hợp thống kê, và hỗ trợ trực quan hóa ở cấp độ chuyên sâu.

Đề tài của tiểu luận này là:

“Phân tích dữ liệu đầu tư và chỉ số tài chính của các công ty niêm yết trên sàn NYSE bằng ngôn ngữ R”

Bộ dữ liệu được sử dụng trong tiểu luận có tên “400K NYSE Random Investments + Financial Ratios”, bao gồm 405.258 quan sát và 25 biến. Dữ liệu mô phỏng các khoản đầu tư ngẫu nhiên trên sàn NYSE (New York Stock Exchange), kết hợp với các chỉ tiêu tài chính (financial ratios) của các công ty. Bộ dữ liệu giúp mô phỏng hoạt động đầu tư, đo lường hiệu quả sinh lời, và đánh giá rủi ro theo các chỉ số định lượng.

Mục tiêu chính của việc phân tích bộ dữ liệu này là áp dụng tuần tự các bước trong Roadmap R for Data Analysis, từ thao tác dữ liệu, trực quan hoá, đến phân tích thống kê và xây dựng mô hình, qua đó rèn luyện kỹ năng xử lý và diễn giải dữ liệu tài chính bằng ngôn ngữ R Markdown. Và kết quả phân tích giúp mô phỏng chiến lược đầu tư và đánh giá hiệu quả thị trường cổ phiếu Mỹ.

1.1. Cấu trúc và Đặc điểm bộ Dữ liệu

Tên bộ dữ liệu: 400K NYSE Random Investments + Financial Ratios Dataset.

Nguồn dữ liệu: dữ liệu giả lập dựa trên các chỉ số, giá trị đầu tư và thông tin tài chính của doanh nghiệp niêm yết tại sàn NYSE trên Kaggle.

Đặc điểm:

  • Số lượng quan sát: 405.208 dòng

  • Số lượng biến: 25 biến

  • Dạng dữ liệu: hỗn hợp giữa định tính (factor) và định lượng (numeric)

  • Khoảng thời gian: các giao dịch diễn ra trong giai đoạn từ 2013 đến 2018

  • Một số biến tiêu biểu:

Bộ dữ liệu bao gồm 25 biến phản ánh thông tin về công ty, giao dịch đầu tư và các chỉ tiêu tài chính. Dưới đây là tóm tắt một số nhóm biến chính:

  • Biến định danh:
    • X: chỉ số dòng dữ liệu.
    • company: mã công ty (ví dụ: BAC, JPM, FB…).
    • sector: lĩnh vực hoạt động (BANK, TECH, FMCG, RETAIL…).
  • Biến giao dịch:
    • horizon..days.: số ngày nắm giữ đầu tư.
    • amount: số tiền đầu tư.
    • date_BUY_fix, date_SELL_fix: ngày mua và ngày bán.
    • price_BUY, price_SELL: giá mua và giá bán cổ phiếu.
  • Biến lợi suất và rủi ro:
    • nominal_return: tỷ suất lợi nhuận danh nghĩa.
    • expected_return..yearly.: lợi suất kỳ vọng hàng năm.
    • Volatility_Buy, Volatility_sell: độ biến động giá.
    • Sharpe.Ratio: tỷ suất lợi nhuận điều chỉnh rủi ro.
  • Biến tài chính của doanh nghiệp:
    • PE_ratio, PB_ratio, EPS_ratio, PS_ratio: các tỷ số định giá cơ bản.
    • current_ratio, roa_ratio, roe_ratio: chỉ tiêu thanh khoản và hiệu quả sinh lời.
    • NetProfitMargin_ratio: tỷ suất lợi nhuận ròng.
    • ESG_ranking: xếp hạng bền vững ESG.
    • investment: phân loại kết quả đầu tư (GOOD/BAD).

1.2.Mô tả các biến

# Tóm tắt nhanh dữ liệu
skim(nyse)
Data summary
Name nyse
Number of rows 405258
Number of columns 25
_______________________
Column type frequency:
factor 5
numeric 20
________________________
Group variables None

Variable type: factor

skim_variable n_missing complete_rate ordered n_unique top_counts
company 0 1 FALSE 27 AMZ: 16270, M: 16161, PG: 16103, BAC: 16101
sector 0 1 FALSE 5 RET: 96269, TEC: 92401, BAN: 84757, AUT: 79836
date_BUY_fix 0 1 FALSE 1248 201: 590, 201: 587, 201: 573, 201: 562
date_SELL_fix 0 1 FALSE 1729 201: 571, 201: 554, 201: 546, 201: 545
investment 0 1 FALSE 2 BAD: 264440, GOO: 140818

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
X 0 1 249935.85 144239.75 0.00 125063.25 249937.50 374754.75 499999.00 ▇▇▇▇▇
horizon..days. 0 1 187.08 210.70 1.00 15.00 90.00 300.00 720.00 ▇▂▂▁▁
amount 0 1 8108.47 12774.43 50.00 400.00 2000.00 10000.00 50000.00 ▇▁▁▁▁
price_BUY 0 1 105.26 217.18 7.14 28.30 46.22 76.29 2039.51 ▇▁▁▁▁
price_SELL 0 1 116.73 250.14 4.01 28.39 48.02 81.65 3450.96 ▇▁▁▁▁
Volatility_Buy 0 1 0.25 0.10 0.09 0.19 0.23 0.31 0.70 ▇▇▃▁▁
Volatility_sell 0 1 0.26 0.10 0.09 0.19 0.24 0.32 0.92 ▇▅▁▁▁
Sharpe.Ratio 0 1 0.25 0.10 0.09 0.19 0.23 0.31 0.70 ▇▇▃▁▁
expected_return..yearly. 0 1 0.07 0.14 -0.28 0.00 0.01 0.08 1.02 ▁▇▁▁▁
inflation 0 1 0.58 1.04 -0.50 -0.20 -0.15 1.68 1.96 ▇▁▁▁▅
nominal_return 0 1 0.07 0.30 -0.87 -0.03 0.01 0.11 8.85 ▇▁▁▁▁
ESG_ranking 0 1 22.57 6.51 12.00 16.30 25.10 27.90 31.60 ▇▅▂▇▇
PE_ratio 0 1 30.33 84.74 0.00 9.82 13.71 23.49 1116.57 ▇▁▁▁▁
EPS_ratio 0 1 3.44 4.39 -6.56 1.46 2.96 4.56 29.87 ▂▇▁▁▁
PS_ratio 0 1 2.72 3.60 0.16 0.47 1.71 3.18 24.49 ▇▁▁▁▁
PB_ratio 0 1 4.69 5.91 0.00 1.22 3.05 5.23 47.62 ▇▁▁▁▁
NetProfitMargin_ratio 0 1 9.21 10.41 -24.63 2.62 7.70 15.77 62.00 ▁▇▆▁▁
current_ratio 0 1 2.17 2.56 0.61 0.98 1.22 1.79 13.56 ▇▁▁▁▁
roa_ratio 0 1 5.60 5.98 -12.99 1.74 5.71 7.99 38.13 ▁▇▃▁▁
roe_ratio 0 1 15.64 17.48 -99.49 8.83 16.10 26.03 57.25 ▁▁▁▇▃
# Mô tả các biến định lượng
summary(select_if(nyse, is.numeric))
##        X          horizon..days.      amount        price_BUY       
##  Min.   :     0   Min.   :  1.0   Min.   :   50   Min.   :   7.137  
##  1st Qu.:125063   1st Qu.: 15.0   1st Qu.:  400   1st Qu.:  28.303  
##  Median :249938   Median : 90.0   Median : 2000   Median :  46.218  
##  Mean   :249936   Mean   :187.1   Mean   : 8108   Mean   : 105.256  
##  3rd Qu.:374755   3rd Qu.:300.0   3rd Qu.:10000   3rd Qu.:  76.289  
##  Max.   :499999   Max.   :720.0   Max.   :50000   Max.   :2039.510  
##    price_SELL      Volatility_Buy    Volatility_sell    Sharpe.Ratio    
##  Min.   :   4.01   Min.   :0.09042   Min.   :0.09042   Min.   :0.09042  
##  1st Qu.:  28.39   1st Qu.:0.18536   1st Qu.:0.18900   1st Qu.:0.18536  
##  Median :  48.02   Median :0.23220   Median :0.23813   Median :0.23220  
##  Mean   : 116.73   Mean   :0.25414   Mean   :0.25969   Mean   :0.25414  
##  3rd Qu.:  81.65   3rd Qu.:0.30673   3rd Qu.:0.31648   3rd Qu.:0.30673  
##  Max.   :3450.96   Max.   :0.69756   Max.   :0.92253   Max.   :0.69756  
##  expected_return..yearly.   inflation       nominal_return      ESG_ranking   
##  Min.   :-0.278002        Min.   :-0.5000   Min.   :-0.87222   Min.   :12.00  
##  1st Qu.: 0.001059        1st Qu.:-0.2000   1st Qu.:-0.02837   1st Qu.:16.30  
##  Median : 0.012843        Median :-0.1500   Median : 0.01410   Median :25.10  
##  Mean   : 0.070825        Mean   : 0.5777   Mean   : 0.07102   Mean   :22.57  
##  3rd Qu.: 0.082635        3rd Qu.: 1.6800   3rd Qu.: 0.11124   3rd Qu.:27.90  
##  Max.   : 1.017344        Max.   : 1.9600   Max.   : 8.84703   Max.   :31.60  
##     PE_ratio         EPS_ratio         PS_ratio         PB_ratio     
##  Min.   :   0.00   Min.   :-6.560   Min.   : 0.160   Min.   : 0.000  
##  1st Qu.:   9.82   1st Qu.: 1.460   1st Qu.: 0.470   1st Qu.: 1.220  
##  Median :  13.71   Median : 2.960   Median : 1.710   Median : 3.050  
##  Mean   :  30.33   Mean   : 3.443   Mean   : 2.725   Mean   : 4.688  
##  3rd Qu.:  23.49   3rd Qu.: 4.560   3rd Qu.: 3.180   3rd Qu.: 5.230  
##  Max.   :1116.57   Max.   :29.870   Max.   :24.490   Max.   :47.620  
##  NetProfitMargin_ratio current_ratio      roa_ratio         roe_ratio     
##  Min.   :-24.630       Min.   : 0.610   Min.   :-12.990   Min.   :-99.49  
##  1st Qu.:  2.620       1st Qu.: 0.980   1st Qu.:  1.740   1st Qu.:  8.83  
##  Median :  7.700       Median : 1.220   Median :  5.710   Median : 16.10  
##  Mean   :  9.205       Mean   : 2.173   Mean   :  5.596   Mean   : 15.64  
##  3rd Qu.: 15.770       3rd Qu.: 1.790   3rd Qu.:  7.990   3rd Qu.: 26.03  
##  Max.   : 62.000       Max.   :13.560   Max.   : 38.130   Max.   : 57.25

Nhận xét tổng quan về bộ dữ liệu

Bộ dữ liệu 400K NYSE Random Investments + Financial Ratios bao gồm 405.258 quan sát25 biến, trong đó có 5 biến định tính (factor)20 biến định lượng (numeric). Quy mô dữ liệu lớn, cấu trúc rõ ràng, và chứa đầy đủ thông tin cần thiết để thực hiện các phân tích mô phỏng hoạt động đầu tư, đo lường hiệu quả tài chính và đánh giá rủi ro cổ phiếu.

Về các biến giao dịch, giá mua (price_BUY) dao động mạnh, từ 7.14 đến 2,039.51 USD, trong khi giá bán (price_SELL) trải rộng từ 4.01 đến 3,450.96 USD, cho thấy sự khác biệt lớn giữa các loại cổ phiếu trên thị trường. Số tiền đầu tư (amount) có giá trị trung bình khoảng 8,108 USD, nhưng độ phân tán khá cao (cao nhất đến 50,000 USD), phản ánh mức độ đa dạng trong quy mô đầu tư.

Các biến về hiệu suất đầu tư và rủi ro cho thấy sự chênh lệch đáng kể:

  • Lợi suất danh nghĩa (nominal_return) dao động từ -87.2% đến +884.7%, thể hiện sự tồn tại của cả khoản đầu tư thua lỗ lẫn siêu lợi nhuận.
  • Lợi suất kỳ vọng hàng năm (expected_return..yearly.) trung bình 7.08%, với biên độ khá rộng, cho thấy rủi ro và cơ hội cao trong thị trường.
  • Độ biến động giá (Volatility_BuyVolatility_sell) trung bình khoảng 0.25, nhưng có giá trị cực đại trên 0.9, phản ánh sự khác biệt về rủi ro giữa các cổ phiếu.

Đối với các chỉ số tài chính (financial ratios), phân bố cũng khá đa dạng:

  • PE ratio (Price to Earnings) có giá trị trung bình 30.33, với một số cổ phiếu có PE rất cao (tối đa hơn 1100), biểu thị khả năng định giá cao vượt trội hoặc biến động bất thường.
  • EPS ratio (Earnings per Share) trung bình 3.44, nằm trong vùng hợp lý, nhưng xuất hiện một vài giá trị âm thể hiện doanh nghiệp lỗ.
  • PB ratio (Price to Book) có giá trị trung bình 4.69, với cực đại 47.62, cho thấy có một số công ty được thị trường định giá cao hơn nhiều so với giá trị sổ sách.
  • Net Profit Margin trung bình 9.20%, dao động từ -24.6% đến 62%, chứng tỏ sự khác biệt rõ giữa các doanh nghiệp hiệu quả và doanh nghiệp yếu kém.
  • ROA (Return on Assets)ROE (Return on Equity) có giá trị trung bình lần lượt là 5.6%15.6%, phản ánh hiệu quả sinh lời ở mức trung bình khá.

Ngoài ra, biến ESG_ranking (xếp hạng bền vững) dao động từ 12.0 đến 31.6, trung bình 22.6, thể hiện rằng đa phần các công ty trong tập dữ liệu có mức độ phát triển bền vững trung bình. Biến inflation có giá trị trung bình 0.58%, chủ yếu dao động quanh 0%, phù hợp với môi trường kinh tế ổn định của Mỹ trong giai đoạn mô phỏng.

Tổng thể, bộ dữ liệu có sự phân tán lớn, đa chiều và mang tính đại diện cao cho hoạt động đầu tư cổ phiếu. Nó phù hợp cho việc triển khai phân tích mô tả, phân tích thống kê, và các mô hình định lượng. Điều này giúp bộ dữ liệu trở thành nền tảng tốt cho phân tích định lượng và mô hình hóa tài chính.

1.3.Kiểm tra cấu trúc dữ liệu và xem 6 dòng đầu

# Kiểm tra kích thước dữ liệu
cat("Số quan sát:", nrow(nyse), "\n")
## Số quan sát: 405258
cat("Số biến:", ncol(nyse), "\n")
## Số biến: 25
# Kiểm tra cấu trúc và 6 dòng đầu
str(nyse)
## 'data.frame':    405258 obs. of  25 variables:
##  $ X                       : int  0 1 2 3 4 5 7 8 9 10 ...
##  $ company                 : Factor w/ 27 levels "AAPL","AMZN",..: 5 4 3 16 14 21 9 26 4 14 ...
##  $ sector                  : Factor w/ 5 levels "AUTO","BANK",..: 4 2 2 4 2 3 5 2 2 2 ...
##  $ horizon..days.          : int  2 330 7 5 360 15 720 600 30 6 ...
##  $ amount                  : int  100 15000 3000 20000 15000 50000 1500 300 50000 400 ...
##  $ date_BUY_fix            : Factor w/ 1248 levels "2013-10-10","2013-10-11",..: 905 779 741 750 353 729 272 593 440 582 ...
##  $ date_SELL_fix           : Factor w/ 1729 levels "2013-10-11","2013-10-15",..: 905 1004 745 753 598 738 764 1004 460 584 ...
##  $ price_BUY               : num  55.6 18.6 59.9 38.2 51.9 ...
##  $ price_SELL              : num  53.5 24.7 59.5 36 52 ...
##  $ Volatility_Buy          : num  0.384 0.323 0.239 0.429 0.195 ...
##  $ Volatility_sell         : num  0.386 0.236 0.235 0.429 0.254 ...
##  $ Sharpe.Ratio            : num  0.384 0.323 0.239 0.429 0.195 ...
##  $ expected_return..yearly.: num  1.44e-03 1.71e-01 2.82e-03 9.39e-05 1.50e-01 ...
##  $ inflation               : num  1.96 -0.2 -0.2 -0.2 -0.5 -0.2 -0.15 -0.2 -0.5 -0.2 ...
##  $ nominal_return          : num  -0.03722 0.32432 -0.00576 -0.05839 0.00344 ...
##  $ investment              : Factor w/ 2 levels "BAD","GOOD": 1 2 1 1 2 2 2 2 1 2 ...
##  $ ESG_ranking             : num  12 26.3 19.8 12.9 27.9 17.6 31.6 24.8 26.3 27.9 ...
##  $ PE_ratio                : num  12.58 11.39 10.58 11.09 9.38 ...
##  $ EPS_ratio               : num  3.73 1.26 5.64 3.27 5.46 4.56 1.05 1.71 0.96 5.99 ...
##  $ PS_ratio                : num  0.38 1.71 1.67 0.36 1.87 ...
##  $ PB_ratio                : num  3.19 0.54 2.6 1.25 0.81 ...
##  $ NetProfitMargin_ratio   : num  3.01 15.7 15.68 3.17 19.91 ...
##  $ current_ratio           : num  1.49 0.92 1.91 1.6 0.99 ...
##  $ roa_ratio               : num  8.69 0.67 3.39 4.41 0.81 ...
##  $ roe_ratio               : num  26.69 5.54 25.78 11.35 8.91 ...
head(nyse)

1.4.Kiểm tra dữ liệu trùng lặp

# Kiểm tra Trùng lặp
duplicated_records <- sum(duplicated(nyse))
cat("Số lượng bản ghi trùng lặp:", duplicated_records, "\n")
## Số lượng bản ghi trùng lặp: 0

1.5. Kiểm tra số quan sát bị thiếu

# Kiểm tra NA
na_count_per_column <- colSums(is.na(nyse))
total_na_count <- sum(na_count_per_column)

cat("Tổng số giá trị NA trong toàn bộ dữ liệu:", total_na_count, "\n")
## Tổng số giá trị NA trong toàn bộ dữ liệu: 0
print(na_count_per_column[na_count_per_column > 0])
## named numeric(0)
# Kiểm tra NA
na_count_per_column <- colSums(is.na(nyse))
total_na_count <- sum(na_count_per_column)

cat("Tổng số giá trị NA trong toàn bộ dữ liệu:", total_na_count, "\n")
## Tổng số giá trị NA trong toàn bộ dữ liệu: 0
print(na_count_per_column[na_count_per_column > 0])
## named numeric(0)

2. Phân tích thống kê mô tả theo nhóm

Thống kê mô tả được thực hiện theo hai hướng: nhóm theo ngành nghề (sector) và nhóm theo phân loại khoản đầu tư (investment). Mục tiêu của phần này là giúp hiểu rõ đặc điểm tổng quan của bộ dữ liệu khoản đầu tư trên sàn NYSE, đặc biệt là mối quan hệ giữa lợi suất, biến động và các chỉ số tài chính như P/E, ROE, ROA.

2.1.Thống kê mô tả theo ngành nghề

# 1. Mô tả tổng quan theo ngành nghề (sector)
nyse_sector_summary <- nyse %>%
  group_by(sector) %>%
  summarise(
    So_quan_sat = n(),
    Mean_Return = mean(nominal_return, na.rm = TRUE),
    Mean_Volatility = mean(Volatility_Buy, na.rm = TRUE),
    Mean_PE = mean(PE_ratio, na.rm = TRUE),
    Mean_ROE = mean(roe_ratio, na.rm = TRUE),
    Mean_ROA = mean(roa_ratio, na.rm = TRUE)
  ) %>%
  arrange(desc(So_quan_sat))

# BẢNG
nyse_sector_summary %>%
  mutate(
    # Làm tròn số
    So_quan_sat = format(So_quan_sat, big.mark = ","),
    across(starts_with("Mean"), ~round(., 4))
  ) %>%
  kable(
    caption = "Bảng 1.3.1. Thống kê mô tả theo ngành nghề",
    align = "c"
  ) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "responsive"),
    full_width = F
  )
Bảng 1.3.1. Thống kê mô tả theo ngành nghề
sector So_quan_sat Mean_Return Mean_Volatility Mean_PE Mean_ROE Mean_ROA
RETAIL 96,269 0.0592 0.2686 14.3496 18.9336 6.1347
TECH 92,401 0.1996 0.2675 79.4631 20.7121 11.6058
BANK 84,757 0.0262 0.2657 18.4132 10.0402 1.2225
AUTO 79,836 0.0033 0.2772 8.3337 6.0926 1.6893
FMCG 51,995 0.0416 0.1494 25.7981 24.3482 7.0468

Nhận xét: Ngành Technology và Financials chiếm tỷ trọng lớn. Ngành Technology thường đạt mức lợi suất trung bình cao nhất, phù hợp với đặc điểm tăng trưởng mạnh. Ngược lại, các ngành như Utilities hay Energy có lợi suất trung bình thấp hơn, song lại đi kèm với độ biến động (Volatility) thấp, thể hiện tính ổn định và ít rủi ro hơn.

# 2. Biểu đồ: Lợi suất trung bình theo ngành
ggplot(nyse_sector_summary, aes(x = reorder(sector, Mean_Return), y = Mean_Return, fill = sector)) +
  geom_col(show.legend = FALSE) +
  coord_flip() +
  labs(title = "Hình 1.3.1. Lợi suất trung bình theo ngành", x = "Ngành nghề", y = "Lợi suất danh nghĩa (nominal_return)") +
  theme_minimal(base_size = 12)

Biểu đồ 1.3.1 minh họa rõ xu hướng này khi ngành công nghệ và tài chính nổi bật về hiệu quả sinh lời, trong khi nhóm ngành công nghiệp cơ bản duy trì mức lợi suất khiêm tốn hơn. Điều này gợi ý rằng sự khác biệt giữa các ngành có thể đóng vai trò quan trọng trong việc xác định danh mục đầu tư hiệu quả.

2.2.Thống kê theo phân loại đầu tư

Dữ liệu được nhóm theo biến investment (GOOD và BAD).

# 3. Mô tả tổng quan theo phân loại đầu tư (investment)
nyse_investment_summary <- nyse %>%
  group_by(investment) %>%
  summarise(
    So_quan_sat = n(),
    Mean_Return = mean(nominal_return, na.rm = TRUE),
    Mean_Volatility = mean(Volatility_Buy, na.rm = TRUE),
    Mean_Sharpe = mean(Sharpe.Ratio, na.rm = TRUE),
    Mean_PE = mean(PE_ratio, na.rm = TRUE),
    Mean_ROE = mean(roe_ratio, na.rm = TRUE)
  )

# SỬ DỤNG KABLEEXTRA ĐỂ LÀM ĐẸP BẢNG
nyse_investment_summary %>%
  mutate(
    # Làm tròn số
    So_quan_sat = format(So_quan_sat, big.mark = ","),
    across(starts_with("Mean"), ~round(., 4))
  ) %>%
  kable(
    caption = "Bảng 1.3.2. Thống kê mô tả theo loại khoản đầu tư",
    align = "c"
  ) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "responsive"),
    full_width = F
  )
Bảng 1.3.2. Thống kê mô tả theo loại khoản đầu tư
investment So_quan_sat Mean_Return Mean_Volatility Mean_Sharpe Mean_PE Mean_ROE
BAD 264,440 0.0054 0.2507 0.2507 29.3452 15.9127
GOOD 140,818 0.1942 0.2605 0.2605 32.1777 15.1399

Nhận xét: Nhóm GOOD investments có lợi suất danh nghĩa trung bình cao hơn đáng kể so với nhóm BAD, đồng thời sở hữu tỷ lệ Sharpe Ratio cao hơn. Điều này chứng tỏ sự phân loại đầu tư theo tiêu chí “GOOD” có cơ sở thống kê nhất định, phản ánh hiệu quả sinh lời vượt trội

# 4. Biểu đồ: So sánh lợi suất giữa GOOD và BAD investments
ggplot(nyse_investment_summary, aes(x = investment, y = Mean_Return, fill = investment)) +
  geom_col(show.legend = FALSE) +
  labs(title = "Hình 1.3.2. So sánh lợi suất trung bình theo loại khoản đầu tư",
       x = "Phân loại đầu tư", y = "Lợi suất danh nghĩa (nominal_return)") +
  theme_minimal(base_size = 12)

# 5. Boxplot: Phân bố PE Ratio theo loại đầu tư
ggplot(nyse, aes(x = investment, y = PE_ratio, fill = investment)) +
  geom_boxplot(outlier.color = "red", alpha = 0.6) +
  labs(title = "Hình 1.5.3. Phân bố hệ số PE theo loại khoản đầu tư", x = "Loại đầu tư", y = "PE Ratio") +
  theme_minimal(base_size = 12)

Nhận xét: Hình 1.3.2 thể hiện rõ sự khác biệt này với khoảng cách đáng kể giữa hai cột đại diện cho lợi suất trung bình. Bên cạnh đó, boxplot PE Ratio (Hình 1.5.3) cho thấy nhóm GOOD có phân bố hệ số P/E rộng hơn và xuất hiện nhiều giá trị ngoại lai cao, ngụ ý rằng nhà đầu tư sẵn sàng trả mức định giá cao hơn cho các khoản đầu tư được đánh giá tốt, đi kèm với sự phân tán lớn hơn về định giá.

3.Phân tích phân bố và mối quan hệ giữa các biến

3.1. Phân tích phân bố tỷ suất Lợi nhuận (Nominal Return Distribution)

# Biểu đồ histogram lợi suất danh nghĩa
ggplot(nyse, aes(x = nominal_return)) +
  geom_histogram(bins = 60, fill = "#0073C2FF", color = "white", alpha = 0.8) +
  labs(title = "Hình 1.4.1. Phân bố tỷ suất lợi nhuận danh nghĩa",
       x = "Tỷ suất lợi nhuận (%)",
       y = "Tần suất (Số lượng quan sát)") +
  theme_minimal(base_size = 12)

# Tính các thống kê cơ bản
summary(nyse$nominal_return)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -0.87222 -0.02837  0.01410  0.07102  0.11124  8.84703

Nhận xét: Phân bố có dạng lệch phải (right-skewed), tập trung dày đặc ở các giá trị gần 0%. Sự tồn tại của một “đuôi” dài kéo về phía phải thể hiện tồn tại một số ít các trường hợp đầu tư đạt mức sinh lời rất cao (tỷ suất lợi nhuận đột biến), phù hợp với đặc trưng của thị trường cổ phiếu có rủi ro cao.

3.2.So sánh độ biến động giá (Volatility Comparison)

# So sánh độ biến động giá khi mua và khi bán
vol_data <- nyse %>%
  select(Volatility_Buy, Volatility_sell) %>%
  pivot_longer(cols = everything(), names_to = "Giai_doan", values_to = "Volatility")

ggplot(vol_data, aes(x = Giai_doan, y = Volatility, fill = Giai_doan)) +
  geom_boxplot(alpha = 0.7) +
  labs(title = "Hình 1.4.2. Phân bố độ biến động giá khi mua và khi bán",
       x = "Giai đoạn giao dịch",
       y = "Độ biến động (Volatility)") +
  theme_minimal(base_size = 12) +
  theme(legend.position = "none")

Nhận xét: Phân phối độ biến động giá mua (Buy) và giá bán (Sell) rất giống nhau về cả trung vị và phạm vi phân tán trung tâm. Điều này cho thấy sự biến động không có sự khác biệt đáng kể giữa thời điểm nhà đầu tư thực hiện giao dịch mua và giao dịch bán. Việc thị trường có nhiều biến động (Volatility cao) xảy ra ở cả hai giai đoạn (mua và bán), nhưng các giao dịch cực đoan (outliers) dường như phổ biến hơn ở phía bán (Volatility_Sell) do đuôi ngoại lai ở biểu đồ hộp bán có vẻ kéo dài và dày đặc hơn một chút so với phía mua.

3.3.Mối quan hệ giữa Hiệu quả Sinh lời (ROA vs ROE Relationship)

ggplot(nyse, aes(x = roa_ratio, y = roe_ratio)) +
  geom_point(alpha = 0.4, color = "#00AFBB") +
  geom_smooth(method = "lm", color = "red", se = FALSE) +
  labs(
    title = "Hình 1.4.3. Mối quan hệ giữa ROA và ROE của doanh nghiệp",
    x = "ROA (%)",
    y = "ROE (%)"
  ) +
  theme_minimal(base_size = 12)

Nhận xét: Có một mối tương quan tuyến tính dương mạnh giữa ROA và ROE. Độ dốc của đường hồi quy lớn hơn 1 là minh chứng rõ ràng cho việc sử dụng đòn bẩy tài chính đã khuếch đại lợi nhuận được tạo ra từ tài sản lên trên vốn cổ phần.