본문 바로가기
WBS - 2024 Fall/포트폴리오 매니지먼트

(PF Mgmt #6) (6) 제약 조건이 있는 포트폴리오 최적화

by fastcho 2024. 11. 15.
반응형

(6) 제약 조건이 있는 포트폴리오 최적화

  • 라그랑주 미정 승수법을 사용하여 구한 효율적 프론티어 → '비현실적!'
  • 포트폴리오 최적화 문제 → 제약이 있는 최적화 문제
  • 수리 계획법 (Mathematical Programming)
    • 선형 계획법 (Linear Programming, LP)
    • 이차 계획법 (Quadratic Programming, QP)
  • R을 사용한 효율적 포트폴리오 계산
  • quadprog 패키지를 사용하여 최적화 수행

 

제약 조건이 있을 때의 포트폴리오 구성

  • 공매도 제약 등이 있을 경우, 라그랑주 미정 승수법을 사용하여 최적 포트폴리오를 구할 수 없습니다.
    • 대신 제약 조건을 만족하는 해(=실행 가능 해, feasible solution)를 찾아야 합니다.
  • 예제: Grinold & Kahn (1999), Table 14.1
    • 벤치마크: MMI Index
    • 제약 조건: 공매도 금지, 각 자산의 비중이 벤치마크 비중 +5.0% 이하

 

 

예제: TOPIX Core30

  • TOPIX Core30을 유니버스로 설정했을 때, 제약이 없는(unconstrained) 문제와 상하한 제약이 있는(constrained) 문제의 최적 해의 차이
    • 여기서의 알파는 과거 5년 수익률에 기반한 젠센 알파입니다.  
    • 공매도 금지, 벤치마크 비중 +5.0% 이하

 

 

금융을 위한 수리 계획법

- **알고리즘**
  - 선형 계획법을 위한 심플렉스 방법
  - 이차 계획법을 위한 유효 제약 방법 등

- **배경 지식, 수렴성, 정리 등**을 포함하면, 기초 과목까지 포함하여 여러 과목이 필요합니다. → 공학부의 학습 대상

- 자동차 엔진의 작동 원리를 모르거나 설계를 할 수 없어도, 자동차 "운전"은 가능합니다!
  - → R을 사용하여 제약 조건이 있는 포트폴리오 최적화만을 수행하는 것에 집중합니다.

 

 

 

 

 

R을 사용한 제약 조건이 있는 최적화

  • 기여 패키지의 도입 필요
  • 선형 계획 문제 (Linear Programming, LP)
    • 목적 함수와 제약 조건 모두 선형 함수
      → 패키지 'linprog'
    • 'linprog'를 설치하면 동시에 패키지 'lpSolve'도 설치됩니다.
      'lpSolve'는 R에서 C 언어 코드를 호출하므로, 이를 사용하는 것이 더 빠릅니다.
  • 이차 계획 문제 (Quadratic Programming, QP)
    • 목적 함수는 이차 함수이며, 제약 조건은 선형 등식과 선형 부등식입니다.
      → 패키지 'quadprog'
    • 패키지 'quadprog'는 하방 리스크 모델, 투자 스타일 분석 등에서도 사용되므로, 사용 방법을 잘 숙지해야 합니다. (사용 함수명은 `solve.QP`)

 

선형 계획 문제

  • 인덱스 펀드, 틸트 펀드의 구축.
  • 패키지 linprog를 설치하면 함수 solveLP를 사용할 수 있습니다.
    • 대상이 되는 최적화 문제는 다음과 같은 형식입니다.
    • 그 외의 문제에 대해서는 이 타입이 되도록 변형이 필요합니다.

 

예: 기대 리턴 최대화

  • 제약 조건을 만족하는 포트폴리오 중에서, 기대 리턴이 최대가 되는 포트폴리오를 찾습니다.
  • 제약 조건: 공매도 금지 + 보유 비율 상한

 

 

 

 

R에서 `solveLP` 함수의 사용 예

  • 샘플 프로그램:
    • 이 옵션을 사용하면 실제로는 `lpSolve` 패키지 내의 알고리즘이 사용됩니다.
      -> 이는 C 언어로 작성되어 있어 더 빠르게 실행됩니다.

 

 

이차 계획 문제

  • 평균-분산형 포트폴리오 최적화 문제 전반
  • 패키지 'quadprog'를 설치하면 함수 `solve.QP`를 사용할 수 있게 됩니다.

 

 

제약 조건이 있는 포트폴리오 최적화 (1)

  • 제약 조건이 있는 최적화 문제 (Constrained Optimization Problem)

 

 

제약 조건이 있는 포트폴리오 최적화 (2)

  • 프로그램별: 

 

포트폴리오 프론티어 

  • 프로그램 예제:

 

 

포트폴리오 프론티어의 그래프

  • 기본적으로 이전과 동일하게 구분 선형으로 그래프를 그립니다.

 

 

 

응용 예: 효율적 프론티어

  • 포트폴리오 프론티어가 아니라 효율적 프론티어(=최소 분산 포트폴리오보다 위쪽)를 그래프로 그리세요. 
    이때, 최소 분산 포트폴리오를 먼저 이차 계획 문제를 해결하여 정확히 구해야 합니다.
  • 포함 비율 상한 제약을 10%, 8%, 6%로 설정했을 때, 상한 제약이 효율적 프론티어에 어떻게 영향을 미치는지 확인하고 싶습니다. 
    따라서 한 그래프에 3개의 효율적 프론티어를 동시에 그리세요.

 

 

 

TOPIX Core30을 유니버스로 설정한 경우의 예제

 

 

투자 제약 조건 하에서의 효율적 프론티어: 스크립트 예제

 

 

 

 

 

 

 

 

 

 

 

결과에 대한 코멘트도 한줄 정도

어느정도로 설정하는게 좋은지 

3~6줄 정도 코멘트 

 

10개 정도 자산으로 

반응형