더북(TheBook)
# 투자자산 개수
    n = len( R )

# 수익률 최저에서 최대 사이를 반복한다
    for r in np.linspace( min( R ), max( R ), num=20 ):

# 최적화 함수에 전달할 초깃값을 동일 비중으로 시작한다
        W = np.ones([n]) / n

# 최적화 함수에 전달할 범위조건과 제약조건을 미리 준비한다
# 범위조건: 각 구성 자산의 투자 비중은 0~100% 사이다
# 제약조건: 전체 투자 비중은 100%이다
        bnds = [ ( 0, 1 ) for i in range( n ) ]
        cons = ( { 'type': 'eq', 'fun': lambda W: sum(W) - 1. } )

# 최적화 함수 minimize( )는 최적화할 obj 함수와
# 최적화를 시작할 초깃값을 인수로 받는다
        res = minimize( obj, W, ( R, C, r ), method='SLSQP', constraints=cons, bounds=bnds )
        if not res.success:

# 최적화에 실패한 경우
            raise BaseException( res.message )


신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.