시작하기무료로 시작하기

최적 Sharpe 비율 구하기

각 날짜별로 Machine Learning의 타깃으로 사용할 "이상적인" 포트폴리오를 찾아야 해요. 이를 위해 portfolio_returns의 각 날짜를 순회하고, 이어서 portfolio_returns[date]에 있는 우리가 생성한 포트폴리오들을 순회할 거예요. 그런 다음 무위험 수익률을 0이라고 가정하고, 수익률을 변동성으로 나눈 Sharpe 비율을 계산합니다.

현재 날짜(portfolio_returns[date])의 수익률을 순회할 때 enumerate()를 사용해 인덱스 i도 함께 추적해요. 그런 다음 현재 날짜와 현재 인덱스를 사용해 각 포트폴리오의 변동성을 portfolio_volatility[date][i]로 가져옵니다. 마지막으로 np.argmax()를 사용해 각 날짜에서 Sharpe 비율이 가장 큰 항목의 인덱스를 구해요. 곧 이 인덱스를 사용해 이상적인 포트폴리오 가중치를 가져올 거예요.

이 연습은 강의의 일부입니다

Python으로 배우는 금융 분야 Machine Learning

강의 보기

연습 안내

  • 반복문에서 각 date에 대해 enumerate()를 사용해 portfolio_returns를 나열하세요.
  • 반복문의 현재 date에 대해, 수익률(ret)을 현재 날짜와 현재 i에 해당하는 portfolio_volatility로 나눈 값을 sharpe_ratio 딕셔너리 항목에 추가하세요.
  • 현재 datemax_sharpe_idxs 값을 np.argmax()로 최대 Sharpe 비율의 인덱스로 설정하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Empty dictionaries for sharpe ratios and best sharpe indexes by date
sharpe_ratio, max_sharpe_idxs = {}, {}

# Loop through dates and get sharpe ratio for each portfolio
for date in portfolio_returns.keys():
    for i, ret in enumerate(portfolio_returns[____]):
    
        # Divide returns by the volatility for the date and index, i
        sharpe_ratio.setdefault(date, []).append(____ / portfolio_volatility[date][____])

    # Get the index of the best sharpe ratio for each date
    max_sharpe_idxs[date] = np.argmax(sharpe_ratio[____])

print(portfolio_returns[date][max_sharpe_idxs[date]])
코드 편집 및 실행