단일 기간 최적화
최적화를 실행하는 함수는 optimize.portfolio()와 optimize.portfolio.rebalancing() 두 가지가 있어요. 이 연습 문제에서는 단일 기간 최적화에 집중하고, 다음 연습 문제에서는 optimize.portfolio.rebalancing()을 사용해 정기 리밸런싱이 있는 최적화를 다룰 거예요. optimize.portfolio()는 단일 기간 최적화를 지원합니다. 주요 인수에는 자산 수익률을 위한 R, 포트폴리오 사양 객체를 위한 portfolio, 그리고 문제를 해결하는 데 사용할 최적화 방법을 지정하는 optimize_method가 있어요. 많은 경우, 각 반복/시도에서 추가 정보를 저장하려면 trace = TRUE로 지정하는 것이 유용합니다.
지원되는 최적화 방법은 다음과 같아요:
DEoptim: Differential evolutionrandom: Random portfoliosGenSA: Generalized Simulated Annealingpso: Particle swarm optimizationROI: 선형 및 이차 계획법 풀이기를 위한 R Optimization Infrastructure
선택하는 최적화 방법은 해결하려는 문제의 유형에 따라 달라져야 해요. 예를 들어, 이차 계획법으로 정식화할 수 있는 문제는 이차 계획법 풀이기를 사용해 해결해야 하고, 비볼록 문제는 DEoptim 같은 전역 최적화 방법으로 풀어야 합니다.
이 연습 문제에서는 평균 수익률을 최대화하고 포트폴리오 표준편차를 최소화하되, 최소 비중 위험 5%, 최대 비중 위험 10%의 표준편차 위험 예산을 적용하고, 전액 투자(full investment) 및 롱 온리 제약을 따르는 포트폴리오 최적화 문제를 정의합니다. 위험 예산 목표에는 전역 풀이기가 필요하므로, 무작위 포트폴리오(random portfolios)를 사용해 문제를 풀겠습니다. 무작위 포트폴리오 집합 rp는 이 연습 문제에서 500개의 순열로 생성되어 있어요.
이 연습은 강의의 일부입니다
R로 배우는 중급 포트폴리오 분석
연습 안내
포트폴리오 사양은 이미 생성되어 있으며 이름은 port_spec이에요. 작업 공간에는 수익률 asset_returns도 준비되어 있어요.
- 최적화 방법으로
"random"을 사용하고,trace를TRUE로 설정해 단일 기간 최적화를 실행하세요. 최적화 결과는opt라는 변수에 할당하세요. - 최적화 결과를 출력하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Run a single period optimization using random portfolios as the optimization method
opt <- optimize.portfolio(R = ___, portfolio = ___, optimize_method = ___, rp = rp, trace = TRUE)
# Print the output of the single-period optimization