# 최적화에 실패한 경우
raise BaseException( res.message )
# 최적화 결과를 돌려준다
return res.x
# 무위험수익률, 수익률, 공분산으로 효율적 투자선 계산
def solveFrontier( R, C, rf ):
# 파이썬은 함수 안에 함수를 정의할 수 있다
# 최적 비중 계산을 위해 다음과 같이 목적함수를 정의한다
def obj( W, R, C, r ):
# 주어진 수익률에서 분산을 최소화하는 비중 계산
mean = sum( R * W )
var = np.dot( np.dot( W, C ), W )
# 최적화 제약조건 페널티
penalty = 100 * abs( mean – r )
return var + penalty
# 효율적 투자선을 구성하는 평균-분산을 돌려줄
# 리스트를 미리 준비한다
frontier_mean, frontier_var = [ ], [ ]