Yếu tố 2: Lựa chọn tỷ trọng danh mục
Nhà đầu tư có thể tối ưu hóa việc chọn tỷ trọng để đạt lợi nhuận điều chỉnh theo rủi ro cao nhất, được đo bằng tỷ số Sharpe của danh mục.
Trong trường hợp đặc biệt khi đầu tư toàn bộ giá trị danh mục vào chỉ hai tài sản, bạn chỉ cần xác định một tỷ trọng, vì tỷ trọng của tài sản thứ hai bằng một trừ đi tỷ trọng của tài sản thứ nhất.
Hãy thực hiện điều này với một danh mục đầu tư vào cổ phiếu Mỹ và trái phiếu Mỹ. Chúng ta sẽ dùng cách thử-thô (brute force): thử một số lượng lớn các tỷ trọng khả dĩ và giữ lại tỷ trọng cho giá trị tỷ số Sharpe của danh mục cao nhất (giả định lãi suất phi rủi ro bằng 0).
Bài tập này là một phần của khóa học
Giới thiệu Phân tích Danh mục đầu tư bằng R
Hướng dẫn bài tập
- Tạo một vector tên
gridbằngseq()bắt đầu từ 0, kết thúc ở 1, với bước tăng 0.01. - Khởi tạo vector rỗng
vsharpecó cùng độ dài vớigrid. Một cách phổ biến là tạo một vector chứa các giá trị NA bằng hàm rep(). Bạn sẽ thay các giá trị NA này trong vòng lặp ở bước tiếp theo. - Trong vòng lặp for, bạn sẽ tính tỷ số Sharpe cho từng tỷ trọng khả dĩ trong
grid. Lệnh đầu tiên trong vòng lặp chọn phần tử thứ i của grid và lưu vào đối tượngweight, giá trị này thay đổi ở mỗi vòng lặp. - Bạn muốn xem lợi nhuận danh mục thay đổi như thế nào khi tỷ trọng thay đổi. Tạo đối tượng
preturnsbằng tổng củaweightnhân vớireturns_equities, và(1-weight)nhân vớireturns_bonds. - Tiếp theo, bạn sẽ thay các NA trong
vsharpebằng tỷ số Sharpe đã quy đổi theo năm (SharpeRatio.annualized()) củapreturns. - Điền vào hàm vẽ biểu đồ, trong đó các tỷ trọng khả dĩ (
grid) trên trục x và các tỷ số Sharpe trên trục y.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Create a grid
grid <- seq(from = ___, to = ___, by = ___)
# Initialize an empty vector for Sharpe ratios
vsharpe <- rep(NA, times = ___ )
# Create a for loop to calculate Sharpe ratios
for(i in 1:length(grid)) {
weight <- ___[i]
preturns <- ___ * ___ + (1 - ___) * ___
vsharpe[i] <- SharpeRatio.annualized(___)
}
# Plot weights and Sharpe ratio
plot(___, ___, xlab = "Weights", ylab= "Ann. Sharpe ratio")
abline(v = grid[vsharpe == max(vsharpe)], lty = 3)