Nalezení nejlepších Sharpe ratios
Potřebujeme najít „ideální" portfolia pro každé datum, abychom je mohli použít jako cíle pro machine learning. Projdeme v cyklu každé datum v portfolio_returns a pak portfolia, která jsme vygenerovali pomocí portfolio_returns[date]. Vypočítáme Sharpe ratio, což je výnos vydělený volatilitou (předpokládáme bezrizikový výnos 0).
Používáme enumerate() k procházení výnosů pro aktuální datum (portfolio_returns[date]) a ke sledování indexu pomocí i. Pak použijeme aktuální datum a aktuální index k získání volatility každého portfolia pomocí portfolio_volatility[date][i]. Nakonec získáme index nejlepšího Sharpe ratio pro každé datum pomocí np.argmax(). Tento index brzy využijeme k získání ideálních vah portfolia.
Toto cvičení je součástí kurzu
Machine Learning for Finance in Python
Pokyny k cvičení
- Pomocí
enumerate()projdiportfolio_returnspro každédatev cyklu. - Pro aktuální
datev cyklu přidej do slovníkusharpe_ratiohodnotu výnosu (ret) vydělenouportfolio_volatilitypro aktuální datum a aktuálníiv cyklech. - Nastav hodnotu
max_sharpe_idxspro aktuálnídatena index maximálního Sharpe ratio pomocínp.argmax().
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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]])