Začněte nyníZačněte zdarma

Výpočet portfolií

Teď vygenerujeme portfolia, abychom pro každý měsíc našli to nejlepší. Funkce random.random() z knihovny numpy generuje náhodná čísla z rovnoměrného rozdělení. Následně je normalizujeme tak, aby jejich součet byl 1 – pomocí operátoru /=. Tato váhy pak použijeme k výpočtu výnosů a volatility. Výnosy jsou součtem součinů vah a jednotlivých výnosů. Volatilita je složitější a zahrnuje kovariance různých akcií.

Nakonec uložíme hodnoty do slovníků pro pozdější použití – jako klíče budou sloužit data jednotlivých měsíců.

V tomto příkladu generujeme pro každé datum jen 10 portfolií, aby kód běžel rychleji. V praxi by sis pro několik málo akcií chtěl/a vygenerovat spíše 1 000 až 5 000 náhodných portfolií.

Toto cvičení je součástí kurzu

Machine Learning for Finance in Python

Zobrazit kurz

Pokyny k cvičení

  • Vygeneruj 3 náhodná čísla pro váhy pomocí np.random.random().
  • Vypočítej returns jako skalární součin (np.dot(); vynásobí prvky po složkách a výsledky sečte) vektoru weights a měsíčních výnosů pro aktuální date v cyklu.
  • Pomocí metody .setdefault() přidej do slovníku portfolio_weights prázdný seznam ([]) pro aktuální date a poté do tohoto seznamu přidej weights metodou append.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

portfolio_returns, portfolio_volatility, portfolio_weights = {}, {}, {}

# Get portfolio performances at each month
for date in sorted(covariances.keys()):
    cov = covariances[date]
    for portfolio in range(10):
        weights = np.random.random(____)
        weights /= np.sum(weights) # /= divides weights by their sum to normalize
        returns = np.dot(____, returns_monthly.loc[____])
        volatility = np.sqrt(np.dot(weights.T, np.dot(cov, weights)))
        portfolio_returns.setdefault(date, []).append(returns)
        portfolio_volatility.setdefault(date, []).append(volatility)
        portfolio_weights.setdefault(date, ____).append(____)
        
print(portfolio_weights[date][0])
Upravit a spustit kód