이차 효용 함수를 최대화하기
포트폴리오 최적화의 과제에 관한 영상에서, 패키지 quadprog를 사용해 이차 효용 최적화 문제를 푸는 방법을 살펴보셨습니다. 이번 연습에서는 PortfolioAnalytics 패키지를 사용해 이차 효용 문제를 해결하는 방법을 배워봅니다. 이차 효용 함수는 두 항으로 구성되며, 하나는 포트폴리오의 평균 수익률, 다른 하나는 위험회피 계수(lambda)가 곱해진 포트폴리오 분산 항임을 기억하세요.
이 연습은 강의의 일부입니다
R로 배우는 중급 포트폴리오 분석
연습 안내
index_returns데이터셋의 자산 이름으로 포트폴리오 명세 객체를 만들고, 객체 이름은port_spec으로 하세요.- 가중치의 합이 1이 되도록
port_spec객체에 전체 투자 제약 조건을 추가하세요. - 각 자산의 가중치가 0과 1 사이가 되도록
port_spec객체에 롱 온리 제약 조건을 추가하세요. - 포트폴리오 평균 수익률을 최대화하는 목표를
port_spec객체에 추가하세요. - 포트폴리오 분산을 최소화하는 목표를
port_spec객체에 추가하세요. 위험회피도는 10으로 설정하세요. - 최적화를 실행하세요. 이 문제는 이차 계획법(Quadratic Programming) 솔버로 풀 수 있으므로
optimize_method = "ROI"를 지정합니다.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Create the portfolio specification
port_spec <- portfolio.spec(assets = ___)
# Add a full investment constraint such that the weights sum to 1
port_spec <- add.constraint(portfolio = ___, type = ___)
# Add a long only constraint such that the weight of an asset is between 0 and 1
port_spec <- add.constraint(portfolio = ___, type = ___)
# Add an objective to maximize portfolio mean return
port_spec <- add.objective(portfolio = ___, type = ___, name = ___)
# Add an objective to minimize portfolio variance
port_spec <- add.objective(portfolio = port_spec, type = ___, name = ___, risk_aversion = ___)
# Solve the optimization problem
opt <- optimize.portfolio(R = ___, portfolio = ___, optimize_method = "ROI")