Hitta de bästa Sharpe-kvoterna
Vi behöver hitta de "ideala" portföljerna för varje datum så att vi kan använda dem som mål för maskininlärning. Vi loopar igenom varje datum i portfolio_returns och sedan igenom de portföljer vi genererat med portfolio_returns[date]. Därefter beräknar vi Sharpe-kvoten, som är avkastningen dividerad med volatiliteten (under antagandet att riskfri avkastning är 0).
Vi använder enumerate() för att loopa igenom avkastningarna för det aktuella datumet (portfolio_returns[date]) och hålla reda på indexet med i. Sedan använder vi det aktuella datumet och det aktuella indexet för att hämta volatiliteten för varje portfölj med portfolio_volatility[date][i]. Slutligen hämtar vi indexet för den bästa Sharpe-kvoten för varje datum med hjälp av np.argmax(). Det indexet använder vi sedan för att hämta de ideala portföljvikterna.
Den här övningen är en del av kursen
Maskininlärning för finans i Python
Övningsinstruktioner
- Använd
enumerate()för att iterera överportfolio_returnsför varjedatei loopen. - För det aktuella
datei loopen, lägg till i ordbokspostensharpe_ratiomed avkastningen (ret) dividerad medportfolio_volatilityför det aktuella datumet och det aktuellaii looparna. - Sätt värdet för det aktuella
date:smax_sharpe_idxstill indexet för den maximala Sharpe-kvoten med hjälp avnp.argmax().
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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]])