Beste Sharpe-ratio's bepalen
We moeten de "ideale" portefeuilles voor elke datum vinden zodat we die als targets voor Machine Learning kunnen gebruiken. We loopen door elke datum in portfolio_returns, en daarna door de portefeuilles die we hebben gegenereerd met portfolio_returns[date]. Vervolgens berekenen we de Sharpe-ratio, dat is het rendement gedeeld door de volatiliteit (we gaan uit van een risicovrij rendement van 0).
We gebruiken enumerate() om door de rendementen voor de huidige datum (portfolio_returns[date]) te lopen en met i de index bij te houden. Daarna gebruiken we de huidige datum en de huidige index om de volatiliteit van elke portefeuille op te halen met portfolio_volatility[date][i]. Tot slot halen we de index van de beste Sharpe-ratio voor elke datum op met np.argmax(). Die index gebruiken we straks om de ideale portefeuillegewichten te bepalen.
Deze oefening maakt deel uit van de cursus
Machine Learning voor finance in Python
Oefeninstructies
- Gebruik
enumerate()om deportfolio_returnsvoor elkedatein de lus te enumereren. - Voeg voor de huidige
datein de lus toe aan hetsharpe_ratio-dictionary-item met het rendement (ret) gedeeld doorportfolio_volatilityvoor de huidige datum en huidigeiin de lussen. - Stel de waarde voor de
max_sharpe_idxsvan de huidigedatein op de index van de maximale Sharpe-ratio metnp.argmax().
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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]])