제약과 목표 정교화하기
여기서는 제약 조건과/또는 목표를 정교화하면 성과가 개선될 것이라고 가정해 보겠습니다. 각 자산의 리스크 기여도의 최소·최대 비율을 설정하는 리스크 예산 목표를 추가해 보세요. 앞서 생성한 포트폴리오 사양을 기반으로 계속 진행합니다. 이는 더 복잡한 최적화 문제이므로 전역 해 탐색이 필요하며, 최적화 방법으로 랜덤 포트폴리오를 사용하겠습니다.
이 연습은 강의의 일부입니다
R로 배우는 중급 포트폴리오 분석
연습 안내
- 표준편차로 리스크를 정의하는 리스크 예산 목표
risk_budget을port_spec에 추가하세요. 리스크의 최소 비율은 5%, 최대 비율은 10%로 설정하세요. - 분기 리밸런싱으로 최적화를 실행하세요. 학습 구간과 롤링 윈도우는 5년치 데이터로 설정하세요. 결과를
opt_rebal_rb라는 변수에 할당하세요. - 가중치 차트를 그리세요.
- 리스크에 대한 구성요소 비율 기여도를 차트로 그리세요.
Return.portfolio()를 사용해 포트폴리오 수익률을 계산하세요. 수익률은returns_rb라는 변수에 할당하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Add a risk budge objective
port_spec <- add.objective(portfolio = ___,
type = ___,
name = ___,
min_prisk = ___,
max_prisk = ___)
# Run the optimization
opt_rebal_rb <- optimize.portfolio.rebalancing(R = ___,
portfolio = ___,
optimize_method = "random", rp = rp,
trace = TRUE,
rebalance_on = ___,
training_period = ___,
rolling_window = ___)
# Chart the weights
# Chart the percentage contribution to risk
chart.RiskBudget(___, match.col = "StdDev", risk.type = ___)
# Compute the portfolio returns
returns_rb <- Return.portfolio(R = ___, weights = ___)
colnames(returns_rb) <- "risk_budget"