샤프 비율: 특성과 타깃

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

Nathan George

Data Science Professor

최적 포트폴리오

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

샤프 포인트가 표시된 최적 포트폴리오

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

샤프 비율 공식

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

샤프 비율 계산

# 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[date]): volatility = portfolio_volatility[date][i] sharpe_ratio.setdefault(date,[]).append(ret / volatility) # get the index of the best sharpe ratio for each date max_sharpe_idxs[date] = np.argmax(sharpe_ratio[date])
Python으로 배우는 금융 분야 Machine Learning

특성 생성

# calculate exponentially-weighted moving average of daily returns
ewma_daily = returns_daily.ewm(span=30).mean()

# resample daily returns to first business day of the month
ewma_monthly = ewma_daily.resample('BMS').first()

# shift ewma 1 month forward
ewma_monthly = ewma_monthly.shift(1).dropna()
Python으로 배우는 금융 분야 Machine Learning

특성과 타깃 계산

targets, features = [], []

# create features from price history and targets as ideal portfolio for date, ewma in ewma_monthly.iterrows(): # get the index of the best sharpe ratio best_idx = max_sharpe_idxs[date] targets.append(portfolio_weights[date][best_idx]) features.append(ewma) targets = np.array(targets) features = np.array(features)
Python으로 배우는 금융 분야 Machine Learning
# latest date
date = sorted(covariances.keys())[-1]

cur_returns = portfolio_returns[date] cur_volatility = portfolio_volatility[date]
plt.scatter(x=cur_volatility, y=cur_returns, alpha=0.1, color='blue') best_idx = max_sharpe_idxs[date] plt.scatter(cur_volatility[best_idx], cur_returns[best_idx], marker='x', color='orange') plt.xlabel('Volatility') plt.ylabel('Returns') plt.show()
Python으로 배우는 금융 분야 Machine Learning

샤프 비율이 표시된 효율적 프런티어

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

샤프 비율 구하기!

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

Preparing Video For Download...