# 경기 국면별 확률과 수익률을 행렬 곱셈한다. 연산의 결과 각 주식의 기대수익률이 계산된다
# 경기 국면별 확률과 수익률을 곱한다
expectedReturns = np.matmul( prob.T, returns )
# prob.T는 prob 전치행렬이며 두 행렬의 곱은 * 또는 matmul( ) 함수를 사용할 수 있다
expectedReturns = prob.T * returns
print( '3. 각 주식의 기대수익률: \n', expectedReturns )
# 투자 비중을 만든다. 주식의 개수(numStocks)대로 난수를 만든 후 이를 난수의 합으로 다시 나눠 전체 투자 비중의 합(100%)이 1.0이 되도록 한다
weights = np.random.rand( numStocks )
weights = weights / weights.sum( )
print( '4. 투자 비중*기대수익률: \n', weights )
# 각각의 투자 비중과 주식 기대수익률의 곱을 모두 합해 포트폴리오의 기대수익률을 계산한다
expectedReturnOfPortfolio = np.sum( weights*expectedReturns )
print( '5. 포트폴리오의 기대수익률: {:.2%}'.format( expectedReturnOfPortfolio ) )