Aan de slagBegin gratis

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

Bekijk cursus

Oefeninstructies

  • Gebruik enumerate() om de portfolio_returns voor elke date in de lus te enumereren.
  • Voeg voor de huidige date in de lus toe aan het sharpe_ratio-dictionary-item met het rendement (ret) gedeeld door portfolio_volatility voor de huidige datum en huidige i in de lussen.
  • Stel de waarde voor de max_sharpe_idxs van de huidige date in op de index van de maximale Sharpe-ratio met np.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]])
Code bewerken en uitvoeren