# 효율적 투자선 평균과 분산 리스트에
# 최적 포트폴리오 수익률과 분산 추가
frontier_mean.append( r )
frontier_var.append( np.dot( np.dot( res.x, C ), res.x ) )
return np.array( frontier_mean ), np.array( frontier_var )
# 효율적 포트폴리오 최적화: 위 두 개의 최적화 함수를 호출한다
def optimize_frontier( R, C, rf ):
# 접점포트폴리오 계산
W = solveWeights( R, C, rf )
# 투자 비중으로 계산한 평균과 분산
tan_mean = sum( R * W )
tan_var = np.dot( np.dot( W, C ), W )
# 효율적 포트폴리오 계산
eff_mean, eff_var = solveFrontier( R, C, rf )
# 비중, 접점포트폴리오의 평균/분산, 효율적 포트폴리오의 평균/분산을
# 딕셔너리 데이터형으로 돌려준다
return { 'weights':W, 'tan_mean':tan_mean, 'tan_var':tan_var, 'eff_mean':eff_mean, 'eff_var':eff_var }