가중치 제약 적용하기
투자자는 종종 포트폴리오 가중치에 대해 허용되는 최대값의 제약을 받습니다. 이런 제약은 실제로 장점이 될 수 있어요. 최대 가중치 제약의 장점은 이후 포트폴리오가 특정 자산에 덜 집중되도록 만든다는 점입니다. 하지만 단점도 있습니다. 같은 목표 수익률을 더 이상 달성하지 못하거나, 더 높은 변동성을 감수해야 할 수 있습니다.
이전 연습 문제에서 portfolio.optim() 함수가 reshigh 인자를 통해 가중치 제약을 설정할 수 있다는 점을 기억하세요. reshigh에는 각 자산에 대한 최대 가중치 벡터가 필요합니다.
이 연습에서는 서로 다른 최대 가중치 제약을 가진 세 개의 포트폴리오를 만들게 됩니다. 이를 위해 portfolio.optim() 함수의 출력 구조를 아는 것이 중요합니다. 이 함수는 네 가지 구성 요소를 담은 리스트를 반환합니다: (i) $pw: 포트폴리오 가중치, (ii) $px: 전체 포트폴리오 수익률, (iii) $pm: 기대 수익률 포트폴리오, (iv) $ps: 포트폴리오 수익률의 표준편차.
이 연습은 강의의 일부입니다
R로 배우는 포트폴리오 분석 입문
연습 안내
rep()함수를 사용해returns의 각 자산(열)에 대한 최대 가중치 벡터 3개를 만드세요. 첫 번째 벡터는 최대 가중치 100%, 두 번째는 10%, 세 번째는 5%로 하세요. 각각을max_weights1,max_weights2,max_weights3라고 부르세요.- 최대 가중치 100%로 최적 포트폴리오를 만들어
opt1이라고 하세요. - 최대 가중치 10%로 최적 포트폴리오를 만들어
opt2라고 하세요. - 최대 가중치 5%로 최적 포트폴리오를 만들어
opt3라고 하세요. - 각 포트폴리오에서 가중치가 1%보다 큰 자산의 개수를 계산하세요. 가중치는 포트폴리오 이름 뒤에
$pw로 접근합니다. - 생성한 세 포트폴리오의 변동성(표준편차
$ps)을 출력하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Create vectors of maximum weights
max_weights1 <- rep(1, ncol(returns))
max_weights2 <- ___
max_weights3 <- ___
# Create an optimum portfolio with max weights of 100%
opt1 <- portfolio.optim(___, reshigh = ___)
# Create an optimum portfolio with max weights of 10%
# Create an optimum portfolio with max weights of 5%
# Calculate how many assets have a weight that is greater than 1% for each portfolio
sum(opt1$pw > .01)
sum(___$pw > .01)
sum(___$pw > .01)
# Print portfolio volatilites
opt1$ps
___$__
___$__